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