1 /*
2  * Copyright (C) 2018-2021 Intel Corporation
3  *
4  * SPDX-License-Identifier: MIT
5  *
6  */
7 
8 #include "dispatch.h"
9 
10 #include "api.h"
11 
12 SDispatchTable icdGlobalDispatchTable =
13     {
14         clGetPlatformIDs,
15         clGetPlatformInfo,
16         clGetDeviceIDs,
17         clGetDeviceInfo,
18         clCreateContext,
19         clCreateContextFromType,
20         clRetainContext,
21         clReleaseContext,
22         clGetContextInfo,
23         clCreateCommandQueue,
24         clRetainCommandQueue,
25         clReleaseCommandQueue,
26         clGetCommandQueueInfo,
27         clSetCommandQueueProperty,
28         clCreateBuffer,
29         clCreateImage2D,
30         clCreateImage3D,
31         clRetainMemObject,
32         clReleaseMemObject,
33         clGetSupportedImageFormats,
34         clGetMemObjectInfo,
35         clGetImageInfo,
36         clCreateSampler,
37         clRetainSampler,
38         clReleaseSampler,
39         clGetSamplerInfo,
40         clCreateProgramWithSource,
41         clCreateProgramWithBinary,
42         clRetainProgram,
43         clReleaseProgram,
44         clBuildProgram,
45         clUnloadCompiler,
46         clGetProgramInfo,
47         clGetProgramBuildInfo,
48         clCreateKernel,
49         clCreateKernelsInProgram,
50         clRetainKernel,
51         clReleaseKernel,
52         clSetKernelArg,
53         clGetKernelInfo,
54         clGetKernelWorkGroupInfo,
55         clWaitForEvents,
56         clGetEventInfo,
57         clRetainEvent,
58         clReleaseEvent,
59         clGetEventProfilingInfo,
60         clFlush,
61         clFinish,
62         clEnqueueReadBuffer,
63         clEnqueueWriteBuffer,
64         clEnqueueCopyBuffer,
65         clEnqueueReadImage,
66         clEnqueueWriteImage,
67         clEnqueueCopyImage,
68         clEnqueueCopyImageToBuffer,
69         clEnqueueCopyBufferToImage,
70         clEnqueueMapBuffer,
71         clEnqueueMapImage,
72         clEnqueueUnmapMemObject,
73         clEnqueueNDRangeKernel,
74         clEnqueueTask,
75         clEnqueueNativeKernel,
76         clEnqueueMarker,
77         clEnqueueWaitForEvents,
78         clEnqueueBarrier,
79         clGetExtensionFunctionAddress,
80 
81         /* cl_khr_gl_sharing */
82         nullptr,
83         nullptr,
84         nullptr,
85         nullptr,
86         nullptr,
87         nullptr,
88         nullptr,
89         nullptr,
90         nullptr,
91 
92         /* cl_khr_d3d10_sharing */
93         nullptr, // clGetDeviceIDsFromD3D10KHR,
94         nullptr, // clCreateFromD3D10BufferKHR,
95         nullptr, // clCreateFromD3D10Texture2DKHR,
96         nullptr, // clCreateFromD3D10Texture3DKHR,
97         nullptr, // clEnqueueAcquireD3D10ObjectsKHR,
98         nullptr, // clEnqueueReleaseD3D10ObjectsKHR,
99 
100         /* OpenCL 1.1 */
101         clSetEventCallback,
102         clCreateSubBuffer,
103         clSetMemObjectDestructorCallback,
104         clCreateUserEvent,
105         clSetUserEventStatus,
106         clEnqueueReadBufferRect,
107         clEnqueueWriteBufferRect,
108         clEnqueueCopyBufferRect,
109 
110         /* cl_ext_device_fission */
111         nullptr, //clCreateSubDevicesEXT,
112         nullptr, //clRetainDeviceEXT,
113         nullptr, //clReleaseDeviceEXT,
114 
115         /* cl_khr_gl_event */
116         nullptr,
117 
118         /* OpenCL 1.2 */
119         clCreateSubDevices,
120         clRetainDevice,
121         clReleaseDevice,
122         clCreateImage,
123         clCreateProgramWithBuiltInKernels,
124         clCompileProgram,
125         clLinkProgram,
126         clUnloadPlatformCompiler,
127         clGetKernelArgInfo,
128         clEnqueueFillBuffer,
129         clEnqueueFillImage,
130         clEnqueueMigrateMemObjects,
131         clEnqueueMarkerWithWaitList,
132         clEnqueueBarrierWithWaitList,
133         clGetExtensionFunctionAddressForPlatform,
134         nullptr,
135 
136         /* cl_khr_d3d11_sharing */
137         nullptr, // clGetDeviceIDsFromD3D11KHR,
138         nullptr, // clCreateFromD3D11BufferKHR,
139         nullptr, // clCreateFromD3D11Texture2DKHR,
140         nullptr, // clCreateFromD3D11Texture3DKHR,
141         nullptr, // clCreateFromDX9MediaSurfaceKHR,
142         nullptr, // clEnqueueAcquireD3D11ObjectsKHR,
143         nullptr, // clEnqueueReleaseD3D11ObjectsKHR,
144 
145         /* cl_khr_dx9_media_sharing */
146         nullptr, // clGetDeviceIDsFromDX9MediaAdapterKHR,
147         nullptr, // clEnqueueAcquireDX9MediaSurfacesKHR,
148         nullptr, // clEnqueueReleaseDX9MediaSurfacesKHR,
149 
150         /* cl_khr_egl_image */
151         nullptr, //clCreateFromEGLImageKHR,
152         nullptr, //clEnqueueAcquireEGLObjectsKHR,
153         nullptr, //clEnqueueReleaseEGLObjectsKHR,
154 
155         /* cl_khr_egl_event */
156         nullptr, //clCreateEventFromEGLSyncKHR,
157 
158         /* OpenCL 2.0 */
159         clCreateCommandQueueWithProperties,
160         clCreatePipe,
161         clGetPipeInfo,
162         clSVMAlloc,
163         clSVMFree,
164         clEnqueueSVMFree,
165         clEnqueueSVMMemcpy,
166         clEnqueueSVMMemFill,
167         clEnqueueSVMMap,
168         clEnqueueSVMUnmap,
169         clCreateSamplerWithProperties,
170         clSetKernelArgSVMPointer,
171         clSetKernelExecInfo,
172         clGetKernelSubGroupInfoKHR,
173 
174         /* OpenCL 2.1 */
175         clCloneKernel,
176         clCreateProgramWithIL,
177         clEnqueueSVMMigrateMem,
178         clGetDeviceAndHostTimer,
179         clGetHostTimer,
180         clGetKernelSubGroupInfo,
181         clSetDefaultDeviceCommandQueue,
182 
183         /* OpenCL 2.2 */
184         clSetProgramReleaseCallback,
185         clSetProgramSpecializationConstant,
186 
187         /* OpenCL 3.0 */
188         clCreateBufferWithProperties,
189         clCreateImageWithProperties,
190         clSetContextDestructorCallback};
191 
192 SCRTDispatchTable crtGlobalDispatchTable = {
193     clGetKernelArgInfo,
194 
195     nullptr, // clGetDeviceIDsFromDX9INTEL,
196     nullptr, // clCreateFromDX9MediaSurfaceINTEL,
197     nullptr, // clEnqueueAcquireDX9ObjectsINTEL,
198     nullptr, // clEnqueueReleaseDX9ObjectsINTEL,
199     clGetImageParamsINTEL,
200     clCreatePerfCountersCommandQueueINTEL,
201 
202     clCreateAcceleratorINTEL,
203     clGetAcceleratorInfoINTEL,
204     clRetainAcceleratorINTEL,
205     clReleaseAcceleratorINTEL,
206 
207     nullptr,
208     nullptr,
209 
210     nullptr,
211     nullptr,
212     nullptr,
213     nullptr,
214 
215     nullptr,
216     nullptr,
217     nullptr,
218     nullptr,
219     clSetPerformanceConfigurationINTEL};
220 
221 SEntryPointsTable globalDispatchTable = {&icdGlobalDispatchTable, &crtGlobalDispatchTable};
222