xref: /aosp_15_r20/external/OpenCL-ICD-Loader/test/driver_stub/icd.c (revision 1cddb830dba8aa7c1cc1039338e56b3b9fa24952)
1*1cddb830SAndroid Build Coastguard Worker #include <stdio.h>
2*1cddb830SAndroid Build Coastguard Worker #include <string.h>
3*1cddb830SAndroid Build Coastguard Worker #include <stdlib.h>
4*1cddb830SAndroid Build Coastguard Worker #include <assert.h>
5*1cddb830SAndroid Build Coastguard Worker #include "icd_structs.h"
6*1cddb830SAndroid Build Coastguard Worker 
7*1cddb830SAndroid Build Coastguard Worker #define CL_USE_DEPRECATED_OPENCL_1_0_APIS
8*1cddb830SAndroid Build Coastguard Worker #define CL_USE_DEPRECATED_OPENCL_1_1_APIS
9*1cddb830SAndroid Build Coastguard Worker #define CL_USE_DEPRECATED_OPENCL_1_2_APIS
10*1cddb830SAndroid Build Coastguard Worker #define CL_USE_DEPRECATED_OPENCL_2_0_APIS
11*1cddb830SAndroid Build Coastguard Worker #define CL_USE_DEPRECATED_OPENCL_2_1_APIS
12*1cddb830SAndroid Build Coastguard Worker #define CL_USE_DEPRECATED_OPENCL_2_2_APIS
13*1cddb830SAndroid Build Coastguard Worker 
14*1cddb830SAndroid Build Coastguard Worker // Need to rename all CL API functions to prevent ICD loader functions calling
15*1cddb830SAndroid Build Coastguard Worker // themselves via the dispatch table. Include this before cl headers.
16*1cddb830SAndroid Build Coastguard Worker #include "rename_api.h"
17*1cddb830SAndroid Build Coastguard Worker 
18*1cddb830SAndroid Build Coastguard Worker #include "CL/cl.h"
19*1cddb830SAndroid Build Coastguard Worker #include "CL/cl_gl.h"
20*1cddb830SAndroid Build Coastguard Worker 
21*1cddb830SAndroid Build Coastguard Worker /*
22*1cddb830SAndroid Build Coastguard Worker  * Prototypes for deprecated functions no longer present in cl.h
23*1cddb830SAndroid Build Coastguard Worker  */
24*1cddb830SAndroid Build Coastguard Worker extern CL_API_ENTRY cl_int CL_API_CALL
25*1cddb830SAndroid Build Coastguard Worker clSetCommandQueueProperty(cl_command_queue              /* command_queue */,
26*1cddb830SAndroid Build Coastguard Worker                           cl_command_queue_properties   /* properties */,
27*1cddb830SAndroid Build Coastguard Worker                           cl_bool                       /* enable */,
28*1cddb830SAndroid Build Coastguard Worker                           cl_command_queue_properties * /* old_properties */);
29*1cddb830SAndroid Build Coastguard Worker 
30*1cddb830SAndroid Build Coastguard Worker #define ICD_DISPATCH_TABLE_ENTRY(fn) \
31*1cddb830SAndroid Build Coastguard Worker     assert(dispatchTable->entryCount < 256); \
32*1cddb830SAndroid Build Coastguard Worker     dispatchTable->entries[dispatchTable->entryCount++] = (void*)(intptr_t)(fn)
33*1cddb830SAndroid Build Coastguard Worker 
cliIcdDispatchTableCreate(CLIicdDispatchTable ** outDispatchTable)34*1cddb830SAndroid Build Coastguard Worker cl_int cliIcdDispatchTableCreate(CLIicdDispatchTable **outDispatchTable)
35*1cddb830SAndroid Build Coastguard Worker {
36*1cddb830SAndroid Build Coastguard Worker     CLIicdDispatchTable *dispatchTable = NULL;
37*1cddb830SAndroid Build Coastguard Worker     cl_int result = CL_SUCCESS;
38*1cddb830SAndroid Build Coastguard Worker 
39*1cddb830SAndroid Build Coastguard Worker     // allocate the public handle
40*1cddb830SAndroid Build Coastguard Worker     dispatchTable = (CLIicdDispatchTable *) malloc(sizeof(*dispatchTable));
41*1cddb830SAndroid Build Coastguard Worker     if (!dispatchTable) {
42*1cddb830SAndroid Build Coastguard Worker         result = CL_OUT_OF_HOST_MEMORY;
43*1cddb830SAndroid Build Coastguard Worker         goto Error;
44*1cddb830SAndroid Build Coastguard Worker     }
45*1cddb830SAndroid Build Coastguard Worker     memset(dispatchTable, 0, sizeof(*dispatchTable));
46*1cddb830SAndroid Build Coastguard Worker 
47*1cddb830SAndroid Build Coastguard Worker     // OpenCL 1.0
48*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clGetPlatformIDs              );
49*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clGetPlatformInfo             );
50*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clGetDeviceIDs                );
51*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clGetDeviceInfo               );
52*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clCreateContext               );
53*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clCreateContextFromType       );
54*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clRetainContext               );
55*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clReleaseContext              );
56*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clGetContextInfo              );
57*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clCreateCommandQueue          );
58*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clRetainCommandQueue          );
59*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clReleaseCommandQueue         );
60*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clGetCommandQueueInfo         );
61*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clSetCommandQueueProperty     );
62*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clCreateBuffer                );
63*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clCreateImage2D               );
64*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clCreateImage3D               );
65*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clRetainMemObject             );
66*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clReleaseMemObject            );
67*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clGetSupportedImageFormats    );
68*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clGetMemObjectInfo            );
69*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clGetImageInfo                );
70*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clCreateSampler               );
71*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clRetainSampler               );
72*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clReleaseSampler              );
73*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clGetSamplerInfo              );
74*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clCreateProgramWithSource     );
75*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clCreateProgramWithBinary     );
76*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clRetainProgram               );
77*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clReleaseProgram              );
78*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clBuildProgram                );
79*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clUnloadCompiler              );
80*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clGetProgramInfo              );
81*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clGetProgramBuildInfo         );
82*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clCreateKernel                );
83*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clCreateKernelsInProgram      );
84*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clRetainKernel                );
85*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clReleaseKernel               );
86*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clSetKernelArg                );
87*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clGetKernelInfo               );
88*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clGetKernelWorkGroupInfo      );
89*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clWaitForEvents               );
90*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clGetEventInfo                );
91*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clRetainEvent                 );
92*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clReleaseEvent                );
93*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clGetEventProfilingInfo       );
94*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clFlush                       );
95*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clFinish                      );
96*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clEnqueueReadBuffer           );
97*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clEnqueueWriteBuffer          );
98*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clEnqueueCopyBuffer           );
99*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clEnqueueReadImage            );
100*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clEnqueueWriteImage           );
101*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clEnqueueCopyImage            );
102*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clEnqueueCopyImageToBuffer    );
103*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clEnqueueCopyBufferToImage    );
104*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clEnqueueMapBuffer            );
105*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clEnqueueMapImage             );
106*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clEnqueueUnmapMemObject       );
107*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clEnqueueNDRangeKernel        );
108*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clEnqueueTask                 );
109*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clEnqueueNativeKernel         );
110*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clEnqueueMarker               );
111*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clEnqueueWaitForEvents        );
112*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clEnqueueBarrier              );
113*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clGetExtensionFunctionAddress );
114*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clCreateFromGLBuffer          );
115*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clCreateFromGLTexture2D       );
116*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clCreateFromGLTexture3D       );
117*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clCreateFromGLRenderbuffer    );
118*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clGetGLObjectInfo             );
119*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clGetGLTextureInfo            );
120*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clEnqueueAcquireGLObjects     );
121*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clEnqueueReleaseGLObjects     );
122*1cddb830SAndroid Build Coastguard Worker 
123*1cddb830SAndroid Build Coastguard Worker     // cl_khr_gl_sharing
124*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clGetGLContextInfoKHR         );
125*1cddb830SAndroid Build Coastguard Worker 
126*1cddb830SAndroid Build Coastguard Worker     // cl_khr_d3d10_sharing (windows-only)
127*1cddb830SAndroid Build Coastguard Worker #if 0 && defined(_WIN32)
128*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clGetDeviceIDsFromD3D10KHR      );
129*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clCreateFromD3D10BufferKHR      );
130*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clCreateFromD3D10Texture2DKHR   );
131*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clCreateFromD3D10Texture3DKHR   );
132*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clEnqueueAcquireD3D10ObjectsKHR );
133*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clEnqueueReleaseD3D10ObjectsKHR );
134*1cddb830SAndroid Build Coastguard Worker #else
135*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY( NULL );
136*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY( NULL );
137*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY( NULL );
138*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY( NULL );
139*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY( NULL );
140*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY( NULL );
141*1cddb830SAndroid Build Coastguard Worker #endif
142*1cddb830SAndroid Build Coastguard Worker 
143*1cddb830SAndroid Build Coastguard Worker     // OpenCL 1.1
144*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clSetEventCallback);
145*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clCreateSubBuffer);
146*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clSetMemObjectDestructorCallback);
147*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clCreateUserEvent);
148*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clSetUserEventStatus);
149*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clEnqueueReadBufferRect);
150*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clEnqueueWriteBufferRect);
151*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clEnqueueCopyBufferRect);
152*1cddb830SAndroid Build Coastguard Worker 
153*1cddb830SAndroid Build Coastguard Worker     /* cl_ext_device_fission */
154*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( /*clCreateSubDevicesEXT*/NULL);
155*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( /*clRetainDeviceEXT*/ NULL);
156*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( /*clReleaseDevice*/NULL);
157*1cddb830SAndroid Build Coastguard Worker 
158*1cddb830SAndroid Build Coastguard Worker     /* cl_khr_gl_event */
159*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clCreateEventFromGLsyncKHR);
160*1cddb830SAndroid Build Coastguard Worker 
161*1cddb830SAndroid Build Coastguard Worker     /* OpenCL 1.2 */
162*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clCreateSubDevices);
163*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clRetainDevice);
164*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clReleaseDevice);
165*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clCreateImage);
166*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clCreateProgramWithBuiltInKernels);
167*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clCompileProgram);
168*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clLinkProgram);
169*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clUnloadPlatformCompiler);
170*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clGetKernelArgInfo);
171*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clEnqueueFillBuffer);
172*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clEnqueueFillImage);
173*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clEnqueueMigrateMemObjects);
174*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clEnqueueMarkerWithWaitList);
175*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clEnqueueBarrierWithWaitList);
176*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clGetExtensionFunctionAddressForPlatform);
177*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clCreateFromGLTexture);
178*1cddb830SAndroid Build Coastguard Worker 
179*1cddb830SAndroid Build Coastguard Worker     /* cl_khr_d3d11_sharing */
180*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY( NULL );
181*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY( NULL );
182*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY( NULL );
183*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY( NULL );
184*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY( NULL );
185*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY( NULL );
186*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY( NULL );
187*1cddb830SAndroid Build Coastguard Worker 
188*1cddb830SAndroid Build Coastguard Worker     /* cl_khr_dx9_media_sharing */
189*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY( NULL );
190*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY( NULL );
191*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY( NULL );
192*1cddb830SAndroid Build Coastguard Worker 
193*1cddb830SAndroid Build Coastguard Worker     /* cl_khr_egl_image */
194*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY( NULL );
195*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY( NULL );
196*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY( NULL );
197*1cddb830SAndroid Build Coastguard Worker 
198*1cddb830SAndroid Build Coastguard Worker     /* cl_khr_egl_event */
199*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY( NULL );
200*1cddb830SAndroid Build Coastguard Worker 
201*1cddb830SAndroid Build Coastguard Worker     /* OpenCL 2.0 */
202*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY( NULL );
203*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY( NULL );
204*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY( NULL );
205*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY( NULL );
206*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY( NULL );
207*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY( NULL );
208*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY( NULL );
209*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY( NULL );
210*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY( NULL );
211*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY( NULL );
212*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY( NULL );
213*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY( NULL );
214*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY( NULL );
215*1cddb830SAndroid Build Coastguard Worker 
216*1cddb830SAndroid Build Coastguard Worker     /* cl_khr_sub_groups */
217*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY( NULL );
218*1cddb830SAndroid Build Coastguard Worker 
219*1cddb830SAndroid Build Coastguard Worker     /* OpenCL 2.1 */
220*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY( NULL );
221*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY( NULL );
222*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY( NULL );
223*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY( NULL );
224*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY( NULL );
225*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY( NULL );
226*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY( NULL );
227*1cddb830SAndroid Build Coastguard Worker 
228*1cddb830SAndroid Build Coastguard Worker     /* OpenCL 2.2 */
229*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY( NULL );
230*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY( NULL );
231*1cddb830SAndroid Build Coastguard Worker 
232*1cddb830SAndroid Build Coastguard Worker     /* OpenCL 3.0 */
233*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clCreateBufferWithProperties );
234*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clCreateImageWithProperties );
235*1cddb830SAndroid Build Coastguard Worker     ICD_DISPATCH_TABLE_ENTRY ( clSetContextDestructorCallback );
236*1cddb830SAndroid Build Coastguard Worker 
237*1cddb830SAndroid Build Coastguard Worker     // return success
238*1cddb830SAndroid Build Coastguard Worker     *outDispatchTable = dispatchTable;
239*1cddb830SAndroid Build Coastguard Worker     return CL_SUCCESS;
240*1cddb830SAndroid Build Coastguard Worker 
241*1cddb830SAndroid Build Coastguard Worker Error:
242*1cddb830SAndroid Build Coastguard Worker     return result;
243*1cddb830SAndroid Build Coastguard Worker }
244*1cddb830SAndroid Build Coastguard Worker 
245*1cddb830SAndroid Build Coastguard Worker void
cliIcdDispatchTableDestroy(CLIicdDispatchTable * dispatchTable)246*1cddb830SAndroid Build Coastguard Worker cliIcdDispatchTableDestroy(CLIicdDispatchTable *dispatchTable)
247*1cddb830SAndroid Build Coastguard Worker {
248*1cddb830SAndroid Build Coastguard Worker     free(dispatchTable);
249*1cddb830SAndroid Build Coastguard Worker }
250