17ec681f3Smrg//
27ec681f3Smrg// Copyright 2013 Francisco Jerez
37ec681f3Smrg//
47ec681f3Smrg// Permission is hereby granted, free of charge, to any person obtaining a
57ec681f3Smrg// copy of this software and associated documentation files (the "Software"),
67ec681f3Smrg// to deal in the Software without restriction, including without limitation
77ec681f3Smrg// the rights to use, copy, modify, merge, publish, distribute, sublicense,
87ec681f3Smrg// and/or sell copies of the Software, and to permit persons to whom the
97ec681f3Smrg// Software is furnished to do so, subject to the following conditions:
107ec681f3Smrg//
117ec681f3Smrg// The above copyright notice and this permission notice shall be included in
127ec681f3Smrg// all copies or substantial portions of the Software.
137ec681f3Smrg//
147ec681f3Smrg// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
157ec681f3Smrg// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
167ec681f3Smrg// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
177ec681f3Smrg// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
187ec681f3Smrg// OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
197ec681f3Smrg// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
207ec681f3Smrg// OTHER DEALINGS IN THE SOFTWARE.
217ec681f3Smrg//
227ec681f3Smrg
237ec681f3Smrg#include "api/dispatch.hpp"
247ec681f3Smrg
257ec681f3Smrgnamespace clover {
267ec681f3Smrg   const cl_icd_dispatch _dispatch = {
277ec681f3Smrg      // OpenCL 1.0
287ec681f3Smrg      clGetPlatformIDs,
297ec681f3Smrg      GetPlatformInfo,
307ec681f3Smrg      clGetDeviceIDs,
317ec681f3Smrg      clGetDeviceInfo,
327ec681f3Smrg      clCreateContext,
337ec681f3Smrg      clCreateContextFromType,
347ec681f3Smrg      clRetainContext,
357ec681f3Smrg      clReleaseContext,
367ec681f3Smrg      clGetContextInfo,
377ec681f3Smrg      clCreateCommandQueue,
387ec681f3Smrg      clRetainCommandQueue,
397ec681f3Smrg      clReleaseCommandQueue,
407ec681f3Smrg      clGetCommandQueueInfo,
417ec681f3Smrg      NULL, // clSetCommandQueueProperty
427ec681f3Smrg      clCreateBuffer,
437ec681f3Smrg      clCreateImage2D,
447ec681f3Smrg      clCreateImage3D,
457ec681f3Smrg      clRetainMemObject,
467ec681f3Smrg      clReleaseMemObject,
477ec681f3Smrg      clGetSupportedImageFormats,
487ec681f3Smrg      clGetMemObjectInfo,
497ec681f3Smrg      clGetImageInfo,
507ec681f3Smrg      clCreateSampler,
517ec681f3Smrg      clRetainSampler,
527ec681f3Smrg      clReleaseSampler,
537ec681f3Smrg      clGetSamplerInfo,
547ec681f3Smrg      clCreateProgramWithSource,
557ec681f3Smrg      clCreateProgramWithBinary,
567ec681f3Smrg      clRetainProgram,
577ec681f3Smrg      clReleaseProgram,
587ec681f3Smrg      clBuildProgram,
597ec681f3Smrg      clUnloadCompiler,
607ec681f3Smrg      clGetProgramInfo,
617ec681f3Smrg      clGetProgramBuildInfo,
627ec681f3Smrg      clCreateKernel,
637ec681f3Smrg      clCreateKernelsInProgram,
647ec681f3Smrg      clRetainKernel,
657ec681f3Smrg      clReleaseKernel,
667ec681f3Smrg      clSetKernelArg,
677ec681f3Smrg      clGetKernelInfo,
687ec681f3Smrg      clGetKernelWorkGroupInfo,
697ec681f3Smrg      clWaitForEvents,
707ec681f3Smrg      clGetEventInfo,
717ec681f3Smrg      clRetainEvent,
727ec681f3Smrg      clReleaseEvent,
737ec681f3Smrg      clGetEventProfilingInfo,
747ec681f3Smrg      clFlush,
757ec681f3Smrg      clFinish,
767ec681f3Smrg      clEnqueueReadBuffer,
777ec681f3Smrg      clEnqueueWriteBuffer,
787ec681f3Smrg      clEnqueueCopyBuffer,
797ec681f3Smrg      clEnqueueReadImage,
807ec681f3Smrg      clEnqueueWriteImage,
817ec681f3Smrg      clEnqueueCopyImage,
827ec681f3Smrg      clEnqueueCopyImageToBuffer,
837ec681f3Smrg      clEnqueueCopyBufferToImage,
847ec681f3Smrg      clEnqueueMapBuffer,
857ec681f3Smrg      clEnqueueMapImage,
867ec681f3Smrg      clEnqueueUnmapMemObject,
877ec681f3Smrg      clEnqueueNDRangeKernel,
887ec681f3Smrg      clEnqueueTask,
897ec681f3Smrg      clEnqueueNativeKernel,
907ec681f3Smrg      clEnqueueMarker,
917ec681f3Smrg      clEnqueueWaitForEvents,
927ec681f3Smrg      clEnqueueBarrier,
937ec681f3Smrg      GetExtensionFunctionAddress,
947ec681f3Smrg      NULL, // clCreateFromGLBuffer
957ec681f3Smrg      NULL, // clCreateFromGLTexture2D
967ec681f3Smrg      NULL, // clCreateFromGLTexture3D
977ec681f3Smrg      NULL, // clCreateFromGLRenderbuffer
987ec681f3Smrg      NULL, // clGetGLObjectInfo
997ec681f3Smrg      NULL, // clGetGLTextureInfo
1007ec681f3Smrg      NULL, // clEnqueueAcquireGLObjects
1017ec681f3Smrg      NULL, // clEnqueueReleaseGLObjects
1027ec681f3Smrg
1037ec681f3Smrg      // cl_khr_d3d10_sharing
1047ec681f3Smrg      NULL, // clGetGLContextInfoKHR
1057ec681f3Smrg      NULL, // clGetDeviceIDsFromD3D10KHR
1067ec681f3Smrg      NULL, // clCreateFromD3D10BufferKHR
1077ec681f3Smrg      NULL, // clCreateFromD3D10Texture2DKHR
1087ec681f3Smrg      NULL, // clCreateFromD3D10Texture3DKHR
1097ec681f3Smrg      NULL, // clEnqueueAcquireD3D10ObjectsKHR
1107ec681f3Smrg      NULL, // clEnqueueReleaseD3D10ObjectsKHR
1117ec681f3Smrg
1127ec681f3Smrg      // OpenCL 1.1
1137ec681f3Smrg      clSetEventCallback,
1147ec681f3Smrg      clCreateSubBuffer,
1157ec681f3Smrg      clSetMemObjectDestructorCallback,
1167ec681f3Smrg      clCreateUserEvent,
1177ec681f3Smrg      clSetUserEventStatus,
1187ec681f3Smrg      clEnqueueReadBufferRect,
1197ec681f3Smrg      clEnqueueWriteBufferRect,
1207ec681f3Smrg      clEnqueueCopyBufferRect,
1217ec681f3Smrg
1227ec681f3Smrg      // cl_ext_device_fission
1237ec681f3Smrg      NULL, // clCreateSubDevicesEXT
1247ec681f3Smrg      NULL, // clRetainDeviceEXT
1257ec681f3Smrg      NULL, // clReleaseDeviceEXT
1267ec681f3Smrg
1277ec681f3Smrg      // cl_khr_gl_event
1287ec681f3Smrg      NULL, // clCreateEventFromGLsyncKHR
1297ec681f3Smrg
1307ec681f3Smrg      // OpenCL 1.2
1317ec681f3Smrg      clCreateSubDevices,
1327ec681f3Smrg      clRetainDevice,
1337ec681f3Smrg      clReleaseDevice,
1347ec681f3Smrg      clCreateImage,
1357ec681f3Smrg      clCreateProgramWithBuiltInKernels,
1367ec681f3Smrg      clCompileProgram,
1377ec681f3Smrg      clLinkProgram,
1387ec681f3Smrg      clUnloadPlatformCompiler,
1397ec681f3Smrg      clGetKernelArgInfo,
1407ec681f3Smrg      clEnqueueFillBuffer,
1417ec681f3Smrg      clEnqueueFillImage,
1427ec681f3Smrg      clEnqueueMigrateMemObjects,
1437ec681f3Smrg      clEnqueueMarkerWithWaitList,
1447ec681f3Smrg      clEnqueueBarrierWithWaitList,
1457ec681f3Smrg      GetExtensionFunctionAddressForPlatform,
1467ec681f3Smrg      NULL, // clCreateFromGLTexture
1477ec681f3Smrg
1487ec681f3Smrg      // cl_khr_d3d11_sharing
1497ec681f3Smrg      NULL, // clGetDeviceIDsFromD3D11KHR
1507ec681f3Smrg      NULL, // clCreateFromD3D11BufferKHR
1517ec681f3Smrg      NULL, // clCreateFromD3D11Texture2DKHR
1527ec681f3Smrg      NULL, // clCreateFromD3D11Texture3DKHR
1537ec681f3Smrg      NULL, // clCreateFromDX9MediaSurfaceKHR
1547ec681f3Smrg      NULL, // clEnqueueAcquireD3D11ObjectsKHR
1557ec681f3Smrg      NULL, // clEnqueueReleaseD3D11ObjectsKHR
1567ec681f3Smrg
1577ec681f3Smrg      // cl_khr_dx9_media_sharing
1587ec681f3Smrg      NULL, // clGetDeviceIDsFromDX9MediaAdapterKHR
1597ec681f3Smrg      NULL, // clEnqueueAcquireDX9MediaSurfacesKHR
1607ec681f3Smrg      NULL, // clEnqueueReleaseDX9MediaSurfacesKHR
1617ec681f3Smrg
1627ec681f3Smrg      // cl_khr_egl_image
1637ec681f3Smrg      NULL, // clCreateFromEGLImageKHR
1647ec681f3Smrg      NULL, // clEnqueueAcquireEGLObjectsKHR
1657ec681f3Smrg      NULL, // clEnqueueReleaseEGLObjectsKHR
1667ec681f3Smrg
1677ec681f3Smrg      // cl_khr_egl_event
1687ec681f3Smrg      NULL, // clCreateEventFromEGLSyncKHR
1697ec681f3Smrg
1707ec681f3Smrg      // OpenCL 2.0
1717ec681f3Smrg      clCreateCommandQueueWithProperties,
1727ec681f3Smrg      clCreatePipe,
1737ec681f3Smrg      clGetPipeInfo,
1747ec681f3Smrg      clSVMAlloc,
1757ec681f3Smrg      clSVMFree,
1767ec681f3Smrg      clEnqueueSVMFree,
1777ec681f3Smrg      clEnqueueSVMMemcpy,
1787ec681f3Smrg      clEnqueueSVMMemFill,
1797ec681f3Smrg      clEnqueueSVMMap,
1807ec681f3Smrg      clEnqueueSVMUnmap,
1817ec681f3Smrg      NULL, // clCreateSamplerWithProperties
1827ec681f3Smrg      clSetKernelArgSVMPointer,
1837ec681f3Smrg      clSetKernelExecInfo,
1847ec681f3Smrg
1857ec681f3Smrg      // cl_khr_sub_groups
1867ec681f3Smrg      NULL, // clGetKernelSubGroupInfoKHR
1877ec681f3Smrg
1887ec681f3Smrg      // OpenCL 2.1
1897ec681f3Smrg      NULL, // clCloneKernel
1907ec681f3Smrg      clCreateProgramWithIL,
1917ec681f3Smrg      clEnqueueSVMMigrateMem,
1927ec681f3Smrg      clGetDeviceAndHostTimer,
1937ec681f3Smrg      clGetHostTimer,
1947ec681f3Smrg      clGetKernelSubGroupInfo,
1957ec681f3Smrg      clSetDefaultDeviceCommandQueue,
1967ec681f3Smrg
1977ec681f3Smrg      // OpenCL 2.2
1987ec681f3Smrg      clSetProgramReleaseCallback,
1997ec681f3Smrg      clSetProgramSpecializationConstant,
2007ec681f3Smrg      clCreateBufferWithProperties,
2017ec681f3Smrg      clCreateImageWithProperties,
2027ec681f3Smrg      clSetContextDestructorCallback
2037ec681f3Smrg   };
2047ec681f3Smrg}
205