--- /dev/null
+//
+// Copyright 2013 Francisco Jerez
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+// OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#include "api/dispatch.hpp"
+
+namespace clover {
+ const _cl_icd_dispatch _dispatch = {
+ clGetPlatformIDs,
+ GetPlatformInfo,
+ clGetDeviceIDs,
+ clGetDeviceInfo,
+ clCreateContext,
+ clCreateContextFromType,
+ clRetainContext,
+ clReleaseContext,
+ clGetContextInfo,
+ clCreateCommandQueue,
+ clRetainCommandQueue,
+ clReleaseCommandQueue,
+ clGetCommandQueueInfo,
+ NULL, // clSetCommandQueueProperty
+ clCreateBuffer,
+ clCreateImage2D,
+ clCreateImage3D,
+ clRetainMemObject,
+ clReleaseMemObject,
+ clGetSupportedImageFormats,
+ clGetMemObjectInfo,
+ clGetImageInfo,
+ clCreateSampler,
+ clRetainSampler,
+ clReleaseSampler,
+ clGetSamplerInfo,
+ clCreateProgramWithSource,
+ clCreateProgramWithBinary,
+ clRetainProgram,
+ clReleaseProgram,
+ clBuildProgram,
+ clUnloadCompiler,
+ clGetProgramInfo,
+ clGetProgramBuildInfo,
+ clCreateKernel,
+ clCreateKernelsInProgram,
+ clRetainKernel,
+ clReleaseKernel,
+ clSetKernelArg,
+ clGetKernelInfo,
+ clGetKernelWorkGroupInfo,
+ clWaitForEvents,
+ clGetEventInfo,
+ clRetainEvent,
+ clReleaseEvent,
+ clGetEventProfilingInfo,
+ clFlush,
+ clFinish,
+ clEnqueueReadBuffer,
+ clEnqueueWriteBuffer,
+ clEnqueueCopyBuffer,
+ clEnqueueReadImage,
+ clEnqueueWriteImage,
+ clEnqueueCopyImage,
+ clEnqueueCopyImageToBuffer,
+ clEnqueueCopyBufferToImage,
+ clEnqueueMapBuffer,
+ clEnqueueMapImage,
+ clEnqueueUnmapMemObject,
+ clEnqueueNDRangeKernel,
+ clEnqueueTask,
+ clEnqueueNativeKernel,
+ clEnqueueMarker,
+ clEnqueueWaitForEvents,
+ clEnqueueBarrier,
+ GetExtensionFunctionAddress,
+ NULL, // clCreateFromGLBuffer
+ NULL, // clCreateFromGLTexture2D
+ NULL, // clCreateFromGLTexture3D
+ NULL, // clCreateFromGLRenderbuffer
+ NULL, // clGetGLObjectInfo
+ NULL, // clGetGLTextureInfo
+ NULL, // clEnqueueAcquireGLObjects
+ NULL, // clEnqueueReleaseGLObjects
+ NULL, // clGetGLContextInfoKHR
+ NULL, // clGetDeviceIDsFromD3D10KHR
+ NULL, // clCreateFromD3D10BufferKHR
+ NULL, // clCreateFromD3D10Texture2DKHR
+ NULL, // clCreateFromD3D10Texture3DKHR
+ NULL, // clEnqueueAcquireD3D10ObjectsKHR
+ NULL, // clEnqueueReleaseD3D10ObjectsKHR
+ clSetEventCallback,
+ clCreateSubBuffer,
+ clSetMemObjectDestructorCallback,
+ clCreateUserEvent,
+ clSetUserEventStatus,
+ clEnqueueReadBufferRect,
+ clEnqueueWriteBufferRect,
+ clEnqueueCopyBufferRect,
+ NULL, // clCreateSubDevicesEXT
+ NULL, // clRetainDeviceEXT
+ NULL, // clReleaseDeviceEXT
+ NULL, // clCreateEventFromGLsyncKHR
+ NULL, // clCreateSubDevices
+ NULL, // clRetainDevice
+ NULL, // clReleaseDevice
+ NULL, // clCreateImage
+ NULL, // clCreateProgramWithBuiltInKernels
+ NULL, // clCompileProgram
+ NULL, // clLinkProgram
+ NULL, // clUnloadPlatformCompiler
+ NULL, // clGetKernelArgInfo
+ NULL, // clEnqueueFillBuffer
+ NULL, // clEnqueueFillImage
+ NULL, // clEnqueueMigrateMemObjects
+ NULL, // clEnqueueMarkerWithWaitList
+ NULL, // clEnqueueBarrierWithWaitList
+ NULL, // clGetExtensionFunctionAddressForPlatform
+ NULL, // clCreateFromGLTexture
+ NULL, // clGetDeviceIDsFromD3D11KHR
+ NULL, // clCreateFromD3D11BufferKHR
+ NULL, // clCreateFromD3D11Texture2DKHR
+ NULL, // clCreateFromD3D11Texture3DKHR
+ NULL, // clCreateFromDX9MediaSurfaceKHR
+ NULL, // clEnqueueAcquireD3D11ObjectsKHR
+ NULL, // clEnqueueReleaseD3D11ObjectsKHR
+ NULL, // clGetDeviceIDsFromDX9MediaAdapterKHR
+ NULL, // clEnqueueAcquireDX9MediaSurfacesKHR
+ NULL // clEnqueueReleaseDX9MediaSurfacesKHR
+ };
+}
--- /dev/null
+//
+// Copyright 2013 Francisco Jerez
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+// OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#ifndef API_DISPATCH_HPP
+#define API_DISPATCH_HPP
+
+#include "CL/cl.h"
+#include "CL/cl_ext.h"
+#include "CL/cl_gl.h"
+
+///
+/// OpenCL ICD vendor dispatch table.
+///
+/// The entry point ordering should always be in agreement with
+/// Khronos' ICD loader.
+///
+struct _cl_icd_dispatch {
+ CL_API_ENTRY cl_int (CL_API_CALL *clGetPlatformIDs)(
+ cl_uint num_entries,
+ cl_platform_id *platforms,
+ cl_uint *num_platforms);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clGetPlatformInfo)(
+ cl_platform_id platform,
+ cl_platform_info param_name,
+ size_t param_value_size,
+ void *param_value,
+ size_t *param_value_size_ret);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clGetDeviceIDs)(
+ cl_platform_id platform,
+ cl_device_type device_type,
+ cl_uint num_entries,
+ cl_device_id *devices,
+ cl_uint *num_devices);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clGetDeviceInfo)(
+ cl_device_id device,
+ cl_device_info param_name,
+ size_t param_value_size,
+ void *param_value,
+ size_t *param_value_size_ret);
+
+ CL_API_ENTRY cl_context (CL_API_CALL *clCreateContext)(
+ const cl_context_properties *properties,
+ cl_uint num_devices,
+ const cl_device_id *devices,
+ void (CL_CALLBACK *pfn_notify)(const char *, const void *, size_t, void *),
+ void *user_data,
+ cl_int *errcode_ret);
+
+ CL_API_ENTRY cl_context (CL_API_CALL *clCreateContextFromType)(
+ const cl_context_properties *properties,
+ cl_device_type device_type,
+ void (CL_CALLBACK *pfn_notify)(const char *, const void *, size_t, void *),
+ void *user_data,
+ cl_int *errcode_ret);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clRetainContext)(
+ cl_context context);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clReleaseContext)(
+ cl_context context);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clGetContextInfo)(
+ cl_context context,
+ cl_context_info param_name,
+ size_t param_value_size,
+ void *param_value,
+ size_t *param_value_size_ret);
+
+ CL_API_ENTRY cl_command_queue (CL_API_CALL *clCreateCommandQueue)(
+ cl_context context,
+ cl_device_id device,
+ cl_command_queue_properties properties,
+ cl_int *errcode_ret);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clRetainCommandQueue)(
+ cl_command_queue command_queue);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clReleaseCommandQueue)(
+ cl_command_queue command_queue);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clGetCommandQueueInfo)(
+ cl_command_queue command_queue,
+ cl_command_queue_info param_name,
+ size_t param_value_size,
+ void *param_value,
+ size_t *param_value_size_ret);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clSetCommandQueueProperty)(
+ cl_command_queue command_queue,
+ cl_command_queue_properties properties,
+ cl_bool enable,
+ cl_command_queue_properties *old_properties);
+
+ CL_API_ENTRY cl_mem (CL_API_CALL *clCreateBuffer)(
+ cl_context context,
+ cl_mem_flags flags,
+ size_t size,
+ void *host_ptr,
+ cl_int *errcode_ret);
+
+ CL_API_ENTRY cl_mem (CL_API_CALL *clCreateImage2D)(
+ cl_context context,
+ cl_mem_flags flags,
+ const cl_image_format *image_format,
+ size_t image_width,
+ size_t image_height,
+ size_t image_row_pitch,
+ void *host_ptr,
+ cl_int *errcode_ret);
+
+ CL_API_ENTRY cl_mem (CL_API_CALL *clCreateImage3D)(
+ cl_context context,
+ cl_mem_flags flags,
+ const cl_image_format *image_format,
+ size_t image_width,
+ size_t image_height,
+ size_t image_depth,
+ size_t image_row_pitch,
+ size_t image_slice_pitch,
+ void *host_ptr,
+ cl_int *errcode_ret);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clRetainMemObject)(
+ cl_mem memobj);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clReleaseMemObject)(
+ cl_mem memobj);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clGetSupportedImageFormats)(
+ cl_context context,
+ cl_mem_flags flags,
+ cl_mem_object_type image_type,
+ cl_uint num_entries,
+ cl_image_format *image_formats,
+ cl_uint *num_image_formats);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clGetMemObjectInfo)(
+ cl_mem memobj,
+ cl_mem_info param_name,
+ size_t param_value_size,
+ void *param_value,
+ size_t *param_value_size_ret);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clGetImageInfo)(
+ cl_mem image,
+ cl_image_info param_name,
+ size_t param_value_size,
+ void *param_value,
+ size_t *param_value_size_ret);
+
+ CL_API_ENTRY cl_sampler (CL_API_CALL *clCreateSampler)(
+ cl_context context,
+ cl_bool normalized_coords,
+ cl_addressing_mode addressing_mode,
+ cl_filter_mode filter_mode,
+ cl_int *errcode_ret);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clRetainSampler)(
+ cl_sampler sampler);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clReleaseSampler)(
+ cl_sampler sampler);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clGetSamplerInfo)(
+ cl_sampler sampler,
+ cl_sampler_info param_name,
+ size_t param_value_size,
+ void *param_value,
+ size_t *param_value_size_ret);
+
+ CL_API_ENTRY cl_program (CL_API_CALL *clCreateProgramWithSource)(
+ cl_context context,
+ cl_uint count,
+ const char **strings,
+ const size_t *lengths,
+ cl_int *errcode_ret);
+
+ CL_API_ENTRY cl_program (CL_API_CALL *clCreateProgramWithBinary)(
+ cl_context context,
+ cl_uint num_devices,
+ const cl_device_id *device_list,
+ const size_t *lengths,
+ const unsigned char **binaries,
+ cl_int *binary_status,
+ cl_int *errcode_ret);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clRetainProgram)(
+ cl_program program);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clReleaseProgram)(
+ cl_program program);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clBuildProgram)(
+ cl_program program,
+ cl_uint num_devices,
+ const cl_device_id *device_list,
+ const char *options,
+ void (CL_CALLBACK *pfn_notify)(cl_program, void *),
+ void *user_data);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clUnloadCompiler)(
+ void);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clGetProgramInfo)(
+ cl_program program,
+ cl_program_info param_name,
+ size_t param_value_size,
+ void *param_value,
+ size_t *param_value_size_ret);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clGetProgramBuildInfo)(
+ cl_program program,
+ cl_device_id device,
+ cl_program_build_info param_name,
+ size_t param_value_size,
+ void *param_value,
+ size_t *param_value_size_ret);
+
+ CL_API_ENTRY cl_kernel (CL_API_CALL *clCreateKernel)(
+ cl_program program,
+ const char *kernel_name,
+ cl_int *errcode_ret);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clCreateKernelsInProgram)(
+ cl_program program,
+ cl_uint num_kernels,
+ cl_kernel *kernels,
+ cl_uint *num_kernels_ret);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clRetainKernel)(
+ cl_kernel kernel);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clReleaseKernel)(
+ cl_kernel kernel);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clSetKernelArg)(
+ cl_kernel kernel,
+ cl_uint arg_index,
+ size_t arg_size,
+ const void *arg_value);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clGetKernelInfo)(
+ cl_kernel kernel,
+ cl_kernel_info param_name,
+ size_t param_value_size,
+ void *param_value,
+ size_t *param_value_size_ret);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clGetKernelWorkGroupInfo)(
+ cl_kernel kernel,
+ cl_device_id device,
+ cl_kernel_work_group_info param_name,
+ size_t param_value_size,
+ void *param_value,
+ size_t *param_value_size_ret);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clWaitForEvents)(
+ cl_uint num_events,
+ const cl_event *event_list);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clGetEventInfo)(
+ cl_event event,
+ cl_event_info param_name,
+ size_t param_value_size,
+ void *param_value,
+ size_t *param_value_size_ret);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clRetainEvent)(
+ cl_event event);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clReleaseEvent)(
+ cl_event event);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clGetEventProfilingInfo)(
+ cl_event event,
+ cl_profiling_info param_name,
+ size_t param_value_size,
+ void *param_value,
+ size_t *param_value_size_ret);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clFlush)(
+ cl_command_queue command_queue);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clFinish)(
+ cl_command_queue command_queue);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReadBuffer)(
+ cl_command_queue command_queue,
+ cl_mem buffer,
+ cl_bool blocking_read,
+ size_t offset,
+ size_t cb,
+ void *ptr,
+ cl_uint num_events_in_wait_list,
+ const cl_event *event_wait_list,
+ cl_event *event);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueWriteBuffer)(
+ cl_command_queue command_queue,
+ cl_mem buffer,
+ cl_bool blocking_write,
+ size_t offset,
+ size_t cb,
+ const void *ptr,
+ cl_uint num_events_in_wait_list,
+ const cl_event *event_wait_list,
+ cl_event *event);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueCopyBuffer)(
+ cl_command_queue command_queue,
+ cl_mem src_buffer,
+ cl_mem dst_buffer,
+ size_t src_offset,
+ size_t dst_offset,
+ size_t cb,
+ cl_uint num_events_in_wait_list,
+ const cl_event *event_wait_list,
+ cl_event *event);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReadImage)(
+ cl_command_queue command_queue,
+ cl_mem image,
+ cl_bool blocking_read,
+ const size_t *origin,
+ const size_t *region,
+ size_t row_pitch,
+ size_t slice_pitch,
+ void *ptr,
+ cl_uint num_events_in_wait_list,
+ const cl_event *event_wait_list,
+ cl_event *event);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueWriteImage)(
+ cl_command_queue command_queue,
+ cl_mem image,
+ cl_bool blocking_write,
+ const size_t *origin,
+ const size_t *region,
+ size_t input_row_pitch,
+ size_t input_slice_pitch,
+ const void *ptr,
+ cl_uint num_events_in_wait_list,
+ const cl_event *event_wait_list,
+ cl_event *event);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueCopyImage)(
+ cl_command_queue command_queue,
+ cl_mem src_image,
+ cl_mem dst_image,
+ const size_t *src_origin,
+ const size_t *dst_origin,
+ const size_t *region,
+ cl_uint num_events_in_wait_list,
+ const cl_event *event_wait_list,
+ cl_event *event);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueCopyImageToBuffer)(
+ cl_command_queue command_queue,
+ cl_mem src_image,
+ cl_mem dst_buffer,
+ const size_t *src_origin,
+ const size_t *region,
+ size_t dst_offset,
+ cl_uint num_events_in_wait_list,
+ const cl_event *event_wait_list,
+ cl_event *event);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueCopyBufferToImage)(
+ cl_command_queue command_queue,
+ cl_mem src_buffer,
+ cl_mem dst_image,
+ size_t src_offset,
+ const size_t *dst_origin,
+ const size_t *region,
+ cl_uint num_events_in_wait_list,
+ const cl_event *event_wait_list,
+ cl_event *event);
+
+ CL_API_ENTRY void *(CL_API_CALL *clEnqueueMapBuffer)(
+ cl_command_queue command_queue,
+ cl_mem buffer,
+ cl_bool blocking_map,
+ cl_map_flags map_flags,
+ size_t offset,
+ size_t cb,
+ cl_uint num_events_in_wait_list,
+ const cl_event *event_wait_list,
+ cl_event *event,
+ cl_int *errcode_ret);
+
+ CL_API_ENTRY void *(CL_API_CALL *clEnqueueMapImage)(
+ cl_command_queue command_queue,
+ cl_mem image,
+ cl_bool blocking_map,
+ cl_map_flags map_flags,
+ const size_t *origin,
+ const size_t *region,
+ size_t *image_row_pitch,
+ size_t *image_slice_pitch,
+ cl_uint num_events_in_wait_list,
+ const cl_event *event_wait_list,
+ cl_event *event,
+ cl_int *errcode_ret);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueUnmapMemObject)(
+ cl_command_queue command_queue,
+ cl_mem memobj,
+ void *mapped_ptr,
+ cl_uint num_events_in_wait_list,
+ const cl_event *event_wait_list,
+ cl_event *event);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueNDRangeKernel)(
+ cl_command_queue command_queue,
+ cl_kernel kernel,
+ cl_uint work_dim,
+ const size_t *global_work_offset,
+ const size_t *global_work_size,
+ const size_t *local_work_size,
+ cl_uint num_events_in_wait_list,
+ const cl_event *event_wait_list,
+ cl_event *event);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueTask)(
+ cl_command_queue command_queue,
+ cl_kernel kernel,
+ cl_uint num_events_in_wait_list,
+ const cl_event *event_wait_list,
+ cl_event *event);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueNativeKernel)(
+ cl_command_queue command_queue,
+ void (CL_CALLBACK *user_func)(void *),
+ void *args,
+ size_t cb_args,
+ cl_uint num_mem_objects,
+ const cl_mem *mem_list,
+ const void **args_mem_loc,
+ cl_uint num_events_in_wait_list,
+ const cl_event *event_wait_list,
+ cl_event *event);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueMarker)(
+ cl_command_queue command_queue,
+ cl_event *event);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueWaitForEvents)(
+ cl_command_queue command_queue,
+ cl_uint num_events,
+ const cl_event *event_list);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueBarrier)(
+ cl_command_queue command_queue);
+
+ CL_API_ENTRY void *(CL_API_CALL *clGetExtensionFunctionAddress)(
+ const char *function_name);
+
+ CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromGLBuffer)(
+ cl_context context,
+ cl_mem_flags flags,
+ cl_GLuint bufobj,
+ int *errcode_ret);
+
+ CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromGLTexture2D)(
+ cl_context context,
+ cl_mem_flags flags,
+ cl_GLenum target,
+ cl_GLint miplevel,
+ cl_GLuint texture,
+ cl_int *errcode_ret);
+
+ CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromGLTexture3D)(
+ cl_context context,
+ cl_mem_flags flags,
+ cl_GLenum target,
+ cl_GLint miplevel,
+ cl_GLuint texture,
+ cl_int *errcode_ret);
+
+ CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromGLRenderbuffer)(
+ cl_context context,
+ cl_mem_flags flags,
+ cl_GLuint renderbuffer,
+ cl_int *errcode_ret);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clGetGLObjectInfo)(
+ cl_mem memobj,
+ cl_gl_object_type *gl_object_type,
+ cl_GLuint *gl_object_name);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clGetGLTextureInfo)(
+ cl_mem memobj,
+ cl_gl_texture_info param_name,
+ size_t param_value_size,
+ void *param_value,
+ size_t *param_value_size_ret);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireGLObjects)(
+ cl_command_queue command_queue,
+ cl_uint num_objects,
+ const cl_mem *mem_objects,
+ cl_uint num_events_in_wait_list,
+ const cl_event *event_wait_list,
+ cl_event *event);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseGLObjects)(
+ cl_command_queue command_queue,
+ cl_uint num_objects,
+ const cl_mem *mem_objects,
+ cl_uint num_events_in_wait_list,
+ const cl_event *event_wait_list,
+ cl_event *event);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clGetGLContextInfoKHR)(
+ const cl_context_properties *properties,
+ cl_gl_context_info param_name,
+ size_t param_value_size,
+ void *param_value,
+ size_t *param_value_size_ret);
+
+ void *clGetDeviceIDsFromD3D10KHR;
+ void *clCreateFromD3D10BufferKHR;
+ void *clCreateFromD3D10Texture2DKHR;
+ void *clCreateFromD3D10Texture3DKHR;
+ void *clEnqueueAcquireD3D10ObjectsKHR;
+ void *clEnqueueReleaseD3D10ObjectsKHR;
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clSetEventCallback)(
+ cl_event event,
+ cl_int type,
+ void (CL_CALLBACK *pfn_notify)(cl_event, cl_int, void *),
+ void *user_data);
+
+ CL_API_ENTRY cl_mem (CL_API_CALL *clCreateSubBuffer)(
+ cl_mem buffer,
+ cl_mem_flags flags,
+ cl_buffer_create_type buffer_create_type,
+ const void *buffer_create_info,
+ cl_int *errcode_ret);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clSetMemObjectDestructorCallback)(
+ cl_mem memobj,
+ void (CL_CALLBACK *pfn_notify)(cl_mem, void *),
+ void *user_data);
+
+ CL_API_ENTRY cl_event (CL_API_CALL *clCreateUserEvent)(
+ cl_context context,
+ cl_int *errcode_ret);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clSetUserEventStatus)(
+ cl_event event,
+ cl_int status);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReadBufferRect)(
+ cl_command_queue command_queue,
+ cl_mem buffer,
+ cl_bool blocking_read,
+ const size_t *buffer_origin,
+ const size_t *host_origin,
+ const size_t *region,
+ size_t buffer_row_pitch,
+ size_t buffer_slice_pitch,
+ size_t host_row_pitch,
+ size_t host_slice_pitch,
+ void *ptr,
+ cl_uint num_events_in_wait_list,
+ const cl_event *event_wait_list,
+ cl_event *event);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueWriteBufferRect)(
+ cl_command_queue command_queue,
+ cl_mem buffer,
+ cl_bool blocking_read,
+ const size_t *buffer_origin,
+ const size_t *host_origin,
+ const size_t *region,
+ size_t buffer_row_pitch,
+ size_t buffer_slice_pitch,
+ size_t host_row_pitch,
+ size_t host_slice_pitch,
+ const void *ptr,
+ cl_uint num_events_in_wait_list,
+ const cl_event *event_wait_list,
+ cl_event *event);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueCopyBufferRect)(
+ cl_command_queue command_queue,
+ cl_mem src_buffer,
+ cl_mem dst_buffer,
+ const size_t *src_origin,
+ const size_t *dst_origin,
+ const size_t *region,
+ size_t src_row_pitch,
+ size_t src_slice_pitch,
+ size_t dst_row_pitch,
+ size_t dst_slice_pitch,
+ cl_uint num_events_in_wait_list,
+ const cl_event *event_wait_list,
+ cl_event *event);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clCreateSubDevicesEXT)(
+ cl_device_id in_device,
+ const cl_device_partition_property_ext *partition_properties,
+ cl_uint num_entries,
+ cl_device_id *out_devices,
+ cl_uint *num_devices);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clRetainDeviceEXT)(
+ cl_device_id device);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clReleaseDeviceEXT)(
+ cl_device_id device);
+
+ CL_API_ENTRY cl_event (CL_API_CALL *clCreateEventFromGLsyncKHR)(
+ cl_context context,
+ cl_GLsync sync,
+ cl_int *errcode_ret);
+
+ void *clCreateSubDevices;
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clRetainDevice)(
+ cl_device_id device);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clReleaseDevice)(
+ cl_device_id device);
+
+ void *clCreateImage;
+
+ CL_API_ENTRY cl_program (CL_API_CALL *clCreateProgramWithBuiltInKernels)(
+ cl_context context,
+ cl_uint num_devices,
+ const cl_device_id *device_list,
+ const char *kernel_names,
+ cl_int *errcode_ret);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clCompileProgram)(
+ cl_program program,
+ cl_uint num_devices,
+ const cl_device_id *device_list,
+ const char *options,
+ cl_uint num_input_headers,
+ const cl_program *input_headers,
+ const char **header_include_names,
+ void (CL_CALLBACK *pfn_notify)(cl_program, void *),
+ void *user_data);
+
+ CL_API_ENTRY cl_program (CL_API_CALL *clLinkProgram)(
+ cl_context context,
+ cl_uint num_devices,
+ const cl_device_id *device_list,
+ const char *options,
+ cl_uint num_input_programs,
+ const cl_program *input_programs,
+ void (CL_CALLBACK *pfn_notify)(cl_program, void *),
+ void *user_data,
+ cl_int *errcode_ret);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clUnloadPlatformCompiler)(
+ cl_platform_id platform);
+
+ void *clGetKernelArgInfo;
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueFillBuffer)(
+ cl_command_queue command_queue,
+ cl_mem buffer,
+ const void *pattern,
+ size_t pattern_size,
+ size_t offset,
+ size_t cb,
+ cl_uint num_events_in_wait_list,
+ const cl_event *event_wait_list,
+ cl_event *event);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueFillImage)(
+ cl_command_queue command_queue,
+ cl_mem image,
+ const void *fill_color,
+ const size_t origin[3],
+ const size_t region[3],
+ cl_uint num_events_in_wait_list,
+ const cl_event *event_wait_list,
+ cl_event *event);
+
+ void *clEnqueueMigrateMemObjects;
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueMarkerWithWaitList)(
+ cl_command_queue command_queue,
+ cl_uint num_events_in_wait_list,
+ const cl_event *event_wait_list,
+ cl_event *event);
+
+ CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueBarrierWithWaitList)(
+ cl_command_queue command_queue,
+ cl_uint num_events_in_wait_list,
+ const cl_event *event_wait_list,
+ cl_event *event);
+
+ CL_API_ENTRY void *(CL_API_CALL *clGetExtensionFunctionAddressForPlatform)(
+ cl_platform_id platform,
+ const char *function_name);
+
+ CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromGLTexture)(
+ cl_context context,
+ cl_mem_flags flags,
+ cl_GLenum target,
+ cl_GLint miplevel,
+ cl_GLuint texture,
+ cl_int *errcode_ret);
+
+ void *clGetDeviceIDsFromD3D11KHR;
+ void *clCreateFromD3D11BufferKHR;
+ void *clCreateFromD3D11Texture2DKHR;
+ void *clCreateFromD3D11Texture3DKHR;
+ void *clCreateFromDX9MediaSurfaceKHR;
+ void *clEnqueueAcquireD3D11ObjectsKHR;
+ void *clEnqueueReleaseD3D11ObjectsKHR;
+ void *clGetDeviceIDsFromDX9MediaAdapterKHR;
+ void *clEnqueueAcquireDX9MediaSurfacesKHR;
+ void *clEnqueueReleaseDX9MediaSurfacesKHR;
+};
+
+namespace clover {
+ extern const _cl_icd_dispatch _dispatch;
+
+ cl_int
+ GetPlatformInfo(cl_platform_id d_platform, cl_platform_info param,
+ size_t size, void *r_buf, size_t *r_size);
+
+ void *
+ GetExtensionFunctionAddress(const char *p_name);
+
+ cl_int
+ IcdGetPlatformIDsKHR(cl_uint num_entries, cl_platform_id *rd_platforms,
+ cl_uint *rnum_platforms);
+}
+
+#endif