summaryrefslogtreecommitdiff
path: root/CL/cl_icd.h
diff options
context:
space:
mode:
Diffstat (limited to 'CL/cl_icd.h')
-rw-r--r--CL/cl_icd.h315
1 files changed, 315 insertions, 0 deletions
diff --git a/CL/cl_icd.h b/CL/cl_icd.h
new file mode 100644
index 0000000..435ad48
--- /dev/null
+++ b/CL/cl_icd.h
@@ -0,0 +1,315 @@
+/*******************************************************************************
+ * Copyright (c) 2019-2020 The Khronos Group Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+
+#ifndef OPENCL_CL_ICD_H
+#define OPENCL_CL_ICD_H
+
+#include <CL/cl.h>
+#include <CL/cl_function_types.h>
+#include <CL/cl_egl.h>
+#include <CL/cl_ext.h>
+#include <CL/cl_gl.h>
+
+#if defined(_WIN32)
+#include <CL/cl_d3d11.h>
+#include <CL/cl_d3d10.h>
+#include <CL/cl_dx9_media_sharing.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Vendor dispatch table structure */
+
+typedef struct _cl_icd_dispatch {
+ /* OpenCL 1.0 */
+ clGetPlatformIDs_t *clGetPlatformIDs;
+ clGetPlatformInfo_t *clGetPlatformInfo;
+ clGetDeviceIDs_t *clGetDeviceIDs;
+ clGetDeviceInfo_t *clGetDeviceInfo;
+ clCreateContext_t *clCreateContext;
+ clCreateContextFromType_t *clCreateContextFromType;
+ clRetainContext_t *clRetainContext;
+ clReleaseContext_t *clReleaseContext;
+ clGetContextInfo_t *clGetContextInfo;
+ clCreateCommandQueue_t *clCreateCommandQueue;
+ clRetainCommandQueue_t *clRetainCommandQueue;
+ clReleaseCommandQueue_t *clReleaseCommandQueue;
+ clGetCommandQueueInfo_t *clGetCommandQueueInfo;
+ clSetCommandQueueProperty_t *clSetCommandQueueProperty;
+ clCreateBuffer_t *clCreateBuffer;
+ clCreateImage2D_t *clCreateImage2D;
+ clCreateImage3D_t *clCreateImage3D;
+ clRetainMemObject_t *clRetainMemObject;
+ clReleaseMemObject_t *clReleaseMemObject;
+ clGetSupportedImageFormats_t *clGetSupportedImageFormats;
+ clGetMemObjectInfo_t *clGetMemObjectInfo;
+ clGetImageInfo_t *clGetImageInfo;
+ clCreateSampler_t *clCreateSampler;
+ clRetainSampler_t *clRetainSampler;
+ clReleaseSampler_t *clReleaseSampler;
+ clGetSamplerInfo_t *clGetSamplerInfo;
+ clCreateProgramWithSource_t *clCreateProgramWithSource;
+ clCreateProgramWithBinary_t *clCreateProgramWithBinary;
+ clRetainProgram_t *clRetainProgram;
+ clReleaseProgram_t *clReleaseProgram;
+ clBuildProgram_t *clBuildProgram;
+ clUnloadCompiler_t *clUnloadCompiler;
+ clGetProgramInfo_t *clGetProgramInfo;
+ clGetProgramBuildInfo_t *clGetProgramBuildInfo;
+ clCreateKernel_t *clCreateKernel;
+ clCreateKernelsInProgram_t *clCreateKernelsInProgram;
+ clRetainKernel_t *clRetainKernel;
+ clReleaseKernel_t *clReleaseKernel;
+ clSetKernelArg_t *clSetKernelArg;
+ clGetKernelInfo_t *clGetKernelInfo;
+ clGetKernelWorkGroupInfo_t *clGetKernelWorkGroupInfo;
+ clWaitForEvents_t *clWaitForEvents;
+ clGetEventInfo_t *clGetEventInfo;
+ clRetainEvent_t *clRetainEvent;
+ clReleaseEvent_t *clReleaseEvent;
+ clGetEventProfilingInfo_t *clGetEventProfilingInfo;
+ clFlush_t *clFlush;
+ clFinish_t *clFinish;
+ clEnqueueReadBuffer_t *clEnqueueReadBuffer;
+ clEnqueueWriteBuffer_t *clEnqueueWriteBuffer;
+ clEnqueueCopyBuffer_t *clEnqueueCopyBuffer;
+ clEnqueueReadImage_t *clEnqueueReadImage;
+ clEnqueueWriteImage_t *clEnqueueWriteImage;
+ clEnqueueCopyImage_t *clEnqueueCopyImage;
+ clEnqueueCopyImageToBuffer_t *clEnqueueCopyImageToBuffer;
+ clEnqueueCopyBufferToImage_t *clEnqueueCopyBufferToImage;
+ clEnqueueMapBuffer_t *clEnqueueMapBuffer;
+ clEnqueueMapImage_t *clEnqueueMapImage;
+ clEnqueueUnmapMemObject_t *clEnqueueUnmapMemObject;
+ clEnqueueNDRangeKernel_t *clEnqueueNDRangeKernel;
+ clEnqueueTask_t *clEnqueueTask;
+ clEnqueueNativeKernel_t *clEnqueueNativeKernel;
+ clEnqueueMarker_t *clEnqueueMarker;
+ clEnqueueWaitForEvents_t *clEnqueueWaitForEvents;
+ clEnqueueBarrier_t *clEnqueueBarrier;
+ clGetExtensionFunctionAddress_t *clGetExtensionFunctionAddress;
+ clCreateFromGLBuffer_t *clCreateFromGLBuffer;
+ clCreateFromGLTexture2D_t *clCreateFromGLTexture2D;
+ clCreateFromGLTexture3D_t *clCreateFromGLTexture3D;
+ clCreateFromGLRenderbuffer_t *clCreateFromGLRenderbuffer;
+ clGetGLObjectInfo_t *clGetGLObjectInfo;
+ clGetGLTextureInfo_t *clGetGLTextureInfo;
+ clEnqueueAcquireGLObjects_t *clEnqueueAcquireGLObjects;
+ clEnqueueReleaseGLObjects_t *clEnqueueReleaseGLObjects;
+ clGetGLContextInfoKHR_t *clGetGLContextInfoKHR;
+
+ /* cl_khr_d3d10_sharing */
+#ifdef _WIN32
+ clGetDeviceIDsFromD3D10KHR_t *clGetDeviceIDsFromD3D10KHR;
+ clCreateFromD3D10BufferKHR_t *clCreateFromD3D10BufferKHR;
+ clCreateFromD3D10Texture2DKHR_t *clCreateFromD3D10Texture2DKHR;
+ clCreateFromD3D10Texture3DKHR_t *clCreateFromD3D10Texture3DKHR;
+ clEnqueueAcquireD3D10ObjectsKHR_t *clEnqueueAcquireD3D10ObjectsKHR;
+ clEnqueueReleaseD3D10ObjectsKHR_t *clEnqueueReleaseD3D10ObjectsKHR;
+#else
+ void *clGetDeviceIDsFromD3D10KHR;
+ void *clCreateFromD3D10BufferKHR;
+ void *clCreateFromD3D10Texture2DKHR;
+ void *clCreateFromD3D10Texture3DKHR;
+ void *clEnqueueAcquireD3D10ObjectsKHR;
+ void *clEnqueueReleaseD3D10ObjectsKHR;
+#endif
+
+ /* OpenCL 1.1 */
+#ifdef CL_VERSION_1_1
+ clSetEventCallback_t *clSetEventCallback;
+ clCreateSubBuffer_t *clCreateSubBuffer;
+ clSetMemObjectDestructorCallback_t *clSetMemObjectDestructorCallback;
+ clCreateUserEvent_t *clCreateUserEvent;
+ clSetUserEventStatus_t *clSetUserEventStatus;
+ clEnqueueReadBufferRect_t *clEnqueueReadBufferRect;
+ clEnqueueWriteBufferRect_t *clEnqueueWriteBufferRect;
+ clEnqueueCopyBufferRect_t *clEnqueueCopyBufferRect;
+#else
+ void *clSetEventCallback;
+ void *clCreateSubBuffer;
+ void *clSetMemObjectDestructorCallback;
+ void *clCreateUserEvent;
+ void *clSetUserEventStatus;
+ void *clEnqueueReadBufferRect;
+ void *clEnqueueWriteBufferRect;
+ void *clEnqueueCopyBufferRect;
+#endif
+
+ /* cl_ext_device_fission */
+ clCreateSubDevicesEXT_t *clCreateSubDevicesEXT;
+ clRetainDeviceEXT_t *clRetainDeviceEXT;
+ clReleaseDeviceEXT_t *clReleaseDeviceEXT;
+
+ /* cl_khr_gl_event */
+ clCreateEventFromGLsyncKHR_t *clCreateEventFromGLsyncKHR;
+
+ /* OpenCL 1.2 */
+#ifdef CL_VERSION_1_2
+ clCreateSubDevices_t *clCreateSubDevices;
+ clRetainDevice_t *clRetainDevice;
+ clReleaseDevice_t *clReleaseDevice;
+ clCreateImage_t *clCreateImage;
+ clCreateProgramWithBuiltInKernels_t *clCreateProgramWithBuiltInKernels;
+ clCompileProgram_t *clCompileProgram;
+ clLinkProgram_t *clLinkProgram;
+ clUnloadPlatformCompiler_t *clUnloadPlatformCompiler;
+ clGetKernelArgInfo_t *clGetKernelArgInfo;
+ clEnqueueFillBuffer_t *clEnqueueFillBuffer;
+ clEnqueueFillImage_t *clEnqueueFillImage;
+ clEnqueueMigrateMemObjects_t *clEnqueueMigrateMemObjects;
+ clEnqueueMarkerWithWaitList_t *clEnqueueMarkerWithWaitList;
+ clEnqueueBarrierWithWaitList_t *clEnqueueBarrierWithWaitList;
+ clGetExtensionFunctionAddressForPlatform_t *
+ clGetExtensionFunctionAddressForPlatform;
+ clCreateFromGLTexture_t *clCreateFromGLTexture;
+#else
+ void *clCreateSubDevices;
+ void *clRetainDevice;
+ void *clReleaseDevice;
+ void *clCreateImage;
+ void *clCreateProgramWithBuiltInKernels;
+ void *clCompileProgram;
+ void *clLinkProgram;
+ void *clUnloadPlatformCompiler;
+ void *clGetKernelArgInfo;
+ void *clEnqueueFillBuffer;
+ void *clEnqueueFillImage;
+ void *clEnqueueMigrateMemObjects;
+ void *clEnqueueMarkerWithWaitList;
+ void *clEnqueueBarrierWithWaitList;
+ void *clGetExtensionFunctionAddressForPlatform;
+ void *clCreateFromGLTexture;
+#endif
+
+ /* cl_khr_d3d11_sharing and cl_khr_dx9_media_sharing */
+#ifdef _WIN32
+ clGetDeviceIDsFromD3D11KHR_t *clGetDeviceIDsFromD3D11KHR;
+ clCreateFromD3D11BufferKHR_t *clCreateFromD3D11BufferKHR;
+ clCreateFromD3D11Texture2DKHR_t *clCreateFromD3D11Texture2DKHR;
+ clCreateFromD3D11Texture3DKHR_t *clCreateFromD3D11Texture3DKHR;
+ clCreateFromDX9MediaSurfaceKHR_t *clCreateFromDX9MediaSurfaceKHR;
+ clEnqueueAcquireD3D11ObjectsKHR_t *clEnqueueAcquireD3D11ObjectsKHR;
+ clEnqueueReleaseD3D11ObjectsKHR_t *clEnqueueReleaseD3D11ObjectsKHR;
+ clGetDeviceIDsFromDX9MediaAdapterKHR_t *
+ clGetDeviceIDsFromDX9MediaAdapterKHR;
+ clEnqueueAcquireDX9MediaSurfacesKHR_t *
+ clEnqueueAcquireDX9MediaSurfacesKHR;
+ clEnqueueReleaseDX9MediaSurfacesKHR_t *
+ clEnqueueReleaseDX9MediaSurfacesKHR;
+#else
+ void *clGetDeviceIDsFromD3D11KHR;
+ void *clCreateFromD3D11BufferKHR;
+ void *clCreateFromD3D11Texture2DKHR;
+ void *clCreateFromD3D11Texture3DKHR;
+ void *clCreateFromDX9MediaSurfaceKHR;
+ void *clEnqueueAcquireD3D11ObjectsKHR;
+ void *clEnqueueReleaseD3D11ObjectsKHR;
+ void *clGetDeviceIDsFromDX9MediaAdapterKHR;
+ void *clEnqueueAcquireDX9MediaSurfacesKHR;
+ void *clEnqueueReleaseDX9MediaSurfacesKHR;
+#endif
+
+ /* cl_khr_egl_image */
+ clCreateFromEGLImageKHR_t *clCreateFromEGLImageKHR;
+ clEnqueueAcquireEGLObjectsKHR_t *clEnqueueAcquireEGLObjectsKHR;
+ clEnqueueReleaseEGLObjectsKHR_t *clEnqueueReleaseEGLObjectsKHR;
+
+ /* cl_khr_egl_event */
+ clCreateEventFromEGLSyncKHR_t *clCreateEventFromEGLSyncKHR;
+
+ /* OpenCL 2.0 */
+#ifdef CL_VERSION_2_0
+ clCreateCommandQueueWithProperties_t *clCreateCommandQueueWithProperties;
+ clCreatePipe_t *clCreatePipe;
+ clGetPipeInfo_t *clGetPipeInfo;
+ clSVMAlloc_t *clSVMAlloc;
+ clSVMFree_t *clSVMFree;
+ clEnqueueSVMFree_t *clEnqueueSVMFree;
+ clEnqueueSVMMemcpy_t *clEnqueueSVMMemcpy;
+ clEnqueueSVMMemFill_t *clEnqueueSVMMemFill;
+ clEnqueueSVMMap_t *clEnqueueSVMMap;
+ clEnqueueSVMUnmap_t *clEnqueueSVMUnmap;
+ clCreateSamplerWithProperties_t *clCreateSamplerWithProperties;
+ clSetKernelArgSVMPointer_t *clSetKernelArgSVMPointer;
+ clSetKernelExecInfo_t *clSetKernelExecInfo;
+#else
+ void *clCreateCommandQueueWithProperties;
+ void *clCreatePipe;
+ void *clGetPipeInfo;
+ void *clSVMAlloc;
+ void *clSVMFree;
+ void *clEnqueueSVMFree;
+ void *clEnqueueSVMMemcpy;
+ void *clEnqueueSVMMemFill;
+ void *clEnqueueSVMMap;
+ void *clEnqueueSVMUnmap;
+ void *clCreateSamplerWithProperties;
+ void *clSetKernelArgSVMPointer;
+ void *clSetKernelExecInfo;
+#endif
+
+ /* cl_khr_sub_groups */
+ clGetKernelSubGroupInfoKHR_t *clGetKernelSubGroupInfoKHR;
+
+ /* OpenCL 2.1 */
+#ifdef CL_VERSION_2_1
+ clCloneKernel_t *clCloneKernel;
+ clCreateProgramWithIL_t *clCreateProgramWithIL;
+ clEnqueueSVMMigrateMem_t *clEnqueueSVMMigrateMem;
+ clGetDeviceAndHostTimer_t *clGetDeviceAndHostTimer;
+ clGetHostTimer_t *clGetHostTimer;
+ clGetKernelSubGroupInfo_t *clGetKernelSubGroupInfo;
+ clSetDefaultDeviceCommandQueue_t *clSetDefaultDeviceCommandQueue;
+#else
+ void *clCloneKernel;
+ void *clCreateProgramWithIL;
+ void *clEnqueueSVMMigrateMem;
+ void *clGetDeviceAndHostTimer;
+ void *clGetHostTimer;
+ void *clGetKernelSubGroupInfo;
+ void *clSetDefaultDeviceCommandQueue;
+#endif
+
+ /* OpenCL 2.2 */
+#ifdef CL_VERSION_2_2
+ clSetProgramReleaseCallback_t *clSetProgramReleaseCallback;
+ clSetProgramSpecializationConstant_t *clSetProgramSpecializationConstant;
+#else
+ void *clSetProgramReleaseCallback;
+ void *clSetProgramSpecializationConstant;
+#endif
+
+ /* OpenCL 3.0 */
+#ifdef CL_VERSION_3_0
+ clCreateBufferWithProperties_t *clCreateBufferWithProperties;
+ clCreateImageWithProperties_t *clCreateImageWithProperties;
+ clSetContextDestructorCallback_t *clSetContextDestructorCallback;
+#else
+ void *clCreateBufferWithProperties;
+ void *clCreateImageWithProperties;
+ void *clSetContextDestructorCallback;
+#endif
+
+} cl_icd_dispatch;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* #ifndef OPENCL_CL_ICD_H */