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