xref: /aosp_15_r20/external/OpenCL-ICD-Loader/scripts/icd_print_layer_generated.c.mako (revision 1cddb830dba8aa7c1cc1039338e56b3b9fa24952)
1/*
2 * Copyright (c) 2020 The Khronos Group Inc.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *     http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 *
16 * OpenCL is a trademark of Apple Inc. used under license by Khronos.
17 */
18
19#include "icd_print_layer.h"
20
21///////////////////////////////////////////////////////////////////////////////
22// Core APIs:
23%for apis in coreapis.values():
24%for api in apis:
25static ${api.RetType} CL_API_CALL ${api.Name + "_wrap"}(
26%for i, param in enumerate(api.Params):
27%  if i < len(api.Params)-1:
28    ${param.Type} ${param.Name}${param.TypeEnd},
29%  else:
30    ${param.Type} ${param.Name}${param.TypeEnd}) ${api.Suffix}
31%  endif
32%endfor
33{
34printf("${api.Name}\n");
35%  if api.Name == "clSVMFree":
36tdispatch->${api.Name}(
37%  else:
38return tdispatch->${api.Name}(
39%  endif
40%for i, param in enumerate(api.Params):
41%  if i < len(api.Params)-1:
42            ${param.Name},
43%  else:
44            ${param.Name});
45%  endif
46%endfor
47}
48
49///////////////////////////////////////////////////////////////////////////////
50%endfor
51%endfor
52<%
53icdextensions = [
54    'cl_ext_device_fission',
55    'cl_khr_d3d10_sharing',
56    'cl_khr_d3d11_sharing',
57    'cl_khr_dx9_media_sharing',
58    'cl_khr_egl_event',
59    'cl_khr_egl_image',
60    'cl_khr_gl_event',
61    'cl_khr_gl_sharing',
62    'cl_khr_subgroups'
63    ]
64win32extensions = {
65    'cl_khr_d3d10_sharing',
66    'cl_khr_d3d11_sharing',
67    'cl_khr_dx9_media_sharing',
68    }
69%>
70%for extension in icdextensions:
71<%
72    apis = extapis[extension]
73%>// ${extension}
74%if extension in win32extensions:
75
76#if defined(_WIN32)
77%endif
78%for api in apis:
79static ${api.RetType} CL_API_CALL ${api.Name + "_wrap"}(
80%for i, param in enumerate(api.Params):
81%  if i < len(api.Params)-1:
82    ${param.Type} ${param.Name}${param.TypeEnd},
83%  else:
84    ${param.Type} ${param.Name}${param.TypeEnd}) ${api.Suffix}
85%  endif
86%endfor
87{
88printf("${api.Name}\n");
89return tdispatch->${api.Name}(
90%for i, param in enumerate(api.Params):
91%  if i < len(api.Params)-1:
92            ${param.Name},
93%  else:
94            ${param.Name});
95%  endif
96%endfor
97}
98%endfor
99
100%if extension in win32extensions:
101#endif // defined(_WIN32)
102
103%endif
104///////////////////////////////////////////////////////////////////////////////
105
106%endfor
107void _init_dispatch(void) {
108    dispatch.clGetPlatformIDs = &clGetPlatformIDs_wrap;
109    dispatch.clGetPlatformInfo = &clGetPlatformInfo_wrap;
110    dispatch.clGetDeviceIDs = &clGetDeviceIDs_wrap;
111    dispatch.clGetDeviceInfo = &clGetDeviceInfo_wrap;
112    dispatch.clCreateContext = &clCreateContext_wrap;
113    dispatch.clCreateContextFromType = &clCreateContextFromType_wrap;
114    dispatch.clRetainContext = &clRetainContext_wrap;
115    dispatch.clReleaseContext = &clReleaseContext_wrap;
116    dispatch.clGetContextInfo = &clGetContextInfo_wrap;
117    dispatch.clCreateCommandQueue = &clCreateCommandQueue_wrap;
118    dispatch.clRetainCommandQueue = &clRetainCommandQueue_wrap;
119    dispatch.clReleaseCommandQueue = &clReleaseCommandQueue_wrap;
120    dispatch.clGetCommandQueueInfo = &clGetCommandQueueInfo_wrap;
121    dispatch.clSetCommandQueueProperty = &clSetCommandQueueProperty_wrap;
122    dispatch.clCreateBuffer = &clCreateBuffer_wrap;
123    dispatch.clCreateImage2D = &clCreateImage2D_wrap;
124    dispatch.clCreateImage3D = &clCreateImage3D_wrap;
125    dispatch.clRetainMemObject = &clRetainMemObject_wrap;
126    dispatch.clReleaseMemObject = &clReleaseMemObject_wrap;
127    dispatch.clGetSupportedImageFormats = &clGetSupportedImageFormats_wrap;
128    dispatch.clGetMemObjectInfo = &clGetMemObjectInfo_wrap;
129    dispatch.clGetImageInfo = &clGetImageInfo_wrap;
130    dispatch.clCreateSampler = &clCreateSampler_wrap;
131    dispatch.clRetainSampler = &clRetainSampler_wrap;
132    dispatch.clReleaseSampler = &clReleaseSampler_wrap;
133    dispatch.clGetSamplerInfo = &clGetSamplerInfo_wrap;
134    dispatch.clCreateProgramWithSource = &clCreateProgramWithSource_wrap;
135    dispatch.clCreateProgramWithBinary = &clCreateProgramWithBinary_wrap;
136    dispatch.clRetainProgram = &clRetainProgram_wrap;
137    dispatch.clReleaseProgram = &clReleaseProgram_wrap;
138    dispatch.clBuildProgram = &clBuildProgram_wrap;
139    dispatch.clUnloadCompiler = &clUnloadCompiler_wrap;
140    dispatch.clGetProgramInfo = &clGetProgramInfo_wrap;
141    dispatch.clGetProgramBuildInfo = &clGetProgramBuildInfo_wrap;
142    dispatch.clCreateKernel = &clCreateKernel_wrap;
143    dispatch.clCreateKernelsInProgram = &clCreateKernelsInProgram_wrap;
144    dispatch.clRetainKernel = &clRetainKernel_wrap;
145    dispatch.clReleaseKernel = &clReleaseKernel_wrap;
146    dispatch.clSetKernelArg = &clSetKernelArg_wrap;
147    dispatch.clGetKernelInfo = &clGetKernelInfo_wrap;
148    dispatch.clGetKernelWorkGroupInfo = &clGetKernelWorkGroupInfo_wrap;
149    dispatch.clWaitForEvents = &clWaitForEvents_wrap;
150    dispatch.clGetEventInfo = &clGetEventInfo_wrap;
151    dispatch.clRetainEvent = &clRetainEvent_wrap;
152    dispatch.clReleaseEvent = &clReleaseEvent_wrap;
153    dispatch.clGetEventProfilingInfo = &clGetEventProfilingInfo_wrap;
154    dispatch.clFlush = &clFlush_wrap;
155    dispatch.clFinish = &clFinish_wrap;
156    dispatch.clEnqueueReadBuffer = &clEnqueueReadBuffer_wrap;
157    dispatch.clEnqueueWriteBuffer = &clEnqueueWriteBuffer_wrap;
158    dispatch.clEnqueueCopyBuffer = &clEnqueueCopyBuffer_wrap;
159    dispatch.clEnqueueReadImage = &clEnqueueReadImage_wrap;
160    dispatch.clEnqueueWriteImage = &clEnqueueWriteImage_wrap;
161    dispatch.clEnqueueCopyImage = &clEnqueueCopyImage_wrap;
162    dispatch.clEnqueueCopyImageToBuffer = &clEnqueueCopyImageToBuffer_wrap;
163    dispatch.clEnqueueCopyBufferToImage = &clEnqueueCopyBufferToImage_wrap;
164    dispatch.clEnqueueMapBuffer = &clEnqueueMapBuffer_wrap;
165    dispatch.clEnqueueMapImage = &clEnqueueMapImage_wrap;
166    dispatch.clEnqueueUnmapMemObject = &clEnqueueUnmapMemObject_wrap;
167    dispatch.clEnqueueNDRangeKernel = &clEnqueueNDRangeKernel_wrap;
168    dispatch.clEnqueueTask = &clEnqueueTask_wrap;
169    dispatch.clEnqueueNativeKernel = &clEnqueueNativeKernel_wrap;
170    dispatch.clEnqueueMarker = &clEnqueueMarker_wrap;
171    dispatch.clEnqueueWaitForEvents = &clEnqueueWaitForEvents_wrap;
172    dispatch.clEnqueueBarrier = &clEnqueueBarrier_wrap;
173    dispatch.clGetExtensionFunctionAddress = &clGetExtensionFunctionAddress_wrap;
174    dispatch.clCreateFromGLBuffer = &clCreateFromGLBuffer_wrap;
175    dispatch.clCreateFromGLTexture2D = &clCreateFromGLTexture2D_wrap;
176    dispatch.clCreateFromGLTexture3D = &clCreateFromGLTexture3D_wrap;
177    dispatch.clCreateFromGLRenderbuffer = &clCreateFromGLRenderbuffer_wrap;
178    dispatch.clGetGLObjectInfo = &clGetGLObjectInfo_wrap;
179    dispatch.clGetGLTextureInfo = &clGetGLTextureInfo_wrap;
180    dispatch.clEnqueueAcquireGLObjects = &clEnqueueAcquireGLObjects_wrap;
181    dispatch.clEnqueueReleaseGLObjects = &clEnqueueReleaseGLObjects_wrap;
182    dispatch.clGetGLContextInfoKHR = &clGetGLContextInfoKHR_wrap;
183
184  /* cl_khr_d3d10_sharing */
185#if defined(_WIN32)
186    dispatch.clGetDeviceIDsFromD3D10KHR = &clGetDeviceIDsFromD3D10KHR_wrap;
187    dispatch.clCreateFromD3D10BufferKHR = &clCreateFromD3D10BufferKHR_wrap;
188    dispatch.clCreateFromD3D10Texture2DKHR = &clCreateFromD3D10Texture2DKHR_wrap;
189    dispatch.clCreateFromD3D10Texture3DKHR = &clCreateFromD3D10Texture3DKHR_wrap;
190    dispatch.clEnqueueAcquireD3D10ObjectsKHR = &clEnqueueAcquireD3D10ObjectsKHR_wrap;
191    dispatch.clEnqueueReleaseD3D10ObjectsKHR = &clEnqueueReleaseD3D10ObjectsKHR_wrap;
192#else
193    dispatch.clGetDeviceIDsFromD3D10KHR = NULL;
194    dispatch.clCreateFromD3D10BufferKHR = NULL;
195    dispatch.clCreateFromD3D10Texture2DKHR = NULL;
196    dispatch.clCreateFromD3D10Texture3DKHR = NULL;
197    dispatch.clEnqueueAcquireD3D10ObjectsKHR = NULL;
198    dispatch.clEnqueueReleaseD3D10ObjectsKHR = NULL;
199#endif
200
201  /* OpenCL 1.1 */
202    dispatch.clSetEventCallback = &clSetEventCallback_wrap;
203    dispatch.clCreateSubBuffer = &clCreateSubBuffer_wrap;
204    dispatch.clSetMemObjectDestructorCallback = &clSetMemObjectDestructorCallback_wrap;
205    dispatch.clCreateUserEvent = &clCreateUserEvent_wrap;
206    dispatch.clSetUserEventStatus = &clSetUserEventStatus_wrap;
207    dispatch.clEnqueueReadBufferRect = &clEnqueueReadBufferRect_wrap;
208    dispatch.clEnqueueWriteBufferRect = &clEnqueueWriteBufferRect_wrap;
209    dispatch.clEnqueueCopyBufferRect = &clEnqueueCopyBufferRect_wrap;
210
211  /* cl_ext_device_fission */
212    dispatch.clCreateSubDevicesEXT = &clCreateSubDevicesEXT_wrap;
213    dispatch.clRetainDeviceEXT = &clRetainDeviceEXT_wrap;
214    dispatch.clReleaseDeviceEXT = &clReleaseDeviceEXT_wrap;
215
216  /* cl_khr_gl_event */
217    dispatch.clCreateEventFromGLsyncKHR = &clCreateEventFromGLsyncKHR_wrap;
218
219  /* OpenCL 1.2 */
220    dispatch.clCreateSubDevices = &clCreateSubDevices_wrap;
221    dispatch.clRetainDevice = &clRetainDevice_wrap;
222    dispatch.clReleaseDevice = &clReleaseDevice_wrap;
223    dispatch.clCreateImage = &clCreateImage_wrap;
224    dispatch.clCreateProgramWithBuiltInKernels = &clCreateProgramWithBuiltInKernels_wrap;
225    dispatch.clCompileProgram = &clCompileProgram_wrap;
226    dispatch.clLinkProgram = &clLinkProgram_wrap;
227    dispatch.clUnloadPlatformCompiler = &clUnloadPlatformCompiler_wrap;
228    dispatch.clGetKernelArgInfo = &clGetKernelArgInfo_wrap;
229    dispatch.clEnqueueFillBuffer = &clEnqueueFillBuffer_wrap;
230    dispatch.clEnqueueFillImage = &clEnqueueFillImage_wrap;
231    dispatch.clEnqueueMigrateMemObjects = &clEnqueueMigrateMemObjects_wrap;
232    dispatch.clEnqueueMarkerWithWaitList = &clEnqueueMarkerWithWaitList_wrap;
233    dispatch.clEnqueueBarrierWithWaitList = &clEnqueueBarrierWithWaitList_wrap;
234    dispatch.clGetExtensionFunctionAddressForPlatform = &clGetExtensionFunctionAddressForPlatform_wrap;
235    dispatch.clCreateFromGLTexture = &clCreateFromGLTexture_wrap;
236
237  /* cl_khr_d3d11_sharing */
238#if defined(_WIN32)
239    dispatch.clGetDeviceIDsFromD3D11KHR = &clGetDeviceIDsFromD3D11KHR_wrap;
240    dispatch.clCreateFromD3D11BufferKHR = &clCreateFromD3D11BufferKHR_wrap;
241    dispatch.clCreateFromD3D11Texture2DKHR = &clCreateFromD3D11Texture2DKHR_wrap;
242    dispatch.clCreateFromD3D11Texture3DKHR = &clCreateFromD3D11Texture3DKHR_wrap;
243    dispatch.clCreateFromDX9MediaSurfaceKHR = &clCreateFromDX9MediaSurfaceKHR_wrap;
244    dispatch.clEnqueueAcquireD3D11ObjectsKHR = &clEnqueueAcquireD3D11ObjectsKHR_wrap;
245    dispatch.clEnqueueReleaseD3D11ObjectsKHR = &clEnqueueReleaseD3D11ObjectsKHR_wrap;
246#else
247    dispatch.clGetDeviceIDsFromD3D11KHR = NULL;
248    dispatch.clCreateFromD3D11BufferKHR = NULL;
249    dispatch.clCreateFromD3D11Texture2DKHR = NULL;
250    dispatch.clCreateFromD3D11Texture3DKHR = NULL;
251    dispatch.clCreateFromDX9MediaSurfaceKHR = NULL;
252    dispatch.clEnqueueAcquireD3D11ObjectsKHR = NULL;
253    dispatch.clEnqueueReleaseD3D11ObjectsKHR = NULL;
254#endif
255
256  /* cl_khr_dx9_media_sharing */
257#if defined(_WIN32)
258    dispatch.clGetDeviceIDsFromDX9MediaAdapterKHR = &clGetDeviceIDsFromDX9MediaAdapterKHR_wrap;
259    dispatch.clEnqueueAcquireDX9MediaSurfacesKHR = &clEnqueueAcquireDX9MediaSurfacesKHR_wrap;
260    dispatch.clEnqueueReleaseDX9MediaSurfacesKHR = &clEnqueueReleaseDX9MediaSurfacesKHR_wrap;
261#else
262    dispatch.clGetDeviceIDsFromDX9MediaAdapterKHR = NULL;
263    dispatch.clEnqueueAcquireDX9MediaSurfacesKHR = NULL;
264    dispatch.clEnqueueReleaseDX9MediaSurfacesKHR = NULL;
265#endif
266
267  /* cl_khr_egl_image */
268    dispatch.clCreateFromEGLImageKHR = &clCreateFromEGLImageKHR_wrap;
269    dispatch.clEnqueueAcquireEGLObjectsKHR = &clEnqueueAcquireEGLObjectsKHR_wrap;
270    dispatch.clEnqueueReleaseEGLObjectsKHR = &clEnqueueReleaseEGLObjectsKHR_wrap;
271
272  /* cl_khr_egl_event */
273    dispatch.clCreateEventFromEGLSyncKHR = &clCreateEventFromEGLSyncKHR_wrap;
274
275  /* OpenCL 2.0 */
276    dispatch.clCreateCommandQueueWithProperties = &clCreateCommandQueueWithProperties_wrap;
277    dispatch.clCreatePipe = &clCreatePipe_wrap;
278    dispatch.clGetPipeInfo = &clGetPipeInfo_wrap;
279    dispatch.clSVMAlloc = &clSVMAlloc_wrap;
280    dispatch.clSVMFree = &clSVMFree_wrap;
281    dispatch.clEnqueueSVMFree = &clEnqueueSVMFree_wrap;
282    dispatch.clEnqueueSVMMemcpy = &clEnqueueSVMMemcpy_wrap;
283    dispatch.clEnqueueSVMMemFill = &clEnqueueSVMMemFill_wrap;
284    dispatch.clEnqueueSVMMap = &clEnqueueSVMMap_wrap;
285    dispatch.clEnqueueSVMUnmap = &clEnqueueSVMUnmap_wrap;
286    dispatch.clCreateSamplerWithProperties = &clCreateSamplerWithProperties_wrap;
287    dispatch.clSetKernelArgSVMPointer = &clSetKernelArgSVMPointer_wrap;
288    dispatch.clSetKernelExecInfo = &clSetKernelExecInfo_wrap;
289
290  /* cl_khr_sub_groups */
291    dispatch.clGetKernelSubGroupInfoKHR = &clGetKernelSubGroupInfoKHR_wrap;
292
293  /* OpenCL 2.1 */
294    dispatch.clCloneKernel = &clCloneKernel_wrap;
295    dispatch.clCreateProgramWithIL = &clCreateProgramWithIL_wrap;
296    dispatch.clEnqueueSVMMigrateMem = &clEnqueueSVMMigrateMem_wrap;
297    dispatch.clGetDeviceAndHostTimer = &clGetDeviceAndHostTimer_wrap;
298    dispatch.clGetHostTimer = &clGetHostTimer_wrap;
299    dispatch.clGetKernelSubGroupInfo = &clGetKernelSubGroupInfo_wrap;
300    dispatch.clSetDefaultDeviceCommandQueue = &clSetDefaultDeviceCommandQueue_wrap;
301
302  /* OpenCL 2.2 */
303    dispatch.clSetProgramReleaseCallback = &clSetProgramReleaseCallback_wrap;
304    dispatch.clSetProgramSpecializationConstant = &clSetProgramSpecializationConstant_wrap;
305
306  /* OpenCL 3.0 */
307    dispatch.clCreateBufferWithProperties = &clCreateBufferWithProperties_wrap;
308    dispatch.clCreateImageWithProperties = &clCreateImageWithProperties_wrap;
309    dispatch.clSetContextDestructorCallback = &clSetContextDestructorCallback_wrap;
310}
311