cl_icd.h 51 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294
  1. /*******************************************************************************
  2. * Copyright (c) 2019-2020 The Khronos Group Inc.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. ******************************************************************************/
  16. #ifndef OPENCL_CL_ICD_H
  17. #define OPENCL_CL_ICD_H
  18. #include <CL/cl.h>
  19. #include <CL/cl_egl.h>
  20. #include <CL/cl_ext.h>
  21. #include <CL/cl_gl.h>
  22. #if defined(_WIN32)
  23. #include <CL/cl_d3d11.h>
  24. #include <CL/cl_d3d10.h>
  25. #include <CL/cl_dx9_media_sharing.h>
  26. #endif
  27. #ifdef __cplusplus
  28. extern "C" {
  29. #endif
  30. /*
  31. * This file contains pointer type definitions for each of the CL API calls as
  32. * well as a type definition for the dispatch table used by the Khronos ICD
  33. * loader (see cl_khr_icd extension specification for background).
  34. */
  35. /* API function pointer definitions */
  36. // Platform APIs
  37. typedef cl_int(CL_API_CALL *cl_api_clGetPlatformIDs)(
  38. cl_uint num_entries, cl_platform_id *platforms,
  39. cl_uint *num_platforms) CL_API_SUFFIX__VERSION_1_0;
  40. typedef cl_int(CL_API_CALL *cl_api_clGetPlatformInfo)(
  41. cl_platform_id platform, cl_platform_info param_name,
  42. size_t param_value_size, void *param_value,
  43. size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
  44. // Device APIs
  45. typedef cl_int(CL_API_CALL *cl_api_clGetDeviceIDs)(
  46. cl_platform_id platform, cl_device_type device_type, cl_uint num_entries,
  47. cl_device_id *devices, cl_uint *num_devices) CL_API_SUFFIX__VERSION_1_0;
  48. typedef cl_int(CL_API_CALL *cl_api_clGetDeviceInfo)(
  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. #ifdef CL_VERSION_1_2
  52. typedef cl_int(CL_API_CALL *cl_api_clCreateSubDevices)(
  53. cl_device_id in_device,
  54. const cl_device_partition_property *partition_properties,
  55. cl_uint num_entries, cl_device_id *out_devices, cl_uint *num_devices);
  56. typedef cl_int(CL_API_CALL *cl_api_clRetainDevice)(
  57. cl_device_id device) CL_API_SUFFIX__VERSION_1_2;
  58. typedef cl_int(CL_API_CALL *cl_api_clReleaseDevice)(
  59. cl_device_id device) CL_API_SUFFIX__VERSION_1_2;
  60. #else
  61. typedef void *cl_api_clCreateSubDevices;
  62. typedef void *cl_api_clRetainDevice;
  63. typedef void *cl_api_clReleaseDevice;
  64. #endif
  65. // Context APIs
  66. typedef cl_context(CL_API_CALL *cl_api_clCreateContext)(
  67. const cl_context_properties *properties, cl_uint num_devices,
  68. const cl_device_id *devices,
  69. void(CL_CALLBACK *pfn_notify)(const char *, const void *, size_t, void *),
  70. void *user_data, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
  71. typedef cl_context(CL_API_CALL *cl_api_clCreateContextFromType)(
  72. const cl_context_properties *properties, cl_device_type device_type,
  73. void(CL_CALLBACK *pfn_notify)(const char *, const void *, size_t, void *),
  74. void *user_data, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
  75. typedef cl_int(CL_API_CALL *cl_api_clRetainContext)(
  76. cl_context context) CL_API_SUFFIX__VERSION_1_0;
  77. typedef cl_int(CL_API_CALL *cl_api_clReleaseContext)(
  78. cl_context context) CL_API_SUFFIX__VERSION_1_0;
  79. typedef cl_int(CL_API_CALL *cl_api_clGetContextInfo)(
  80. cl_context context, cl_context_info param_name, size_t param_value_size,
  81. void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
  82. // Command Queue APIs
  83. typedef cl_command_queue(CL_API_CALL *cl_api_clCreateCommandQueue)(
  84. cl_context context, cl_device_id device,
  85. cl_command_queue_properties properties,
  86. cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
  87. #ifdef CL_VERSION_2_0
  88. typedef
  89. cl_command_queue(CL_API_CALL *cl_api_clCreateCommandQueueWithProperties)(
  90. cl_context /* context */, cl_device_id /* device */,
  91. const cl_queue_properties * /* properties */,
  92. cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_2_0;
  93. #else
  94. typedef void *cl_api_clCreateCommandQueueWithProperties;
  95. #endif
  96. typedef cl_int(CL_API_CALL *cl_api_clRetainCommandQueue)(
  97. cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0;
  98. typedef cl_int(CL_API_CALL *cl_api_clReleaseCommandQueue)(
  99. cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0;
  100. typedef cl_int(CL_API_CALL *cl_api_clGetCommandQueueInfo)(
  101. cl_command_queue command_queue, cl_command_queue_info param_name,
  102. size_t param_value_size, void *param_value,
  103. size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
  104. // Memory Object APIs
  105. typedef cl_mem(CL_API_CALL *cl_api_clCreateBuffer)(
  106. cl_context context, cl_mem_flags flags, size_t size, void *host_ptr,
  107. cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
  108. #ifdef CL_VERSION_1_2
  109. typedef cl_mem(CL_API_CALL *cl_api_clCreateImage)(
  110. cl_context context, cl_mem_flags flags, const cl_image_format *image_format,
  111. const cl_image_desc *image_desc, void *host_ptr,
  112. cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2;
  113. #else
  114. typedef void *cl_api_clCreateImage;
  115. #endif
  116. #ifdef CL_VERSION_3_0
  117. typedef cl_mem(CL_API_CALL *cl_api_clCreateBufferWithProperties)(
  118. cl_context context, const cl_mem_properties *properties, cl_mem_flags flags,
  119. size_t size, void *host_ptr,
  120. cl_int *errcode_ret) CL_API_SUFFIX__VERSION_3_0;
  121. typedef cl_mem(CL_API_CALL *cl_api_clCreateImageWithProperties)(
  122. cl_context context, const cl_mem_properties *properties, cl_mem_flags flags,
  123. const cl_image_format *image_format, const cl_image_desc *image_desc,
  124. void *host_ptr, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_3_0;
  125. typedef cl_int(CL_API_CALL* cl_api_clSetContextDestructorCallback)(
  126. cl_context context,
  127. void(CL_CALLBACK* pfn_notify)(cl_context context, void* user_data),
  128. void* user_data) CL_API_SUFFIX__VERSION_3_0;
  129. #else
  130. typedef void *cl_api_clCreateBufferWithProperties;
  131. typedef void *cl_api_clCreateImageWithProperties;
  132. typedef void *cl_api_clSetContextDestructorCallback;
  133. #endif
  134. typedef cl_int(CL_API_CALL *cl_api_clRetainMemObject)(
  135. cl_mem memobj) CL_API_SUFFIX__VERSION_1_0;
  136. typedef cl_int(CL_API_CALL *cl_api_clReleaseMemObject)(
  137. cl_mem memobj) CL_API_SUFFIX__VERSION_1_0;
  138. typedef cl_int(CL_API_CALL *cl_api_clGetSupportedImageFormats)(
  139. cl_context context, cl_mem_flags flags, cl_mem_object_type image_type,
  140. cl_uint num_entries, cl_image_format *image_formats,
  141. cl_uint *num_image_formats) CL_API_SUFFIX__VERSION_1_0;
  142. typedef cl_int(CL_API_CALL *cl_api_clGetMemObjectInfo)(
  143. cl_mem memobj, cl_mem_info param_name, size_t param_value_size,
  144. void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
  145. typedef cl_int(CL_API_CALL *cl_api_clGetImageInfo)(
  146. cl_mem image, cl_image_info param_name, size_t param_value_size,
  147. void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
  148. #ifdef CL_VERSION_2_0
  149. typedef cl_mem(CL_API_CALL *cl_api_clCreatePipe)(
  150. cl_context /* context */, cl_mem_flags /* flags */,
  151. cl_uint /* pipe_packet_size */, cl_uint /* pipe_max_packets */,
  152. const cl_pipe_properties * /* properties */,
  153. cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_2_0;
  154. typedef cl_int(CL_API_CALL *cl_api_clGetPipeInfo)(
  155. cl_mem /* pipe */, cl_pipe_info /* param_name */,
  156. size_t /* param_value_size */, void * /* param_value */,
  157. size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_2_0;
  158. typedef void *(CL_API_CALL *cl_api_clSVMAlloc)(
  159. cl_context /* context */, cl_svm_mem_flags /* flags */, size_t /* size */,
  160. unsigned int /* alignment */)CL_API_SUFFIX__VERSION_2_0;
  161. typedef void(CL_API_CALL *cl_api_clSVMFree)(
  162. cl_context /* context */,
  163. void * /* svm_pointer */) CL_API_SUFFIX__VERSION_2_0;
  164. #else
  165. typedef void *cl_api_clCreatePipe;
  166. typedef void *cl_api_clGetPipeInfo;
  167. typedef void *cl_api_clSVMAlloc;
  168. typedef void *cl_api_clSVMFree;
  169. #endif
  170. // Sampler APIs
  171. typedef cl_sampler(CL_API_CALL *cl_api_clCreateSampler)(
  172. cl_context context, cl_bool normalized_coords,
  173. cl_addressing_mode addressing_mode, cl_filter_mode filter_mode,
  174. cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
  175. typedef cl_int(CL_API_CALL *cl_api_clRetainSampler)(
  176. cl_sampler sampler) CL_API_SUFFIX__VERSION_1_0;
  177. typedef cl_int(CL_API_CALL *cl_api_clReleaseSampler)(
  178. cl_sampler sampler) CL_API_SUFFIX__VERSION_1_0;
  179. typedef cl_int(CL_API_CALL *cl_api_clGetSamplerInfo)(
  180. cl_sampler sampler, cl_sampler_info param_name, size_t param_value_size,
  181. void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
  182. #ifdef CL_VERSION_2_0
  183. typedef
  184. cl_sampler(CL_API_CALL *cl_api_clCreateSamplerWithProperties)(
  185. cl_context /* context */,
  186. const cl_sampler_properties * /* sampler_properties */,
  187. cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_2_0;
  188. #else
  189. typedef void *cl_api_clCreateSamplerWithProperties;
  190. #endif
  191. // Program Object APIs
  192. typedef cl_program(CL_API_CALL *cl_api_clCreateProgramWithSource)(
  193. cl_context context, cl_uint count, const char **strings,
  194. const size_t *lengths, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
  195. typedef cl_program(CL_API_CALL *cl_api_clCreateProgramWithBinary)(
  196. cl_context context, cl_uint num_devices, const cl_device_id *device_list,
  197. const size_t *lengths, const unsigned char **binaries,
  198. cl_int *binary_status, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
  199. #ifdef CL_VERSION_1_2
  200. typedef
  201. cl_program(CL_API_CALL *cl_api_clCreateProgramWithBuiltInKernels)(
  202. cl_context context, cl_uint num_devices, const cl_device_id *device_list,
  203. const char *kernel_names, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2;
  204. #else
  205. typedef void *cl_api_clCreateProgramWithBuiltInKernels;
  206. #endif
  207. typedef cl_int(CL_API_CALL *cl_api_clRetainProgram)(
  208. cl_program program) CL_API_SUFFIX__VERSION_1_0;
  209. typedef cl_int(CL_API_CALL *cl_api_clReleaseProgram)(
  210. cl_program program) CL_API_SUFFIX__VERSION_1_0;
  211. typedef cl_int(CL_API_CALL *cl_api_clBuildProgram)(
  212. cl_program program, cl_uint num_devices, const cl_device_id *device_list,
  213. const char *options,
  214. void(CL_CALLBACK *pfn_notify)(cl_program program, void *user_data),
  215. void *user_data) CL_API_SUFFIX__VERSION_1_0;
  216. #ifdef CL_VERSION_1_2
  217. typedef cl_int(CL_API_CALL *cl_api_clCompileProgram)(
  218. cl_program program, cl_uint num_devices, const cl_device_id *device_list,
  219. const char *options, cl_uint num_input_headers,
  220. const cl_program *input_headers, const char **header_include_names,
  221. void(CL_CALLBACK *pfn_notify)(cl_program program, void *user_data),
  222. void *user_data) CL_API_SUFFIX__VERSION_1_2;
  223. typedef cl_program(CL_API_CALL *cl_api_clLinkProgram)(
  224. cl_context context, cl_uint num_devices, const cl_device_id *device_list,
  225. const char *options, cl_uint num_input_programs,
  226. const cl_program *input_programs,
  227. void(CL_CALLBACK *pfn_notify)(cl_program program, void *user_data),
  228. void *user_data, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2;
  229. #else
  230. typedef void *cl_api_clCompileProgram;
  231. typedef void *cl_api_clLinkProgram;
  232. #endif
  233. #ifdef CL_VERSION_2_2
  234. typedef
  235. cl_int(CL_API_CALL *cl_api_clSetProgramSpecializationConstant)(
  236. cl_program program, cl_uint spec_id, size_t spec_size,
  237. const void *spec_value) CL_API_SUFFIX__VERSION_2_2;
  238. typedef cl_int(CL_API_CALL *cl_api_clSetProgramReleaseCallback)(
  239. cl_program program,
  240. void(CL_CALLBACK *pfn_notify)(cl_program program, void *user_data),
  241. void *user_data) CL_API_SUFFIX__VERSION_2_2;
  242. #else
  243. typedef void *cl_api_clSetProgramSpecializationConstant;
  244. typedef void *cl_api_clSetProgramReleaseCallback;
  245. #endif
  246. #ifdef CL_VERSION_1_2
  247. typedef cl_int(CL_API_CALL *cl_api_clUnloadPlatformCompiler)(
  248. cl_platform_id platform) CL_API_SUFFIX__VERSION_1_2;
  249. #else
  250. typedef void *cl_api_clUnloadPlatformCompiler;
  251. #endif
  252. typedef cl_int(CL_API_CALL *cl_api_clGetProgramInfo)(
  253. cl_program program, cl_program_info param_name, size_t param_value_size,
  254. void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
  255. typedef cl_int(CL_API_CALL *cl_api_clGetProgramBuildInfo)(
  256. cl_program program, cl_device_id device, cl_program_build_info param_name,
  257. size_t param_value_size, void *param_value,
  258. size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
  259. // Kernel Object APIs
  260. typedef cl_kernel(CL_API_CALL *cl_api_clCreateKernel)(
  261. cl_program program, const char *kernel_name,
  262. cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
  263. typedef cl_int(CL_API_CALL *cl_api_clCreateKernelsInProgram)(
  264. cl_program program, cl_uint num_kernels, cl_kernel *kernels,
  265. cl_uint *num_kernels_ret) CL_API_SUFFIX__VERSION_1_0;
  266. typedef cl_int(CL_API_CALL *cl_api_clRetainKernel)(
  267. cl_kernel kernel) CL_API_SUFFIX__VERSION_1_0;
  268. typedef cl_int(CL_API_CALL *cl_api_clReleaseKernel)(
  269. cl_kernel kernel) CL_API_SUFFIX__VERSION_1_0;
  270. typedef cl_int(CL_API_CALL *cl_api_clSetKernelArg)(
  271. cl_kernel kernel, cl_uint arg_index, size_t arg_size,
  272. const void *arg_value) CL_API_SUFFIX__VERSION_1_0;
  273. typedef cl_int(CL_API_CALL *cl_api_clGetKernelInfo)(
  274. cl_kernel kernel, cl_kernel_info param_name, size_t param_value_size,
  275. void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
  276. #ifdef CL_VERSION_1_2
  277. typedef cl_int(CL_API_CALL *cl_api_clGetKernelArgInfo)(
  278. cl_kernel kernel, cl_uint arg_indx, cl_kernel_arg_info param_name,
  279. size_t param_value_size, void *param_value,
  280. size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_2;
  281. #else
  282. typedef void *cl_api_clGetKernelArgInfo;
  283. #endif
  284. typedef cl_int(CL_API_CALL *cl_api_clGetKernelWorkGroupInfo)(
  285. cl_kernel kernel, cl_device_id device, cl_kernel_work_group_info param_name,
  286. size_t param_value_size, void *param_value,
  287. size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
  288. #ifdef CL_VERSION_2_0
  289. typedef cl_int(CL_API_CALL *cl_api_clSetKernelArgSVMPointer)(
  290. cl_kernel /* kernel */, cl_uint /* arg_index */,
  291. const void * /* arg_value */) CL_API_SUFFIX__VERSION_2_0;
  292. typedef cl_int(CL_API_CALL *cl_api_clSetKernelExecInfo)(
  293. cl_kernel /* kernel */, cl_kernel_exec_info /* param_name */,
  294. size_t /* param_value_size */,
  295. const void * /* param_value */) CL_API_SUFFIX__VERSION_2_0;
  296. typedef cl_int(CL_API_CALL *cl_api_clGetKernelSubGroupInfoKHR)(
  297. cl_kernel /* in_kernel */, cl_device_id /*in_device*/,
  298. cl_kernel_sub_group_info /* param_name */, size_t /*input_value_size*/,
  299. const void * /*input_value*/, size_t /*param_value_size*/,
  300. void * /*param_value*/,
  301. size_t * /*param_value_size_ret*/) CL_API_SUFFIX__VERSION_2_0;
  302. #else
  303. typedef void *cl_api_clSetKernelArgSVMPointer;
  304. typedef void *cl_api_clSetKernelExecInfo;
  305. typedef void *cl_api_clGetKernelSubGroupInfoKHR;
  306. #endif
  307. // Event Object APIs
  308. typedef cl_int(CL_API_CALL *cl_api_clWaitForEvents)(
  309. cl_uint num_events, const cl_event *event_list) CL_API_SUFFIX__VERSION_1_0;
  310. typedef cl_int(CL_API_CALL *cl_api_clGetEventInfo)(
  311. cl_event event, cl_event_info param_name, size_t param_value_size,
  312. void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
  313. typedef cl_int(CL_API_CALL *cl_api_clRetainEvent)(cl_event event)
  314. CL_API_SUFFIX__VERSION_1_0;
  315. typedef cl_int(CL_API_CALL *cl_api_clReleaseEvent)(cl_event event)
  316. CL_API_SUFFIX__VERSION_1_0;
  317. // Profiling APIs
  318. typedef cl_int(CL_API_CALL *cl_api_clGetEventProfilingInfo)(
  319. cl_event event, cl_profiling_info param_name, size_t param_value_size,
  320. void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
  321. // Flush and Finish APIs
  322. typedef cl_int(CL_API_CALL *cl_api_clFlush)(
  323. cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0;
  324. typedef cl_int(CL_API_CALL *cl_api_clFinish)(
  325. cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0;
  326. // Enqueued Commands APIs
  327. typedef cl_int(CL_API_CALL *cl_api_clEnqueueReadBuffer)(
  328. cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_read,
  329. size_t offset, size_t cb, void *ptr, cl_uint num_events_in_wait_list,
  330. const cl_event *event_wait_list,
  331. cl_event *event) CL_API_SUFFIX__VERSION_1_0;
  332. #ifdef CL_VERSION_1_1
  333. typedef cl_int(CL_API_CALL *cl_api_clEnqueueReadBufferRect)(
  334. cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_read,
  335. const size_t *buffer_origin, const size_t *host_origin,
  336. const size_t *region, size_t buffer_row_pitch, size_t buffer_slice_pitch,
  337. size_t host_row_pitch, size_t host_slice_pitch, void *ptr,
  338. cl_uint num_events_in_wait_list, const cl_event *event_wait_list,
  339. cl_event *event) CL_API_SUFFIX__VERSION_1_1;
  340. #else
  341. typedef void *cl_api_clEnqueueReadBufferRect;
  342. #endif
  343. typedef cl_int(CL_API_CALL *cl_api_clEnqueueWriteBuffer)(
  344. cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_write,
  345. size_t offset, size_t cb, const void *ptr, cl_uint num_events_in_wait_list,
  346. const cl_event *event_wait_list,
  347. cl_event *event) CL_API_SUFFIX__VERSION_1_0;
  348. #ifdef CL_VERSION_1_1
  349. typedef cl_int(CL_API_CALL *cl_api_clEnqueueWriteBufferRect)(
  350. cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_read,
  351. const size_t *buffer_origin, const size_t *host_origin,
  352. const size_t *region, size_t buffer_row_pitch, size_t buffer_slice_pitch,
  353. size_t host_row_pitch, size_t host_slice_pitch, const void *ptr,
  354. cl_uint num_events_in_wait_list, const cl_event *event_wait_list,
  355. cl_event *event) CL_API_SUFFIX__VERSION_1_1;
  356. #else
  357. typedef void *cl_api_clEnqueueWriteBufferRect;
  358. #endif
  359. #ifdef CL_VERSION_1_2
  360. typedef cl_int(CL_API_CALL *cl_api_clEnqueueFillBuffer)(
  361. cl_command_queue command_queue, cl_mem buffer, const void *pattern,
  362. size_t pattern_size, size_t offset, size_t cb,
  363. cl_uint num_events_in_wait_list, const cl_event *event_wait_list,
  364. cl_event *event) CL_API_SUFFIX__VERSION_1_2;
  365. #else
  366. typedef void *cl_api_clEnqueueFillBuffer;
  367. #endif
  368. typedef cl_int(CL_API_CALL *cl_api_clEnqueueCopyBuffer)(
  369. cl_command_queue command_queue, cl_mem src_buffer, cl_mem dst_buffer,
  370. size_t src_offset, size_t dst_offset, size_t cb,
  371. cl_uint num_events_in_wait_list, const cl_event *event_wait_list,
  372. cl_event *event) CL_API_SUFFIX__VERSION_1_0;
  373. #ifdef CL_VERSION_1_1
  374. typedef cl_int(CL_API_CALL *cl_api_clEnqueueCopyBufferRect)(
  375. cl_command_queue command_queue, cl_mem src_buffer, cl_mem dst_buffer,
  376. const size_t *src_origin, const size_t *dst_origin, const size_t *region,
  377. size_t src_row_pitch, size_t src_slice_pitch, size_t dst_row_pitch,
  378. size_t dst_slice_pitch, cl_uint num_events_in_wait_list,
  379. const cl_event *event_wait_list,
  380. cl_event *event) CL_API_SUFFIX__VERSION_1_1;
  381. #else
  382. typedef void *cl_api_clEnqueueCopyBufferRect;
  383. #endif
  384. typedef cl_int(CL_API_CALL *cl_api_clEnqueueReadImage)(
  385. cl_command_queue command_queue, cl_mem image, cl_bool blocking_read,
  386. const size_t *origin, const size_t *region, size_t row_pitch,
  387. size_t slice_pitch, void *ptr, cl_uint num_events_in_wait_list,
  388. const cl_event *event_wait_list,
  389. cl_event *event) CL_API_SUFFIX__VERSION_1_0;
  390. typedef cl_int(CL_API_CALL *cl_api_clEnqueueWriteImage)(
  391. cl_command_queue command_queue, cl_mem image, cl_bool blocking_write,
  392. const size_t *origin, const size_t *region, size_t input_row_pitch,
  393. size_t input_slice_pitch, const void *ptr, cl_uint num_events_in_wait_list,
  394. const cl_event *event_wait_list,
  395. cl_event *event) CL_API_SUFFIX__VERSION_1_0;
  396. #ifdef CL_VERSION_1_2
  397. typedef cl_int(CL_API_CALL *cl_api_clEnqueueFillImage)(
  398. cl_command_queue command_queue, cl_mem image, const void *fill_color,
  399. const size_t origin[3], const size_t region[3],
  400. cl_uint num_events_in_wait_list, const cl_event *event_wait_list,
  401. cl_event *event) CL_API_SUFFIX__VERSION_1_2;
  402. #else
  403. typedef void *cl_api_clEnqueueFillImage;
  404. #endif
  405. typedef cl_int(CL_API_CALL *cl_api_clEnqueueCopyImage)(
  406. cl_command_queue command_queue, cl_mem src_image, cl_mem dst_image,
  407. const size_t *src_origin, const size_t *dst_origin, const size_t *region,
  408. cl_uint num_events_in_wait_list, const cl_event *event_wait_list,
  409. cl_event *event) CL_API_SUFFIX__VERSION_1_0;
  410. typedef cl_int(CL_API_CALL *cl_api_clEnqueueCopyImageToBuffer)(
  411. cl_command_queue command_queue, cl_mem src_image, cl_mem dst_buffer,
  412. const size_t *src_origin, const size_t *region, size_t dst_offset,
  413. cl_uint num_events_in_wait_list, const cl_event *event_wait_list,
  414. cl_event *event) CL_API_SUFFIX__VERSION_1_0;
  415. typedef cl_int(CL_API_CALL *cl_api_clEnqueueCopyBufferToImage)(
  416. cl_command_queue command_queue, cl_mem src_buffer, cl_mem dst_image,
  417. size_t src_offset, const size_t *dst_origin, const size_t *region,
  418. cl_uint num_events_in_wait_list, const cl_event *event_wait_list,
  419. cl_event *event) CL_API_SUFFIX__VERSION_1_0;
  420. typedef void *(CL_API_CALL *cl_api_clEnqueueMapBuffer)(
  421. cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_map,
  422. cl_map_flags map_flags, size_t offset, size_t cb,
  423. cl_uint num_events_in_wait_list, const cl_event *event_wait_list,
  424. cl_event *event, cl_int *errcode_ret)CL_API_SUFFIX__VERSION_1_0;
  425. typedef void *(CL_API_CALL *cl_api_clEnqueueMapImage)(
  426. cl_command_queue command_queue, cl_mem image, cl_bool blocking_map,
  427. cl_map_flags map_flags, const size_t *origin, const size_t *region,
  428. size_t *image_row_pitch, size_t *image_slice_pitch,
  429. cl_uint num_events_in_wait_list, const cl_event *event_wait_list,
  430. cl_event *event, cl_int *errcode_ret)CL_API_SUFFIX__VERSION_1_0;
  431. typedef cl_int(CL_API_CALL *cl_api_clEnqueueUnmapMemObject)(
  432. cl_command_queue command_queue, cl_mem memobj, void *mapped_ptr,
  433. cl_uint num_events_in_wait_list, const cl_event *event_wait_list,
  434. cl_event *event) CL_API_SUFFIX__VERSION_1_0;
  435. #ifdef CL_VERSION_1_2
  436. typedef cl_int(CL_API_CALL *cl_api_clEnqueueMigrateMemObjects)(
  437. cl_command_queue command_queue, cl_uint num_mem_objects,
  438. const cl_mem *mem_objects, cl_mem_migration_flags flags,
  439. cl_uint num_events_in_wait_list, const cl_event *event_wait_list,
  440. cl_event *event) CL_API_SUFFIX__VERSION_1_2;
  441. #else
  442. typedef void *cl_api_clEnqueueMigrateMemObjects;
  443. #endif
  444. typedef cl_int(CL_API_CALL *cl_api_clEnqueueNDRangeKernel)(
  445. cl_command_queue command_queue, cl_kernel kernel, cl_uint work_dim,
  446. const size_t *global_work_offset, const size_t *global_work_size,
  447. const size_t *local_work_size, cl_uint num_events_in_wait_list,
  448. const cl_event *event_wait_list,
  449. cl_event *event) CL_API_SUFFIX__VERSION_1_0;
  450. typedef cl_int(CL_API_CALL *cl_api_clEnqueueTask)(
  451. cl_command_queue command_queue, cl_kernel kernel,
  452. cl_uint num_events_in_wait_list, const cl_event *event_wait_list,
  453. cl_event *event) CL_API_SUFFIX__VERSION_1_0;
  454. typedef cl_int(CL_API_CALL *cl_api_clEnqueueNativeKernel)(
  455. cl_command_queue command_queue, void(CL_CALLBACK *user_func)(void *),
  456. void *args, size_t cb_args, cl_uint num_mem_objects, const cl_mem *mem_list,
  457. const void **args_mem_loc, cl_uint num_events_in_wait_list,
  458. const cl_event *event_wait_list,
  459. cl_event *event) CL_API_SUFFIX__VERSION_1_0;
  460. #ifdef CL_VERSION_1_2
  461. typedef cl_int(CL_API_CALL *cl_api_clEnqueueMarkerWithWaitList)(
  462. cl_command_queue command_queue, cl_uint num_events_in_wait_list,
  463. const cl_event *event_wait_list,
  464. cl_event *event) CL_API_SUFFIX__VERSION_1_2;
  465. typedef cl_int(CL_API_CALL *cl_api_clEnqueueBarrierWithWaitList)(
  466. cl_command_queue command_queue, cl_uint num_events_in_wait_list,
  467. const cl_event *event_wait_list,
  468. cl_event *event) CL_API_SUFFIX__VERSION_1_2;
  469. typedef void *(
  470. CL_API_CALL *cl_api_clGetExtensionFunctionAddressForPlatform)(
  471. cl_platform_id platform,
  472. const char *function_name)CL_API_SUFFIX__VERSION_1_2;
  473. #else
  474. typedef void *cl_api_clEnqueueMarkerWithWaitList;
  475. typedef void *cl_api_clEnqueueBarrierWithWaitList;
  476. typedef void *cl_api_clGetExtensionFunctionAddressForPlatform;
  477. #endif
  478. // Shared Virtual Memory APIs
  479. #ifdef CL_VERSION_2_0
  480. typedef cl_int(CL_API_CALL *cl_api_clEnqueueSVMFree)(
  481. cl_command_queue /* command_queue */, cl_uint /* num_svm_pointers */,
  482. void ** /* svm_pointers */,
  483. void(CL_CALLBACK *pfn_free_func)(cl_command_queue /* queue */,
  484. cl_uint /* num_svm_pointers */,
  485. void ** /* svm_pointers[] */,
  486. void * /* user_data */),
  487. void * /* user_data */, cl_uint /* num_events_in_wait_list */,
  488. const cl_event * /* event_wait_list */,
  489. cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0;
  490. typedef cl_int(CL_API_CALL *cl_api_clEnqueueSVMMemcpy)(
  491. cl_command_queue /* command_queue */, cl_bool /* blocking_copy */,
  492. void * /* dst_ptr */, const void * /* src_ptr */, size_t /* size */,
  493. cl_uint /* num_events_in_wait_list */,
  494. const cl_event * /* event_wait_list */,
  495. cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0;
  496. typedef cl_int(CL_API_CALL *cl_api_clEnqueueSVMMemFill)(
  497. cl_command_queue /* command_queue */, void * /* svm_ptr */,
  498. const void * /* pattern */, size_t /* pattern_size */, size_t /* size */,
  499. cl_uint /* num_events_in_wait_list */,
  500. const cl_event * /* event_wait_list */,
  501. cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0;
  502. typedef cl_int(CL_API_CALL *cl_api_clEnqueueSVMMap)(
  503. cl_command_queue /* command_queue */, cl_bool /* blocking_map */,
  504. cl_map_flags /* map_flags */, void * /* svm_ptr */, size_t /* size */,
  505. cl_uint /* num_events_in_wait_list */,
  506. const cl_event * /* event_wait_list */,
  507. cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0;
  508. typedef cl_int(CL_API_CALL *cl_api_clEnqueueSVMUnmap)(
  509. cl_command_queue /* command_queue */, void * /* svm_ptr */,
  510. cl_uint /* num_events_in_wait_list */,
  511. const cl_event * /* event_wait_list */,
  512. cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0;
  513. #else
  514. typedef void *cl_api_clEnqueueSVMFree;
  515. typedef void *cl_api_clEnqueueSVMMemcpy;
  516. typedef void *cl_api_clEnqueueSVMMemFill;
  517. typedef void *cl_api_clEnqueueSVMMap;
  518. typedef void *cl_api_clEnqueueSVMUnmap;
  519. #endif
  520. // Deprecated APIs
  521. typedef cl_int(CL_API_CALL *cl_api_clSetCommandQueueProperty)(
  522. cl_command_queue command_queue, cl_command_queue_properties properties,
  523. cl_bool enable, cl_command_queue_properties *old_properties)
  524. CL_API_SUFFIX__VERSION_1_0_DEPRECATED;
  525. typedef cl_mem(CL_API_CALL *cl_api_clCreateImage2D)(
  526. cl_context context, cl_mem_flags flags, const cl_image_format *image_format,
  527. size_t image_width, size_t image_height, size_t image_row_pitch,
  528. void *host_ptr, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_1_DEPRECATED;
  529. typedef cl_mem(CL_API_CALL *cl_api_clCreateImage3D)(
  530. cl_context context, cl_mem_flags flags, const cl_image_format *image_format,
  531. size_t image_width, size_t image_height, size_t image_depth,
  532. size_t image_row_pitch, size_t image_slice_pitch, void *host_ptr,
  533. cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_1_DEPRECATED;
  534. typedef cl_int(CL_API_CALL *cl_api_clUnloadCompiler)(void)
  535. CL_API_SUFFIX__VERSION_1_1_DEPRECATED;
  536. typedef cl_int(CL_API_CALL *cl_api_clEnqueueMarker)(
  537. cl_command_queue command_queue,
  538. cl_event *event) CL_API_SUFFIX__VERSION_1_1_DEPRECATED;
  539. typedef cl_int(CL_API_CALL *cl_api_clEnqueueWaitForEvents)(
  540. cl_command_queue command_queue, cl_uint num_events,
  541. const cl_event *event_list) CL_API_SUFFIX__VERSION_1_1_DEPRECATED;
  542. typedef cl_int(CL_API_CALL *cl_api_clEnqueueBarrier)(
  543. cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_1_DEPRECATED;
  544. typedef void *(CL_API_CALL *cl_api_clGetExtensionFunctionAddress)(
  545. const char *function_name)CL_API_SUFFIX__VERSION_1_1_DEPRECATED;
  546. // GL and other APIs
  547. typedef cl_mem(CL_API_CALL *cl_api_clCreateFromGLBuffer)(
  548. cl_context context, cl_mem_flags flags, cl_GLuint bufobj,
  549. int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
  550. typedef cl_mem(CL_API_CALL *cl_api_clCreateFromGLTexture)(
  551. cl_context context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel,
  552. cl_GLuint texture, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2;
  553. typedef cl_mem(CL_API_CALL *cl_api_clCreateFromGLTexture2D)(
  554. cl_context context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel,
  555. cl_GLuint texture, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
  556. typedef cl_mem(CL_API_CALL *cl_api_clCreateFromGLTexture3D)(
  557. cl_context context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel,
  558. cl_GLuint texture, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
  559. typedef cl_mem(CL_API_CALL *cl_api_clCreateFromGLRenderbuffer)(
  560. cl_context context, cl_mem_flags flags, cl_GLuint renderbuffer,
  561. cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
  562. typedef cl_int(CL_API_CALL *cl_api_clGetGLObjectInfo)(
  563. cl_mem memobj, cl_gl_object_type *gl_object_type,
  564. cl_GLuint *gl_object_name) CL_API_SUFFIX__VERSION_1_0;
  565. typedef cl_int(CL_API_CALL *cl_api_clGetGLTextureInfo)(
  566. cl_mem memobj, cl_gl_texture_info param_name, size_t param_value_size,
  567. void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
  568. typedef cl_int(CL_API_CALL *cl_api_clEnqueueAcquireGLObjects)(
  569. cl_command_queue command_queue, cl_uint num_objects,
  570. const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
  571. const cl_event *event_wait_list,
  572. cl_event *event) CL_API_SUFFIX__VERSION_1_0;
  573. typedef cl_int(CL_API_CALL *cl_api_clEnqueueReleaseGLObjects)(
  574. cl_command_queue command_queue, cl_uint num_objects,
  575. const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
  576. const cl_event *event_wait_list,
  577. cl_event *event) CL_API_SUFFIX__VERSION_1_0;
  578. /* cl_khr_gl_sharing */
  579. typedef cl_int(CL_API_CALL *cl_api_clGetGLContextInfoKHR)(
  580. const cl_context_properties *properties, cl_gl_context_info param_name,
  581. size_t param_value_size, void *param_value, size_t *param_value_size_ret);
  582. /* cl_khr_gl_event */
  583. typedef cl_event(CL_API_CALL *cl_api_clCreateEventFromGLsyncKHR)(
  584. cl_context context, cl_GLsync sync, cl_int *errcode_ret);
  585. #if defined(_WIN32)
  586. /* cl_khr_d3d10_sharing */
  587. typedef cl_int(CL_API_CALL *cl_api_clGetDeviceIDsFromD3D10KHR)(
  588. cl_platform_id platform, cl_d3d10_device_source_khr d3d_device_source,
  589. void *d3d_object, cl_d3d10_device_set_khr d3d_device_set,
  590. cl_uint num_entries, cl_device_id *devices,
  591. cl_uint *num_devices) CL_API_SUFFIX__VERSION_1_0;
  592. typedef cl_mem(CL_API_CALL *cl_api_clCreateFromD3D10BufferKHR)(
  593. cl_context context, cl_mem_flags flags, ID3D10Buffer *resource,
  594. cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
  595. typedef cl_mem(CL_API_CALL *cl_api_clCreateFromD3D10Texture2DKHR)(
  596. cl_context context, cl_mem_flags flags, ID3D10Texture2D *resource,
  597. UINT subresource, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
  598. typedef cl_mem(CL_API_CALL *cl_api_clCreateFromD3D10Texture3DKHR)(
  599. cl_context context, cl_mem_flags flags, ID3D10Texture3D *resource,
  600. UINT subresource, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
  601. typedef
  602. cl_int(CL_API_CALL *cl_api_clEnqueueAcquireD3D10ObjectsKHR)(
  603. cl_command_queue command_queue, cl_uint num_objects,
  604. const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
  605. const cl_event *event_wait_list,
  606. cl_event *event) CL_API_SUFFIX__VERSION_1_0;
  607. typedef
  608. cl_int(CL_API_CALL *cl_api_clEnqueueReleaseD3D10ObjectsKHR)(
  609. cl_command_queue command_queue, cl_uint num_objects,
  610. const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
  611. const cl_event *event_wait_list,
  612. cl_event *event) CL_API_SUFFIX__VERSION_1_0;
  613. extern CL_API_ENTRY cl_int CL_API_CALL clGetDeviceIDsFromD3D10KHR(
  614. cl_platform_id platform, cl_d3d10_device_source_khr d3d_device_source,
  615. void *d3d_object, cl_d3d10_device_set_khr d3d_device_set,
  616. cl_uint num_entries, cl_device_id *devices, cl_uint *num_devices);
  617. extern CL_API_ENTRY cl_mem CL_API_CALL
  618. clCreateFromD3D10BufferKHR(cl_context context, cl_mem_flags flags,
  619. ID3D10Buffer *resource, cl_int *errcode_ret);
  620. extern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromD3D10Texture2DKHR(
  621. cl_context context, cl_mem_flags flags, ID3D10Texture2D *resource,
  622. UINT subresource, cl_int *errcode_ret);
  623. extern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromD3D10Texture3DKHR(
  624. cl_context context, cl_mem_flags flags, ID3D10Texture3D *resource,
  625. UINT subresource, cl_int *errcode_ret);
  626. extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueAcquireD3D10ObjectsKHR(
  627. cl_command_queue command_queue, cl_uint num_objects,
  628. const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
  629. const cl_event *event_wait_list, cl_event *event);
  630. extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReleaseD3D10ObjectsKHR(
  631. cl_command_queue command_queue, cl_uint num_objects,
  632. const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
  633. const cl_event *event_wait_list, cl_event *event);
  634. /* cl_khr_d3d11_sharing */
  635. typedef cl_int(CL_API_CALL *cl_api_clGetDeviceIDsFromD3D11KHR)(
  636. cl_platform_id platform, cl_d3d11_device_source_khr d3d_device_source,
  637. void *d3d_object, cl_d3d11_device_set_khr d3d_device_set,
  638. cl_uint num_entries, cl_device_id *devices,
  639. cl_uint *num_devices) CL_API_SUFFIX__VERSION_1_2;
  640. typedef cl_mem(CL_API_CALL *cl_api_clCreateFromD3D11BufferKHR)(
  641. cl_context context, cl_mem_flags flags, ID3D11Buffer *resource,
  642. cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2;
  643. typedef cl_mem(CL_API_CALL *cl_api_clCreateFromD3D11Texture2DKHR)(
  644. cl_context context, cl_mem_flags flags, ID3D11Texture2D *resource,
  645. UINT subresource, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2;
  646. typedef cl_mem(CL_API_CALL *cl_api_clCreateFromD3D11Texture3DKHR)(
  647. cl_context context, cl_mem_flags flags, ID3D11Texture3D *resource,
  648. UINT subresource, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2;
  649. typedef
  650. cl_int(CL_API_CALL *cl_api_clEnqueueAcquireD3D11ObjectsKHR)(
  651. cl_command_queue command_queue, cl_uint num_objects,
  652. const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
  653. const cl_event *event_wait_list,
  654. cl_event *event) CL_API_SUFFIX__VERSION_1_2;
  655. typedef
  656. cl_int(CL_API_CALL *cl_api_clEnqueueReleaseD3D11ObjectsKHR)(
  657. cl_command_queue command_queue, cl_uint num_objects,
  658. const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
  659. const cl_event *event_wait_list,
  660. cl_event *event) CL_API_SUFFIX__VERSION_1_2;
  661. /* cl_khr_dx9_media_sharing */
  662. typedef
  663. cl_int(CL_API_CALL *cl_api_clGetDeviceIDsFromDX9MediaAdapterKHR)(
  664. cl_platform_id platform, cl_uint num_media_adapters,
  665. cl_dx9_media_adapter_type_khr *media_adapters_type, void *media_adapters,
  666. cl_dx9_media_adapter_set_khr media_adapter_set, cl_uint num_entries,
  667. cl_device_id *devices, cl_uint *num_devices) CL_API_SUFFIX__VERSION_1_2;
  668. typedef cl_mem(CL_API_CALL *cl_api_clCreateFromDX9MediaSurfaceKHR)(
  669. cl_context context, cl_mem_flags flags,
  670. cl_dx9_media_adapter_type_khr adapter_type, void *surface_info,
  671. cl_uint plane, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2;
  672. typedef
  673. cl_int(CL_API_CALL *cl_api_clEnqueueAcquireDX9MediaSurfacesKHR)(
  674. cl_command_queue command_queue, cl_uint num_objects,
  675. const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
  676. const cl_event *event_wait_list,
  677. cl_event *event) CL_API_SUFFIX__VERSION_1_2;
  678. typedef
  679. cl_int(CL_API_CALL *cl_api_clEnqueueReleaseDX9MediaSurfacesKHR)(
  680. cl_command_queue command_queue, cl_uint num_objects,
  681. const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
  682. const cl_event *event_wait_list,
  683. cl_event *event) CL_API_SUFFIX__VERSION_1_2;
  684. /* cl_khr_d3d11_sharing */
  685. extern CL_API_ENTRY cl_int CL_API_CALL clGetDeviceIDsFromD3D11KHR(
  686. cl_platform_id platform, cl_d3d11_device_source_khr d3d_device_source,
  687. void *d3d_object, cl_d3d11_device_set_khr d3d_device_set,
  688. cl_uint num_entries, cl_device_id *devices, cl_uint *num_devices);
  689. extern CL_API_ENTRY cl_mem CL_API_CALL
  690. clCreateFromD3D11BufferKHR(cl_context context, cl_mem_flags flags,
  691. ID3D11Buffer *resource, cl_int *errcode_ret);
  692. extern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromD3D11Texture2DKHR(
  693. cl_context context, cl_mem_flags flags, ID3D11Texture2D *resource,
  694. UINT subresource, cl_int *errcode_ret);
  695. extern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromD3D11Texture3DKHR(
  696. cl_context context, cl_mem_flags flags, ID3D11Texture3D *resource,
  697. UINT subresource, cl_int *errcode_ret);
  698. extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueAcquireD3D11ObjectsKHR(
  699. cl_command_queue command_queue, cl_uint num_objects,
  700. const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
  701. const cl_event *event_wait_list, cl_event *event);
  702. extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReleaseD3D11ObjectsKHR(
  703. cl_command_queue command_queue, cl_uint num_objects,
  704. const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
  705. const cl_event *event_wait_list, cl_event *event);
  706. /* cl_khr_dx9_media_sharing */
  707. extern CL_API_ENTRY cl_int CL_API_CALL clGetDeviceIDsFromDX9MediaAdapterKHR(
  708. cl_platform_id platform, cl_uint num_media_adapters,
  709. cl_dx9_media_adapter_type_khr *media_adapter_type, void *media_adapters,
  710. cl_dx9_media_adapter_set_khr media_adapter_set, cl_uint num_entries,
  711. cl_device_id *devices, cl_uint *num_devices);
  712. extern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromDX9MediaSurfaceKHR(
  713. cl_context context, cl_mem_flags flags,
  714. cl_dx9_media_adapter_type_khr adapter_type, void *surface_info,
  715. cl_uint plane, cl_int *errcode_ret);
  716. extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueAcquireDX9MediaSurfacesKHR(
  717. cl_command_queue command_queue, cl_uint num_objects,
  718. const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
  719. const cl_event *event_wait_list, cl_event *event);
  720. extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReleaseDX9MediaSurfacesKHR(
  721. cl_command_queue command_queue, cl_uint num_objects,
  722. const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
  723. const cl_event *event_wait_list, cl_event *event);
  724. #else
  725. /* cl_khr_d3d10_sharing */
  726. typedef void *cl_api_clGetDeviceIDsFromD3D10KHR;
  727. typedef void *cl_api_clCreateFromD3D10BufferKHR;
  728. typedef void *cl_api_clCreateFromD3D10Texture2DKHR;
  729. typedef void *cl_api_clCreateFromD3D10Texture3DKHR;
  730. typedef void *cl_api_clEnqueueAcquireD3D10ObjectsKHR;
  731. typedef void *cl_api_clEnqueueReleaseD3D10ObjectsKHR;
  732. /* cl_khr_d3d11_sharing */
  733. typedef void *cl_api_clGetDeviceIDsFromD3D11KHR;
  734. typedef void *cl_api_clCreateFromD3D11BufferKHR;
  735. typedef void *cl_api_clCreateFromD3D11Texture2DKHR;
  736. typedef void *cl_api_clCreateFromD3D11Texture3DKHR;
  737. typedef void *cl_api_clEnqueueAcquireD3D11ObjectsKHR;
  738. typedef void *cl_api_clEnqueueReleaseD3D11ObjectsKHR;
  739. /* cl_khr_dx9_media_sharing */
  740. typedef void *cl_api_clCreateFromDX9MediaSurfaceKHR;
  741. typedef void *cl_api_clEnqueueAcquireDX9MediaSurfacesKHR;
  742. typedef void *cl_api_clEnqueueReleaseDX9MediaSurfacesKHR;
  743. typedef void *cl_api_clGetDeviceIDsFromDX9MediaAdapterKHR;
  744. #endif
  745. /* OpenCL 1.1 */
  746. #ifdef CL_VERSION_1_1
  747. typedef cl_int(CL_API_CALL *cl_api_clSetEventCallback)(
  748. cl_event /* event */, cl_int /* command_exec_callback_type */,
  749. void(CL_CALLBACK * /* pfn_notify */)(cl_event, cl_int, void *),
  750. void * /* user_data */) CL_API_SUFFIX__VERSION_1_1;
  751. typedef cl_mem(CL_API_CALL *cl_api_clCreateSubBuffer)(
  752. cl_mem /* buffer */, cl_mem_flags /* flags */,
  753. cl_buffer_create_type /* buffer_create_type */,
  754. const void * /* buffer_create_info */,
  755. cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1;
  756. typedef
  757. cl_int(CL_API_CALL *cl_api_clSetMemObjectDestructorCallback)(
  758. cl_mem /* memobj */,
  759. void(CL_CALLBACK * /*pfn_notify*/)(cl_mem /* memobj */,
  760. void * /*user_data*/),
  761. void * /*user_data */) CL_API_SUFFIX__VERSION_1_1;
  762. typedef cl_event(CL_API_CALL *cl_api_clCreateUserEvent)(
  763. cl_context /* context */,
  764. cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1;
  765. typedef cl_int(CL_API_CALL *cl_api_clSetUserEventStatus)(
  766. cl_event /* event */,
  767. cl_int /* execution_status */) CL_API_SUFFIX__VERSION_1_1;
  768. #else
  769. typedef void *cl_api_clSetEventCallback;
  770. typedef void *cl_api_clCreateSubBuffer;
  771. typedef void *cl_api_clSetMemObjectDestructorCallback;
  772. typedef void *cl_api_clCreateUserEvent;
  773. typedef void *cl_api_clSetUserEventStatus;
  774. #endif
  775. typedef cl_int(CL_API_CALL *cl_api_clCreateSubDevicesEXT)(
  776. cl_device_id in_device,
  777. const cl_device_partition_property_ext *partition_properties,
  778. cl_uint num_entries, cl_device_id *out_devices, cl_uint *num_devices);
  779. typedef cl_int(CL_API_CALL *cl_api_clRetainDeviceEXT)(
  780. cl_device_id device) CL_API_SUFFIX__VERSION_1_0;
  781. typedef cl_int(CL_API_CALL *cl_api_clReleaseDeviceEXT)(
  782. cl_device_id device) CL_API_SUFFIX__VERSION_1_0;
  783. /* cl_khr_egl_image */
  784. typedef cl_mem(CL_API_CALL *cl_api_clCreateFromEGLImageKHR)(
  785. cl_context context, CLeglDisplayKHR display, CLeglImageKHR image,
  786. cl_mem_flags flags, const cl_egl_image_properties_khr *properties,
  787. cl_int *errcode_ret);
  788. typedef cl_int(CL_API_CALL *cl_api_clEnqueueAcquireEGLObjectsKHR)(
  789. cl_command_queue command_queue, cl_uint num_objects,
  790. const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
  791. const cl_event *event_wait_list, cl_event *event);
  792. typedef cl_int(CL_API_CALL *cl_api_clEnqueueReleaseEGLObjectsKHR)(
  793. cl_command_queue command_queue, cl_uint num_objects,
  794. const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
  795. const cl_event *event_wait_list, cl_event *event);
  796. /* cl_khr_egl_event */
  797. typedef cl_event(CL_API_CALL *cl_api_clCreateEventFromEGLSyncKHR)(
  798. cl_context context, CLeglSyncKHR sync, CLeglDisplayKHR display,
  799. cl_int *errcode_ret);
  800. #ifdef CL_VERSION_2_1
  801. typedef cl_int(CL_API_CALL *cl_api_clSetDefaultDeviceCommandQueue)(
  802. cl_context context, cl_device_id device,
  803. cl_command_queue command_queue) CL_API_SUFFIX__VERSION_2_1;
  804. typedef cl_program(CL_API_CALL *cl_api_clCreateProgramWithIL)(
  805. cl_context context, const void *il, size_t length,
  806. cl_int *errcode_ret) CL_API_SUFFIX__VERSION_2_1;
  807. typedef cl_int(CL_API_CALL *cl_api_clGetKernelSubGroupInfo)(
  808. cl_kernel kernel, cl_device_id device, cl_kernel_sub_group_info param_name,
  809. size_t input_value_size, const void *input_value, size_t param_value_size,
  810. void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_2_1;
  811. typedef cl_kernel(CL_API_CALL *cl_api_clCloneKernel)(
  812. cl_kernel source_kernel, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_2_1;
  813. typedef cl_int(CL_API_CALL *cl_api_clEnqueueSVMMigrateMem)(
  814. cl_command_queue command_queue, cl_uint num_svm_pointers,
  815. const void **svm_pointers, const size_t *sizes,
  816. cl_mem_migration_flags flags, cl_uint num_events_in_wait_list,
  817. const cl_event *event_wait_list,
  818. cl_event *event) CL_API_SUFFIX__VERSION_2_1;
  819. typedef cl_int(CL_API_CALL *cl_api_clGetDeviceAndHostTimer)(
  820. cl_device_id device, cl_ulong *device_timestamp,
  821. cl_ulong *host_timestamp) CL_API_SUFFIX__VERSION_2_1;
  822. typedef cl_int(CL_API_CALL *cl_api_clGetHostTimer)(
  823. cl_device_id device, cl_ulong *host_timestamp) CL_API_SUFFIX__VERSION_2_1;
  824. #else
  825. typedef void *cl_api_clSetDefaultDeviceCommandQueue;
  826. typedef void *cl_api_clCreateProgramWithIL;
  827. typedef void *cl_api_clGetKernelSubGroupInfo;
  828. typedef void *cl_api_clCloneKernel;
  829. typedef void *cl_api_clEnqueueSVMMigrateMem;
  830. typedef void *cl_api_clGetDeviceAndHostTimer;
  831. typedef void *cl_api_clGetHostTimer;
  832. #endif
  833. /* Vendor dispatch table struture */
  834. typedef struct _cl_icd_dispatch {
  835. /* OpenCL 1.0 */
  836. cl_api_clGetPlatformIDs clGetPlatformIDs;
  837. cl_api_clGetPlatformInfo clGetPlatformInfo;
  838. cl_api_clGetDeviceIDs clGetDeviceIDs;
  839. cl_api_clGetDeviceInfo clGetDeviceInfo;
  840. cl_api_clCreateContext clCreateContext;
  841. cl_api_clCreateContextFromType clCreateContextFromType;
  842. cl_api_clRetainContext clRetainContext;
  843. cl_api_clReleaseContext clReleaseContext;
  844. cl_api_clGetContextInfo clGetContextInfo;
  845. cl_api_clCreateCommandQueue clCreateCommandQueue;
  846. cl_api_clRetainCommandQueue clRetainCommandQueue;
  847. cl_api_clReleaseCommandQueue clReleaseCommandQueue;
  848. cl_api_clGetCommandQueueInfo clGetCommandQueueInfo;
  849. cl_api_clSetCommandQueueProperty clSetCommandQueueProperty;
  850. cl_api_clCreateBuffer clCreateBuffer;
  851. cl_api_clCreateImage2D clCreateImage2D;
  852. cl_api_clCreateImage3D clCreateImage3D;
  853. cl_api_clRetainMemObject clRetainMemObject;
  854. cl_api_clReleaseMemObject clReleaseMemObject;
  855. cl_api_clGetSupportedImageFormats clGetSupportedImageFormats;
  856. cl_api_clGetMemObjectInfo clGetMemObjectInfo;
  857. cl_api_clGetImageInfo clGetImageInfo;
  858. cl_api_clCreateSampler clCreateSampler;
  859. cl_api_clRetainSampler clRetainSampler;
  860. cl_api_clReleaseSampler clReleaseSampler;
  861. cl_api_clGetSamplerInfo clGetSamplerInfo;
  862. cl_api_clCreateProgramWithSource clCreateProgramWithSource;
  863. cl_api_clCreateProgramWithBinary clCreateProgramWithBinary;
  864. cl_api_clRetainProgram clRetainProgram;
  865. cl_api_clReleaseProgram clReleaseProgram;
  866. cl_api_clBuildProgram clBuildProgram;
  867. cl_api_clUnloadCompiler clUnloadCompiler;
  868. cl_api_clGetProgramInfo clGetProgramInfo;
  869. cl_api_clGetProgramBuildInfo clGetProgramBuildInfo;
  870. cl_api_clCreateKernel clCreateKernel;
  871. cl_api_clCreateKernelsInProgram clCreateKernelsInProgram;
  872. cl_api_clRetainKernel clRetainKernel;
  873. cl_api_clReleaseKernel clReleaseKernel;
  874. cl_api_clSetKernelArg clSetKernelArg;
  875. cl_api_clGetKernelInfo clGetKernelInfo;
  876. cl_api_clGetKernelWorkGroupInfo clGetKernelWorkGroupInfo;
  877. cl_api_clWaitForEvents clWaitForEvents;
  878. cl_api_clGetEventInfo clGetEventInfo;
  879. cl_api_clRetainEvent clRetainEvent;
  880. cl_api_clReleaseEvent clReleaseEvent;
  881. cl_api_clGetEventProfilingInfo clGetEventProfilingInfo;
  882. cl_api_clFlush clFlush;
  883. cl_api_clFinish clFinish;
  884. cl_api_clEnqueueReadBuffer clEnqueueReadBuffer;
  885. cl_api_clEnqueueWriteBuffer clEnqueueWriteBuffer;
  886. cl_api_clEnqueueCopyBuffer clEnqueueCopyBuffer;
  887. cl_api_clEnqueueReadImage clEnqueueReadImage;
  888. cl_api_clEnqueueWriteImage clEnqueueWriteImage;
  889. cl_api_clEnqueueCopyImage clEnqueueCopyImage;
  890. cl_api_clEnqueueCopyImageToBuffer clEnqueueCopyImageToBuffer;
  891. cl_api_clEnqueueCopyBufferToImage clEnqueueCopyBufferToImage;
  892. cl_api_clEnqueueMapBuffer clEnqueueMapBuffer;
  893. cl_api_clEnqueueMapImage clEnqueueMapImage;
  894. cl_api_clEnqueueUnmapMemObject clEnqueueUnmapMemObject;
  895. cl_api_clEnqueueNDRangeKernel clEnqueueNDRangeKernel;
  896. cl_api_clEnqueueTask clEnqueueTask;
  897. cl_api_clEnqueueNativeKernel clEnqueueNativeKernel;
  898. cl_api_clEnqueueMarker clEnqueueMarker;
  899. cl_api_clEnqueueWaitForEvents clEnqueueWaitForEvents;
  900. cl_api_clEnqueueBarrier clEnqueueBarrier;
  901. cl_api_clGetExtensionFunctionAddress clGetExtensionFunctionAddress;
  902. cl_api_clCreateFromGLBuffer clCreateFromGLBuffer;
  903. cl_api_clCreateFromGLTexture2D clCreateFromGLTexture2D;
  904. cl_api_clCreateFromGLTexture3D clCreateFromGLTexture3D;
  905. cl_api_clCreateFromGLRenderbuffer clCreateFromGLRenderbuffer;
  906. cl_api_clGetGLObjectInfo clGetGLObjectInfo;
  907. cl_api_clGetGLTextureInfo clGetGLTextureInfo;
  908. cl_api_clEnqueueAcquireGLObjects clEnqueueAcquireGLObjects;
  909. cl_api_clEnqueueReleaseGLObjects clEnqueueReleaseGLObjects;
  910. cl_api_clGetGLContextInfoKHR clGetGLContextInfoKHR;
  911. /* cl_khr_d3d10_sharing */
  912. cl_api_clGetDeviceIDsFromD3D10KHR clGetDeviceIDsFromD3D10KHR;
  913. cl_api_clCreateFromD3D10BufferKHR clCreateFromD3D10BufferKHR;
  914. cl_api_clCreateFromD3D10Texture2DKHR clCreateFromD3D10Texture2DKHR;
  915. cl_api_clCreateFromD3D10Texture3DKHR clCreateFromD3D10Texture3DKHR;
  916. cl_api_clEnqueueAcquireD3D10ObjectsKHR clEnqueueAcquireD3D10ObjectsKHR;
  917. cl_api_clEnqueueReleaseD3D10ObjectsKHR clEnqueueReleaseD3D10ObjectsKHR;
  918. /* OpenCL 1.1 */
  919. cl_api_clSetEventCallback clSetEventCallback;
  920. cl_api_clCreateSubBuffer clCreateSubBuffer;
  921. cl_api_clSetMemObjectDestructorCallback clSetMemObjectDestructorCallback;
  922. cl_api_clCreateUserEvent clCreateUserEvent;
  923. cl_api_clSetUserEventStatus clSetUserEventStatus;
  924. cl_api_clEnqueueReadBufferRect clEnqueueReadBufferRect;
  925. cl_api_clEnqueueWriteBufferRect clEnqueueWriteBufferRect;
  926. cl_api_clEnqueueCopyBufferRect clEnqueueCopyBufferRect;
  927. /* cl_ext_device_fission */
  928. cl_api_clCreateSubDevicesEXT clCreateSubDevicesEXT;
  929. cl_api_clRetainDeviceEXT clRetainDeviceEXT;
  930. cl_api_clReleaseDeviceEXT clReleaseDeviceEXT;
  931. /* cl_khr_gl_event */
  932. cl_api_clCreateEventFromGLsyncKHR clCreateEventFromGLsyncKHR;
  933. /* OpenCL 1.2 */
  934. cl_api_clCreateSubDevices clCreateSubDevices;
  935. cl_api_clRetainDevice clRetainDevice;
  936. cl_api_clReleaseDevice clReleaseDevice;
  937. cl_api_clCreateImage clCreateImage;
  938. cl_api_clCreateProgramWithBuiltInKernels clCreateProgramWithBuiltInKernels;
  939. cl_api_clCompileProgram clCompileProgram;
  940. cl_api_clLinkProgram clLinkProgram;
  941. cl_api_clUnloadPlatformCompiler clUnloadPlatformCompiler;
  942. cl_api_clGetKernelArgInfo clGetKernelArgInfo;
  943. cl_api_clEnqueueFillBuffer clEnqueueFillBuffer;
  944. cl_api_clEnqueueFillImage clEnqueueFillImage;
  945. cl_api_clEnqueueMigrateMemObjects clEnqueueMigrateMemObjects;
  946. cl_api_clEnqueueMarkerWithWaitList clEnqueueMarkerWithWaitList;
  947. cl_api_clEnqueueBarrierWithWaitList clEnqueueBarrierWithWaitList;
  948. cl_api_clGetExtensionFunctionAddressForPlatform
  949. clGetExtensionFunctionAddressForPlatform;
  950. cl_api_clCreateFromGLTexture clCreateFromGLTexture;
  951. /* cl_khr_d3d11_sharing */
  952. cl_api_clGetDeviceIDsFromD3D11KHR clGetDeviceIDsFromD3D11KHR;
  953. cl_api_clCreateFromD3D11BufferKHR clCreateFromD3D11BufferKHR;
  954. cl_api_clCreateFromD3D11Texture2DKHR clCreateFromD3D11Texture2DKHR;
  955. cl_api_clCreateFromD3D11Texture3DKHR clCreateFromD3D11Texture3DKHR;
  956. cl_api_clCreateFromDX9MediaSurfaceKHR clCreateFromDX9MediaSurfaceKHR;
  957. cl_api_clEnqueueAcquireD3D11ObjectsKHR clEnqueueAcquireD3D11ObjectsKHR;
  958. cl_api_clEnqueueReleaseD3D11ObjectsKHR clEnqueueReleaseD3D11ObjectsKHR;
  959. /* cl_khr_dx9_media_sharing */
  960. cl_api_clGetDeviceIDsFromDX9MediaAdapterKHR
  961. clGetDeviceIDsFromDX9MediaAdapterKHR;
  962. cl_api_clEnqueueAcquireDX9MediaSurfacesKHR
  963. clEnqueueAcquireDX9MediaSurfacesKHR;
  964. cl_api_clEnqueueReleaseDX9MediaSurfacesKHR
  965. clEnqueueReleaseDX9MediaSurfacesKHR;
  966. /* cl_khr_egl_image */
  967. cl_api_clCreateFromEGLImageKHR clCreateFromEGLImageKHR;
  968. cl_api_clEnqueueAcquireEGLObjectsKHR clEnqueueAcquireEGLObjectsKHR;
  969. cl_api_clEnqueueReleaseEGLObjectsKHR clEnqueueReleaseEGLObjectsKHR;
  970. /* cl_khr_egl_event */
  971. cl_api_clCreateEventFromEGLSyncKHR clCreateEventFromEGLSyncKHR;
  972. /* OpenCL 2.0 */
  973. cl_api_clCreateCommandQueueWithProperties clCreateCommandQueueWithProperties;
  974. cl_api_clCreatePipe clCreatePipe;
  975. cl_api_clGetPipeInfo clGetPipeInfo;
  976. cl_api_clSVMAlloc clSVMAlloc;
  977. cl_api_clSVMFree clSVMFree;
  978. cl_api_clEnqueueSVMFree clEnqueueSVMFree;
  979. cl_api_clEnqueueSVMMemcpy clEnqueueSVMMemcpy;
  980. cl_api_clEnqueueSVMMemFill clEnqueueSVMMemFill;
  981. cl_api_clEnqueueSVMMap clEnqueueSVMMap;
  982. cl_api_clEnqueueSVMUnmap clEnqueueSVMUnmap;
  983. cl_api_clCreateSamplerWithProperties clCreateSamplerWithProperties;
  984. cl_api_clSetKernelArgSVMPointer clSetKernelArgSVMPointer;
  985. cl_api_clSetKernelExecInfo clSetKernelExecInfo;
  986. /* cl_khr_sub_groups */
  987. cl_api_clGetKernelSubGroupInfoKHR clGetKernelSubGroupInfoKHR;
  988. /* OpenCL 2.1 */
  989. cl_api_clCloneKernel clCloneKernel;
  990. cl_api_clCreateProgramWithIL clCreateProgramWithIL;
  991. cl_api_clEnqueueSVMMigrateMem clEnqueueSVMMigrateMem;
  992. cl_api_clGetDeviceAndHostTimer clGetDeviceAndHostTimer;
  993. cl_api_clGetHostTimer clGetHostTimer;
  994. cl_api_clGetKernelSubGroupInfo clGetKernelSubGroupInfo;
  995. cl_api_clSetDefaultDeviceCommandQueue clSetDefaultDeviceCommandQueue;
  996. /* OpenCL 2.2 */
  997. cl_api_clSetProgramReleaseCallback clSetProgramReleaseCallback;
  998. cl_api_clSetProgramSpecializationConstant clSetProgramSpecializationConstant;
  999. /* OpenCL 3.0 */
  1000. cl_api_clCreateBufferWithProperties clCreateBufferWithProperties;
  1001. cl_api_clCreateImageWithProperties clCreateImageWithProperties;
  1002. cl_api_clSetContextDestructorCallback clSetContextDestructorCallback;
  1003. } cl_icd_dispatch;
  1004. #ifdef __cplusplus
  1005. }
  1006. #endif
  1007. #endif /* #ifndef OPENCL_CL_ICD_H */