Skip to main content

opencl_sys/
cl_icd.rs

1// Copyright (c) 2023 Via Technology Ltd.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//    http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15//! FFI bindings for [cl_icd.h](https://github.com/KhronosGroup/OpenCL-Headers/blob/main/CL/cl_icd.h)
16
17#![allow(non_camel_case_types, non_snake_case)]
18
19pub use super::cl_egl::*;
20pub use super::cl_ext::*;
21pub use super::cl_function_types::*;
22pub use super::cl_gl::*;
23
24// Windows
25pub use super::cl_d3d10::*;
26pub use super::cl_d3d11::*;
27pub use super::cl_dx9_media_sharing::*;
28
29#[repr(C)]
30#[derive(Debug, Copy, Clone)]
31pub struct _cl_icd_dispatch {
32    pub clGetPlatformIDs: clGetPlatformIDs_t,
33    pub clGetPlatformInfo: clGetPlatformInfo_t,
34    pub clGetDeviceIDs: clGetDeviceIDs_t,
35    pub clGetDeviceInfo: clGetDeviceInfo_t,
36    pub clCreateContext: clCreateContext_t,
37    pub clCreateContextFromType: clCreateContextFromType_t,
38    pub clRetainContext: clRetainContext_t,
39    pub clReleaseContext: clReleaseContext_t,
40    pub clGetContextInfo: clGetContextInfo_t,
41    pub clCreateCommandQueue: clCreateCommandQueue_t,
42    pub clRetainCommandQueue: clRetainCommandQueue_t,
43    pub clReleaseCommandQueue: clReleaseCommandQueue_t,
44    pub clGetCommandQueueInfo: clGetCommandQueueInfo_t,
45    pub clSetCommandQueueProperty: clSetCommandQueueProperty_t,
46    pub clCreateBuffer: clCreateBuffer_t,
47    pub clCreateImage2D: clCreateImage2D_t,
48    pub clCreateImage3D: clCreateImage3D_t,
49    pub clRetainMemObject: clRetainMemObject_t,
50    pub clReleaseMemObject: clReleaseMemObject_t,
51    pub clGetSupportedImageFormats: clGetSupportedImageFormats_t,
52    pub clGetMemObjectInfo: clGetMemObjectInfo_t,
53    pub clGetImageInfo: clGetImageInfo_t,
54    pub clCreateSampler: clCreateSampler_t,
55    pub clRetainSampler: clRetainSampler_t,
56    pub clReleaseSampler: clReleaseSampler_t,
57    pub clGetSamplerInfo: clGetSamplerInfo_t,
58    pub clCreateProgramWithSource: clCreateProgramWithSource_t,
59    pub clCreateProgramWithBinary: clCreateProgramWithBinary_t,
60    pub clRetainProgram: clRetainProgram_t,
61    pub clReleaseProgram: clReleaseProgram_t,
62    pub clBuildProgram: clBuildProgram_t,
63    pub clUnloadCompiler: clUnloadCompiler_t,
64    pub clGetProgramInfo: clGetProgramInfo_t,
65    pub clGetProgramBuildInfo: clGetProgramBuildInfo_t,
66    pub clCreateKernel: clCreateKernel_t,
67    pub clCreateKernelsInProgram: clCreateKernelsInProgram_t,
68    pub clRetainKernel: clRetainKernel_t,
69    pub clReleaseKernel: clReleaseKernel_t,
70    pub clSetKernelArg: clSetKernelArg_t,
71    pub clGetKernelInfo: clGetKernelInfo_t,
72    pub clGetKernelWorkGroupInfo: clGetKernelWorkGroupInfo_t,
73    pub clWaitForEvents: clWaitForEvents_t,
74    pub clGetEventInfo: clGetEventInfo_t,
75    pub clRetainEvent: clRetainEvent_t,
76    pub clReleaseEvent: clReleaseEvent_t,
77    pub clGetEventProfilingInfo: clGetEventProfilingInfo_t,
78    pub clFlush: clFlush_t,
79    pub clFinish: clFinish_t,
80    pub clEnqueueReadBuffer: clEnqueueReadBuffer_t,
81    pub clEnqueueWriteBuffer: clEnqueueWriteBuffer_t,
82    pub clEnqueueCopyBuffer: clEnqueueCopyBuffer_t,
83    pub clEnqueueReadImage: clEnqueueReadImage_t,
84    pub clEnqueueWriteImage: clEnqueueWriteImage_t,
85    pub clEnqueueCopyImage: clEnqueueCopyImage_t,
86    pub clEnqueueCopyImageToBuffer: clEnqueueCopyImageToBuffer_t,
87    pub clEnqueueCopyBufferToImage: clEnqueueCopyBufferToImage_t,
88    pub clEnqueueMapBuffer: clEnqueueMapBuffer_t,
89    pub clEnqueueMapImage: clEnqueueMapImage_t,
90    pub clEnqueueUnmapMemObject: clEnqueueUnmapMemObject_t,
91    pub clEnqueueNDRangeKernel: clEnqueueNDRangeKernel_t,
92    pub clEnqueueTask: clEnqueueTask_t,
93    pub clEnqueueNativeKernel: clEnqueueNativeKernel_t,
94    pub clEnqueueMarker: clEnqueueMarker_t,
95    pub clEnqueueWaitForEvents: clEnqueueWaitForEvents_t,
96    pub clEnqueueBarrier: clEnqueueBarrier_t,
97    pub clGetExtensionFunctionAddress: clGetExtensionFunctionAddress_t,
98
99    pub clCreateFromGLBuffer: clCreateFromGLBuffer_t,
100    pub clCreateFromGLTexture2D: clCreateFromGLTexture2D_t,
101    pub clCreateFromGLTexture3D: clCreateFromGLTexture3D_t,
102    pub clCreateFromGLRenderbuffer: clCreateFromGLRenderbuffer_t,
103    pub clGetGLObjectInfo: clGetGLObjectInfo_t,
104    pub clGetGLTextureInfo: clGetGLTextureInfo_t,
105    pub clEnqueueAcquireGLObjects: clEnqueueAcquireGLObjects_t,
106    pub clEnqueueReleaseGLObjects: clEnqueueReleaseGLObjects_t,
107    pub clGetGLContextInfoKHR: clGetGLContextInfoKHR_t,
108
109    // cl_khr_d3d10_sharing
110    pub clGetDeviceIDsFromD3D10KHR: clGetDeviceIDsFromD3D10KHR_t,
111    pub clCreateFromD3D10BufferKHR: clCreateFromD3D10BufferKHR_t,
112    pub clCreateFromD3D10Texture2DKHR: clCreateFromD3D10Texture2DKHR_t,
113    pub clCreateFromD3D10Texture3DKHR: clCreateFromD3D10Texture3DKHR_t,
114    pub clEnqueueAcquireD3D10ObjectsKHR: clEnqueueAcquireD3D10ObjectsKHR_t,
115    pub clEnqueueReleaseD3D10ObjectsKHR: clEnqueueReleaseD3D10ObjectsKHR_t,
116
117    // OpenCL 1.1
118    pub clSetEventCallback: clSetEventCallback_t,
119    pub clCreateSubBuffer: clCreateSubBuffer_t,
120    pub clSetMemObjectDestructorCallback: clSetMemObjectDestructorCallback_t,
121    pub clCreateUserEvent: clCreateUserEvent_t,
122    pub clSetUserEventStatus: clSetUserEventStatus_t,
123    pub clEnqueueReadBufferRect: clEnqueueReadBufferRect_t,
124    pub clEnqueueWriteBufferRect: clEnqueueWriteBufferRect_t,
125    pub clEnqueueCopyBufferRect: clEnqueueCopyBufferRect_t,
126
127    // cl_ext_device_fission
128    pub clCreateSubDevicesEXT: clCreateSubDevicesEXT_t,
129    pub clRetainDeviceEXT: clRetainDeviceEXT_t,
130    pub clReleaseDeviceEXT: clReleaseDeviceEXT_t,
131    pub clCreateEventFromGLsyncKHR: clCreateEventFromGLsyncKHR_t,
132
133    // OpenCL 1.2
134    pub clCreateSubDevices: clCreateSubDevices_t,
135    pub clRetainDevice: clRetainDevice_t,
136    pub clReleaseDevice: clReleaseDevice_t,
137    pub clCreateImage: clCreateImage_t,
138    pub clCreateProgramWithBuiltInKernels: clCreateProgramWithBuiltInKernels_t,
139    pub clCompileProgram: clCompileProgram_t,
140    pub clLinkProgram: clLinkProgram_t,
141    pub clUnloadPlatformCompiler: clUnloadPlatformCompiler_t,
142    pub clGetKernelArgInfo: clGetKernelArgInfo_t,
143    pub clEnqueueFillBuffer: clEnqueueFillBuffer_t,
144    pub clEnqueueFillImage: clEnqueueFillImage_t,
145    pub clEnqueueMigrateMemObjects: clEnqueueMigrateMemObjects_t,
146    pub clEnqueueMarkerWithWaitList: clEnqueueMarkerWithWaitList_t,
147    pub clEnqueueBarrierWithWaitList: clEnqueueBarrierWithWaitList_t,
148    pub clGetExtensionFunctionAddressForPlatform: clGetExtensionFunctionAddressForPlatform_t,
149    pub clCreateFromGLTexture: clCreateFromGLTexture_t,
150
151    // cl_khr_d3d11_sharing and cl_khr_dx9_media_sharing
152    pub clGetDeviceIDsFromD3D11KHR: clGetDeviceIDsFromD3D11KHR_t,
153    pub clCreateFromD3D11BufferKHR: clCreateFromD3D11BufferKHR_t,
154    pub clCreateFromD3D11Texture2DKHR: clCreateFromD3D11Texture2DKHR_t,
155    pub clCreateFromD3D11Texture3DKHR: clCreateFromD3D11Texture3DKHR_t,
156    pub clCreateFromDX9MediaSurfaceKHR: clCreateFromDX9MediaSurfaceKHR_t,
157    pub clEnqueueAcquireD3D11ObjectsKHR: clEnqueueAcquireD3D11ObjectsKHR_t,
158    pub clEnqueueReleaseD3D11ObjectsKHR: clEnqueueReleaseD3D11ObjectsKHR_t,
159    pub clGetDeviceIDsFromDX9MediaAdapterKHR: clGetDeviceIDsFromDX9MediaAdapterKHR_t,
160    pub clEnqueueAcquireDX9MediaSurfacesKHR: clEnqueueAcquireDX9MediaSurfacesKHR_t,
161    pub clEnqueueReleaseDX9MediaSurfacesKHR: clEnqueueReleaseDX9MediaSurfacesKHR_t,
162
163    // cl_khr_egl_image
164    pub clCreateFromEGLImageKHR: clCreateFromEGLImageKHR_t,
165    pub clEnqueueAcquireEGLObjectsKHR: clEnqueueAcquireEGLObjectsKHR_t,
166    pub clEnqueueReleaseEGLObjectsKHR: clEnqueueReleaseEGLObjectsKHR_t,
167
168    // cl_khr_egl_event
169    pub clCreateEventFromEGLSyncKHR: clCreateEventFromEGLSyncKHR_t,
170
171    // OpenCL 2.0
172    pub clCreateCommandQueueWithProperties: clCreateCommandQueueWithProperties_t,
173    pub clCreatePipe: clCreatePipe_t,
174    pub clGetPipeInfo: clGetPipeInfo_t,
175    pub clSVMAlloc: clSVMAlloc_t,
176    pub clSVMFree: clSVMFree_t,
177    pub clEnqueueSVMFree: clEnqueueSVMFree_t,
178    pub clEnqueueSVMMemcpy: clEnqueueSVMMemcpy_t,
179    pub clEnqueueSVMMemFill: clEnqueueSVMMemFill_t,
180    pub clEnqueueSVMMap: clEnqueueSVMMap_t,
181    pub clEnqueueSVMUnmap: clEnqueueSVMUnmap_t,
182    pub clCreateSamplerWithProperties: clCreateSamplerWithProperties_t,
183    pub clSetKernelArgSVMPointer: clSetKernelArgSVMPointer_t,
184    pub clSetKernelExecInfo: clSetKernelExecInfo_t,
185
186    // cl_khr_sub_groups
187    pub clGetKernelSubGroupInfoKHR: clGetKernelSubGroupInfoKHR_t,
188
189    // OpenCL 2.1
190    pub clCloneKernel: clCloneKernel_t,
191    pub clCreateProgramWithIL: clCreateProgramWithIL_t,
192    pub clEnqueueSVMMigrateMem: clEnqueueSVMMigrateMem_t,
193    pub clGetDeviceAndHostTimer: clGetDeviceAndHostTimer_t,
194    pub clGetHostTimer: clGetHostTimer_t,
195    pub clGetKernelSubGroupInfo: clGetKernelSubGroupInfo_t,
196    pub clSetDefaultDeviceCommandQueue: clSetDefaultDeviceCommandQueue_t,
197
198    // OpenCL 2.2
199    pub clSetProgramReleaseCallback: clSetProgramReleaseCallback_t,
200    pub clSetProgramSpecializationConstant: clSetProgramSpecializationConstant_t,
201
202    // OpenCL 3.0
203    pub clCreateBufferWithProperties: clCreateBufferWithProperties_t,
204    pub clCreateImageWithProperties: clCreateImageWithProperties_t,
205    pub clSetContextDestructorCallback: clSetContextDestructorCallback_t,
206}
207pub type cl_icd_dispatch = _cl_icd_dispatch;