xref: /aosp_15_r20/external/OpenCL-Headers/CL/cl_icd.h (revision 3cc257528f335c5672e46865a03b8ee020e5fe2d)
1*3cc25752SFrank Piva /*******************************************************************************
2*3cc25752SFrank Piva  * Copyright (c) 2019-2020 The Khronos Group Inc.
3*3cc25752SFrank Piva  *
4*3cc25752SFrank Piva  * Licensed under the Apache License, Version 2.0 (the "License");
5*3cc25752SFrank Piva  * you may not use this file except in compliance with the License.
6*3cc25752SFrank Piva  * You may obtain a copy of the License at
7*3cc25752SFrank Piva  *
8*3cc25752SFrank Piva  *    http://www.apache.org/licenses/LICENSE-2.0
9*3cc25752SFrank Piva  *
10*3cc25752SFrank Piva  * Unless required by applicable law or agreed to in writing, software
11*3cc25752SFrank Piva  * distributed under the License is distributed on an "AS IS" BASIS,
12*3cc25752SFrank Piva  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*3cc25752SFrank Piva  * See the License for the specific language governing permissions and
14*3cc25752SFrank Piva  * limitations under the License.
15*3cc25752SFrank Piva  ******************************************************************************/
16*3cc25752SFrank Piva 
17*3cc25752SFrank Piva #ifndef OPENCL_CL_ICD_H
18*3cc25752SFrank Piva #define OPENCL_CL_ICD_H
19*3cc25752SFrank Piva 
20*3cc25752SFrank Piva #include <CL/cl.h>
21*3cc25752SFrank Piva #include <CL/cl_function_types.h>
22*3cc25752SFrank Piva #include <CL/cl_egl.h>
23*3cc25752SFrank Piva #include <CL/cl_ext.h>
24*3cc25752SFrank Piva #include <CL/cl_gl.h>
25*3cc25752SFrank Piva 
26*3cc25752SFrank Piva #if defined(_WIN32)
27*3cc25752SFrank Piva #include <CL/cl_d3d11.h>
28*3cc25752SFrank Piva #include <CL/cl_d3d10.h>
29*3cc25752SFrank Piva #include <CL/cl_dx9_media_sharing.h>
30*3cc25752SFrank Piva #endif
31*3cc25752SFrank Piva 
32*3cc25752SFrank Piva #ifdef __cplusplus
33*3cc25752SFrank Piva extern "C" {
34*3cc25752SFrank Piva #endif
35*3cc25752SFrank Piva 
36*3cc25752SFrank Piva /* Vendor dispatch table structure */
37*3cc25752SFrank Piva 
38*3cc25752SFrank Piva typedef struct _cl_icd_dispatch {
39*3cc25752SFrank Piva   /* OpenCL 1.0 */
40*3cc25752SFrank Piva   clGetPlatformIDs_t *clGetPlatformIDs;
41*3cc25752SFrank Piva   clGetPlatformInfo_t *clGetPlatformInfo;
42*3cc25752SFrank Piva   clGetDeviceIDs_t *clGetDeviceIDs;
43*3cc25752SFrank Piva   clGetDeviceInfo_t *clGetDeviceInfo;
44*3cc25752SFrank Piva   clCreateContext_t *clCreateContext;
45*3cc25752SFrank Piva   clCreateContextFromType_t *clCreateContextFromType;
46*3cc25752SFrank Piva   clRetainContext_t *clRetainContext;
47*3cc25752SFrank Piva   clReleaseContext_t *clReleaseContext;
48*3cc25752SFrank Piva   clGetContextInfo_t *clGetContextInfo;
49*3cc25752SFrank Piva   clCreateCommandQueue_t *clCreateCommandQueue;
50*3cc25752SFrank Piva   clRetainCommandQueue_t *clRetainCommandQueue;
51*3cc25752SFrank Piva   clReleaseCommandQueue_t *clReleaseCommandQueue;
52*3cc25752SFrank Piva   clGetCommandQueueInfo_t *clGetCommandQueueInfo;
53*3cc25752SFrank Piva   clSetCommandQueueProperty_t *clSetCommandQueueProperty;
54*3cc25752SFrank Piva   clCreateBuffer_t *clCreateBuffer;
55*3cc25752SFrank Piva   clCreateImage2D_t *clCreateImage2D;
56*3cc25752SFrank Piva   clCreateImage3D_t *clCreateImage3D;
57*3cc25752SFrank Piva   clRetainMemObject_t *clRetainMemObject;
58*3cc25752SFrank Piva   clReleaseMemObject_t *clReleaseMemObject;
59*3cc25752SFrank Piva   clGetSupportedImageFormats_t *clGetSupportedImageFormats;
60*3cc25752SFrank Piva   clGetMemObjectInfo_t *clGetMemObjectInfo;
61*3cc25752SFrank Piva   clGetImageInfo_t *clGetImageInfo;
62*3cc25752SFrank Piva   clCreateSampler_t *clCreateSampler;
63*3cc25752SFrank Piva   clRetainSampler_t *clRetainSampler;
64*3cc25752SFrank Piva   clReleaseSampler_t *clReleaseSampler;
65*3cc25752SFrank Piva   clGetSamplerInfo_t *clGetSamplerInfo;
66*3cc25752SFrank Piva   clCreateProgramWithSource_t *clCreateProgramWithSource;
67*3cc25752SFrank Piva   clCreateProgramWithBinary_t *clCreateProgramWithBinary;
68*3cc25752SFrank Piva   clRetainProgram_t *clRetainProgram;
69*3cc25752SFrank Piva   clReleaseProgram_t *clReleaseProgram;
70*3cc25752SFrank Piva   clBuildProgram_t *clBuildProgram;
71*3cc25752SFrank Piva   clUnloadCompiler_t *clUnloadCompiler;
72*3cc25752SFrank Piva   clGetProgramInfo_t *clGetProgramInfo;
73*3cc25752SFrank Piva   clGetProgramBuildInfo_t *clGetProgramBuildInfo;
74*3cc25752SFrank Piva   clCreateKernel_t *clCreateKernel;
75*3cc25752SFrank Piva   clCreateKernelsInProgram_t *clCreateKernelsInProgram;
76*3cc25752SFrank Piva   clRetainKernel_t *clRetainKernel;
77*3cc25752SFrank Piva   clReleaseKernel_t *clReleaseKernel;
78*3cc25752SFrank Piva   clSetKernelArg_t *clSetKernelArg;
79*3cc25752SFrank Piva   clGetKernelInfo_t *clGetKernelInfo;
80*3cc25752SFrank Piva   clGetKernelWorkGroupInfo_t *clGetKernelWorkGroupInfo;
81*3cc25752SFrank Piva   clWaitForEvents_t *clWaitForEvents;
82*3cc25752SFrank Piva   clGetEventInfo_t *clGetEventInfo;
83*3cc25752SFrank Piva   clRetainEvent_t *clRetainEvent;
84*3cc25752SFrank Piva   clReleaseEvent_t *clReleaseEvent;
85*3cc25752SFrank Piva   clGetEventProfilingInfo_t *clGetEventProfilingInfo;
86*3cc25752SFrank Piva   clFlush_t *clFlush;
87*3cc25752SFrank Piva   clFinish_t *clFinish;
88*3cc25752SFrank Piva   clEnqueueReadBuffer_t *clEnqueueReadBuffer;
89*3cc25752SFrank Piva   clEnqueueWriteBuffer_t *clEnqueueWriteBuffer;
90*3cc25752SFrank Piva   clEnqueueCopyBuffer_t *clEnqueueCopyBuffer;
91*3cc25752SFrank Piva   clEnqueueReadImage_t *clEnqueueReadImage;
92*3cc25752SFrank Piva   clEnqueueWriteImage_t *clEnqueueWriteImage;
93*3cc25752SFrank Piva   clEnqueueCopyImage_t *clEnqueueCopyImage;
94*3cc25752SFrank Piva   clEnqueueCopyImageToBuffer_t *clEnqueueCopyImageToBuffer;
95*3cc25752SFrank Piva   clEnqueueCopyBufferToImage_t *clEnqueueCopyBufferToImage;
96*3cc25752SFrank Piva   clEnqueueMapBuffer_t *clEnqueueMapBuffer;
97*3cc25752SFrank Piva   clEnqueueMapImage_t *clEnqueueMapImage;
98*3cc25752SFrank Piva   clEnqueueUnmapMemObject_t *clEnqueueUnmapMemObject;
99*3cc25752SFrank Piva   clEnqueueNDRangeKernel_t *clEnqueueNDRangeKernel;
100*3cc25752SFrank Piva   clEnqueueTask_t *clEnqueueTask;
101*3cc25752SFrank Piva   clEnqueueNativeKernel_t *clEnqueueNativeKernel;
102*3cc25752SFrank Piva   clEnqueueMarker_t *clEnqueueMarker;
103*3cc25752SFrank Piva   clEnqueueWaitForEvents_t *clEnqueueWaitForEvents;
104*3cc25752SFrank Piva   clEnqueueBarrier_t *clEnqueueBarrier;
105*3cc25752SFrank Piva   clGetExtensionFunctionAddress_t *clGetExtensionFunctionAddress;
106*3cc25752SFrank Piva   clCreateFromGLBuffer_t *clCreateFromGLBuffer;
107*3cc25752SFrank Piva   clCreateFromGLTexture2D_t *clCreateFromGLTexture2D;
108*3cc25752SFrank Piva   clCreateFromGLTexture3D_t *clCreateFromGLTexture3D;
109*3cc25752SFrank Piva   clCreateFromGLRenderbuffer_t *clCreateFromGLRenderbuffer;
110*3cc25752SFrank Piva   clGetGLObjectInfo_t *clGetGLObjectInfo;
111*3cc25752SFrank Piva   clGetGLTextureInfo_t *clGetGLTextureInfo;
112*3cc25752SFrank Piva   clEnqueueAcquireGLObjects_t *clEnqueueAcquireGLObjects;
113*3cc25752SFrank Piva   clEnqueueReleaseGLObjects_t *clEnqueueReleaseGLObjects;
114*3cc25752SFrank Piva   clGetGLContextInfoKHR_t *clGetGLContextInfoKHR;
115*3cc25752SFrank Piva 
116*3cc25752SFrank Piva   /* cl_khr_d3d10_sharing */
117*3cc25752SFrank Piva #ifdef _WIN32
118*3cc25752SFrank Piva   clGetDeviceIDsFromD3D10KHR_t *clGetDeviceIDsFromD3D10KHR;
119*3cc25752SFrank Piva   clCreateFromD3D10BufferKHR_t *clCreateFromD3D10BufferKHR;
120*3cc25752SFrank Piva   clCreateFromD3D10Texture2DKHR_t *clCreateFromD3D10Texture2DKHR;
121*3cc25752SFrank Piva   clCreateFromD3D10Texture3DKHR_t *clCreateFromD3D10Texture3DKHR;
122*3cc25752SFrank Piva   clEnqueueAcquireD3D10ObjectsKHR_t *clEnqueueAcquireD3D10ObjectsKHR;
123*3cc25752SFrank Piva   clEnqueueReleaseD3D10ObjectsKHR_t *clEnqueueReleaseD3D10ObjectsKHR;
124*3cc25752SFrank Piva #else
125*3cc25752SFrank Piva   void *clGetDeviceIDsFromD3D10KHR;
126*3cc25752SFrank Piva   void *clCreateFromD3D10BufferKHR;
127*3cc25752SFrank Piva   void *clCreateFromD3D10Texture2DKHR;
128*3cc25752SFrank Piva   void *clCreateFromD3D10Texture3DKHR;
129*3cc25752SFrank Piva   void *clEnqueueAcquireD3D10ObjectsKHR;
130*3cc25752SFrank Piva   void *clEnqueueReleaseD3D10ObjectsKHR;
131*3cc25752SFrank Piva #endif
132*3cc25752SFrank Piva 
133*3cc25752SFrank Piva   /* OpenCL 1.1 */
134*3cc25752SFrank Piva #ifdef CL_VERSION_1_1
135*3cc25752SFrank Piva   clSetEventCallback_t *clSetEventCallback;
136*3cc25752SFrank Piva   clCreateSubBuffer_t *clCreateSubBuffer;
137*3cc25752SFrank Piva   clSetMemObjectDestructorCallback_t *clSetMemObjectDestructorCallback;
138*3cc25752SFrank Piva   clCreateUserEvent_t *clCreateUserEvent;
139*3cc25752SFrank Piva   clSetUserEventStatus_t *clSetUserEventStatus;
140*3cc25752SFrank Piva   clEnqueueReadBufferRect_t *clEnqueueReadBufferRect;
141*3cc25752SFrank Piva   clEnqueueWriteBufferRect_t *clEnqueueWriteBufferRect;
142*3cc25752SFrank Piva   clEnqueueCopyBufferRect_t *clEnqueueCopyBufferRect;
143*3cc25752SFrank Piva #else
144*3cc25752SFrank Piva   void *clSetEventCallback;
145*3cc25752SFrank Piva   void *clCreateSubBuffer;
146*3cc25752SFrank Piva   void *clSetMemObjectDestructorCallback;
147*3cc25752SFrank Piva   void *clCreateUserEvent;
148*3cc25752SFrank Piva   void *clSetUserEventStatus;
149*3cc25752SFrank Piva   void *clEnqueueReadBufferRect;
150*3cc25752SFrank Piva   void *clEnqueueWriteBufferRect;
151*3cc25752SFrank Piva   void *clEnqueueCopyBufferRect;
152*3cc25752SFrank Piva #endif
153*3cc25752SFrank Piva 
154*3cc25752SFrank Piva   /* cl_ext_device_fission */
155*3cc25752SFrank Piva   clCreateSubDevicesEXT_t *clCreateSubDevicesEXT;
156*3cc25752SFrank Piva   clRetainDeviceEXT_t *clRetainDeviceEXT;
157*3cc25752SFrank Piva   clReleaseDeviceEXT_t *clReleaseDeviceEXT;
158*3cc25752SFrank Piva 
159*3cc25752SFrank Piva   /* cl_khr_gl_event */
160*3cc25752SFrank Piva   clCreateEventFromGLsyncKHR_t *clCreateEventFromGLsyncKHR;
161*3cc25752SFrank Piva 
162*3cc25752SFrank Piva   /* OpenCL 1.2 */
163*3cc25752SFrank Piva #ifdef CL_VERSION_1_2
164*3cc25752SFrank Piva   clCreateSubDevices_t *clCreateSubDevices;
165*3cc25752SFrank Piva   clRetainDevice_t *clRetainDevice;
166*3cc25752SFrank Piva   clReleaseDevice_t *clReleaseDevice;
167*3cc25752SFrank Piva   clCreateImage_t *clCreateImage;
168*3cc25752SFrank Piva   clCreateProgramWithBuiltInKernels_t *clCreateProgramWithBuiltInKernels;
169*3cc25752SFrank Piva   clCompileProgram_t *clCompileProgram;
170*3cc25752SFrank Piva   clLinkProgram_t *clLinkProgram;
171*3cc25752SFrank Piva   clUnloadPlatformCompiler_t *clUnloadPlatformCompiler;
172*3cc25752SFrank Piva   clGetKernelArgInfo_t *clGetKernelArgInfo;
173*3cc25752SFrank Piva   clEnqueueFillBuffer_t *clEnqueueFillBuffer;
174*3cc25752SFrank Piva   clEnqueueFillImage_t *clEnqueueFillImage;
175*3cc25752SFrank Piva   clEnqueueMigrateMemObjects_t *clEnqueueMigrateMemObjects;
176*3cc25752SFrank Piva   clEnqueueMarkerWithWaitList_t *clEnqueueMarkerWithWaitList;
177*3cc25752SFrank Piva   clEnqueueBarrierWithWaitList_t *clEnqueueBarrierWithWaitList;
178*3cc25752SFrank Piva   clGetExtensionFunctionAddressForPlatform_t *
179*3cc25752SFrank Piva       clGetExtensionFunctionAddressForPlatform;
180*3cc25752SFrank Piva   clCreateFromGLTexture_t *clCreateFromGLTexture;
181*3cc25752SFrank Piva #else
182*3cc25752SFrank Piva   void *clCreateSubDevices;
183*3cc25752SFrank Piva   void *clRetainDevice;
184*3cc25752SFrank Piva   void *clReleaseDevice;
185*3cc25752SFrank Piva   void *clCreateImage;
186*3cc25752SFrank Piva   void *clCreateProgramWithBuiltInKernels;
187*3cc25752SFrank Piva   void *clCompileProgram;
188*3cc25752SFrank Piva   void *clLinkProgram;
189*3cc25752SFrank Piva   void *clUnloadPlatformCompiler;
190*3cc25752SFrank Piva   void *clGetKernelArgInfo;
191*3cc25752SFrank Piva   void *clEnqueueFillBuffer;
192*3cc25752SFrank Piva   void *clEnqueueFillImage;
193*3cc25752SFrank Piva   void *clEnqueueMigrateMemObjects;
194*3cc25752SFrank Piva   void *clEnqueueMarkerWithWaitList;
195*3cc25752SFrank Piva   void *clEnqueueBarrierWithWaitList;
196*3cc25752SFrank Piva   void *clGetExtensionFunctionAddressForPlatform;
197*3cc25752SFrank Piva   void *clCreateFromGLTexture;
198*3cc25752SFrank Piva #endif
199*3cc25752SFrank Piva 
200*3cc25752SFrank Piva   /* cl_khr_d3d11_sharing and cl_khr_dx9_media_sharing */
201*3cc25752SFrank Piva #ifdef _WIN32
202*3cc25752SFrank Piva   clGetDeviceIDsFromD3D11KHR_t *clGetDeviceIDsFromD3D11KHR;
203*3cc25752SFrank Piva   clCreateFromD3D11BufferKHR_t *clCreateFromD3D11BufferKHR;
204*3cc25752SFrank Piva   clCreateFromD3D11Texture2DKHR_t *clCreateFromD3D11Texture2DKHR;
205*3cc25752SFrank Piva   clCreateFromD3D11Texture3DKHR_t *clCreateFromD3D11Texture3DKHR;
206*3cc25752SFrank Piva   clCreateFromDX9MediaSurfaceKHR_t *clCreateFromDX9MediaSurfaceKHR;
207*3cc25752SFrank Piva   clEnqueueAcquireD3D11ObjectsKHR_t *clEnqueueAcquireD3D11ObjectsKHR;
208*3cc25752SFrank Piva   clEnqueueReleaseD3D11ObjectsKHR_t *clEnqueueReleaseD3D11ObjectsKHR;
209*3cc25752SFrank Piva   clGetDeviceIDsFromDX9MediaAdapterKHR_t *
210*3cc25752SFrank Piva       clGetDeviceIDsFromDX9MediaAdapterKHR;
211*3cc25752SFrank Piva   clEnqueueAcquireDX9MediaSurfacesKHR_t *
212*3cc25752SFrank Piva       clEnqueueAcquireDX9MediaSurfacesKHR;
213*3cc25752SFrank Piva   clEnqueueReleaseDX9MediaSurfacesKHR_t *
214*3cc25752SFrank Piva       clEnqueueReleaseDX9MediaSurfacesKHR;
215*3cc25752SFrank Piva #else
216*3cc25752SFrank Piva   void *clGetDeviceIDsFromD3D11KHR;
217*3cc25752SFrank Piva   void *clCreateFromD3D11BufferKHR;
218*3cc25752SFrank Piva   void *clCreateFromD3D11Texture2DKHR;
219*3cc25752SFrank Piva   void *clCreateFromD3D11Texture3DKHR;
220*3cc25752SFrank Piva   void *clCreateFromDX9MediaSurfaceKHR;
221*3cc25752SFrank Piva   void *clEnqueueAcquireD3D11ObjectsKHR;
222*3cc25752SFrank Piva   void *clEnqueueReleaseD3D11ObjectsKHR;
223*3cc25752SFrank Piva   void *clGetDeviceIDsFromDX9MediaAdapterKHR;
224*3cc25752SFrank Piva   void *clEnqueueAcquireDX9MediaSurfacesKHR;
225*3cc25752SFrank Piva   void *clEnqueueReleaseDX9MediaSurfacesKHR;
226*3cc25752SFrank Piva #endif
227*3cc25752SFrank Piva 
228*3cc25752SFrank Piva   /* cl_khr_egl_image */
229*3cc25752SFrank Piva   clCreateFromEGLImageKHR_t *clCreateFromEGLImageKHR;
230*3cc25752SFrank Piva   clEnqueueAcquireEGLObjectsKHR_t *clEnqueueAcquireEGLObjectsKHR;
231*3cc25752SFrank Piva   clEnqueueReleaseEGLObjectsKHR_t *clEnqueueReleaseEGLObjectsKHR;
232*3cc25752SFrank Piva 
233*3cc25752SFrank Piva   /* cl_khr_egl_event */
234*3cc25752SFrank Piva   clCreateEventFromEGLSyncKHR_t *clCreateEventFromEGLSyncKHR;
235*3cc25752SFrank Piva 
236*3cc25752SFrank Piva   /* OpenCL 2.0 */
237*3cc25752SFrank Piva #ifdef CL_VERSION_2_0
238*3cc25752SFrank Piva   clCreateCommandQueueWithProperties_t *clCreateCommandQueueWithProperties;
239*3cc25752SFrank Piva   clCreatePipe_t *clCreatePipe;
240*3cc25752SFrank Piva   clGetPipeInfo_t *clGetPipeInfo;
241*3cc25752SFrank Piva   clSVMAlloc_t *clSVMAlloc;
242*3cc25752SFrank Piva   clSVMFree_t *clSVMFree;
243*3cc25752SFrank Piva   clEnqueueSVMFree_t *clEnqueueSVMFree;
244*3cc25752SFrank Piva   clEnqueueSVMMemcpy_t *clEnqueueSVMMemcpy;
245*3cc25752SFrank Piva   clEnqueueSVMMemFill_t *clEnqueueSVMMemFill;
246*3cc25752SFrank Piva   clEnqueueSVMMap_t *clEnqueueSVMMap;
247*3cc25752SFrank Piva   clEnqueueSVMUnmap_t *clEnqueueSVMUnmap;
248*3cc25752SFrank Piva   clCreateSamplerWithProperties_t *clCreateSamplerWithProperties;
249*3cc25752SFrank Piva   clSetKernelArgSVMPointer_t *clSetKernelArgSVMPointer;
250*3cc25752SFrank Piva   clSetKernelExecInfo_t *clSetKernelExecInfo;
251*3cc25752SFrank Piva #else
252*3cc25752SFrank Piva   void *clCreateCommandQueueWithProperties;
253*3cc25752SFrank Piva   void *clCreatePipe;
254*3cc25752SFrank Piva   void *clGetPipeInfo;
255*3cc25752SFrank Piva   void *clSVMAlloc;
256*3cc25752SFrank Piva   void *clSVMFree;
257*3cc25752SFrank Piva   void *clEnqueueSVMFree;
258*3cc25752SFrank Piva   void *clEnqueueSVMMemcpy;
259*3cc25752SFrank Piva   void *clEnqueueSVMMemFill;
260*3cc25752SFrank Piva   void *clEnqueueSVMMap;
261*3cc25752SFrank Piva   void *clEnqueueSVMUnmap;
262*3cc25752SFrank Piva   void *clCreateSamplerWithProperties;
263*3cc25752SFrank Piva   void *clSetKernelArgSVMPointer;
264*3cc25752SFrank Piva   void *clSetKernelExecInfo;
265*3cc25752SFrank Piva #endif
266*3cc25752SFrank Piva 
267*3cc25752SFrank Piva   /* cl_khr_sub_groups */
268*3cc25752SFrank Piva   clGetKernelSubGroupInfoKHR_t *clGetKernelSubGroupInfoKHR;
269*3cc25752SFrank Piva 
270*3cc25752SFrank Piva   /* OpenCL 2.1 */
271*3cc25752SFrank Piva #ifdef CL_VERSION_2_1
272*3cc25752SFrank Piva   clCloneKernel_t *clCloneKernel;
273*3cc25752SFrank Piva   clCreateProgramWithIL_t *clCreateProgramWithIL;
274*3cc25752SFrank Piva   clEnqueueSVMMigrateMem_t *clEnqueueSVMMigrateMem;
275*3cc25752SFrank Piva   clGetDeviceAndHostTimer_t *clGetDeviceAndHostTimer;
276*3cc25752SFrank Piva   clGetHostTimer_t *clGetHostTimer;
277*3cc25752SFrank Piva   clGetKernelSubGroupInfo_t *clGetKernelSubGroupInfo;
278*3cc25752SFrank Piva   clSetDefaultDeviceCommandQueue_t *clSetDefaultDeviceCommandQueue;
279*3cc25752SFrank Piva #else
280*3cc25752SFrank Piva   void *clCloneKernel;
281*3cc25752SFrank Piva   void *clCreateProgramWithIL;
282*3cc25752SFrank Piva   void *clEnqueueSVMMigrateMem;
283*3cc25752SFrank Piva   void *clGetDeviceAndHostTimer;
284*3cc25752SFrank Piva   void *clGetHostTimer;
285*3cc25752SFrank Piva   void *clGetKernelSubGroupInfo;
286*3cc25752SFrank Piva   void *clSetDefaultDeviceCommandQueue;
287*3cc25752SFrank Piva #endif
288*3cc25752SFrank Piva 
289*3cc25752SFrank Piva   /* OpenCL 2.2 */
290*3cc25752SFrank Piva #ifdef CL_VERSION_2_2
291*3cc25752SFrank Piva   clSetProgramReleaseCallback_t *clSetProgramReleaseCallback;
292*3cc25752SFrank Piva   clSetProgramSpecializationConstant_t *clSetProgramSpecializationConstant;
293*3cc25752SFrank Piva #else
294*3cc25752SFrank Piva   void *clSetProgramReleaseCallback;
295*3cc25752SFrank Piva   void *clSetProgramSpecializationConstant;
296*3cc25752SFrank Piva #endif
297*3cc25752SFrank Piva 
298*3cc25752SFrank Piva   /* OpenCL 3.0 */
299*3cc25752SFrank Piva #ifdef CL_VERSION_3_0
300*3cc25752SFrank Piva   clCreateBufferWithProperties_t *clCreateBufferWithProperties;
301*3cc25752SFrank Piva   clCreateImageWithProperties_t *clCreateImageWithProperties;
302*3cc25752SFrank Piva   clSetContextDestructorCallback_t *clSetContextDestructorCallback;
303*3cc25752SFrank Piva #else
304*3cc25752SFrank Piva   void *clCreateBufferWithProperties;
305*3cc25752SFrank Piva   void *clCreateImageWithProperties;
306*3cc25752SFrank Piva   void *clSetContextDestructorCallback;
307*3cc25752SFrank Piva #endif
308*3cc25752SFrank Piva 
309*3cc25752SFrank Piva } cl_icd_dispatch;
310*3cc25752SFrank Piva 
311*3cc25752SFrank Piva #ifdef __cplusplus
312*3cc25752SFrank Piva }
313*3cc25752SFrank Piva #endif
314*3cc25752SFrank Piva 
315*3cc25752SFrank Piva #endif /* #ifndef OPENCL_CL_ICD_H */
316