| /* |
| * Copyright (c) 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. |
| * |
| * OpenCL is a trademark of Apple Inc. used under license by Khronos. |
| */ |
| |
| #include "icd_print_layer.h" |
| |
| /////////////////////////////////////////////////////////////////////////////// |
| // Core APIs: |
| %for apis in coreapis.values(): |
| %for api in apis: |
| static CL_API_ENTRY ${api.RetType} CL_API_CALL ${api.Name + "_wrap"}( |
| %for i, param in enumerate(api.Params): |
| % if i < len(api.Params)-1: |
| ${param.Type} ${param.Name}${param.TypeEnd}, |
| % else: |
| ${param.Type} ${param.Name}${param.TypeEnd}) ${api.Suffix} |
| % endif |
| %endfor |
| { |
| printf("${api.Name}\n"); |
| return tdispatch->${api.Name}( |
| %for i, param in enumerate(api.Params): |
| % if i < len(api.Params)-1: |
| ${param.Name}, |
| % else: |
| ${param.Name}); |
| % endif |
| %endfor |
| } |
| |
| /////////////////////////////////////////////////////////////////////////////// |
| %endfor |
| %endfor |
| <% |
| icdextensions = [ |
| 'cl_ext_device_fission', |
| 'cl_khr_d3d10_sharing', |
| 'cl_khr_d3d11_sharing', |
| 'cl_khr_dx9_media_sharing', |
| 'cl_khr_egl_event', |
| 'cl_khr_egl_image', |
| 'cl_khr_gl_event', |
| 'cl_khr_gl_sharing', |
| 'cl_khr_subgroups' |
| ] |
| win32extensions = { |
| 'cl_khr_d3d10_sharing', |
| 'cl_khr_d3d11_sharing', |
| 'cl_khr_dx9_media_sharing', |
| } |
| %> |
| %for extension in icdextensions: |
| <% |
| apis = extapis[extension] |
| %>// ${extension} |
| %if extension in win32extensions: |
| |
| #if defined(_WIN32) |
| %endif |
| %for api in apis: |
| static CL_API_ENTRY ${api.RetType} CL_API_CALL ${api.Name + "_wrap"}( |
| %for i, param in enumerate(api.Params): |
| % if i < len(api.Params)-1: |
| ${param.Type} ${param.Name}${param.TypeEnd}, |
| % else: |
| ${param.Type} ${param.Name}${param.TypeEnd}) ${api.Suffix} |
| % endif |
| %endfor |
| { |
| printf("${api.Name}\n"); |
| return tdispatch->${api.Name}( |
| %for i, param in enumerate(api.Params): |
| % if i < len(api.Params)-1: |
| ${param.Name}, |
| % else: |
| ${param.Name}); |
| % endif |
| %endfor |
| } |
| %endfor |
| |
| %if extension in win32extensions: |
| #endif // defined(_WIN32) |
| |
| %endif |
| /////////////////////////////////////////////////////////////////////////////// |
| |
| %endfor |
| void _init_dispatch(void) { |
| dispatch.clGetPlatformIDs = &clGetPlatformIDs_wrap; |
| dispatch.clGetPlatformInfo = &clGetPlatformInfo_wrap; |
| dispatch.clGetDeviceIDs = &clGetDeviceIDs_wrap; |
| dispatch.clGetDeviceInfo = &clGetDeviceInfo_wrap; |
| dispatch.clCreateContext = &clCreateContext_wrap; |
| dispatch.clCreateContextFromType = &clCreateContextFromType_wrap; |
| dispatch.clRetainContext = &clRetainContext_wrap; |
| dispatch.clReleaseContext = &clReleaseContext_wrap; |
| dispatch.clGetContextInfo = &clGetContextInfo_wrap; |
| dispatch.clCreateCommandQueue = &clCreateCommandQueue_wrap; |
| dispatch.clRetainCommandQueue = &clRetainCommandQueue_wrap; |
| dispatch.clReleaseCommandQueue = &clReleaseCommandQueue_wrap; |
| dispatch.clGetCommandQueueInfo = &clGetCommandQueueInfo_wrap; |
| dispatch.clSetCommandQueueProperty = &clSetCommandQueueProperty_wrap; |
| dispatch.clCreateBuffer = &clCreateBuffer_wrap; |
| dispatch.clCreateImage2D = &clCreateImage2D_wrap; |
| dispatch.clCreateImage3D = &clCreateImage3D_wrap; |
| dispatch.clRetainMemObject = &clRetainMemObject_wrap; |
| dispatch.clReleaseMemObject = &clReleaseMemObject_wrap; |
| dispatch.clGetSupportedImageFormats = &clGetSupportedImageFormats_wrap; |
| dispatch.clGetMemObjectInfo = &clGetMemObjectInfo_wrap; |
| dispatch.clGetImageInfo = &clGetImageInfo_wrap; |
| dispatch.clCreateSampler = &clCreateSampler_wrap; |
| dispatch.clRetainSampler = &clRetainSampler_wrap; |
| dispatch.clReleaseSampler = &clReleaseSampler_wrap; |
| dispatch.clGetSamplerInfo = &clGetSamplerInfo_wrap; |
| dispatch.clCreateProgramWithSource = &clCreateProgramWithSource_wrap; |
| dispatch.clCreateProgramWithBinary = &clCreateProgramWithBinary_wrap; |
| dispatch.clRetainProgram = &clRetainProgram_wrap; |
| dispatch.clReleaseProgram = &clReleaseProgram_wrap; |
| dispatch.clBuildProgram = &clBuildProgram_wrap; |
| dispatch.clUnloadCompiler = &clUnloadCompiler_wrap; |
| dispatch.clGetProgramInfo = &clGetProgramInfo_wrap; |
| dispatch.clGetProgramBuildInfo = &clGetProgramBuildInfo_wrap; |
| dispatch.clCreateKernel = &clCreateKernel_wrap; |
| dispatch.clCreateKernelsInProgram = &clCreateKernelsInProgram_wrap; |
| dispatch.clRetainKernel = &clRetainKernel_wrap; |
| dispatch.clReleaseKernel = &clReleaseKernel_wrap; |
| dispatch.clSetKernelArg = &clSetKernelArg_wrap; |
| dispatch.clGetKernelInfo = &clGetKernelInfo_wrap; |
| dispatch.clGetKernelWorkGroupInfo = &clGetKernelWorkGroupInfo_wrap; |
| dispatch.clWaitForEvents = &clWaitForEvents_wrap; |
| dispatch.clGetEventInfo = &clGetEventInfo_wrap; |
| dispatch.clRetainEvent = &clRetainEvent_wrap; |
| dispatch.clReleaseEvent = &clReleaseEvent_wrap; |
| dispatch.clGetEventProfilingInfo = &clGetEventProfilingInfo_wrap; |
| dispatch.clFlush = &clFlush_wrap; |
| dispatch.clFinish = &clFinish_wrap; |
| dispatch.clEnqueueReadBuffer = &clEnqueueReadBuffer_wrap; |
| dispatch.clEnqueueWriteBuffer = &clEnqueueWriteBuffer_wrap; |
| dispatch.clEnqueueCopyBuffer = &clEnqueueCopyBuffer_wrap; |
| dispatch.clEnqueueReadImage = &clEnqueueReadImage_wrap; |
| dispatch.clEnqueueWriteImage = &clEnqueueWriteImage_wrap; |
| dispatch.clEnqueueCopyImage = &clEnqueueCopyImage_wrap; |
| dispatch.clEnqueueCopyImageToBuffer = &clEnqueueCopyImageToBuffer_wrap; |
| dispatch.clEnqueueCopyBufferToImage = &clEnqueueCopyBufferToImage_wrap; |
| dispatch.clEnqueueMapBuffer = &clEnqueueMapBuffer_wrap; |
| dispatch.clEnqueueMapImage = &clEnqueueMapImage_wrap; |
| dispatch.clEnqueueUnmapMemObject = &clEnqueueUnmapMemObject_wrap; |
| dispatch.clEnqueueNDRangeKernel = &clEnqueueNDRangeKernel_wrap; |
| dispatch.clEnqueueTask = &clEnqueueTask_wrap; |
| dispatch.clEnqueueNativeKernel = &clEnqueueNativeKernel_wrap; |
| dispatch.clEnqueueMarker = &clEnqueueMarker_wrap; |
| dispatch.clEnqueueWaitForEvents = &clEnqueueWaitForEvents_wrap; |
| dispatch.clEnqueueBarrier = &clEnqueueBarrier_wrap; |
| dispatch.clGetExtensionFunctionAddress = &clGetExtensionFunctionAddress_wrap; |
| dispatch.clCreateFromGLBuffer = &clCreateFromGLBuffer_wrap; |
| dispatch.clCreateFromGLTexture2D = &clCreateFromGLTexture2D_wrap; |
| dispatch.clCreateFromGLTexture3D = &clCreateFromGLTexture3D_wrap; |
| dispatch.clCreateFromGLRenderbuffer = &clCreateFromGLRenderbuffer_wrap; |
| dispatch.clGetGLObjectInfo = &clGetGLObjectInfo_wrap; |
| dispatch.clGetGLTextureInfo = &clGetGLTextureInfo_wrap; |
| dispatch.clEnqueueAcquireGLObjects = &clEnqueueAcquireGLObjects_wrap; |
| dispatch.clEnqueueReleaseGLObjects = &clEnqueueReleaseGLObjects_wrap; |
| dispatch.clGetGLContextInfoKHR = &clGetGLContextInfoKHR_wrap; |
| |
| /* cl_khr_d3d10_sharing */ |
| #if defined(_WIN32) |
| dispatch.clGetDeviceIDsFromD3D10KHR = &clGetDeviceIDsFromD3D10KHR_wrap; |
| dispatch.clCreateFromD3D10BufferKHR = &clCreateFromD3D10BufferKHR_wrap; |
| dispatch.clCreateFromD3D10Texture2DKHR = &clCreateFromD3D10Texture2DKHR_wrap; |
| dispatch.clCreateFromD3D10Texture3DKHR = &clCreateFromD3D10Texture3DKHR_wrap; |
| dispatch.clEnqueueAcquireD3D10ObjectsKHR = &clEnqueueAcquireD3D10ObjectsKHR_wrap; |
| dispatch.clEnqueueReleaseD3D10ObjectsKHR = &clEnqueueReleaseD3D10ObjectsKHR_wrap; |
| #else |
| dispatch.clGetDeviceIDsFromD3D10KHR = NULL; |
| dispatch.clCreateFromD3D10BufferKHR = NULL; |
| dispatch.clCreateFromD3D10Texture2DKHR = NULL; |
| dispatch.clCreateFromD3D10Texture3DKHR = NULL; |
| dispatch.clEnqueueAcquireD3D10ObjectsKHR = NULL; |
| dispatch.clEnqueueReleaseD3D10ObjectsKHR = NULL; |
| #endif |
| |
| /* OpenCL 1.1 */ |
| dispatch.clSetEventCallback = &clSetEventCallback_wrap; |
| dispatch.clCreateSubBuffer = &clCreateSubBuffer_wrap; |
| dispatch.clSetMemObjectDestructorCallback = &clSetMemObjectDestructorCallback_wrap; |
| dispatch.clCreateUserEvent = &clCreateUserEvent_wrap; |
| dispatch.clSetUserEventStatus = &clSetUserEventStatus_wrap; |
| dispatch.clEnqueueReadBufferRect = &clEnqueueReadBufferRect_wrap; |
| dispatch.clEnqueueWriteBufferRect = &clEnqueueWriteBufferRect_wrap; |
| dispatch.clEnqueueCopyBufferRect = &clEnqueueCopyBufferRect_wrap; |
| |
| /* cl_ext_device_fission */ |
| dispatch.clCreateSubDevicesEXT = &clCreateSubDevicesEXT_wrap; |
| dispatch.clRetainDeviceEXT = &clRetainDeviceEXT_wrap; |
| dispatch.clReleaseDeviceEXT = &clReleaseDeviceEXT_wrap; |
| |
| /* cl_khr_gl_event */ |
| dispatch.clCreateEventFromGLsyncKHR = &clCreateEventFromGLsyncKHR_wrap; |
| |
| /* OpenCL 1.2 */ |
| dispatch.clCreateSubDevices = &clCreateSubDevices_wrap; |
| dispatch.clRetainDevice = &clRetainDevice_wrap; |
| dispatch.clReleaseDevice = &clReleaseDevice_wrap; |
| dispatch.clCreateImage = &clCreateImage_wrap; |
| dispatch.clCreateProgramWithBuiltInKernels = &clCreateProgramWithBuiltInKernels_wrap; |
| dispatch.clCompileProgram = &clCompileProgram_wrap; |
| dispatch.clLinkProgram = &clLinkProgram_wrap; |
| dispatch.clUnloadPlatformCompiler = &clUnloadPlatformCompiler_wrap; |
| dispatch.clGetKernelArgInfo = &clGetKernelArgInfo_wrap; |
| dispatch.clEnqueueFillBuffer = &clEnqueueFillBuffer_wrap; |
| dispatch.clEnqueueFillImage = &clEnqueueFillImage_wrap; |
| dispatch.clEnqueueMigrateMemObjects = &clEnqueueMigrateMemObjects_wrap; |
| dispatch.clEnqueueMarkerWithWaitList = &clEnqueueMarkerWithWaitList_wrap; |
| dispatch.clEnqueueBarrierWithWaitList = &clEnqueueBarrierWithWaitList_wrap; |
| dispatch.clGetExtensionFunctionAddressForPlatform = &clGetExtensionFunctionAddressForPlatform_wrap; |
| dispatch.clCreateFromGLTexture = &clCreateFromGLTexture_wrap; |
| |
| /* cl_khr_d3d11_sharing */ |
| #if defined(_WIN32) |
| dispatch.clGetDeviceIDsFromD3D11KHR = &clGetDeviceIDsFromD3D11KHR_wrap; |
| dispatch.clCreateFromD3D11BufferKHR = &clCreateFromD3D11BufferKHR_wrap; |
| dispatch.clCreateFromD3D11Texture2DKHR = &clCreateFromD3D11Texture2DKHR_wrap; |
| dispatch.clCreateFromD3D11Texture3DKHR = &clCreateFromD3D11Texture3DKHR_wrap; |
| dispatch.clCreateFromDX9MediaSurfaceKHR = &clCreateFromDX9MediaSurfaceKHR_wrap; |
| dispatch.clEnqueueAcquireD3D11ObjectsKHR = &clEnqueueAcquireD3D11ObjectsKHR_wrap; |
| dispatch.clEnqueueReleaseD3D11ObjectsKHR = &clEnqueueReleaseD3D11ObjectsKHR_wrap; |
| #else |
| dispatch.clGetDeviceIDsFromD3D11KHR = NULL; |
| dispatch.clCreateFromD3D11BufferKHR = NULL; |
| dispatch.clCreateFromD3D11Texture2DKHR = NULL; |
| dispatch.clCreateFromD3D11Texture3DKHR = NULL; |
| dispatch.clCreateFromDX9MediaSurfaceKHR = NULL; |
| dispatch.clEnqueueAcquireD3D11ObjectsKHR = NULL; |
| dispatch.clEnqueueReleaseD3D11ObjectsKHR = NULL; |
| #endif |
| |
| /* cl_khr_dx9_media_sharing */ |
| #if defined(_WIN32) |
| dispatch.clGetDeviceIDsFromDX9MediaAdapterKHR = &clGetDeviceIDsFromDX9MediaAdapterKHR_wrap; |
| dispatch.clEnqueueAcquireDX9MediaSurfacesKHR = &clEnqueueAcquireDX9MediaSurfacesKHR_wrap; |
| dispatch.clEnqueueReleaseDX9MediaSurfacesKHR = &clEnqueueReleaseDX9MediaSurfacesKHR_wrap; |
| #else |
| dispatch.clGetDeviceIDsFromDX9MediaAdapterKHR = NULL; |
| dispatch.clEnqueueAcquireDX9MediaSurfacesKHR = NULL; |
| dispatch.clEnqueueReleaseDX9MediaSurfacesKHR = NULL; |
| #endif |
| |
| /* cl_khr_egl_image */ |
| dispatch.clCreateFromEGLImageKHR = &clCreateFromEGLImageKHR_wrap; |
| dispatch.clEnqueueAcquireEGLObjectsKHR = &clEnqueueAcquireEGLObjectsKHR_wrap; |
| dispatch.clEnqueueReleaseEGLObjectsKHR = &clEnqueueReleaseEGLObjectsKHR_wrap; |
| |
| /* cl_khr_egl_event */ |
| dispatch.clCreateEventFromEGLSyncKHR = &clCreateEventFromEGLSyncKHR_wrap; |
| |
| /* OpenCL 2.0 */ |
| dispatch.clCreateCommandQueueWithProperties = &clCreateCommandQueueWithProperties_wrap; |
| dispatch.clCreatePipe = &clCreatePipe_wrap; |
| dispatch.clGetPipeInfo = &clGetPipeInfo_wrap; |
| dispatch.clSVMAlloc = &clSVMAlloc_wrap; |
| dispatch.clSVMFree = &clSVMFree_wrap; |
| dispatch.clEnqueueSVMFree = &clEnqueueSVMFree_wrap; |
| dispatch.clEnqueueSVMMemcpy = &clEnqueueSVMMemcpy_wrap; |
| dispatch.clEnqueueSVMMemFill = &clEnqueueSVMMemFill_wrap; |
| dispatch.clEnqueueSVMMap = &clEnqueueSVMMap_wrap; |
| dispatch.clEnqueueSVMUnmap = &clEnqueueSVMUnmap_wrap; |
| dispatch.clCreateSamplerWithProperties = &clCreateSamplerWithProperties_wrap; |
| dispatch.clSetKernelArgSVMPointer = &clSetKernelArgSVMPointer_wrap; |
| dispatch.clSetKernelExecInfo = &clSetKernelExecInfo_wrap; |
| |
| /* cl_khr_sub_groups */ |
| dispatch.clGetKernelSubGroupInfoKHR = &clGetKernelSubGroupInfoKHR_wrap; |
| |
| /* OpenCL 2.1 */ |
| dispatch.clCloneKernel = &clCloneKernel_wrap; |
| dispatch.clCreateProgramWithIL = &clCreateProgramWithIL_wrap; |
| dispatch.clEnqueueSVMMigrateMem = &clEnqueueSVMMigrateMem_wrap; |
| dispatch.clGetDeviceAndHostTimer = &clGetDeviceAndHostTimer_wrap; |
| dispatch.clGetHostTimer = &clGetHostTimer_wrap; |
| dispatch.clGetKernelSubGroupInfo = &clGetKernelSubGroupInfo_wrap; |
| dispatch.clSetDefaultDeviceCommandQueue = &clSetDefaultDeviceCommandQueue_wrap; |
| |
| /* OpenCL 2.2 */ |
| dispatch.clSetProgramReleaseCallback = &clSetProgramReleaseCallback_wrap; |
| dispatch.clSetProgramSpecializationConstant = &clSetProgramSpecializationConstant_wrap; |
| |
| /* OpenCL 3.0 */ |
| dispatch.clCreateBufferWithProperties = &clCreateBufferWithProperties_wrap; |
| dispatch.clCreateImageWithProperties = &clCreateImageWithProperties_wrap; |
| dispatch.clSetContextDestructorCallback = &clSetContextDestructorCallback_wrap; |
| } |