17ec681f3Smrg/*******************************************************************************
27ec681f3Smrg * Copyright (c) 2019-2020 The Khronos Group Inc.
37ec681f3Smrg *
47ec681f3Smrg * Licensed under the Apache License, Version 2.0 (the "License");
57ec681f3Smrg * you may not use this file except in compliance with the License.
67ec681f3Smrg * You may obtain a copy of the License at
77ec681f3Smrg *
87ec681f3Smrg *    http://www.apache.org/licenses/LICENSE-2.0
97ec681f3Smrg *
107ec681f3Smrg * Unless required by applicable law or agreed to in writing, software
117ec681f3Smrg * distributed under the License is distributed on an "AS IS" BASIS,
127ec681f3Smrg * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137ec681f3Smrg * See the License for the specific language governing permissions and
147ec681f3Smrg * limitations under the License.
157ec681f3Smrg ******************************************************************************/
167ec681f3Smrg
177ec681f3Smrg#ifndef OPENCL_CL_ICD_H
187ec681f3Smrg#define OPENCL_CL_ICD_H
197ec681f3Smrg
207ec681f3Smrg#include <CL/cl.h>
217ec681f3Smrg#include <CL/cl_egl.h>
227ec681f3Smrg#include <CL/cl_ext.h>
237ec681f3Smrg#include <CL/cl_gl.h>
247ec681f3Smrg
257ec681f3Smrg#if defined(_WIN32)
267ec681f3Smrg#include <CL/cl_d3d11.h>
277ec681f3Smrg#include <CL/cl_d3d10.h>
287ec681f3Smrg#include <CL/cl_dx9_media_sharing.h>
297ec681f3Smrg#endif
307ec681f3Smrg
317ec681f3Smrg#ifdef __cplusplus
327ec681f3Smrgextern "C" {
337ec681f3Smrg#endif
347ec681f3Smrg
357ec681f3Smrg/*
367ec681f3Smrg * This file contains pointer type definitions for each of the CL API calls as
377ec681f3Smrg * well as a type definition for the dispatch table used by the Khronos ICD
387ec681f3Smrg * loader (see cl_khr_icd extension specification for background).
397ec681f3Smrg */
407ec681f3Smrg
417ec681f3Smrg/* API function pointer definitions */
427ec681f3Smrg
437ec681f3Smrg// Platform APIs
447ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetPlatformIDs)(
457ec681f3Smrg    cl_uint num_entries, cl_platform_id *platforms,
467ec681f3Smrg    cl_uint *num_platforms) CL_API_SUFFIX__VERSION_1_0;
477ec681f3Smrg
487ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetPlatformInfo)(
497ec681f3Smrg    cl_platform_id platform, cl_platform_info param_name,
507ec681f3Smrg    size_t param_value_size, void *param_value,
517ec681f3Smrg    size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
527ec681f3Smrg
537ec681f3Smrg// Device APIs
547ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetDeviceIDs)(
557ec681f3Smrg    cl_platform_id platform, cl_device_type device_type, cl_uint num_entries,
567ec681f3Smrg    cl_device_id *devices, cl_uint *num_devices) CL_API_SUFFIX__VERSION_1_0;
577ec681f3Smrg
587ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetDeviceInfo)(
597ec681f3Smrg    cl_device_id device, cl_device_info param_name, size_t param_value_size,
607ec681f3Smrg    void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
617ec681f3Smrg
627ec681f3Smrg#ifdef CL_VERSION_1_2
637ec681f3Smrg
647ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clCreateSubDevices)(
657ec681f3Smrg    cl_device_id in_device,
667ec681f3Smrg    const cl_device_partition_property *partition_properties,
677ec681f3Smrg    cl_uint num_entries, cl_device_id *out_devices, cl_uint *num_devices);
687ec681f3Smrg
697ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clRetainDevice)(
707ec681f3Smrg    cl_device_id device) CL_API_SUFFIX__VERSION_1_2;
717ec681f3Smrg
727ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clReleaseDevice)(
737ec681f3Smrg    cl_device_id device) CL_API_SUFFIX__VERSION_1_2;
747ec681f3Smrg
757ec681f3Smrg#else
767ec681f3Smrg
777ec681f3Smrgtypedef void *cl_api_clCreateSubDevices;
787ec681f3Smrgtypedef void *cl_api_clRetainDevice;
797ec681f3Smrgtypedef void *cl_api_clReleaseDevice;
807ec681f3Smrg
817ec681f3Smrg#endif
827ec681f3Smrg
837ec681f3Smrg// Context APIs
847ec681f3Smrgtypedef CL_API_ENTRY cl_context(CL_API_CALL *cl_api_clCreateContext)(
857ec681f3Smrg    const cl_context_properties *properties, cl_uint num_devices,
867ec681f3Smrg    const cl_device_id *devices,
877ec681f3Smrg    void(CL_CALLBACK *pfn_notify)(const char *, const void *, size_t, void *),
887ec681f3Smrg    void *user_data, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
897ec681f3Smrg
907ec681f3Smrgtypedef CL_API_ENTRY cl_context(CL_API_CALL *cl_api_clCreateContextFromType)(
917ec681f3Smrg    const cl_context_properties *properties, cl_device_type device_type,
927ec681f3Smrg    void(CL_CALLBACK *pfn_notify)(const char *, const void *, size_t, void *),
937ec681f3Smrg    void *user_data, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
947ec681f3Smrg
957ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clRetainContext)(
967ec681f3Smrg    cl_context context) CL_API_SUFFIX__VERSION_1_0;
977ec681f3Smrg
987ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clReleaseContext)(
997ec681f3Smrg    cl_context context) CL_API_SUFFIX__VERSION_1_0;
1007ec681f3Smrg
1017ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetContextInfo)(
1027ec681f3Smrg    cl_context context, cl_context_info param_name, size_t param_value_size,
1037ec681f3Smrg    void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
1047ec681f3Smrg
1057ec681f3Smrg// Command Queue APIs
1067ec681f3Smrgtypedef CL_API_ENTRY cl_command_queue(CL_API_CALL *cl_api_clCreateCommandQueue)(
1077ec681f3Smrg    cl_context context, cl_device_id device,
1087ec681f3Smrg    cl_command_queue_properties properties,
1097ec681f3Smrg    cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
1107ec681f3Smrg
1117ec681f3Smrg#ifdef CL_VERSION_2_0
1127ec681f3Smrg
1137ec681f3Smrgtypedef CL_API_ENTRY
1147ec681f3Smrgcl_command_queue(CL_API_CALL *cl_api_clCreateCommandQueueWithProperties)(
1157ec681f3Smrg    cl_context /* context */, cl_device_id /* device */,
1167ec681f3Smrg    const cl_queue_properties * /* properties */,
1177ec681f3Smrg    cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_2_0;
1187ec681f3Smrg
1197ec681f3Smrg#else
1207ec681f3Smrg
1217ec681f3Smrgtypedef void *cl_api_clCreateCommandQueueWithProperties;
1227ec681f3Smrg
1237ec681f3Smrg#endif
1247ec681f3Smrg
1257ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clRetainCommandQueue)(
1267ec681f3Smrg    cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0;
1277ec681f3Smrg
1287ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clReleaseCommandQueue)(
1297ec681f3Smrg    cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0;
1307ec681f3Smrg
1317ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetCommandQueueInfo)(
1327ec681f3Smrg    cl_command_queue command_queue, cl_command_queue_info param_name,
1337ec681f3Smrg    size_t param_value_size, void *param_value,
1347ec681f3Smrg    size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
1357ec681f3Smrg
1367ec681f3Smrg// Memory Object APIs
1377ec681f3Smrgtypedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateBuffer)(
1387ec681f3Smrg    cl_context context, cl_mem_flags flags, size_t size, void *host_ptr,
1397ec681f3Smrg    cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
1407ec681f3Smrg
1417ec681f3Smrg#ifdef CL_VERSION_1_2
1427ec681f3Smrg
1437ec681f3Smrgtypedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateImage)(
1447ec681f3Smrg    cl_context context, cl_mem_flags flags, const cl_image_format *image_format,
1457ec681f3Smrg    const cl_image_desc *image_desc, void *host_ptr,
1467ec681f3Smrg    cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2;
1477ec681f3Smrg
1487ec681f3Smrg#else
1497ec681f3Smrg
1507ec681f3Smrgtypedef void *cl_api_clCreateImage;
1517ec681f3Smrg
1527ec681f3Smrg#endif
1537ec681f3Smrg
1547ec681f3Smrg#ifdef CL_VERSION_3_0
1557ec681f3Smrg
1567ec681f3Smrgtypedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateBufferWithProperties)(
1577ec681f3Smrg    cl_context context, const cl_mem_properties *properties, cl_mem_flags flags,
1587ec681f3Smrg    size_t size, void *host_ptr,
1597ec681f3Smrg    cl_int *errcode_ret) CL_API_SUFFIX__VERSION_3_0;
1607ec681f3Smrg
1617ec681f3Smrgtypedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateImageWithProperties)(
1627ec681f3Smrg    cl_context context, const cl_mem_properties *properties, cl_mem_flags flags,
1637ec681f3Smrg    const cl_image_format *image_format, const cl_image_desc *image_desc,
1647ec681f3Smrg    void *host_ptr, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_3_0;
1657ec681f3Smrg
1667ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clSetContextDestructorCallback)(
1677ec681f3Smrg    cl_context context,
1687ec681f3Smrg    void(CL_CALLBACK* pfn_notify)(cl_context context, void* user_data),
1697ec681f3Smrg    void* user_data) CL_API_SUFFIX__VERSION_3_0;
1707ec681f3Smrg
1717ec681f3Smrg#else
1727ec681f3Smrg
1737ec681f3Smrgtypedef void *cl_api_clCreateBufferWithProperties;
1747ec681f3Smrgtypedef void *cl_api_clCreateImageWithProperties;
1757ec681f3Smrgtypedef void *cl_api_clSetContextDestructorCallback;
1767ec681f3Smrg
1777ec681f3Smrg#endif
1787ec681f3Smrg
1797ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clRetainMemObject)(
1807ec681f3Smrg    cl_mem memobj) CL_API_SUFFIX__VERSION_1_0;
1817ec681f3Smrg
1827ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clReleaseMemObject)(
1837ec681f3Smrg    cl_mem memobj) CL_API_SUFFIX__VERSION_1_0;
1847ec681f3Smrg
1857ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetSupportedImageFormats)(
1867ec681f3Smrg    cl_context context, cl_mem_flags flags, cl_mem_object_type image_type,
1877ec681f3Smrg    cl_uint num_entries, cl_image_format *image_formats,
1887ec681f3Smrg    cl_uint *num_image_formats) CL_API_SUFFIX__VERSION_1_0;
1897ec681f3Smrg
1907ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetMemObjectInfo)(
1917ec681f3Smrg    cl_mem memobj, cl_mem_info param_name, size_t param_value_size,
1927ec681f3Smrg    void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
1937ec681f3Smrg
1947ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetImageInfo)(
1957ec681f3Smrg    cl_mem image, cl_image_info param_name, size_t param_value_size,
1967ec681f3Smrg    void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
1977ec681f3Smrg
1987ec681f3Smrg#ifdef CL_VERSION_2_0
1997ec681f3Smrg
2007ec681f3Smrgtypedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreatePipe)(
2017ec681f3Smrg    cl_context /* context */, cl_mem_flags /* flags */,
2027ec681f3Smrg    cl_uint /* pipe_packet_size */, cl_uint /* pipe_max_packets */,
2037ec681f3Smrg    const cl_pipe_properties * /* properties */,
2047ec681f3Smrg    cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_2_0;
2057ec681f3Smrg
2067ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetPipeInfo)(
2077ec681f3Smrg    cl_mem /* pipe */, cl_pipe_info /* param_name */,
2087ec681f3Smrg    size_t /* param_value_size */, void * /* param_value */,
2097ec681f3Smrg    size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_2_0;
2107ec681f3Smrg
2117ec681f3Smrgtypedef CL_API_ENTRY void *(CL_API_CALL *cl_api_clSVMAlloc)(
2127ec681f3Smrg    cl_context /* context */, cl_svm_mem_flags /* flags */, size_t /* size */,
2137ec681f3Smrg    unsigned int /* alignment */)CL_API_SUFFIX__VERSION_2_0;
2147ec681f3Smrg
2157ec681f3Smrgtypedef CL_API_ENTRY void(CL_API_CALL *cl_api_clSVMFree)(
2167ec681f3Smrg    cl_context /* context */,
2177ec681f3Smrg    void * /* svm_pointer */) CL_API_SUFFIX__VERSION_2_0;
2187ec681f3Smrg
2197ec681f3Smrg#else
2207ec681f3Smrg
2217ec681f3Smrgtypedef void *cl_api_clCreatePipe;
2227ec681f3Smrgtypedef void *cl_api_clGetPipeInfo;
2237ec681f3Smrgtypedef void *cl_api_clSVMAlloc;
2247ec681f3Smrgtypedef void *cl_api_clSVMFree;
2257ec681f3Smrg
2267ec681f3Smrg#endif
2277ec681f3Smrg
2287ec681f3Smrg// Sampler APIs
2297ec681f3Smrgtypedef CL_API_ENTRY cl_sampler(CL_API_CALL *cl_api_clCreateSampler)(
2307ec681f3Smrg    cl_context context, cl_bool normalized_coords,
2317ec681f3Smrg    cl_addressing_mode addressing_mode, cl_filter_mode filter_mode,
2327ec681f3Smrg    cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
2337ec681f3Smrg
2347ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clRetainSampler)(
2357ec681f3Smrg    cl_sampler sampler) CL_API_SUFFIX__VERSION_1_0;
2367ec681f3Smrg
2377ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clReleaseSampler)(
2387ec681f3Smrg    cl_sampler sampler) CL_API_SUFFIX__VERSION_1_0;
2397ec681f3Smrg
2407ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetSamplerInfo)(
2417ec681f3Smrg    cl_sampler sampler, cl_sampler_info param_name, size_t param_value_size,
2427ec681f3Smrg    void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
2437ec681f3Smrg
2447ec681f3Smrg#ifdef CL_VERSION_2_0
2457ec681f3Smrg
2467ec681f3Smrgtypedef CL_API_ENTRY
2477ec681f3Smrgcl_sampler(CL_API_CALL *cl_api_clCreateSamplerWithProperties)(
2487ec681f3Smrg    cl_context /* context */,
2497ec681f3Smrg    const cl_sampler_properties * /* sampler_properties */,
2507ec681f3Smrg    cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_2_0;
2517ec681f3Smrg
2527ec681f3Smrg#else
2537ec681f3Smrg
2547ec681f3Smrgtypedef void *cl_api_clCreateSamplerWithProperties;
2557ec681f3Smrg
2567ec681f3Smrg#endif
2577ec681f3Smrg
2587ec681f3Smrg// Program Object APIs
2597ec681f3Smrgtypedef CL_API_ENTRY cl_program(CL_API_CALL *cl_api_clCreateProgramWithSource)(
2607ec681f3Smrg    cl_context context, cl_uint count, const char **strings,
2617ec681f3Smrg    const size_t *lengths, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
2627ec681f3Smrg
2637ec681f3Smrgtypedef CL_API_ENTRY cl_program(CL_API_CALL *cl_api_clCreateProgramWithBinary)(
2647ec681f3Smrg    cl_context context, cl_uint num_devices, const cl_device_id *device_list,
2657ec681f3Smrg    const size_t *lengths, const unsigned char **binaries,
2667ec681f3Smrg    cl_int *binary_status, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
2677ec681f3Smrg
2687ec681f3Smrg#ifdef CL_VERSION_1_2
2697ec681f3Smrg
2707ec681f3Smrgtypedef CL_API_ENTRY
2717ec681f3Smrgcl_program(CL_API_CALL *cl_api_clCreateProgramWithBuiltInKernels)(
2727ec681f3Smrg    cl_context context, cl_uint num_devices, const cl_device_id *device_list,
2737ec681f3Smrg    const char *kernel_names, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2;
2747ec681f3Smrg
2757ec681f3Smrg#else
2767ec681f3Smrg
2777ec681f3Smrgtypedef void *cl_api_clCreateProgramWithBuiltInKernels;
2787ec681f3Smrg
2797ec681f3Smrg#endif
2807ec681f3Smrg
2817ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clRetainProgram)(
2827ec681f3Smrg    cl_program program) CL_API_SUFFIX__VERSION_1_0;
2837ec681f3Smrg
2847ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clReleaseProgram)(
2857ec681f3Smrg    cl_program program) CL_API_SUFFIX__VERSION_1_0;
2867ec681f3Smrg
2877ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clBuildProgram)(
2887ec681f3Smrg    cl_program program, cl_uint num_devices, const cl_device_id *device_list,
2897ec681f3Smrg    const char *options,
2907ec681f3Smrg    void(CL_CALLBACK *pfn_notify)(cl_program program, void *user_data),
2917ec681f3Smrg    void *user_data) CL_API_SUFFIX__VERSION_1_0;
2927ec681f3Smrg
2937ec681f3Smrg#ifdef CL_VERSION_1_2
2947ec681f3Smrg
2957ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clCompileProgram)(
2967ec681f3Smrg    cl_program program, cl_uint num_devices, const cl_device_id *device_list,
2977ec681f3Smrg    const char *options, cl_uint num_input_headers,
2987ec681f3Smrg    const cl_program *input_headers, const char **header_include_names,
2997ec681f3Smrg    void(CL_CALLBACK *pfn_notify)(cl_program program, void *user_data),
3007ec681f3Smrg    void *user_data) CL_API_SUFFIX__VERSION_1_2;
3017ec681f3Smrg
3027ec681f3Smrgtypedef CL_API_ENTRY cl_program(CL_API_CALL *cl_api_clLinkProgram)(
3037ec681f3Smrg    cl_context context, cl_uint num_devices, const cl_device_id *device_list,
3047ec681f3Smrg    const char *options, cl_uint num_input_programs,
3057ec681f3Smrg    const cl_program *input_programs,
3067ec681f3Smrg    void(CL_CALLBACK *pfn_notify)(cl_program program, void *user_data),
3077ec681f3Smrg    void *user_data, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2;
3087ec681f3Smrg
3097ec681f3Smrg#else
3107ec681f3Smrg
3117ec681f3Smrgtypedef void *cl_api_clCompileProgram;
3127ec681f3Smrgtypedef void *cl_api_clLinkProgram;
3137ec681f3Smrg
3147ec681f3Smrg#endif
3157ec681f3Smrg
3167ec681f3Smrg#ifdef CL_VERSION_2_2
3177ec681f3Smrg
3187ec681f3Smrgtypedef CL_API_ENTRY
3197ec681f3Smrgcl_int(CL_API_CALL *cl_api_clSetProgramSpecializationConstant)(
3207ec681f3Smrg    cl_program program, cl_uint spec_id, size_t spec_size,
3217ec681f3Smrg    const void *spec_value) CL_API_SUFFIX__VERSION_2_2;
3227ec681f3Smrg
3237ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clSetProgramReleaseCallback)(
3247ec681f3Smrg    cl_program program,
3257ec681f3Smrg    void(CL_CALLBACK *pfn_notify)(cl_program program, void *user_data),
3267ec681f3Smrg    void *user_data) CL_API_SUFFIX__VERSION_2_2;
3277ec681f3Smrg
3287ec681f3Smrg#else
3297ec681f3Smrg
3307ec681f3Smrgtypedef void *cl_api_clSetProgramSpecializationConstant;
3317ec681f3Smrgtypedef void *cl_api_clSetProgramReleaseCallback;
3327ec681f3Smrg
3337ec681f3Smrg#endif
3347ec681f3Smrg
3357ec681f3Smrg#ifdef CL_VERSION_1_2
3367ec681f3Smrg
3377ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clUnloadPlatformCompiler)(
3387ec681f3Smrg    cl_platform_id platform) CL_API_SUFFIX__VERSION_1_2;
3397ec681f3Smrg
3407ec681f3Smrg#else
3417ec681f3Smrg
3427ec681f3Smrgtypedef void *cl_api_clUnloadPlatformCompiler;
3437ec681f3Smrg
3447ec681f3Smrg#endif
3457ec681f3Smrg
3467ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetProgramInfo)(
3477ec681f3Smrg    cl_program program, cl_program_info param_name, size_t param_value_size,
3487ec681f3Smrg    void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
3497ec681f3Smrg
3507ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetProgramBuildInfo)(
3517ec681f3Smrg    cl_program program, cl_device_id device, cl_program_build_info param_name,
3527ec681f3Smrg    size_t param_value_size, void *param_value,
3537ec681f3Smrg    size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
3547ec681f3Smrg
3557ec681f3Smrg// Kernel Object APIs
3567ec681f3Smrgtypedef CL_API_ENTRY cl_kernel(CL_API_CALL *cl_api_clCreateKernel)(
3577ec681f3Smrg    cl_program program, const char *kernel_name,
3587ec681f3Smrg    cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
3597ec681f3Smrg
3607ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clCreateKernelsInProgram)(
3617ec681f3Smrg    cl_program program, cl_uint num_kernels, cl_kernel *kernels,
3627ec681f3Smrg    cl_uint *num_kernels_ret) CL_API_SUFFIX__VERSION_1_0;
3637ec681f3Smrg
3647ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clRetainKernel)(
3657ec681f3Smrg    cl_kernel kernel) CL_API_SUFFIX__VERSION_1_0;
3667ec681f3Smrg
3677ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clReleaseKernel)(
3687ec681f3Smrg    cl_kernel kernel) CL_API_SUFFIX__VERSION_1_0;
3697ec681f3Smrg
3707ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clSetKernelArg)(
3717ec681f3Smrg    cl_kernel kernel, cl_uint arg_index, size_t arg_size,
3727ec681f3Smrg    const void *arg_value) CL_API_SUFFIX__VERSION_1_0;
3737ec681f3Smrg
3747ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetKernelInfo)(
3757ec681f3Smrg    cl_kernel kernel, cl_kernel_info param_name, size_t param_value_size,
3767ec681f3Smrg    void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
3777ec681f3Smrg
3787ec681f3Smrg#ifdef CL_VERSION_1_2
3797ec681f3Smrg
3807ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetKernelArgInfo)(
3817ec681f3Smrg    cl_kernel kernel, cl_uint arg_indx, cl_kernel_arg_info param_name,
3827ec681f3Smrg    size_t param_value_size, void *param_value,
3837ec681f3Smrg    size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_2;
3847ec681f3Smrg
3857ec681f3Smrg#else
3867ec681f3Smrg
3877ec681f3Smrgtypedef void *cl_api_clGetKernelArgInfo;
3887ec681f3Smrg
3897ec681f3Smrg#endif
3907ec681f3Smrg
3917ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetKernelWorkGroupInfo)(
3927ec681f3Smrg    cl_kernel kernel, cl_device_id device, cl_kernel_work_group_info param_name,
3937ec681f3Smrg    size_t param_value_size, void *param_value,
3947ec681f3Smrg    size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
3957ec681f3Smrg
3967ec681f3Smrg#ifdef CL_VERSION_2_0
3977ec681f3Smrg
3987ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clSetKernelArgSVMPointer)(
3997ec681f3Smrg    cl_kernel /* kernel */, cl_uint /* arg_index */,
4007ec681f3Smrg    const void * /* arg_value */) CL_API_SUFFIX__VERSION_2_0;
4017ec681f3Smrg
4027ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clSetKernelExecInfo)(
4037ec681f3Smrg    cl_kernel /* kernel */, cl_kernel_exec_info /* param_name */,
4047ec681f3Smrg    size_t /* param_value_size */,
4057ec681f3Smrg    const void * /* param_value */) CL_API_SUFFIX__VERSION_2_0;
4067ec681f3Smrg
4077ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetKernelSubGroupInfoKHR)(
4087ec681f3Smrg    cl_kernel /* in_kernel */, cl_device_id /*in_device*/,
4097ec681f3Smrg    cl_kernel_sub_group_info /* param_name */, size_t /*input_value_size*/,
4107ec681f3Smrg    const void * /*input_value*/, size_t /*param_value_size*/,
4117ec681f3Smrg    void * /*param_value*/,
4127ec681f3Smrg    size_t * /*param_value_size_ret*/) CL_EXT_SUFFIX__VERSION_2_0;
4137ec681f3Smrg
4147ec681f3Smrg#else
4157ec681f3Smrg
4167ec681f3Smrgtypedef void *cl_api_clSetKernelArgSVMPointer;
4177ec681f3Smrgtypedef void *cl_api_clSetKernelExecInfo;
4187ec681f3Smrgtypedef void *cl_api_clGetKernelSubGroupInfoKHR;
4197ec681f3Smrg
4207ec681f3Smrg#endif
4217ec681f3Smrg
4227ec681f3Smrg// Event Object APIs
4237ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clWaitForEvents)(
4247ec681f3Smrg    cl_uint num_events, const cl_event *event_list) CL_API_SUFFIX__VERSION_1_0;
4257ec681f3Smrg
4267ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetEventInfo)(
4277ec681f3Smrg    cl_event event, cl_event_info param_name, size_t param_value_size,
4287ec681f3Smrg    void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
4297ec681f3Smrg
4307ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clRetainEvent)(cl_event event)
4317ec681f3Smrg    CL_API_SUFFIX__VERSION_1_0;
4327ec681f3Smrg
4337ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clReleaseEvent)(cl_event event)
4347ec681f3Smrg    CL_API_SUFFIX__VERSION_1_0;
4357ec681f3Smrg
4367ec681f3Smrg// Profiling APIs
4377ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetEventProfilingInfo)(
4387ec681f3Smrg    cl_event event, cl_profiling_info param_name, size_t param_value_size,
4397ec681f3Smrg    void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
4407ec681f3Smrg
4417ec681f3Smrg// Flush and Finish APIs
4427ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clFlush)(
4437ec681f3Smrg    cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0;
4447ec681f3Smrg
4457ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clFinish)(
4467ec681f3Smrg    cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0;
4477ec681f3Smrg
4487ec681f3Smrg// Enqueued Commands APIs
4497ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueReadBuffer)(
4507ec681f3Smrg    cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_read,
4517ec681f3Smrg    size_t offset, size_t cb, void *ptr, cl_uint num_events_in_wait_list,
4527ec681f3Smrg    const cl_event *event_wait_list,
4537ec681f3Smrg    cl_event *event) CL_API_SUFFIX__VERSION_1_0;
4547ec681f3Smrg
4557ec681f3Smrg#ifdef CL_VERSION_1_1
4567ec681f3Smrg
4577ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueReadBufferRect)(
4587ec681f3Smrg    cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_read,
4597ec681f3Smrg    const size_t *buffer_origin, const size_t *host_origin,
4607ec681f3Smrg    const size_t *region, size_t buffer_row_pitch, size_t buffer_slice_pitch,
4617ec681f3Smrg    size_t host_row_pitch, size_t host_slice_pitch, void *ptr,
4627ec681f3Smrg    cl_uint num_events_in_wait_list, const cl_event *event_wait_list,
4637ec681f3Smrg    cl_event *event) CL_API_SUFFIX__VERSION_1_1;
4647ec681f3Smrg
4657ec681f3Smrg#else
4667ec681f3Smrg
4677ec681f3Smrgtypedef void *cl_api_clEnqueueReadBufferRect;
4687ec681f3Smrg
4697ec681f3Smrg#endif
4707ec681f3Smrg
4717ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueWriteBuffer)(
4727ec681f3Smrg    cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_write,
4737ec681f3Smrg    size_t offset, size_t cb, const void *ptr, cl_uint num_events_in_wait_list,
4747ec681f3Smrg    const cl_event *event_wait_list,
4757ec681f3Smrg    cl_event *event) CL_API_SUFFIX__VERSION_1_0;
4767ec681f3Smrg
4777ec681f3Smrg#ifdef CL_VERSION_1_1
4787ec681f3Smrg
4797ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueWriteBufferRect)(
4807ec681f3Smrg    cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_read,
4817ec681f3Smrg    const size_t *buffer_origin, const size_t *host_origin,
4827ec681f3Smrg    const size_t *region, size_t buffer_row_pitch, size_t buffer_slice_pitch,
4837ec681f3Smrg    size_t host_row_pitch, size_t host_slice_pitch, const void *ptr,
4847ec681f3Smrg    cl_uint num_events_in_wait_list, const cl_event *event_wait_list,
4857ec681f3Smrg    cl_event *event) CL_API_SUFFIX__VERSION_1_1;
4867ec681f3Smrg
4877ec681f3Smrg#else
4887ec681f3Smrg
4897ec681f3Smrgtypedef void *cl_api_clEnqueueWriteBufferRect;
4907ec681f3Smrg
4917ec681f3Smrg#endif
4927ec681f3Smrg
4937ec681f3Smrg#ifdef CL_VERSION_1_2
4947ec681f3Smrg
4957ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueFillBuffer)(
4967ec681f3Smrg    cl_command_queue command_queue, cl_mem buffer, const void *pattern,
4977ec681f3Smrg    size_t pattern_size, size_t offset, size_t cb,
4987ec681f3Smrg    cl_uint num_events_in_wait_list, const cl_event *event_wait_list,
4997ec681f3Smrg    cl_event *event) CL_API_SUFFIX__VERSION_1_2;
5007ec681f3Smrg
5017ec681f3Smrg#else
5027ec681f3Smrg
5037ec681f3Smrgtypedef void *cl_api_clEnqueueFillBuffer;
5047ec681f3Smrg
5057ec681f3Smrg#endif
5067ec681f3Smrg
5077ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueCopyBuffer)(
5087ec681f3Smrg    cl_command_queue command_queue, cl_mem src_buffer, cl_mem dst_buffer,
5097ec681f3Smrg    size_t src_offset, size_t dst_offset, size_t cb,
5107ec681f3Smrg    cl_uint num_events_in_wait_list, const cl_event *event_wait_list,
5117ec681f3Smrg    cl_event *event) CL_API_SUFFIX__VERSION_1_0;
5127ec681f3Smrg
5137ec681f3Smrg#ifdef CL_VERSION_1_1
5147ec681f3Smrg
5157ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueCopyBufferRect)(
5167ec681f3Smrg    cl_command_queue command_queue, cl_mem src_buffer, cl_mem dst_buffer,
5177ec681f3Smrg    const size_t *src_origin, const size_t *dst_origin, const size_t *region,
5187ec681f3Smrg    size_t src_row_pitch, size_t src_slice_pitch, size_t dst_row_pitch,
5197ec681f3Smrg    size_t dst_slice_pitch, cl_uint num_events_in_wait_list,
5207ec681f3Smrg    const cl_event *event_wait_list,
5217ec681f3Smrg    cl_event *event) CL_API_SUFFIX__VERSION_1_1;
5227ec681f3Smrg
5237ec681f3Smrg#else
5247ec681f3Smrg
5257ec681f3Smrgtypedef void *cl_api_clEnqueueCopyBufferRect;
5267ec681f3Smrg
5277ec681f3Smrg#endif
5287ec681f3Smrg
5297ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueReadImage)(
5307ec681f3Smrg    cl_command_queue command_queue, cl_mem image, cl_bool blocking_read,
5317ec681f3Smrg    const size_t *origin, const size_t *region, size_t row_pitch,
5327ec681f3Smrg    size_t slice_pitch, void *ptr, cl_uint num_events_in_wait_list,
5337ec681f3Smrg    const cl_event *event_wait_list,
5347ec681f3Smrg    cl_event *event) CL_API_SUFFIX__VERSION_1_0;
5357ec681f3Smrg
5367ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueWriteImage)(
5377ec681f3Smrg    cl_command_queue command_queue, cl_mem image, cl_bool blocking_write,
5387ec681f3Smrg    const size_t *origin, const size_t *region, size_t input_row_pitch,
5397ec681f3Smrg    size_t input_slice_pitch, const void *ptr, cl_uint num_events_in_wait_list,
5407ec681f3Smrg    const cl_event *event_wait_list,
5417ec681f3Smrg    cl_event *event) CL_API_SUFFIX__VERSION_1_0;
5427ec681f3Smrg
5437ec681f3Smrg#ifdef CL_VERSION_1_2
5447ec681f3Smrg
5457ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueFillImage)(
5467ec681f3Smrg    cl_command_queue command_queue, cl_mem image, const void *fill_color,
5477ec681f3Smrg    const size_t origin[3], const size_t region[3],
5487ec681f3Smrg    cl_uint num_events_in_wait_list, const cl_event *event_wait_list,
5497ec681f3Smrg    cl_event *event) CL_API_SUFFIX__VERSION_1_2;
5507ec681f3Smrg
5517ec681f3Smrg#else
5527ec681f3Smrg
5537ec681f3Smrgtypedef void *cl_api_clEnqueueFillImage;
5547ec681f3Smrg
5557ec681f3Smrg#endif
5567ec681f3Smrg
5577ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueCopyImage)(
5587ec681f3Smrg    cl_command_queue command_queue, cl_mem src_image, cl_mem dst_image,
5597ec681f3Smrg    const size_t *src_origin, const size_t *dst_origin, const size_t *region,
5607ec681f3Smrg    cl_uint num_events_in_wait_list, const cl_event *event_wait_list,
5617ec681f3Smrg    cl_event *event) CL_API_SUFFIX__VERSION_1_0;
5627ec681f3Smrg
5637ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueCopyImageToBuffer)(
5647ec681f3Smrg    cl_command_queue command_queue, cl_mem src_image, cl_mem dst_buffer,
5657ec681f3Smrg    const size_t *src_origin, const size_t *region, size_t dst_offset,
5667ec681f3Smrg    cl_uint num_events_in_wait_list, const cl_event *event_wait_list,
5677ec681f3Smrg    cl_event *event) CL_API_SUFFIX__VERSION_1_0;
5687ec681f3Smrg
5697ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueCopyBufferToImage)(
5707ec681f3Smrg    cl_command_queue command_queue, cl_mem src_buffer, cl_mem dst_image,
5717ec681f3Smrg    size_t src_offset, const size_t *dst_origin, const size_t *region,
5727ec681f3Smrg    cl_uint num_events_in_wait_list, const cl_event *event_wait_list,
5737ec681f3Smrg    cl_event *event) CL_API_SUFFIX__VERSION_1_0;
5747ec681f3Smrg
5757ec681f3Smrgtypedef CL_API_ENTRY void *(CL_API_CALL *cl_api_clEnqueueMapBuffer)(
5767ec681f3Smrg    cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_map,
5777ec681f3Smrg    cl_map_flags map_flags, size_t offset, size_t cb,
5787ec681f3Smrg    cl_uint num_events_in_wait_list, const cl_event *event_wait_list,
5797ec681f3Smrg    cl_event *event, cl_int *errcode_ret)CL_API_SUFFIX__VERSION_1_0;
5807ec681f3Smrg
5817ec681f3Smrgtypedef CL_API_ENTRY void *(CL_API_CALL *cl_api_clEnqueueMapImage)(
5827ec681f3Smrg    cl_command_queue command_queue, cl_mem image, cl_bool blocking_map,
5837ec681f3Smrg    cl_map_flags map_flags, const size_t *origin, const size_t *region,
5847ec681f3Smrg    size_t *image_row_pitch, size_t *image_slice_pitch,
5857ec681f3Smrg    cl_uint num_events_in_wait_list, const cl_event *event_wait_list,
5867ec681f3Smrg    cl_event *event, cl_int *errcode_ret)CL_API_SUFFIX__VERSION_1_0;
5877ec681f3Smrg
5887ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueUnmapMemObject)(
5897ec681f3Smrg    cl_command_queue command_queue, cl_mem memobj, void *mapped_ptr,
5907ec681f3Smrg    cl_uint num_events_in_wait_list, const cl_event *event_wait_list,
5917ec681f3Smrg    cl_event *event) CL_API_SUFFIX__VERSION_1_0;
5927ec681f3Smrg
5937ec681f3Smrg#ifdef CL_VERSION_1_2
5947ec681f3Smrg
5957ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueMigrateMemObjects)(
5967ec681f3Smrg    cl_command_queue command_queue, cl_uint num_mem_objects,
5977ec681f3Smrg    const cl_mem *mem_objects, cl_mem_migration_flags flags,
5987ec681f3Smrg    cl_uint num_events_in_wait_list, const cl_event *event_wait_list,
5997ec681f3Smrg    cl_event *event) CL_API_SUFFIX__VERSION_1_2;
6007ec681f3Smrg
6017ec681f3Smrg#else
6027ec681f3Smrg
6037ec681f3Smrgtypedef void *cl_api_clEnqueueMigrateMemObjects;
6047ec681f3Smrg
6057ec681f3Smrg#endif
6067ec681f3Smrg
6077ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueNDRangeKernel)(
6087ec681f3Smrg    cl_command_queue command_queue, cl_kernel kernel, cl_uint work_dim,
6097ec681f3Smrg    const size_t *global_work_offset, const size_t *global_work_size,
6107ec681f3Smrg    const size_t *local_work_size, cl_uint num_events_in_wait_list,
6117ec681f3Smrg    const cl_event *event_wait_list,
6127ec681f3Smrg    cl_event *event) CL_API_SUFFIX__VERSION_1_0;
6137ec681f3Smrg
6147ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueTask)(
6157ec681f3Smrg    cl_command_queue command_queue, cl_kernel kernel,
6167ec681f3Smrg    cl_uint num_events_in_wait_list, const cl_event *event_wait_list,
6177ec681f3Smrg    cl_event *event) CL_API_SUFFIX__VERSION_1_0;
6187ec681f3Smrg
6197ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueNativeKernel)(
6207ec681f3Smrg    cl_command_queue command_queue, void(CL_CALLBACK *user_func)(void *),
6217ec681f3Smrg    void *args, size_t cb_args, cl_uint num_mem_objects, const cl_mem *mem_list,
6227ec681f3Smrg    const void **args_mem_loc, cl_uint num_events_in_wait_list,
6237ec681f3Smrg    const cl_event *event_wait_list,
6247ec681f3Smrg    cl_event *event) CL_API_SUFFIX__VERSION_1_0;
6257ec681f3Smrg
6267ec681f3Smrg#ifdef CL_VERSION_1_2
6277ec681f3Smrg
6287ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueMarkerWithWaitList)(
6297ec681f3Smrg    cl_command_queue command_queue, cl_uint num_events_in_wait_list,
6307ec681f3Smrg    const cl_event *event_wait_list,
6317ec681f3Smrg    cl_event *event) CL_API_SUFFIX__VERSION_1_2;
6327ec681f3Smrg
6337ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueBarrierWithWaitList)(
6347ec681f3Smrg    cl_command_queue command_queue, cl_uint num_events_in_wait_list,
6357ec681f3Smrg    const cl_event *event_wait_list,
6367ec681f3Smrg    cl_event *event) CL_API_SUFFIX__VERSION_1_2;
6377ec681f3Smrg
6387ec681f3Smrgtypedef CL_API_ENTRY void *(
6397ec681f3Smrg    CL_API_CALL *cl_api_clGetExtensionFunctionAddressForPlatform)(
6407ec681f3Smrg    cl_platform_id platform,
6417ec681f3Smrg    const char *function_name)CL_API_SUFFIX__VERSION_1_2;
6427ec681f3Smrg
6437ec681f3Smrg#else
6447ec681f3Smrg
6457ec681f3Smrgtypedef void *cl_api_clEnqueueMarkerWithWaitList;
6467ec681f3Smrgtypedef void *cl_api_clEnqueueBarrierWithWaitList;
6477ec681f3Smrgtypedef void *cl_api_clGetExtensionFunctionAddressForPlatform;
6487ec681f3Smrg
6497ec681f3Smrg#endif
6507ec681f3Smrg
6517ec681f3Smrg// Shared Virtual Memory APIs
6527ec681f3Smrg
6537ec681f3Smrg#ifdef CL_VERSION_2_0
6547ec681f3Smrg
6557ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueSVMFree)(
6567ec681f3Smrg    cl_command_queue /* command_queue */, cl_uint /* num_svm_pointers */,
6577ec681f3Smrg    void ** /* svm_pointers */,
6587ec681f3Smrg    void(CL_CALLBACK *pfn_free_func)(cl_command_queue /* queue */,
6597ec681f3Smrg                                     cl_uint /* num_svm_pointers */,
6607ec681f3Smrg                                     void ** /* svm_pointers[] */,
6617ec681f3Smrg                                     void * /* user_data */),
6627ec681f3Smrg    void * /* user_data */, cl_uint /* num_events_in_wait_list */,
6637ec681f3Smrg    const cl_event * /* event_wait_list */,
6647ec681f3Smrg    cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0;
6657ec681f3Smrg
6667ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueSVMMemcpy)(
6677ec681f3Smrg    cl_command_queue /* command_queue */, cl_bool /* blocking_copy */,
6687ec681f3Smrg    void * /* dst_ptr */, const void * /* src_ptr */, size_t /* size */,
6697ec681f3Smrg    cl_uint /* num_events_in_wait_list */,
6707ec681f3Smrg    const cl_event * /* event_wait_list */,
6717ec681f3Smrg    cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0;
6727ec681f3Smrg
6737ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueSVMMemFill)(
6747ec681f3Smrg    cl_command_queue /* command_queue */, void * /* svm_ptr */,
6757ec681f3Smrg    const void * /* pattern */, size_t /* pattern_size */, size_t /* size */,
6767ec681f3Smrg    cl_uint /* num_events_in_wait_list */,
6777ec681f3Smrg    const cl_event * /* event_wait_list */,
6787ec681f3Smrg    cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0;
6797ec681f3Smrg
6807ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueSVMMap)(
6817ec681f3Smrg    cl_command_queue /* command_queue */, cl_bool /* blocking_map */,
6827ec681f3Smrg    cl_map_flags /* map_flags */, void * /* svm_ptr */, size_t /* size */,
6837ec681f3Smrg    cl_uint /* num_events_in_wait_list */,
6847ec681f3Smrg    const cl_event * /* event_wait_list */,
6857ec681f3Smrg    cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0;
6867ec681f3Smrg
6877ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueSVMUnmap)(
6887ec681f3Smrg    cl_command_queue /* command_queue */, void * /* svm_ptr */,
6897ec681f3Smrg    cl_uint /* num_events_in_wait_list */,
6907ec681f3Smrg    const cl_event * /* event_wait_list */,
6917ec681f3Smrg    cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0;
6927ec681f3Smrg
6937ec681f3Smrg#else
6947ec681f3Smrg
6957ec681f3Smrgtypedef void *cl_api_clEnqueueSVMFree;
6967ec681f3Smrgtypedef void *cl_api_clEnqueueSVMMemcpy;
6977ec681f3Smrgtypedef void *cl_api_clEnqueueSVMMemFill;
6987ec681f3Smrgtypedef void *cl_api_clEnqueueSVMMap;
6997ec681f3Smrgtypedef void *cl_api_clEnqueueSVMUnmap;
7007ec681f3Smrg
7017ec681f3Smrg#endif
7027ec681f3Smrg
7037ec681f3Smrg// Deprecated APIs
7047ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clSetCommandQueueProperty)(
7057ec681f3Smrg    cl_command_queue command_queue, cl_command_queue_properties properties,
7067ec681f3Smrg    cl_bool enable, cl_command_queue_properties *old_properties)
7077ec681f3Smrg    CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED;
7087ec681f3Smrg
7097ec681f3Smrgtypedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateImage2D)(
7107ec681f3Smrg    cl_context context, cl_mem_flags flags, const cl_image_format *image_format,
7117ec681f3Smrg    size_t image_width, size_t image_height, size_t image_row_pitch,
7127ec681f3Smrg    void *host_ptr, cl_int *errcode_ret) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED;
7137ec681f3Smrg
7147ec681f3Smrgtypedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateImage3D)(
7157ec681f3Smrg    cl_context context, cl_mem_flags flags, const cl_image_format *image_format,
7167ec681f3Smrg    size_t image_width, size_t image_height, size_t image_depth,
7177ec681f3Smrg    size_t image_row_pitch, size_t image_slice_pitch, void *host_ptr,
7187ec681f3Smrg    cl_int *errcode_ret) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED;
7197ec681f3Smrg
7207ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clUnloadCompiler)(void)
7217ec681f3Smrg    CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED;
7227ec681f3Smrg
7237ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueMarker)(
7247ec681f3Smrg    cl_command_queue command_queue,
7257ec681f3Smrg    cl_event *event) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED;
7267ec681f3Smrg
7277ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueWaitForEvents)(
7287ec681f3Smrg    cl_command_queue command_queue, cl_uint num_events,
7297ec681f3Smrg    const cl_event *event_list) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED;
7307ec681f3Smrg
7317ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueBarrier)(
7327ec681f3Smrg    cl_command_queue command_queue) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED;
7337ec681f3Smrg
7347ec681f3Smrgtypedef CL_API_ENTRY void *(CL_API_CALL *cl_api_clGetExtensionFunctionAddress)(
7357ec681f3Smrg    const char *function_name)CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED;
7367ec681f3Smrg
7377ec681f3Smrg// GL and other APIs
7387ec681f3Smrgtypedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateFromGLBuffer)(
7397ec681f3Smrg    cl_context context, cl_mem_flags flags, cl_GLuint bufobj,
7407ec681f3Smrg    int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
7417ec681f3Smrg
7427ec681f3Smrgtypedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateFromGLTexture)(
7437ec681f3Smrg    cl_context context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel,
7447ec681f3Smrg    cl_GLuint texture, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2;
7457ec681f3Smrg
7467ec681f3Smrgtypedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateFromGLTexture2D)(
7477ec681f3Smrg    cl_context context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel,
7487ec681f3Smrg    cl_GLuint texture, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
7497ec681f3Smrg
7507ec681f3Smrgtypedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateFromGLTexture3D)(
7517ec681f3Smrg    cl_context context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel,
7527ec681f3Smrg    cl_GLuint texture, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
7537ec681f3Smrg
7547ec681f3Smrgtypedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateFromGLRenderbuffer)(
7557ec681f3Smrg    cl_context context, cl_mem_flags flags, cl_GLuint renderbuffer,
7567ec681f3Smrg    cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
7577ec681f3Smrg
7587ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetGLObjectInfo)(
7597ec681f3Smrg    cl_mem memobj, cl_gl_object_type *gl_object_type,
7607ec681f3Smrg    cl_GLuint *gl_object_name) CL_API_SUFFIX__VERSION_1_0;
7617ec681f3Smrg
7627ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetGLTextureInfo)(
7637ec681f3Smrg    cl_mem memobj, cl_gl_texture_info param_name, size_t param_value_size,
7647ec681f3Smrg    void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
7657ec681f3Smrg
7667ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueAcquireGLObjects)(
7677ec681f3Smrg    cl_command_queue command_queue, cl_uint num_objects,
7687ec681f3Smrg    const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
7697ec681f3Smrg    const cl_event *event_wait_list,
7707ec681f3Smrg    cl_event *event) CL_API_SUFFIX__VERSION_1_0;
7717ec681f3Smrg
7727ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueReleaseGLObjects)(
7737ec681f3Smrg    cl_command_queue command_queue, cl_uint num_objects,
7747ec681f3Smrg    const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
7757ec681f3Smrg    const cl_event *event_wait_list,
7767ec681f3Smrg    cl_event *event) CL_API_SUFFIX__VERSION_1_0;
7777ec681f3Smrg
7787ec681f3Smrg/* cl_khr_gl_sharing */
7797ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetGLContextInfoKHR)(
7807ec681f3Smrg    const cl_context_properties *properties, cl_gl_context_info param_name,
7817ec681f3Smrg    size_t param_value_size, void *param_value, size_t *param_value_size_ret);
7827ec681f3Smrg
7837ec681f3Smrg/* cl_khr_gl_event */
7847ec681f3Smrgtypedef CL_API_ENTRY cl_event(CL_API_CALL *cl_api_clCreateEventFromGLsyncKHR)(
7857ec681f3Smrg    cl_context context, cl_GLsync sync, cl_int *errcode_ret);
7867ec681f3Smrg
7877ec681f3Smrg#if defined(_WIN32)
7887ec681f3Smrg
7897ec681f3Smrg/* cl_khr_d3d10_sharing */
7907ec681f3Smrg
7917ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetDeviceIDsFromD3D10KHR)(
7927ec681f3Smrg    cl_platform_id platform, cl_d3d10_device_source_khr d3d_device_source,
7937ec681f3Smrg    void *d3d_object, cl_d3d10_device_set_khr d3d_device_set,
7947ec681f3Smrg    cl_uint num_entries, cl_device_id *devices,
7957ec681f3Smrg    cl_uint *num_devices) CL_API_SUFFIX__VERSION_1_0;
7967ec681f3Smrg
7977ec681f3Smrgtypedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateFromD3D10BufferKHR)(
7987ec681f3Smrg    cl_context context, cl_mem_flags flags, ID3D10Buffer *resource,
7997ec681f3Smrg    cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
8007ec681f3Smrg
8017ec681f3Smrgtypedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateFromD3D10Texture2DKHR)(
8027ec681f3Smrg    cl_context context, cl_mem_flags flags, ID3D10Texture2D *resource,
8037ec681f3Smrg    UINT subresource, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
8047ec681f3Smrg
8057ec681f3Smrgtypedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateFromD3D10Texture3DKHR)(
8067ec681f3Smrg    cl_context context, cl_mem_flags flags, ID3D10Texture3D *resource,
8077ec681f3Smrg    UINT subresource, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
8087ec681f3Smrg
8097ec681f3Smrgtypedef CL_API_ENTRY
8107ec681f3Smrgcl_int(CL_API_CALL *cl_api_clEnqueueAcquireD3D10ObjectsKHR)(
8117ec681f3Smrg    cl_command_queue command_queue, cl_uint num_objects,
8127ec681f3Smrg    const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
8137ec681f3Smrg    const cl_event *event_wait_list,
8147ec681f3Smrg    cl_event *event) CL_API_SUFFIX__VERSION_1_0;
8157ec681f3Smrg
8167ec681f3Smrgtypedef CL_API_ENTRY
8177ec681f3Smrgcl_int(CL_API_CALL *cl_api_clEnqueueReleaseD3D10ObjectsKHR)(
8187ec681f3Smrg    cl_command_queue command_queue, cl_uint num_objects,
8197ec681f3Smrg    const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
8207ec681f3Smrg    const cl_event *event_wait_list,
8217ec681f3Smrg    cl_event *event) CL_API_SUFFIX__VERSION_1_0;
8227ec681f3Smrg
8237ec681f3Smrgextern CL_API_ENTRY cl_int CL_API_CALL clGetDeviceIDsFromD3D10KHR(
8247ec681f3Smrg    cl_platform_id platform, cl_d3d10_device_source_khr d3d_device_source,
8257ec681f3Smrg    void *d3d_object, cl_d3d10_device_set_khr d3d_device_set,
8267ec681f3Smrg    cl_uint num_entries, cl_device_id *devices, cl_uint *num_devices);
8277ec681f3Smrg
8287ec681f3Smrgextern CL_API_ENTRY cl_mem CL_API_CALL
8297ec681f3SmrgclCreateFromD3D10BufferKHR(cl_context context, cl_mem_flags flags,
8307ec681f3Smrg                           ID3D10Buffer *resource, cl_int *errcode_ret);
8317ec681f3Smrg
8327ec681f3Smrgextern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromD3D10Texture2DKHR(
8337ec681f3Smrg    cl_context context, cl_mem_flags flags, ID3D10Texture2D *resource,
8347ec681f3Smrg    UINT subresource, cl_int *errcode_ret);
8357ec681f3Smrg
8367ec681f3Smrgextern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromD3D10Texture3DKHR(
8377ec681f3Smrg    cl_context context, cl_mem_flags flags, ID3D10Texture3D *resource,
8387ec681f3Smrg    UINT subresource, cl_int *errcode_ret);
8397ec681f3Smrg
8407ec681f3Smrgextern CL_API_ENTRY cl_int CL_API_CALL clEnqueueAcquireD3D10ObjectsKHR(
8417ec681f3Smrg    cl_command_queue command_queue, cl_uint num_objects,
8427ec681f3Smrg    const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
8437ec681f3Smrg    const cl_event *event_wait_list, cl_event *event);
8447ec681f3Smrg
8457ec681f3Smrgextern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReleaseD3D10ObjectsKHR(
8467ec681f3Smrg    cl_command_queue command_queue, cl_uint num_objects,
8477ec681f3Smrg    const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
8487ec681f3Smrg    const cl_event *event_wait_list, cl_event *event);
8497ec681f3Smrg
8507ec681f3Smrg/* cl_khr_d3d11_sharing */
8517ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetDeviceIDsFromD3D11KHR)(
8527ec681f3Smrg    cl_platform_id platform, cl_d3d11_device_source_khr d3d_device_source,
8537ec681f3Smrg    void *d3d_object, cl_d3d11_device_set_khr d3d_device_set,
8547ec681f3Smrg    cl_uint num_entries, cl_device_id *devices,
8557ec681f3Smrg    cl_uint *num_devices) CL_API_SUFFIX__VERSION_1_2;
8567ec681f3Smrg
8577ec681f3Smrgtypedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateFromD3D11BufferKHR)(
8587ec681f3Smrg    cl_context context, cl_mem_flags flags, ID3D11Buffer *resource,
8597ec681f3Smrg    cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2;
8607ec681f3Smrg
8617ec681f3Smrgtypedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateFromD3D11Texture2DKHR)(
8627ec681f3Smrg    cl_context context, cl_mem_flags flags, ID3D11Texture2D *resource,
8637ec681f3Smrg    UINT subresource, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2;
8647ec681f3Smrg
8657ec681f3Smrgtypedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateFromD3D11Texture3DKHR)(
8667ec681f3Smrg    cl_context context, cl_mem_flags flags, ID3D11Texture3D *resource,
8677ec681f3Smrg    UINT subresource, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2;
8687ec681f3Smrg
8697ec681f3Smrgtypedef CL_API_ENTRY
8707ec681f3Smrgcl_int(CL_API_CALL *cl_api_clEnqueueAcquireD3D11ObjectsKHR)(
8717ec681f3Smrg    cl_command_queue command_queue, cl_uint num_objects,
8727ec681f3Smrg    const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
8737ec681f3Smrg    const cl_event *event_wait_list,
8747ec681f3Smrg    cl_event *event) CL_API_SUFFIX__VERSION_1_2;
8757ec681f3Smrg
8767ec681f3Smrgtypedef CL_API_ENTRY
8777ec681f3Smrgcl_int(CL_API_CALL *cl_api_clEnqueueReleaseD3D11ObjectsKHR)(
8787ec681f3Smrg    cl_command_queue command_queue, cl_uint num_objects,
8797ec681f3Smrg    const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
8807ec681f3Smrg    const cl_event *event_wait_list,
8817ec681f3Smrg    cl_event *event) CL_API_SUFFIX__VERSION_1_2;
8827ec681f3Smrg
8837ec681f3Smrg/* cl_khr_dx9_media_sharing */
8847ec681f3Smrgtypedef CL_API_ENTRY
8857ec681f3Smrgcl_int(CL_API_CALL *cl_api_clGetDeviceIDsFromDX9MediaAdapterKHR)(
8867ec681f3Smrg    cl_platform_id platform, cl_uint num_media_adapters,
8877ec681f3Smrg    cl_dx9_media_adapter_type_khr *media_adapters_type, void *media_adapters,
8887ec681f3Smrg    cl_dx9_media_adapter_set_khr media_adapter_set, cl_uint num_entries,
8897ec681f3Smrg    cl_device_id *devices, cl_uint *num_devices) CL_API_SUFFIX__VERSION_1_2;
8907ec681f3Smrg
8917ec681f3Smrgtypedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateFromDX9MediaSurfaceKHR)(
8927ec681f3Smrg    cl_context context, cl_mem_flags flags,
8937ec681f3Smrg    cl_dx9_media_adapter_type_khr adapter_type, void *surface_info,
8947ec681f3Smrg    cl_uint plane, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2;
8957ec681f3Smrg
8967ec681f3Smrgtypedef CL_API_ENTRY
8977ec681f3Smrgcl_int(CL_API_CALL *cl_api_clEnqueueAcquireDX9MediaSurfacesKHR)(
8987ec681f3Smrg    cl_command_queue command_queue, cl_uint num_objects,
8997ec681f3Smrg    const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
9007ec681f3Smrg    const cl_event *event_wait_list,
9017ec681f3Smrg    cl_event *event) CL_API_SUFFIX__VERSION_1_2;
9027ec681f3Smrg
9037ec681f3Smrgtypedef CL_API_ENTRY
9047ec681f3Smrgcl_int(CL_API_CALL *cl_api_clEnqueueReleaseDX9MediaSurfacesKHR)(
9057ec681f3Smrg    cl_command_queue command_queue, cl_uint num_objects,
9067ec681f3Smrg    const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
9077ec681f3Smrg    const cl_event *event_wait_list,
9087ec681f3Smrg    cl_event *event) CL_API_SUFFIX__VERSION_1_2;
9097ec681f3Smrg
9107ec681f3Smrg/* cl_khr_d3d11_sharing */
9117ec681f3Smrgextern CL_API_ENTRY cl_int CL_API_CALL clGetDeviceIDsFromD3D11KHR(
9127ec681f3Smrg    cl_platform_id platform, cl_d3d11_device_source_khr d3d_device_source,
9137ec681f3Smrg    void *d3d_object, cl_d3d11_device_set_khr d3d_device_set,
9147ec681f3Smrg    cl_uint num_entries, cl_device_id *devices, cl_uint *num_devices);
9157ec681f3Smrg
9167ec681f3Smrgextern CL_API_ENTRY cl_mem CL_API_CALL
9177ec681f3SmrgclCreateFromD3D11BufferKHR(cl_context context, cl_mem_flags flags,
9187ec681f3Smrg                           ID3D11Buffer *resource, cl_int *errcode_ret);
9197ec681f3Smrg
9207ec681f3Smrgextern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromD3D11Texture2DKHR(
9217ec681f3Smrg    cl_context context, cl_mem_flags flags, ID3D11Texture2D *resource,
9227ec681f3Smrg    UINT subresource, cl_int *errcode_ret);
9237ec681f3Smrg
9247ec681f3Smrgextern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromD3D11Texture3DKHR(
9257ec681f3Smrg    cl_context context, cl_mem_flags flags, ID3D11Texture3D *resource,
9267ec681f3Smrg    UINT subresource, cl_int *errcode_ret);
9277ec681f3Smrg
9287ec681f3Smrgextern CL_API_ENTRY cl_int CL_API_CALL clEnqueueAcquireD3D11ObjectsKHR(
9297ec681f3Smrg    cl_command_queue command_queue, cl_uint num_objects,
9307ec681f3Smrg    const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
9317ec681f3Smrg    const cl_event *event_wait_list, cl_event *event);
9327ec681f3Smrg
9337ec681f3Smrgextern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReleaseD3D11ObjectsKHR(
9347ec681f3Smrg    cl_command_queue command_queue, cl_uint num_objects,
9357ec681f3Smrg    const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
9367ec681f3Smrg    const cl_event *event_wait_list, cl_event *event);
9377ec681f3Smrg
9387ec681f3Smrg/* cl_khr_dx9_media_sharing */
9397ec681f3Smrgextern CL_API_ENTRY cl_int CL_API_CALL clGetDeviceIDsFromDX9MediaAdapterKHR(
9407ec681f3Smrg    cl_platform_id platform, cl_uint num_media_adapters,
9417ec681f3Smrg    cl_dx9_media_adapter_type_khr *media_adapter_type, void *media_adapters,
9427ec681f3Smrg    cl_dx9_media_adapter_set_khr media_adapter_set, cl_uint num_entries,
9437ec681f3Smrg    cl_device_id *devices, cl_uint *num_devices);
9447ec681f3Smrg
9457ec681f3Smrgextern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromDX9MediaSurfaceKHR(
9467ec681f3Smrg    cl_context context, cl_mem_flags flags,
9477ec681f3Smrg    cl_dx9_media_adapter_type_khr adapter_type, void *surface_info,
9487ec681f3Smrg    cl_uint plane, cl_int *errcode_ret);
9497ec681f3Smrg
9507ec681f3Smrgextern CL_API_ENTRY cl_int CL_API_CALL clEnqueueAcquireDX9MediaSurfacesKHR(
9517ec681f3Smrg    cl_command_queue command_queue, cl_uint num_objects,
9527ec681f3Smrg    const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
9537ec681f3Smrg    const cl_event *event_wait_list, cl_event *event);
9547ec681f3Smrg
9557ec681f3Smrgextern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReleaseDX9MediaSurfacesKHR(
9567ec681f3Smrg    cl_command_queue command_queue, cl_uint num_objects,
9577ec681f3Smrg    const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
9587ec681f3Smrg    const cl_event *event_wait_list, cl_event *event);
9597ec681f3Smrg
9607ec681f3Smrg#else
9617ec681f3Smrg
9627ec681f3Smrg/* cl_khr_d3d10_sharing */
9637ec681f3Smrgtypedef void *cl_api_clGetDeviceIDsFromD3D10KHR;
9647ec681f3Smrgtypedef void *cl_api_clCreateFromD3D10BufferKHR;
9657ec681f3Smrgtypedef void *cl_api_clCreateFromD3D10Texture2DKHR;
9667ec681f3Smrgtypedef void *cl_api_clCreateFromD3D10Texture3DKHR;
9677ec681f3Smrgtypedef void *cl_api_clEnqueueAcquireD3D10ObjectsKHR;
9687ec681f3Smrgtypedef void *cl_api_clEnqueueReleaseD3D10ObjectsKHR;
9697ec681f3Smrg
9707ec681f3Smrg/* cl_khr_d3d11_sharing */
9717ec681f3Smrgtypedef void *cl_api_clGetDeviceIDsFromD3D11KHR;
9727ec681f3Smrgtypedef void *cl_api_clCreateFromD3D11BufferKHR;
9737ec681f3Smrgtypedef void *cl_api_clCreateFromD3D11Texture2DKHR;
9747ec681f3Smrgtypedef void *cl_api_clCreateFromD3D11Texture3DKHR;
9757ec681f3Smrgtypedef void *cl_api_clEnqueueAcquireD3D11ObjectsKHR;
9767ec681f3Smrgtypedef void *cl_api_clEnqueueReleaseD3D11ObjectsKHR;
9777ec681f3Smrg
9787ec681f3Smrg/* cl_khr_dx9_media_sharing */
9797ec681f3Smrgtypedef void *cl_api_clCreateFromDX9MediaSurfaceKHR;
9807ec681f3Smrgtypedef void *cl_api_clEnqueueAcquireDX9MediaSurfacesKHR;
9817ec681f3Smrgtypedef void *cl_api_clEnqueueReleaseDX9MediaSurfacesKHR;
9827ec681f3Smrgtypedef void *cl_api_clGetDeviceIDsFromDX9MediaAdapterKHR;
9837ec681f3Smrg
9847ec681f3Smrg#endif
9857ec681f3Smrg
9867ec681f3Smrg/* OpenCL 1.1 */
9877ec681f3Smrg
9887ec681f3Smrg#ifdef CL_VERSION_1_1
9897ec681f3Smrg
9907ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clSetEventCallback)(
9917ec681f3Smrg    cl_event /* event */, cl_int /* command_exec_callback_type */,
9927ec681f3Smrg    void(CL_CALLBACK * /* pfn_notify */)(cl_event, cl_int, void *),
9937ec681f3Smrg    void * /* user_data */) CL_API_SUFFIX__VERSION_1_1;
9947ec681f3Smrg
9957ec681f3Smrgtypedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateSubBuffer)(
9967ec681f3Smrg    cl_mem /* buffer */, cl_mem_flags /* flags */,
9977ec681f3Smrg    cl_buffer_create_type /* buffer_create_type */,
9987ec681f3Smrg    const void * /* buffer_create_info */,
9997ec681f3Smrg    cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1;
10007ec681f3Smrg
10017ec681f3Smrgtypedef CL_API_ENTRY
10027ec681f3Smrgcl_int(CL_API_CALL *cl_api_clSetMemObjectDestructorCallback)(
10037ec681f3Smrg    cl_mem /* memobj */,
10047ec681f3Smrg    void(CL_CALLBACK * /*pfn_notify*/)(cl_mem /* memobj */,
10057ec681f3Smrg                                       void * /*user_data*/),
10067ec681f3Smrg    void * /*user_data */) CL_API_SUFFIX__VERSION_1_1;
10077ec681f3Smrg
10087ec681f3Smrgtypedef CL_API_ENTRY cl_event(CL_API_CALL *cl_api_clCreateUserEvent)(
10097ec681f3Smrg    cl_context /* context */,
10107ec681f3Smrg    cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1;
10117ec681f3Smrg
10127ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clSetUserEventStatus)(
10137ec681f3Smrg    cl_event /* event */,
10147ec681f3Smrg    cl_int /* execution_status */) CL_API_SUFFIX__VERSION_1_1;
10157ec681f3Smrg
10167ec681f3Smrg#else
10177ec681f3Smrg
10187ec681f3Smrgtypedef void *cl_api_clSetEventCallback;
10197ec681f3Smrgtypedef void *cl_api_clCreateSubBuffer;
10207ec681f3Smrgtypedef void *cl_api_clSetMemObjectDestructorCallback;
10217ec681f3Smrgtypedef void *cl_api_clCreateUserEvent;
10227ec681f3Smrgtypedef void *cl_api_clSetUserEventStatus;
10237ec681f3Smrg
10247ec681f3Smrg#endif
10257ec681f3Smrg
10267ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clCreateSubDevicesEXT)(
10277ec681f3Smrg    cl_device_id in_device,
10287ec681f3Smrg    const cl_device_partition_property_ext *partition_properties,
10297ec681f3Smrg    cl_uint num_entries, cl_device_id *out_devices, cl_uint *num_devices);
10307ec681f3Smrg
10317ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clRetainDeviceEXT)(
10327ec681f3Smrg    cl_device_id device) CL_API_SUFFIX__VERSION_1_0;
10337ec681f3Smrg
10347ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clReleaseDeviceEXT)(
10357ec681f3Smrg    cl_device_id device) CL_API_SUFFIX__VERSION_1_0;
10367ec681f3Smrg
10377ec681f3Smrg/* cl_khr_egl_image */
10387ec681f3Smrgtypedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateFromEGLImageKHR)(
10397ec681f3Smrg    cl_context context, CLeglDisplayKHR display, CLeglImageKHR image,
10407ec681f3Smrg    cl_mem_flags flags, const cl_egl_image_properties_khr *properties,
10417ec681f3Smrg    cl_int *errcode_ret);
10427ec681f3Smrg
10437ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueAcquireEGLObjectsKHR)(
10447ec681f3Smrg    cl_command_queue command_queue, cl_uint num_objects,
10457ec681f3Smrg    const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
10467ec681f3Smrg    const cl_event *event_wait_list, cl_event *event);
10477ec681f3Smrg
10487ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueReleaseEGLObjectsKHR)(
10497ec681f3Smrg    cl_command_queue command_queue, cl_uint num_objects,
10507ec681f3Smrg    const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
10517ec681f3Smrg    const cl_event *event_wait_list, cl_event *event);
10527ec681f3Smrg
10537ec681f3Smrg/* cl_khr_egl_event */
10547ec681f3Smrgtypedef CL_API_ENTRY cl_event(CL_API_CALL *cl_api_clCreateEventFromEGLSyncKHR)(
10557ec681f3Smrg    cl_context context, CLeglSyncKHR sync, CLeglDisplayKHR display,
10567ec681f3Smrg    cl_int *errcode_ret);
10577ec681f3Smrg
10587ec681f3Smrg#ifdef CL_VERSION_2_1
10597ec681f3Smrg
10607ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clSetDefaultDeviceCommandQueue)(
10617ec681f3Smrg    cl_context context, cl_device_id device,
10627ec681f3Smrg    cl_command_queue command_queue) CL_API_SUFFIX__VERSION_2_1;
10637ec681f3Smrg
10647ec681f3Smrgtypedef CL_API_ENTRY cl_program(CL_API_CALL *cl_api_clCreateProgramWithIL)(
10657ec681f3Smrg    cl_context context, const void *il, size_t length,
10667ec681f3Smrg    cl_int *errcode_ret) CL_API_SUFFIX__VERSION_2_1;
10677ec681f3Smrg
10687ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetKernelSubGroupInfo)(
10697ec681f3Smrg    cl_kernel kernel, cl_device_id device, cl_kernel_sub_group_info param_name,
10707ec681f3Smrg    size_t input_value_size, const void *input_value, size_t param_value_size,
10717ec681f3Smrg    void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_2_1;
10727ec681f3Smrg
10737ec681f3Smrgtypedef CL_API_ENTRY cl_kernel(CL_API_CALL *cl_api_clCloneKernel)(
10747ec681f3Smrg    cl_kernel source_kernel, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_2_1;
10757ec681f3Smrg
10767ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueSVMMigrateMem)(
10777ec681f3Smrg    cl_command_queue command_queue, cl_uint num_svm_pointers,
10787ec681f3Smrg    const void **svm_pointers, const size_t *sizes,
10797ec681f3Smrg    cl_mem_migration_flags flags, cl_uint num_events_in_wait_list,
10807ec681f3Smrg    const cl_event *event_wait_list,
10817ec681f3Smrg    cl_event *event) CL_API_SUFFIX__VERSION_2_1;
10827ec681f3Smrg
10837ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetDeviceAndHostTimer)(
10847ec681f3Smrg    cl_device_id device, cl_ulong *device_timestamp,
10857ec681f3Smrg    cl_ulong *host_timestamp) CL_API_SUFFIX__VERSION_2_1;
10867ec681f3Smrg
10877ec681f3Smrgtypedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetHostTimer)(
10887ec681f3Smrg    cl_device_id device, cl_ulong *host_timestamp) CL_API_SUFFIX__VERSION_2_1;
10897ec681f3Smrg
10907ec681f3Smrg#else
10917ec681f3Smrg
10927ec681f3Smrgtypedef void *cl_api_clSetDefaultDeviceCommandQueue;
10937ec681f3Smrgtypedef void *cl_api_clCreateProgramWithIL;
10947ec681f3Smrgtypedef void *cl_api_clGetKernelSubGroupInfo;
10957ec681f3Smrgtypedef void *cl_api_clCloneKernel;
10967ec681f3Smrgtypedef void *cl_api_clEnqueueSVMMigrateMem;
10977ec681f3Smrgtypedef void *cl_api_clGetDeviceAndHostTimer;
10987ec681f3Smrgtypedef void *cl_api_clGetHostTimer;
10997ec681f3Smrg
11007ec681f3Smrg#endif
11017ec681f3Smrg
11027ec681f3Smrg/* Vendor dispatch table struture */
11037ec681f3Smrg
11047ec681f3Smrgtypedef struct _cl_icd_dispatch {
11057ec681f3Smrg  /* OpenCL 1.0 */
11067ec681f3Smrg  cl_api_clGetPlatformIDs clGetPlatformIDs;
11077ec681f3Smrg  cl_api_clGetPlatformInfo clGetPlatformInfo;
11087ec681f3Smrg  cl_api_clGetDeviceIDs clGetDeviceIDs;
11097ec681f3Smrg  cl_api_clGetDeviceInfo clGetDeviceInfo;
11107ec681f3Smrg  cl_api_clCreateContext clCreateContext;
11117ec681f3Smrg  cl_api_clCreateContextFromType clCreateContextFromType;
11127ec681f3Smrg  cl_api_clRetainContext clRetainContext;
11137ec681f3Smrg  cl_api_clReleaseContext clReleaseContext;
11147ec681f3Smrg  cl_api_clGetContextInfo clGetContextInfo;
11157ec681f3Smrg  cl_api_clCreateCommandQueue clCreateCommandQueue;
11167ec681f3Smrg  cl_api_clRetainCommandQueue clRetainCommandQueue;
11177ec681f3Smrg  cl_api_clReleaseCommandQueue clReleaseCommandQueue;
11187ec681f3Smrg  cl_api_clGetCommandQueueInfo clGetCommandQueueInfo;
11197ec681f3Smrg  cl_api_clSetCommandQueueProperty clSetCommandQueueProperty;
11207ec681f3Smrg  cl_api_clCreateBuffer clCreateBuffer;
11217ec681f3Smrg  cl_api_clCreateImage2D clCreateImage2D;
11227ec681f3Smrg  cl_api_clCreateImage3D clCreateImage3D;
11237ec681f3Smrg  cl_api_clRetainMemObject clRetainMemObject;
11247ec681f3Smrg  cl_api_clReleaseMemObject clReleaseMemObject;
11257ec681f3Smrg  cl_api_clGetSupportedImageFormats clGetSupportedImageFormats;
11267ec681f3Smrg  cl_api_clGetMemObjectInfo clGetMemObjectInfo;
11277ec681f3Smrg  cl_api_clGetImageInfo clGetImageInfo;
11287ec681f3Smrg  cl_api_clCreateSampler clCreateSampler;
11297ec681f3Smrg  cl_api_clRetainSampler clRetainSampler;
11307ec681f3Smrg  cl_api_clReleaseSampler clReleaseSampler;
11317ec681f3Smrg  cl_api_clGetSamplerInfo clGetSamplerInfo;
11327ec681f3Smrg  cl_api_clCreateProgramWithSource clCreateProgramWithSource;
11337ec681f3Smrg  cl_api_clCreateProgramWithBinary clCreateProgramWithBinary;
11347ec681f3Smrg  cl_api_clRetainProgram clRetainProgram;
11357ec681f3Smrg  cl_api_clReleaseProgram clReleaseProgram;
11367ec681f3Smrg  cl_api_clBuildProgram clBuildProgram;
11377ec681f3Smrg  cl_api_clUnloadCompiler clUnloadCompiler;
11387ec681f3Smrg  cl_api_clGetProgramInfo clGetProgramInfo;
11397ec681f3Smrg  cl_api_clGetProgramBuildInfo clGetProgramBuildInfo;
11407ec681f3Smrg  cl_api_clCreateKernel clCreateKernel;
11417ec681f3Smrg  cl_api_clCreateKernelsInProgram clCreateKernelsInProgram;
11427ec681f3Smrg  cl_api_clRetainKernel clRetainKernel;
11437ec681f3Smrg  cl_api_clReleaseKernel clReleaseKernel;
11447ec681f3Smrg  cl_api_clSetKernelArg clSetKernelArg;
11457ec681f3Smrg  cl_api_clGetKernelInfo clGetKernelInfo;
11467ec681f3Smrg  cl_api_clGetKernelWorkGroupInfo clGetKernelWorkGroupInfo;
11477ec681f3Smrg  cl_api_clWaitForEvents clWaitForEvents;
11487ec681f3Smrg  cl_api_clGetEventInfo clGetEventInfo;
11497ec681f3Smrg  cl_api_clRetainEvent clRetainEvent;
11507ec681f3Smrg  cl_api_clReleaseEvent clReleaseEvent;
11517ec681f3Smrg  cl_api_clGetEventProfilingInfo clGetEventProfilingInfo;
11527ec681f3Smrg  cl_api_clFlush clFlush;
11537ec681f3Smrg  cl_api_clFinish clFinish;
11547ec681f3Smrg  cl_api_clEnqueueReadBuffer clEnqueueReadBuffer;
11557ec681f3Smrg  cl_api_clEnqueueWriteBuffer clEnqueueWriteBuffer;
11567ec681f3Smrg  cl_api_clEnqueueCopyBuffer clEnqueueCopyBuffer;
11577ec681f3Smrg  cl_api_clEnqueueReadImage clEnqueueReadImage;
11587ec681f3Smrg  cl_api_clEnqueueWriteImage clEnqueueWriteImage;
11597ec681f3Smrg  cl_api_clEnqueueCopyImage clEnqueueCopyImage;
11607ec681f3Smrg  cl_api_clEnqueueCopyImageToBuffer clEnqueueCopyImageToBuffer;
11617ec681f3Smrg  cl_api_clEnqueueCopyBufferToImage clEnqueueCopyBufferToImage;
11627ec681f3Smrg  cl_api_clEnqueueMapBuffer clEnqueueMapBuffer;
11637ec681f3Smrg  cl_api_clEnqueueMapImage clEnqueueMapImage;
11647ec681f3Smrg  cl_api_clEnqueueUnmapMemObject clEnqueueUnmapMemObject;
11657ec681f3Smrg  cl_api_clEnqueueNDRangeKernel clEnqueueNDRangeKernel;
11667ec681f3Smrg  cl_api_clEnqueueTask clEnqueueTask;
11677ec681f3Smrg  cl_api_clEnqueueNativeKernel clEnqueueNativeKernel;
11687ec681f3Smrg  cl_api_clEnqueueMarker clEnqueueMarker;
11697ec681f3Smrg  cl_api_clEnqueueWaitForEvents clEnqueueWaitForEvents;
11707ec681f3Smrg  cl_api_clEnqueueBarrier clEnqueueBarrier;
11717ec681f3Smrg  cl_api_clGetExtensionFunctionAddress clGetExtensionFunctionAddress;
11727ec681f3Smrg  cl_api_clCreateFromGLBuffer clCreateFromGLBuffer;
11737ec681f3Smrg  cl_api_clCreateFromGLTexture2D clCreateFromGLTexture2D;
11747ec681f3Smrg  cl_api_clCreateFromGLTexture3D clCreateFromGLTexture3D;
11757ec681f3Smrg  cl_api_clCreateFromGLRenderbuffer clCreateFromGLRenderbuffer;
11767ec681f3Smrg  cl_api_clGetGLObjectInfo clGetGLObjectInfo;
11777ec681f3Smrg  cl_api_clGetGLTextureInfo clGetGLTextureInfo;
11787ec681f3Smrg  cl_api_clEnqueueAcquireGLObjects clEnqueueAcquireGLObjects;
11797ec681f3Smrg  cl_api_clEnqueueReleaseGLObjects clEnqueueReleaseGLObjects;
11807ec681f3Smrg  cl_api_clGetGLContextInfoKHR clGetGLContextInfoKHR;
11817ec681f3Smrg
11827ec681f3Smrg  /* cl_khr_d3d10_sharing */
11837ec681f3Smrg  cl_api_clGetDeviceIDsFromD3D10KHR clGetDeviceIDsFromD3D10KHR;
11847ec681f3Smrg  cl_api_clCreateFromD3D10BufferKHR clCreateFromD3D10BufferKHR;
11857ec681f3Smrg  cl_api_clCreateFromD3D10Texture2DKHR clCreateFromD3D10Texture2DKHR;
11867ec681f3Smrg  cl_api_clCreateFromD3D10Texture3DKHR clCreateFromD3D10Texture3DKHR;
11877ec681f3Smrg  cl_api_clEnqueueAcquireD3D10ObjectsKHR clEnqueueAcquireD3D10ObjectsKHR;
11887ec681f3Smrg  cl_api_clEnqueueReleaseD3D10ObjectsKHR clEnqueueReleaseD3D10ObjectsKHR;
11897ec681f3Smrg
11907ec681f3Smrg  /* OpenCL 1.1 */
11917ec681f3Smrg  cl_api_clSetEventCallback clSetEventCallback;
11927ec681f3Smrg  cl_api_clCreateSubBuffer clCreateSubBuffer;
11937ec681f3Smrg  cl_api_clSetMemObjectDestructorCallback clSetMemObjectDestructorCallback;
11947ec681f3Smrg  cl_api_clCreateUserEvent clCreateUserEvent;
11957ec681f3Smrg  cl_api_clSetUserEventStatus clSetUserEventStatus;
11967ec681f3Smrg  cl_api_clEnqueueReadBufferRect clEnqueueReadBufferRect;
11977ec681f3Smrg  cl_api_clEnqueueWriteBufferRect clEnqueueWriteBufferRect;
11987ec681f3Smrg  cl_api_clEnqueueCopyBufferRect clEnqueueCopyBufferRect;
11997ec681f3Smrg
12007ec681f3Smrg  /* cl_ext_device_fission */
12017ec681f3Smrg  cl_api_clCreateSubDevicesEXT clCreateSubDevicesEXT;
12027ec681f3Smrg  cl_api_clRetainDeviceEXT clRetainDeviceEXT;
12037ec681f3Smrg  cl_api_clReleaseDeviceEXT clReleaseDeviceEXT;
12047ec681f3Smrg
12057ec681f3Smrg  /* cl_khr_gl_event */
12067ec681f3Smrg  cl_api_clCreateEventFromGLsyncKHR clCreateEventFromGLsyncKHR;
12077ec681f3Smrg
12087ec681f3Smrg  /* OpenCL 1.2 */
12097ec681f3Smrg  cl_api_clCreateSubDevices clCreateSubDevices;
12107ec681f3Smrg  cl_api_clRetainDevice clRetainDevice;
12117ec681f3Smrg  cl_api_clReleaseDevice clReleaseDevice;
12127ec681f3Smrg  cl_api_clCreateImage clCreateImage;
12137ec681f3Smrg  cl_api_clCreateProgramWithBuiltInKernels clCreateProgramWithBuiltInKernels;
12147ec681f3Smrg  cl_api_clCompileProgram clCompileProgram;
12157ec681f3Smrg  cl_api_clLinkProgram clLinkProgram;
12167ec681f3Smrg  cl_api_clUnloadPlatformCompiler clUnloadPlatformCompiler;
12177ec681f3Smrg  cl_api_clGetKernelArgInfo clGetKernelArgInfo;
12187ec681f3Smrg  cl_api_clEnqueueFillBuffer clEnqueueFillBuffer;
12197ec681f3Smrg  cl_api_clEnqueueFillImage clEnqueueFillImage;
12207ec681f3Smrg  cl_api_clEnqueueMigrateMemObjects clEnqueueMigrateMemObjects;
12217ec681f3Smrg  cl_api_clEnqueueMarkerWithWaitList clEnqueueMarkerWithWaitList;
12227ec681f3Smrg  cl_api_clEnqueueBarrierWithWaitList clEnqueueBarrierWithWaitList;
12237ec681f3Smrg  cl_api_clGetExtensionFunctionAddressForPlatform
12247ec681f3Smrg      clGetExtensionFunctionAddressForPlatform;
12257ec681f3Smrg  cl_api_clCreateFromGLTexture clCreateFromGLTexture;
12267ec681f3Smrg
12277ec681f3Smrg  /* cl_khr_d3d11_sharing */
12287ec681f3Smrg  cl_api_clGetDeviceIDsFromD3D11KHR clGetDeviceIDsFromD3D11KHR;
12297ec681f3Smrg  cl_api_clCreateFromD3D11BufferKHR clCreateFromD3D11BufferKHR;
12307ec681f3Smrg  cl_api_clCreateFromD3D11Texture2DKHR clCreateFromD3D11Texture2DKHR;
12317ec681f3Smrg  cl_api_clCreateFromD3D11Texture3DKHR clCreateFromD3D11Texture3DKHR;
12327ec681f3Smrg  cl_api_clCreateFromDX9MediaSurfaceKHR clCreateFromDX9MediaSurfaceKHR;
12337ec681f3Smrg  cl_api_clEnqueueAcquireD3D11ObjectsKHR clEnqueueAcquireD3D11ObjectsKHR;
12347ec681f3Smrg  cl_api_clEnqueueReleaseD3D11ObjectsKHR clEnqueueReleaseD3D11ObjectsKHR;
12357ec681f3Smrg
12367ec681f3Smrg  /* cl_khr_dx9_media_sharing */
12377ec681f3Smrg  cl_api_clGetDeviceIDsFromDX9MediaAdapterKHR
12387ec681f3Smrg      clGetDeviceIDsFromDX9MediaAdapterKHR;
12397ec681f3Smrg  cl_api_clEnqueueAcquireDX9MediaSurfacesKHR
12407ec681f3Smrg      clEnqueueAcquireDX9MediaSurfacesKHR;
12417ec681f3Smrg  cl_api_clEnqueueReleaseDX9MediaSurfacesKHR
12427ec681f3Smrg      clEnqueueReleaseDX9MediaSurfacesKHR;
12437ec681f3Smrg
12447ec681f3Smrg  /* cl_khr_egl_image */
12457ec681f3Smrg  cl_api_clCreateFromEGLImageKHR clCreateFromEGLImageKHR;
12467ec681f3Smrg  cl_api_clEnqueueAcquireEGLObjectsKHR clEnqueueAcquireEGLObjectsKHR;
12477ec681f3Smrg  cl_api_clEnqueueReleaseEGLObjectsKHR clEnqueueReleaseEGLObjectsKHR;
12487ec681f3Smrg
12497ec681f3Smrg  /* cl_khr_egl_event */
12507ec681f3Smrg  cl_api_clCreateEventFromEGLSyncKHR clCreateEventFromEGLSyncKHR;
12517ec681f3Smrg
12527ec681f3Smrg  /* OpenCL 2.0 */
12537ec681f3Smrg  cl_api_clCreateCommandQueueWithProperties clCreateCommandQueueWithProperties;
12547ec681f3Smrg  cl_api_clCreatePipe clCreatePipe;
12557ec681f3Smrg  cl_api_clGetPipeInfo clGetPipeInfo;
12567ec681f3Smrg  cl_api_clSVMAlloc clSVMAlloc;
12577ec681f3Smrg  cl_api_clSVMFree clSVMFree;
12587ec681f3Smrg  cl_api_clEnqueueSVMFree clEnqueueSVMFree;
12597ec681f3Smrg  cl_api_clEnqueueSVMMemcpy clEnqueueSVMMemcpy;
12607ec681f3Smrg  cl_api_clEnqueueSVMMemFill clEnqueueSVMMemFill;
12617ec681f3Smrg  cl_api_clEnqueueSVMMap clEnqueueSVMMap;
12627ec681f3Smrg  cl_api_clEnqueueSVMUnmap clEnqueueSVMUnmap;
12637ec681f3Smrg  cl_api_clCreateSamplerWithProperties clCreateSamplerWithProperties;
12647ec681f3Smrg  cl_api_clSetKernelArgSVMPointer clSetKernelArgSVMPointer;
12657ec681f3Smrg  cl_api_clSetKernelExecInfo clSetKernelExecInfo;
12667ec681f3Smrg
12677ec681f3Smrg  /* cl_khr_sub_groups */
12687ec681f3Smrg  cl_api_clGetKernelSubGroupInfoKHR clGetKernelSubGroupInfoKHR;
12697ec681f3Smrg
12707ec681f3Smrg  /* OpenCL 2.1 */
12717ec681f3Smrg  cl_api_clCloneKernel clCloneKernel;
12727ec681f3Smrg  cl_api_clCreateProgramWithIL clCreateProgramWithIL;
12737ec681f3Smrg  cl_api_clEnqueueSVMMigrateMem clEnqueueSVMMigrateMem;
12747ec681f3Smrg  cl_api_clGetDeviceAndHostTimer clGetDeviceAndHostTimer;
12757ec681f3Smrg  cl_api_clGetHostTimer clGetHostTimer;
12767ec681f3Smrg  cl_api_clGetKernelSubGroupInfo clGetKernelSubGroupInfo;
12777ec681f3Smrg  cl_api_clSetDefaultDeviceCommandQueue clSetDefaultDeviceCommandQueue;
12787ec681f3Smrg
12797ec681f3Smrg  /* OpenCL 2.2 */
12807ec681f3Smrg  cl_api_clSetProgramReleaseCallback clSetProgramReleaseCallback;
12817ec681f3Smrg  cl_api_clSetProgramSpecializationConstant clSetProgramSpecializationConstant;
12827ec681f3Smrg
12837ec681f3Smrg  /* OpenCL 3.0 */
12847ec681f3Smrg  cl_api_clCreateBufferWithProperties clCreateBufferWithProperties;
12857ec681f3Smrg  cl_api_clCreateImageWithProperties clCreateImageWithProperties;
12867ec681f3Smrg  cl_api_clSetContextDestructorCallback clSetContextDestructorCallback;
12877ec681f3Smrg
12887ec681f3Smrg} cl_icd_dispatch;
12897ec681f3Smrg
12907ec681f3Smrg#ifdef __cplusplus
12917ec681f3Smrg}
12927ec681f3Smrg#endif
12937ec681f3Smrg
12947ec681f3Smrg#endif /* #ifndef OPENCL_CL_ICD_H */
1295