• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*******************************************************************************
2  * Copyright (c) 2008-2010 The Khronos Group Inc.
3  *
4  * Permission is hereby granted, free of charge, to any person obtaining a
5  * copy of this software and/or associated documentation files (the
6  * "Materials"), to deal in the Materials without restriction, including
7  * without limitation the rights to use, copy, modify, merge, publish,
8  * distribute, sublicense, and/or sell copies of the Materials, and to
9  * permit persons to whom the Materials are furnished to do so, subject to
10  * the following conditions:
11  *
12  * The above copyright notice and this permission notice shall be included
13  * in all copies or substantial portions of the Materials.
14  *
15  * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
18  * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
19  * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
20  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
21  * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
22  ******************************************************************************/
23 
24 #ifndef __OPENCL_CL_ICD_H
25 #define __OPENCL_CL_ICD_H
26 
27 #include <CL/cl.h>
28 #include <CL/cl_gl.h>
29 
30 #define cl_khr_icd 1
31 
32 #ifdef __cplusplus
33 extern "C" {
34 #endif /* __cplusplus */
35 
36 typedef cl_int(CL_API_CALL* clGetPlatformIDs_fn)(
37     cl_uint /* num_entries */, cl_platform_id* /* platforms */,
38     cl_uint* /* num_platforms */) CL_API_SUFFIX__VERSION_1_0;
39 
40 typedef cl_int(CL_API_CALL* clGetPlatformInfo_fn)(
41     cl_platform_id /* platform */, cl_platform_info /* param_name */, size_t /* param_value_size */,
42     void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;
43 
44 typedef cl_int(CL_API_CALL* clGetDeviceIDs_fn)(
45     cl_platform_id /* platform */, cl_device_type /* device_type */, cl_uint /* num_entries */,
46     cl_device_id* /* devices */, cl_uint* /* num_devices */) CL_API_SUFFIX__VERSION_1_0;
47 
48 typedef cl_int(CL_API_CALL* clGetDeviceInfo_fn)(
49     cl_device_id /* device */, cl_device_info /* param_name */, size_t /* param_value_size */,
50     void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;
51 
52 typedef cl_context(CL_API_CALL* clCreateContext_fn)(
53     const cl_context_properties* /* properties */, cl_uint /* num_devices */,
54     const cl_device_id* /* devices */,
55     void(CL_CALLBACK* /* pfn_notify */)(const char*, const void*, size_t, void*),
56     void* /* user_data */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;
57 
58 typedef cl_context(CL_API_CALL* clCreateContextFromType_fn)(
59     const cl_context_properties* /* properties */, cl_device_type /* device_type */,
60     void(CL_CALLBACK* /* pfn_notify*/)(const char*, const void*, size_t, void*),
61     void* /* user_data */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;
62 
63 typedef cl_int(CL_API_CALL* clRetainContext_fn)(cl_context /* context */)
64     CL_API_SUFFIX__VERSION_1_0;
65 
66 typedef cl_int(CL_API_CALL* clReleaseContext_fn)(cl_context /* context */)
67     CL_API_SUFFIX__VERSION_1_0;
68 
69 typedef cl_int(CL_API_CALL* clGetContextInfo_fn)(
70     cl_context /* context */, cl_context_info /* param_name */, size_t /* param_value_size */,
71     void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;
72 
73 typedef cl_command_queue(CL_API_CALL* clCreateCommandQueue_fn)(
74     cl_context /* context */, cl_device_id /* device */,
75     cl_command_queue_properties /* properties */,
76     cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;
77 
78 typedef cl_int(CL_API_CALL* clRetainCommandQueue_fn)(cl_command_queue /* command_queue */)
79     CL_API_SUFFIX__VERSION_1_0;
80 
81 typedef cl_int(CL_API_CALL* clReleaseCommandQueue_fn)(cl_command_queue /* command_queue */)
82     CL_API_SUFFIX__VERSION_1_0;
83 
84 typedef cl_int(CL_API_CALL* clGetCommandQueueInfo_fn)(
85     cl_command_queue /* command_queue */, cl_command_queue_info /* param_name */,
86     size_t /* param_value_size */, void* /* param_value */,
87     size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;
88 
89 typedef cl_int(CL_API_CALL* clSetCommandQueueProperty_fn)(
90     cl_command_queue /* command_queue */, cl_command_queue_properties /* properties */,
91     cl_bool /* enable */,
92     cl_command_queue_properties* /* old_properties */) /*CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED*/;
93 
94 typedef cl_mem(CL_API_CALL* clCreateBuffer_fn)(
95     cl_context /* context */, cl_mem_flags /* flags */, size_t /* size */, void* /* host_ptr */,
96     cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;
97 
98 typedef cl_mem(CL_API_CALL* clCreateSubBuffer_fn)(
99     cl_mem /* buffer */, cl_mem_flags /* flags */, cl_buffer_create_type /* buffer_create_type */,
100     const void* /* buffer_create_info */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1;
101 
102 typedef cl_mem(CL_API_CALL* clCreateImage2D_fn)(
103     cl_context /* context */, cl_mem_flags /* flags */, const cl_image_format* /* image_format */,
104     size_t /* image_width */, size_t /* image_height */, size_t /* image_row_pitch */,
105     void* /* host_ptr */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;
106 
107 typedef cl_mem(CL_API_CALL* clCreateImage3D_fn)(
108     cl_context /* context */, cl_mem_flags /* flags */, const cl_image_format* /* image_format */,
109     size_t /* image_width */, size_t /* image_height */, size_t /* image_depth */,
110     size_t /* image_row_pitch */, size_t /* image_slice_pitch */, void* /* host_ptr */,
111     cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;
112 
113 typedef cl_int(CL_API_CALL* clRetainMemObject_fn)(cl_mem /* memobj */) CL_API_SUFFIX__VERSION_1_0;
114 
115 typedef cl_int(CL_API_CALL* clReleaseMemObject_fn)(cl_mem /* memobj */) CL_API_SUFFIX__VERSION_1_0;
116 
117 typedef cl_int(CL_API_CALL* clGetSupportedImageFormats_fn)(
118     cl_context /* context */, cl_mem_flags /* flags */, cl_mem_object_type /* image_type */,
119     cl_uint /* num_entries */, cl_image_format* /* image_formats */,
120     cl_uint* /* num_image_formats */) CL_API_SUFFIX__VERSION_1_0;
121 
122 typedef cl_int(CL_API_CALL* clGetMemObjectInfo_fn)(
123     cl_mem /* memobj */, cl_mem_info /* param_name */, size_t /* param_value_size */,
124     void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;
125 
126 typedef cl_int(CL_API_CALL* clGetImageInfo_fn)(
127     cl_mem /* image */, cl_image_info /* param_name */, size_t /* param_value_size */,
128     void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;
129 
130 typedef cl_int(CL_API_CALL* clSetMemObjectDestructorCallback_fn)(
131     cl_mem /* memobj */,
132     void(CL_CALLBACK* /*pfn_notify*/)(cl_mem /* memobj */, void* /*user_data*/),
133     void* /*user_data */) CL_API_SUFFIX__VERSION_1_1;
134 
135 /* Sampler APIs  */
136 typedef cl_sampler(CL_API_CALL* clCreateSampler_fn)(
137     cl_context /* context */, cl_bool /* normalized_coords */,
138     cl_addressing_mode /* addressing_mode */, cl_filter_mode /* filter_mode */,
139     cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;
140 
141 typedef cl_int(CL_API_CALL* clRetainSampler_fn)(cl_sampler /* sampler */)
142     CL_API_SUFFIX__VERSION_1_0;
143 
144 typedef cl_int(CL_API_CALL* clReleaseSampler_fn)(cl_sampler /* sampler */)
145     CL_API_SUFFIX__VERSION_1_0;
146 
147 typedef cl_int(CL_API_CALL* clGetSamplerInfo_fn)(
148     cl_sampler /* sampler */, cl_sampler_info /* param_name */, size_t /* param_value_size */,
149     void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;
150 
151 /* Program Object APIs  */
152 typedef cl_program(CL_API_CALL* clCreateProgramWithSource_fn)(
153     cl_context /* context */, cl_uint /* count */, const char** /* strings */,
154     const size_t* /* lengths */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;
155 
156 extern CL_API_ENTRY cl_program CL_API_CALL
157 clCreateProgramWithIL(cl_context /* context */,
158     const void * /* strings */, size_t /* lengths */,
159     cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_2_0;
160 
161 typedef cl_program(CL_API_CALL* clCreateProgramWithILKHR_fn)(
162     cl_context /* context */, const void* /* il */, size_t /* length */,
163     cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_2;
164 
165 typedef cl_program(CL_API_CALL* clCreateProgramWithBinary_fn)(
166     cl_context /* context */, cl_uint /* num_devices */, const cl_device_id* /* device_list */,
167     const size_t* /* lengths */, const unsigned char** /* binaries */, cl_int* /* binary_status */,
168     cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;
169 
170 typedef cl_int(CL_API_CALL* clRetainProgram_fn)(cl_program /* program */)
171     CL_API_SUFFIX__VERSION_1_0;
172 
173 typedef cl_int(CL_API_CALL* clReleaseProgram_fn)(cl_program /* program */)
174     CL_API_SUFFIX__VERSION_1_0;
175 
176 typedef cl_int(CL_API_CALL* clBuildProgram_fn)(
177     cl_program /* program */, cl_uint /* num_devices */, const cl_device_id* /* device_list */,
178     const char* /* options */,
179     void(CL_CALLBACK* /* pfn_notify */)(cl_program /* program */, void* /* user_data */),
180     void* /* user_data */) CL_API_SUFFIX__VERSION_1_0;
181 
182 typedef cl_int(CL_API_CALL* clUnloadCompiler_fn)(void) CL_API_SUFFIX__VERSION_1_0;
183 
184 typedef cl_int(CL_API_CALL* clGetProgramInfo_fn)(
185     cl_program /* program */, cl_program_info /* param_name */, size_t /* param_value_size */,
186     void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;
187 
188 typedef cl_int(CL_API_CALL* clGetProgramBuildInfo_fn)(
189     cl_program /* program */, cl_device_id /* device */, cl_program_build_info /* param_name */,
190     size_t /* param_value_size */, void* /* param_value */,
191     size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;
192 
193 /* Kernel Object APIs */
194 typedef cl_kernel(CL_API_CALL* clCreateKernel_fn)(
195     cl_program /* program */, const char* /* kernel_name */,
196     cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;
197 
198 typedef cl_int(CL_API_CALL* clCreateKernelsInProgram_fn)(
199     cl_program /* program */, cl_uint /* num_kernels */, cl_kernel* /* kernels */,
200     cl_uint* /* num_kernels_ret */) CL_API_SUFFIX__VERSION_1_0;
201 
202 typedef cl_int(CL_API_CALL* clRetainKernel_fn)(cl_kernel /* kernel */) CL_API_SUFFIX__VERSION_1_0;
203 
204 typedef cl_int(CL_API_CALL* clReleaseKernel_fn)(cl_kernel /* kernel */) CL_API_SUFFIX__VERSION_1_0;
205 
206 typedef cl_int(CL_API_CALL* clSetKernelArg_fn)(cl_kernel /* kernel */, cl_uint /* arg_index */,
207                                                size_t /* arg_size */, const void* /* arg_value */)
208     CL_API_SUFFIX__VERSION_1_0;
209 
210 typedef cl_int(CL_API_CALL* clGetKernelInfo_fn)(
211     cl_kernel /* kernel */, cl_kernel_info /* param_name */, size_t /* param_value_size */,
212     void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;
213 
214 typedef cl_int(CL_API_CALL* clGetKernelWorkGroupInfo_fn)(
215     cl_kernel /* kernel */, cl_device_id /* device */, cl_kernel_work_group_info /* param_name */,
216     size_t /* param_value_size */, void* /* param_value */,
217     size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;
218 
219 /* Event Object APIs  */
220 typedef cl_int(CL_API_CALL* clWaitForEvents_fn)(
221     cl_uint /* num_events */, const cl_event* /* event_list */) CL_API_SUFFIX__VERSION_1_0;
222 
223 typedef cl_int(CL_API_CALL* clGetEventInfo_fn)(
224     cl_event /* event */, cl_event_info /* param_name */, size_t /* param_value_size */,
225     void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;
226 
227 typedef cl_event(CL_API_CALL* clCreateUserEvent_fn)(
228     cl_context /* context */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1;
229 
230 typedef cl_int(CL_API_CALL* clRetainEvent_fn)(cl_event /* event */) CL_API_SUFFIX__VERSION_1_0;
231 
232 typedef cl_int(CL_API_CALL* clReleaseEvent_fn)(cl_event /* event */) CL_API_SUFFIX__VERSION_1_0;
233 
234 typedef cl_int(CL_API_CALL* clSetUserEventStatus_fn)(
235     cl_event /* event */, cl_int /* execution_status */) CL_API_SUFFIX__VERSION_1_1;
236 
237 typedef cl_int(CL_API_CALL* clSetEventCallback_fn)(
238     cl_event /* event */, cl_int /* command_exec_callback_type */,
239     void(CL_CALLBACK* /* pfn_notify */)(cl_event, cl_int, void*),
240     void* /* user_data */) CL_API_SUFFIX__VERSION_1_1;
241 
242 /* Profiling APIs  */
243 typedef cl_int(CL_API_CALL* clGetEventProfilingInfo_fn)(
244     cl_event /* event */, cl_profiling_info /* param_name */, size_t /* param_value_size */,
245     void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;
246 
247 /* Flush and Finish APIs */
248 typedef cl_int(CL_API_CALL* clFlush_fn)(cl_command_queue /* command_queue */)
249     CL_API_SUFFIX__VERSION_1_0;
250 
251 typedef cl_int(CL_API_CALL* clFinish_fn)(cl_command_queue /* command_queue */)
252     CL_API_SUFFIX__VERSION_1_0;
253 
254 /* Enqueued Commands APIs */
255 typedef cl_int(CL_API_CALL* clEnqueueReadBuffer_fn)(
256     cl_command_queue /* command_queue */, cl_mem /* buffer */, cl_bool /* blocking_read */,
257     size_t /* offset */, size_t /* cb */, void* /* ptr */, cl_uint /* num_events_in_wait_list */,
258     const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0;
259 
260 typedef cl_int(CL_API_CALL* clEnqueueReadBufferRect_fn)(
261     cl_command_queue /* command_queue */, cl_mem /* buffer */, cl_bool /* blocking_read */,
262     const size_t* /* buffer_offset */, const size_t* /* host_offset */, const size_t* /* region */,
263     size_t /* buffer_row_pitch */, size_t /* buffer_slice_pitch */, size_t /* host_row_pitch */,
264     size_t /* host_slice_pitch */, void* /* ptr */, cl_uint /* num_events_in_wait_list */,
265     const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_1;
266 
267 typedef cl_int(CL_API_CALL* clEnqueueWriteBuffer_fn)(
268     cl_command_queue /* command_queue */, cl_mem /* buffer */, cl_bool /* blocking_write */,
269     size_t /* offset */, size_t /* cb */, const void* /* ptr */,
270     cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */,
271     cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0;
272 
273 typedef cl_int(CL_API_CALL* clEnqueueWriteBufferRect_fn)(
274     cl_command_queue /* command_queue */, cl_mem /* buffer */, cl_bool /* blocking_read */,
275     const size_t* /* buffer_offset */, const size_t* /* host_offset */, const size_t* /* region */,
276     size_t /* buffer_row_pitch */, size_t /* buffer_slice_pitch */, size_t /* host_row_pitch */,
277     size_t /* host_slice_pitch */, const void* /* ptr */, cl_uint /* num_events_in_wait_list */,
278     const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_1;
279 
280 typedef cl_int(CL_API_CALL* clEnqueueCopyBuffer_fn)(
281     cl_command_queue /* command_queue */, cl_mem /* src_buffer */, cl_mem /* dst_buffer */,
282     size_t /* src_offset */, size_t /* dst_offset */, size_t /* cb */,
283     cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */,
284     cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0;
285 
286 typedef cl_int(CL_API_CALL* clEnqueueCopyBufferRect_fn)(
287     cl_command_queue /* command_queue */, cl_mem /* src_buffer */, cl_mem /* dst_buffer */,
288     const size_t* /* src_origin */, const size_t* /* dst_origin */, const size_t* /* region */,
289     size_t /* src_row_pitch */, size_t /* src_slice_pitch */, size_t /* dst_row_pitch */,
290     size_t /* dst_slice_pitch */, cl_uint /* num_events_in_wait_list */,
291     const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_1;
292 
293 typedef cl_int(CL_API_CALL* clEnqueueReadImage_fn)(
294     cl_command_queue /* command_queue */, cl_mem /* image */, cl_bool /* blocking_read */,
295     const size_t* /* origin[3] */, const size_t* /* region[3] */, size_t /* row_pitch */,
296     size_t /* slice_pitch */, void* /* ptr */, cl_uint /* num_events_in_wait_list */,
297     const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0;
298 
299 typedef cl_int(CL_API_CALL* clEnqueueWriteImage_fn)(
300     cl_command_queue /* command_queue */, cl_mem /* image */, cl_bool /* blocking_write */,
301     const size_t* /* origin[3] */, const size_t* /* region[3] */, size_t /* input_row_pitch */,
302     size_t /* input_slice_pitch */, const void* /* ptr */, cl_uint /* num_events_in_wait_list */,
303     const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0;
304 
305 typedef cl_int(CL_API_CALL* clEnqueueCopyImage_fn)(
306     cl_command_queue /* command_queue */, cl_mem /* src_image */, cl_mem /* dst_image */,
307     const size_t* /* src_origin[3] */, const size_t* /* dst_origin[3] */,
308     const size_t* /* region[3] */, cl_uint /* num_events_in_wait_list */,
309     const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0;
310 
311 typedef cl_int(CL_API_CALL* clEnqueueCopyImageToBuffer_fn)(
312     cl_command_queue /* command_queue */, cl_mem /* src_image */, cl_mem /* dst_buffer */,
313     const size_t* /* src_origin[3] */, const size_t* /* region[3] */, size_t /* dst_offset */,
314     cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */,
315     cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0;
316 
317 typedef cl_int(CL_API_CALL* clEnqueueCopyBufferToImage_fn)(
318     cl_command_queue /* command_queue */, cl_mem /* src_buffer */, cl_mem /* dst_image */,
319     size_t /* src_offset */, const size_t* /* dst_origin[3] */, const size_t* /* region[3] */,
320     cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */,
321     cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0;
322 
323 typedef void*(CL_API_CALL* clEnqueueMapBuffer_fn)(
324     cl_command_queue /* command_queue */, cl_mem /* buffer */, cl_bool /* blocking_map */,
325     cl_map_flags /* map_flags */, size_t /* offset */, size_t /* cb */,
326     cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */,
327     cl_event* /* event */, cl_int* /* errcode_ret */)CL_API_SUFFIX__VERSION_1_0;
328 
329 typedef void*(CL_API_CALL* clEnqueueMapImage_fn)(
330     cl_command_queue /* command_queue */, cl_mem /* image */, cl_bool /* blocking_map */,
331     cl_map_flags /* map_flags */, const size_t* /* origin[3] */, const size_t* /* region[3] */,
332     size_t* /* image_row_pitch */, size_t* /* image_slice_pitch */,
333     cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */,
334     cl_event* /* event */, cl_int* /* errcode_ret */)CL_API_SUFFIX__VERSION_1_0;
335 
336 typedef cl_int(CL_API_CALL* clEnqueueUnmapMemObject_fn)(
337     cl_command_queue /* command_queue */, cl_mem /* memobj */, void* /* mapped_ptr */,
338     cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */,
339     cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0;
340 
341 typedef cl_int(CL_API_CALL* clEnqueueNDRangeKernel_fn)(
342     cl_command_queue /* command_queue */, cl_kernel /* kernel */, cl_uint /* work_dim */,
343     const size_t* /* global_work_offset */, const size_t* /* global_work_size */,
344     const size_t* /* local_work_size */, cl_uint /* num_events_in_wait_list */,
345     const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0;
346 
347 typedef cl_int(CL_API_CALL* clEnqueueTask_fn)(cl_command_queue /* command_queue */,
348                                               cl_kernel /* kernel */,
349                                               cl_uint /* num_events_in_wait_list */,
350                                               const cl_event* /* event_wait_list */,
351                                               cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0;
352 
353 typedef cl_int(CL_API_CALL* clEnqueueNativeKernel_fn)(
354     cl_command_queue /* command_queue */, void(CL_CALLBACK* user_func)(void*), void* /* args */,
355     size_t /* cb_args */, cl_uint /* num_mem_objects */, const cl_mem* /* mem_list */,
356     const void** /* args_mem_loc */, cl_uint /* num_events_in_wait_list */,
357     const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0;
358 
359 typedef cl_int(CL_API_CALL* clEnqueueMarker_fn)(cl_command_queue /* command_queue */,
360                                                 cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0;
361 
362 typedef cl_int(CL_API_CALL* clEnqueueWaitForEvents_fn)(
363     cl_command_queue /* command_queue */, cl_uint /* num_events */,
364     const cl_event* /* event_list */) CL_API_SUFFIX__VERSION_1_0;
365 
366 typedef cl_int(CL_API_CALL* clEnqueueBarrier_fn)(cl_command_queue /* command_queue */)
367     CL_API_SUFFIX__VERSION_1_0;
368 
369 typedef void*(CL_API_CALL* clGetExtensionFunctionAddress_fn)(const char* /* func_name */)
370     CL_API_SUFFIX__VERSION_1_0;
371 
372 typedef cl_mem(CL_API_CALL* clCreateFromGLBuffer_fn)(
373     cl_context /* context */, cl_mem_flags /* flags */, cl_GLuint /* bufobj */,
374     int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;
375 
376 typedef cl_mem(CL_API_CALL* clCreateFromGLTexture2D_fn)(
377     cl_context /* context */, cl_mem_flags /* flags */, cl_GLenum /* target */,
378     cl_GLint /* miplevel */, cl_GLuint /* texture */,
379     cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;
380 
381 typedef cl_mem(CL_API_CALL* clCreateFromGLTexture3D_fn)(
382     cl_context /* context */, cl_mem_flags /* flags */, cl_GLenum /* target */,
383     cl_GLint /* miplevel */, cl_GLuint /* texture */,
384     cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;
385 
386 typedef cl_mem(CL_API_CALL* clCreateFromGLRenderbuffer_fn)(
387     cl_context /* context */, cl_mem_flags /* flags */, cl_GLuint /* renderbuffer */,
388     cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;
389 
390 typedef cl_int(CL_API_CALL* clGetGLObjectInfo_fn)(
391     cl_mem /* memobj */, cl_gl_object_type* /* gl_object_type */,
392     cl_GLuint* /* gl_object_name */) CL_API_SUFFIX__VERSION_1_0;
393 
394 typedef cl_int(CL_API_CALL* clGetGLTextureInfo_fn)(
395     cl_mem /* memobj */, cl_gl_texture_info /* param_name */, size_t /* param_value_size */,
396     void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;
397 
398 typedef cl_event(CL_API_CALL* clCreateEventFromGLsyncKHR_fn)(
399     cl_context /* context */, cl_GLsync /* cl_GLsync */,
400     cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1;
401 
402 typedef cl_int(CL_API_CALL* clEnqueueAcquireGLObjects_fn)(
403     cl_command_queue /* command_queue */, cl_uint /* num_objects */,
404     const cl_mem* /* mem_objects */, cl_uint /* num_events_in_wait_list */,
405     const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0;
406 
407 typedef cl_int(CL_API_CALL* clEnqueueReleaseGLObjects_fn)(
408     cl_command_queue /* command_queue */, cl_uint /* num_objects */,
409     const cl_mem* /* mem_objects */, cl_uint /* num_events_in_wait_list */,
410     const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0;
411 
412 typedef cl_int(CL_API_CALL* clCreateSubDevices_fn)(
413     cl_device_id /* in_device */, const cl_device_partition_property* /* properties */,
414     cl_uint /* num_entries */, cl_device_id* /* out_devices */,
415     cl_uint* /* num_devices */) CL_API_SUFFIX__VERSION_1_2;
416 
417 typedef cl_int(CL_API_CALL* clRetainDevice_fn)(cl_device_id /* device */)
418     CL_API_SUFFIX__VERSION_1_2;
419 
420 typedef cl_int(CL_API_CALL* clReleaseDevice_fn)(cl_device_id /* device */)
421     CL_API_SUFFIX__VERSION_1_2;
422 
423 typedef cl_mem(CL_API_CALL* clCreateImage_fn)(cl_context /* context */, cl_mem_flags /* flags */,
424                                               const cl_image_format* /* image_format*/,
425                                               const cl_image_desc* /* image_desc*/,
426                                               void* /* host_ptr */,
427                                               cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_2;
428 
429 typedef cl_program(CL_API_CALL* clCreateProgramWithBuiltInKernels_fn)(
430     cl_context /* context */, cl_uint /* num_devices */, const cl_device_id* /* device_list */,
431     const char* /* kernel_names */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_2;
432 
433 typedef cl_int(CL_API_CALL* clCompileProgram_fn)(
434     cl_program /* program */, cl_uint /* num_devices */, const cl_device_id* /* device_list */,
435     const char* /* options */, cl_uint /* num_input_headers */,
436     const cl_program* /* input_headers */, const char** /* header_include_names */,
437     void(CL_CALLBACK* pfn_notify)(cl_program program, void* user_data),
438     void* /* user_data */) CL_API_SUFFIX__VERSION_1_2;
439 
440 typedef cl_program(CL_API_CALL* clLinkProgram_fn)(
441     cl_context /* context */, cl_uint /* num_devices */, const cl_device_id* /* device_list */,
442     const char* /* options */, cl_uint /* num_input_programs */,
443     const cl_program* /* input_programs */,
444     void(CL_CALLBACK* pfn_notify)(cl_program program, void* user_data), void* /* user_data */,
445     cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_2;
446 
447 typedef cl_int(CL_API_CALL* clUnloadPlatformCompiler_fn)(cl_platform_id /* platform */)
448     CL_API_SUFFIX__VERSION_1_2;
449 
450 typedef cl_int(CL_API_CALL* clGetKernelArgInfo_fn)(
451     cl_kernel /* kernel */, cl_uint /* arg_indx */, cl_kernel_arg_info /* param_name */,
452     size_t /* param_value_size */, void* /* param_value */,
453     size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_2;
454 
455 typedef cl_int(CL_API_CALL* clEnqueueFillBuffer_fn)(
456     cl_command_queue /* command_queue */, cl_mem /* buffer */, const void* /* pattern */,
457     size_t /* pattern_size */, size_t /* offset */, size_t /* size */,
458     cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */,
459     cl_event* /* event */) CL_API_SUFFIX__VERSION_1_2;
460 
461 typedef cl_int(CL_API_CALL* clEnqueueFillImage_fn)(
462     cl_command_queue /* command_queue */, cl_mem /* image */, const void* /* fill_color */,
463     const size_t* /* origin */, const size_t* /* region */, cl_uint /* num_events_in_wait_list */,
464     const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_2;
465 
466 typedef cl_int(CL_API_CALL* clEnqueueMigrateMemObjects_fn)(
467     cl_command_queue /* command_queue */, cl_uint /* num_mem_objects */,
468     const cl_mem* /* mem_objects */, cl_mem_migration_flags /* flags */,
469     cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */,
470     cl_event* /* event */) CL_API_SUFFIX__VERSION_1_2;
471 
472 typedef cl_int(CL_API_CALL* clEnqueueMarkerWithWaitList_fn)(
473     cl_command_queue /* command_queue */, cl_uint /* num_events_in_wait_list */,
474     const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_2;
475 
476 typedef cl_int(CL_API_CALL* clEnqueueBarrierWithWaitList_fn)(
477     cl_command_queue /* command_queue */, cl_uint /* num_events_in_wait_list */,
478     const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_2;
479 
480 typedef void*(CL_API_CALL* clGetExtensionFunctionAddressForPlatform_fn)(
481     cl_platform_id /* platform */, const char* /* funcname */)CL_API_SUFFIX__VERSION_1_2;
482 
483 typedef cl_mem(CL_API_CALL* clCreateFromGLTexture_fn)(
484     cl_context /* context */, cl_mem_flags /* flags */, cl_GLenum /* texture_target */,
485     cl_GLint /* miplevel */, cl_GLuint /* texture */,
486     cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_2;
487 
488 typedef cl_command_queue(CL_API_CALL* clCreateCommandQueueWithProperties_fn)(
489     cl_context /* context */, cl_device_id /* device */,
490     const cl_queue_properties* /* properties */,
491     cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_2_0;
492 
493 typedef cl_sampler(CL_API_CALL* clCreateSamplerWithProperties_fn)(
494     cl_context /* context */, const cl_sampler_properties* /* properties */,
495     cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_2_0;
496 
497 typedef void*(CL_API_CALL* clSVMAlloc_fn)(cl_context /* context */, cl_svm_mem_flags /* flags */,
498                                           size_t /* size */,
499                                           cl_uint /* alignment */)CL_API_SUFFIX__VERSION_2_0;
500 
501 typedef void(CL_API_CALL* clSVMFree_fn)(cl_context /* context */,
502                                         void* /* svm_pointer */) CL_API_SUFFIX__VERSION_2_0;
503 
504 typedef cl_int(CL_API_CALL* clSetKernelArgSVMPointer_fn)(
505     cl_kernel /* kernel */, cl_uint /*  arg_index */,
506     const void* /* arg_value */) CL_API_SUFFIX__VERSION_2_0;
507 
508 typedef cl_int(CL_API_CALL* clSetKernelExecInfo_fn)(
509     cl_kernel /* kernel */, cl_kernel_exec_info /* param_name */, size_t /* param_value_size */,
510     const void* /* param_value */) CL_API_SUFFIX__VERSION_2_0;
511 
512 typedef cl_int(CL_API_CALL* clEnqueueSVMFree_fn)(
513     cl_command_queue /* command_queue */, cl_uint /* num_svm_pointers */,
514     void* [] /* svm_pointers */,
515     void(CL_CALLBACK* /* pfn_free_func */)(cl_command_queue /* queue */,
516                                            cl_uint /* num_svm_pointers */,
517                                            void* [] /* svm_pointers */, void* /* user_data */),
518     void* /* user_data */, cl_uint /* num_events_in_wait_list */,
519     const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_2_0;
520 
521 typedef cl_int(CL_API_CALL* clEnqueueSVMMemcpy_fn)(
522     cl_command_queue /* command_queue */, cl_bool /* blocking_copy */, void* /* dst_ptr */,
523     const void* /* src_ptr */, size_t /* size */, cl_uint /* num_events_in_wait_list */,
524     const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_2_0;
525 
526 typedef cl_int(CL_API_CALL* clEnqueueSVMMemFill_fn)(
527     cl_command_queue /* command_queue */, void* /* svm_ptr */, const void* /* pattern */,
528     size_t /* pattern_size */, size_t /* size */, cl_uint /* num_events_in_wait_list */,
529     const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_2_0;
530 
531 typedef cl_int(CL_API_CALL* clEnqueueSVMMap_fn)(
532     cl_command_queue /* command_queue */, cl_bool /* blocking_map */, cl_map_flags /* flags */,
533     void* /* svm_ptr */, size_t /* size */, cl_uint /* num_events_in_wait_list */,
534     const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_2_0;
535 
536 typedef cl_int(CL_API_CALL* clEnqueueSVMUnmap_fn)(cl_command_queue /* command_queue */,
537                                                   void* /* svm_ptr */,
538                                                   cl_uint /* num_events_in_wait_list */,
539                                                   const cl_event* /* event_wait_list */,
540                                                   cl_event* /* event */) CL_API_SUFFIX__VERSION_2_0;
541 
542 typedef cl_mem(CL_API_CALL* clCreatePipe_fn)(cl_context /* context */, cl_mem_flags /* flags */,
543                                              cl_uint /* pipe_packet_size */,
544                                              cl_uint /* pipe_max_packets */,
545                                              const cl_pipe_properties* /* properties */,
546                                              cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_2_0;
547 
548 typedef cl_int(CL_API_CALL* clGetPipeInfo_fn)(
549     cl_mem /* pipe */, cl_pipe_info /* param_name */, size_t /* param_value_size */,
550     void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_2_0;
551 
552 typedef cl_int(CL_API_CALL* clGetKernelSubGroupInfoKHR_fn)(
553     cl_kernel /* kernel */, cl_device_id /* device */, cl_kernel_sub_group_info /* param_name */,
554     size_t /* input_value_size */, const void* /* input_value */, size_t /* param_value_size */,
555     void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_2_0;
556 
557 
558 typedef cl_int(CL_API_CALL* clSetDefaultDeviceCommandQueue_fn)(
559     cl_context /* context */, cl_device_id /* device */,
560     cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_2_1;
561 
562 typedef cl_kernel(CL_API_CALL* clCloneKernel_fn)(
563     cl_kernel /* source_kernel */, cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_2_1;
564 
565 typedef cl_int (CL_API_CALL* clEnqueueSVMMigrateMem_fn)(
566     cl_command_queue /* command_queue */, cl_uint /* num_svm_pointers */,
567     const void ** /* svm_pointers */, const size_t * /* sizes */,
568     cl_mem_migration_flags /* flags */, cl_uint /* num_events_in_wait_list */,
569     const cl_event * /* event_wait_list */, cl_event * /* event */) CL_API_SUFFIX__VERSION_2_1;
570 
571 typedef cl_int (CL_API_CALL* clGetDeviceAndHostTimer_fn)(
572     cl_device_id /* device */, cl_ulong * /* device_timestamp */,
573     cl_ulong * /* host_timestamp */) CL_API_SUFFIX__VERSION_2_1;
574 
575 typedef cl_int (CL_API_CALL* clGetHostTimer_fn)(
576     cl_device_id /* device */, cl_ulong * /* host_timestamp */) CL_API_SUFFIX__VERSION_2_1;
577 
578 typedef cl_int (CL_API_CALL* clSetProgramSpecializationConstant_fn)(
579     cl_program /* program */, cl_uint /* spec_id */, size_t /* spec_size */,
580     const void* /* spec_value */) CL_API_SUFFIX__VERSION_2_2;
581 
582 typedef cl_int (CL_API_CALL* clSetProgramReleaseCallback_fn)(
583     cl_program /* program */,
584     void (CL_CALLBACK *  /* pfn_notify */)(cl_program program, void * user_data),
585     void * /* user_data */) CL_API_SUFFIX__VERSION_2_2;
586 
587 typedef struct _cl_icd_dispatch_table {
588   /* OpenCL 1.0 */
589   clGetPlatformIDs_fn GetPlatformIDs;
590   clGetPlatformInfo_fn GetPlatformInfo;
591   clGetDeviceIDs_fn GetDeviceIDs;
592   clGetDeviceInfo_fn GetDeviceInfo;
593   clCreateContext_fn CreateContext;
594   clCreateContextFromType_fn CreateContextFromType;
595   clRetainContext_fn RetainContext;
596   clReleaseContext_fn ReleaseContext;
597   clGetContextInfo_fn GetContextInfo;
598   clCreateCommandQueue_fn CreateCommandQueue;
599   clRetainCommandQueue_fn RetainCommandQueue;
600   clReleaseCommandQueue_fn ReleaseCommandQueue;
601   clGetCommandQueueInfo_fn GetCommandQueueInfo;
602   clSetCommandQueueProperty_fn SetCommandQueueProperty;
603   clCreateBuffer_fn CreateBuffer;
604   clCreateImage2D_fn CreateImage2D;
605   clCreateImage3D_fn CreateImage3D;
606   clRetainMemObject_fn RetainMemObject;
607   clReleaseMemObject_fn ReleaseMemObject;
608   clGetSupportedImageFormats_fn GetSupportedImageFormats;
609   clGetMemObjectInfo_fn GetMemObjectInfo;
610   clGetImageInfo_fn GetImageInfo;
611   clCreateSampler_fn CreateSampler;
612   clRetainSampler_fn RetainSampler;
613   clReleaseSampler_fn ReleaseSampler;
614   clGetSamplerInfo_fn GetSamplerInfo;
615   clCreateProgramWithSource_fn CreateProgramWithSource;
616   clCreateProgramWithBinary_fn CreateProgramWithBinary;
617   clRetainProgram_fn RetainProgram;
618   clReleaseProgram_fn ReleaseProgram;
619   clBuildProgram_fn BuildProgram;
620   clUnloadCompiler_fn UnloadCompiler;
621   clGetProgramInfo_fn GetProgramInfo;
622   clGetProgramBuildInfo_fn GetProgramBuildInfo;
623   clCreateKernel_fn CreateKernel;
624   clCreateKernelsInProgram_fn CreateKernelsInProgram;
625   clRetainKernel_fn RetainKernel;
626   clReleaseKernel_fn ReleaseKernel;
627   clSetKernelArg_fn SetKernelArg;
628   clGetKernelInfo_fn GetKernelInfo;
629   clGetKernelWorkGroupInfo_fn GetKernelWorkGroupInfo;
630   clWaitForEvents_fn WaitForEvents;
631   clGetEventInfo_fn GetEventInfo;
632   clRetainEvent_fn RetainEvent;
633   clReleaseEvent_fn ReleaseEvent;
634   clGetEventProfilingInfo_fn GetEventProfilingInfo;
635   clFlush_fn Flush;
636   clFinish_fn Finish;
637   clEnqueueReadBuffer_fn EnqueueReadBuffer;
638   clEnqueueWriteBuffer_fn EnqueueWriteBuffer;
639   clEnqueueCopyBuffer_fn EnqueueCopyBuffer;
640   clEnqueueReadImage_fn EnqueueReadImage;
641   clEnqueueWriteImage_fn EnqueueWriteImage;
642   clEnqueueCopyImage_fn EnqueueCopyImage;
643   clEnqueueCopyImageToBuffer_fn EnqueueCopyImageToBuffer;
644   clEnqueueCopyBufferToImage_fn EnqueueCopyBufferToImage;
645   clEnqueueMapBuffer_fn EnqueueMapBuffer;
646   clEnqueueMapImage_fn EnqueueMapImage;
647   clEnqueueUnmapMemObject_fn EnqueueUnmapMemObject;
648   clEnqueueNDRangeKernel_fn EnqueueNDRangeKernel;
649   clEnqueueTask_fn EnqueueTask;
650   clEnqueueNativeKernel_fn EnqueueNativeKernel;
651   clEnqueueMarker_fn EnqueueMarker;
652   clEnqueueWaitForEvents_fn EnqueueWaitForEvents;
653   clEnqueueBarrier_fn EnqueueBarrier;
654   clGetExtensionFunctionAddress_fn GetExtensionFunctionAddress;
655   clCreateFromGLBuffer_fn CreateFromGLBuffer;
656   clCreateFromGLTexture2D_fn CreateFromGLTexture2D;
657   clCreateFromGLTexture3D_fn CreateFromGLTexture3D;
658   clCreateFromGLRenderbuffer_fn CreateFromGLRenderbuffer;
659   clGetGLObjectInfo_fn GetGLObjectInfo;
660   clGetGLTextureInfo_fn GetGLTextureInfo;
661   clEnqueueAcquireGLObjects_fn EnqueueAcquireGLObjects;
662   clEnqueueReleaseGLObjects_fn EnqueueReleaseGLObjects;
663   clGetGLContextInfoKHR_fn GetGLContextInfoKHR;
664   void* _reservedForD3D10KHR[6];
665   /* OpenCL 1.1 */
666   clSetEventCallback_fn SetEventCallback;
667   clCreateSubBuffer_fn CreateSubBuffer;
668   clSetMemObjectDestructorCallback_fn SetMemObjectDestructorCallback;
669   clCreateUserEvent_fn CreateUserEvent;
670   clSetUserEventStatus_fn SetUserEventStatus;
671   clEnqueueReadBufferRect_fn EnqueueReadBufferRect;
672   clEnqueueWriteBufferRect_fn EnqueueWriteBufferRect;
673   clEnqueueCopyBufferRect_fn EnqueueCopyBufferRect;
674 
675   void* _reservedForDeviceFissionEXT[3];
676   clCreateEventFromGLsyncKHR_fn CreateEventFromGLsyncKHR;
677 
678   /* OpenCL 1.2 */
679   clCreateSubDevices_fn CreateSubDevices;
680   clRetainDevice_fn RetainDevice;
681   clReleaseDevice_fn ReleaseDevice;
682   clCreateImage_fn CreateImage;
683   clCreateProgramWithBuiltInKernels_fn CreateProgramWithBuiltInKernels;
684   clCompileProgram_fn CompileProgram;
685   clLinkProgram_fn LinkProgram;
686   clUnloadPlatformCompiler_fn UnloadPlatformCompiler;
687   clGetKernelArgInfo_fn GetKernelArgInfo;
688   clEnqueueFillBuffer_fn EnqueueFillBuffer;
689   clEnqueueFillImage_fn EnqueueFillImage;
690   clEnqueueMigrateMemObjects_fn EnqueueMigrateMemObjects;
691   clEnqueueMarkerWithWaitList_fn EnqueueMarkerWithWaitList;
692   clEnqueueBarrierWithWaitList_fn EnqueueBarrierWithWaitList;
693   clGetExtensionFunctionAddressForPlatform_fn GetExtensionFunctionAddressForPlatform;
694   clCreateFromGLTexture_fn CreateFromGLTexture;
695 
696   /* cl_khr_d3d11_sharing, cl_khr_dx9_media_sharing */
697   void* _reservedD3DExtensions[10];
698 
699   /* cl_khr_egl_image, cl_khr_egl_event */
700   void* _reservedEGLExtensions[4];
701 
702   /* OpenCL 2.0 */
703   clCreateCommandQueueWithProperties_fn CreateCommandQueueWithProperties;
704   clCreatePipe_fn CreatePipe;
705   clGetPipeInfo_fn GetPipeInfo;
706   clSVMAlloc_fn SVMAlloc;
707   clSVMFree_fn SVMFree;
708   clEnqueueSVMFree_fn EnqueueSVMFree;
709   clEnqueueSVMMemcpy_fn EnqueueSVMMemcpy;
710   clEnqueueSVMMemFill_fn EnqueueSVMMemFill;
711   clEnqueueSVMMap_fn EnqueueSVMMap;
712   clEnqueueSVMUnmap_fn EnqueueSVMUnmap;
713   clCreateSamplerWithProperties_fn CreateSamplerWithProperties;
714   clSetKernelArgSVMPointer_fn SetKernelArgSVMPointer;
715   clSetKernelExecInfo_fn SetKernelExecInfo;
716 
717   /* cl_khr_sub_groups */
718   clGetKernelSubGroupInfoKHR_fn clGetKernelSubGroupInfoKHR;
719 
720   /* OpenCL 2.1 */
721   clCloneKernel_fn clCloneKernel;
722   clCreateProgramWithILKHR_fn clCreateProgramWithIL;
723   clEnqueueSVMMigrateMem_fn clEnqueueSVMMigrateMem;
724   clGetDeviceAndHostTimer_fn  clGetDeviceAndHostTimer;
725   clGetHostTimer_fn clGetHostTimer;
726   clGetKernelSubGroupInfoKHR_fn clGetKernelSubGroupInfo;
727   clSetDefaultDeviceCommandQueue_fn clSetDefaultDeviceCommandQueue;
728 
729   /* OpenCL 2.2 */
730   clSetProgramReleaseCallback_fn clSetProgramReleaseCallback;
731   clSetProgramSpecializationConstant_fn clSetProgramSpecializationConstant;
732 
733 } cl_icd_dispatch_table;
734 
735 #ifdef __cplusplus
736 }
737 #endif /* __cplusplus */
738 
739 #endif /* __OPENCL_CL_ICD_H */
740