diff options
author | Rodeo <[email protected]> | 2013-11-02 20:48:34 +0000 |
---|---|---|
committer | Rodeo <[email protected]> | 2013-11-02 20:48:34 +0000 |
commit | 4a08a924b074b2691950bf0beddecdb73658104f (patch) | |
tree | 1d69d7392509310fd3a5cd57255d0308858c3490 /libhb/opencl.h | |
parent | b94f4686f052a9129c54b0bb5af39d6e86554872 (diff) |
OpenCL: initial work on a new OpenCl wrapper, which will eventually phase out the existing one.
Based on an x264 patch by Anton Mitrofanov.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@5870 b64f7644-9d1e-0410-96f1-a4d463321fa5
Diffstat (limited to 'libhb/opencl.h')
-rw-r--r-- | libhb/opencl.h | 668 |
1 files changed, 668 insertions, 0 deletions
diff --git a/libhb/opencl.h b/libhb/opencl.h new file mode 100644 index 000000000..93171ebd0 --- /dev/null +++ b/libhb/opencl.h @@ -0,0 +1,668 @@ +/* opencl.h + + Copyright (c) 2003-2013 HandBrake Team + This file is part of the HandBrake source code + Homepage: <http://handbrake.fr/>. + It may be used under the terms of the GNU General Public License v2. + For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html + */ + +#ifndef HB_OPENCL_H +#define HB_OPENCL_H + +#include "extras/cl.h" + +// we only support OpenCL 1.1 or later +#define HB_OCL_MINVERSION_MAJOR 1 +#define HB_OCL_MINVERSION_MINOR 1 + +#define HB_OCL_FUNC_TYPE(name) hb_opencl_##name##_func +#define HB_OCL_FUNC_DECL(name) HB_OCL_FUNC_TYPE(name) name +#define HB_OCL_API(ret, attr, name) typedef ret (attr* HB_OCL_FUNC_TYPE(name)) + +#pragma mark - +#pragma mark OpenCL API + +/* Platform API */ +HB_OCL_API(cl_int, CL_API_CALL, clGetPlatformIDs) +(cl_uint /* num_entries */, + cl_platform_id * /* platforms */, + cl_uint * /* num_platforms */); + +HB_OCL_API(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 */); + +/* Device APIs */ +HB_OCL_API(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 */); + +HB_OCL_API(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 */); + +HB_OCL_API(cl_int, CL_API_CALL, clCreateSubDevices) +(cl_device_id /* in_device */, + const cl_device_partition_property * /* properties */, + cl_uint /* num_devices */, + cl_device_id * /* out_devices */, + cl_uint * /* num_devices_ret */); + +HB_OCL_API(cl_int, CL_API_CALL, clRetainDevice) +(cl_device_id /* device */); + +HB_OCL_API(cl_int, CL_API_CALL, clReleaseDevice) +(cl_device_id /* device */); + +/* Context APIs */ +HB_OCL_API(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 */); + +HB_OCL_API(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 */); + +HB_OCL_API(cl_int, CL_API_CALL, clRetainContext) +(cl_context /* context */); + +HB_OCL_API(cl_int, CL_API_CALL, clReleaseContext) +(cl_context /* context */); + +HB_OCL_API(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 */); + +/* Command Queue APIs */ +HB_OCL_API(cl_command_queue, CL_API_CALL, clCreateCommandQueue) +(cl_context /* context */, + cl_device_id /* device */, + cl_command_queue_properties /* properties */, + cl_int * /* errcode_ret */); + +HB_OCL_API(cl_int, CL_API_CALL, clRetainCommandQueue) +(cl_command_queue /* command_queue */); + +HB_OCL_API(cl_int, CL_API_CALL, clReleaseCommandQueue) +(cl_command_queue /* command_queue */); + +HB_OCL_API(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 */); + +/* Memory Object APIs */ +HB_OCL_API(cl_mem, CL_API_CALL, clCreateBuffer) +(cl_context /* context */, + cl_mem_flags /* flags */, + size_t /* size */, + void * /* host_ptr */, + cl_int * /* errcode_ret */); + +HB_OCL_API(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 */); + +HB_OCL_API(cl_mem, CL_API_CALL, clCreateImage) +(cl_context /* context */, + cl_mem_flags /* flags */, + const cl_image_format * /* image_format */, + const cl_image_desc * /* image_desc */, + void * /* host_ptr */, + cl_int * /* errcode_ret */); + +HB_OCL_API(cl_int, CL_API_CALL, clRetainMemObject) +(cl_mem /* memobj */); + +HB_OCL_API(cl_int, CL_API_CALL, clReleaseMemObject) +(cl_mem /* memobj */); + +HB_OCL_API(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 */); + +HB_OCL_API(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 */); + +HB_OCL_API(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 */); + +HB_OCL_API(cl_int, CL_API_CALL, clSetMemObjectDestructorCallback) +(cl_mem /* memobj */, + void (CL_CALLBACK * /*pfn_notify*/)( cl_mem /* memobj */, void* /*user_data*/), + void * /*user_data */ ); + +/* Sampler APIs */ +HB_OCL_API(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 */); + +HB_OCL_API(cl_int, CL_API_CALL, clRetainSampler) +(cl_sampler /* sampler */); + +HB_OCL_API(cl_int, CL_API_CALL, clReleaseSampler) +(cl_sampler /* sampler */); + +HB_OCL_API(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 */); + +/* Program Object APIs */ +HB_OCL_API(cl_program, CL_API_CALL, clCreateProgramWithSource) +(cl_context /* context */, + cl_uint /* count */, + const char ** /* strings */, + const size_t * /* lengths */, + cl_int * /* errcode_ret */); + +HB_OCL_API(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 */); + +HB_OCL_API(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 */); + +HB_OCL_API(cl_int, CL_API_CALL, clRetainProgram) +(cl_program /* program */); + +HB_OCL_API(cl_int, CL_API_CALL, clReleaseProgram) +(cl_program /* program */); + +HB_OCL_API(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 /* program */, void * /* user_data */), + void * /* user_data */); + +HB_OCL_API(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 /* program */, void * /* user_data */), + void * /* user_data */); + +HB_OCL_API(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 /* program */, void * /* user_data */), + void * /* user_data */, + cl_int * /* errcode_ret */ ); + + +HB_OCL_API(cl_int, CL_API_CALL, clUnloadPlatformCompiler) +(cl_platform_id /* platform */); + +HB_OCL_API(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 */); + +HB_OCL_API(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 */); + +/* Kernel Object APIs */ +HB_OCL_API(cl_kernel, CL_API_CALL, clCreateKernel) +(cl_program /* program */, + const char * /* kernel_name */, + cl_int * /* errcode_ret */); + +HB_OCL_API(cl_int, CL_API_CALL, clCreateKernelsInProgram) +(cl_program /* program */, + cl_uint /* num_kernels */, + cl_kernel * /* kernels */, + cl_uint * /* num_kernels_ret */); + +HB_OCL_API(cl_int, CL_API_CALL, clRetainKernel) +(cl_kernel /* kernel */); + +HB_OCL_API(cl_int, CL_API_CALL, clReleaseKernel) +(cl_kernel /* kernel */); + +HB_OCL_API(cl_int, CL_API_CALL, clSetKernelArg) +(cl_kernel /* kernel */, + cl_uint /* arg_index */, + size_t /* arg_size */, + const void * /* arg_value */); + +HB_OCL_API(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 */); + +HB_OCL_API(cl_int, CL_API_CALL, clGetKernelArgInfo) +(cl_kernel /* kernel */, + cl_uint /* arg_indx */, + cl_kernel_arg_info /* param_name */, + size_t /* param_value_size */, + void * /* param_value */, + size_t * /* param_value_size_ret */); + +HB_OCL_API(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 */); + +/* Event Object APIs */ +HB_OCL_API(cl_int, CL_API_CALL, clWaitForEvents) +(cl_uint /* num_events */, + const cl_event * /* event_list */); + +HB_OCL_API(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 */); + +HB_OCL_API(cl_event, CL_API_CALL, clCreateUserEvent) +(cl_context /* context */, + cl_int * /* errcode_ret */); + +HB_OCL_API(cl_int, CL_API_CALL, clRetainEvent) +(cl_event /* event */); + +HB_OCL_API(cl_int, CL_API_CALL, clReleaseEvent) +(cl_event /* event */); + +HB_OCL_API(cl_int, CL_API_CALL, clSetUserEventStatus) +(cl_event /* event */, + cl_int /* execution_status */); + +HB_OCL_API(cl_int, CL_API_CALL, clSetEventCallback) +(cl_event /* event */, + cl_int /* command_exec_callback_type */, + void (CL_CALLBACK * /* pfn_notify */)(cl_event, cl_int, void *), + void * /* user_data */); + +/* Profiling APIs */ +HB_OCL_API(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 */); + +/* Flush and Finish APIs */ +HB_OCL_API(cl_int, CL_API_CALL, clFlush) +(cl_command_queue /* command_queue */); + +HB_OCL_API(cl_int, CL_API_CALL, clFinish) +(cl_command_queue /* command_queue */); + +/* Enqueued Commands APIs */ +HB_OCL_API(cl_int, CL_API_CALL, clEnqueueReadBuffer) +(cl_command_queue /* command_queue */, + cl_mem /* buffer */, + cl_bool /* blocking_read */, + size_t /* offset */, + size_t /* size */, + void * /* ptr */, + cl_uint /* num_events_in_wait_list */, + const cl_event * /* event_wait_list */, + cl_event * /* event */); + +HB_OCL_API(cl_int, CL_API_CALL, clEnqueueReadBufferRect) +(cl_command_queue /* command_queue */, + cl_mem /* buffer */, + cl_bool /* blocking_read */, + const size_t * /* buffer_offset */, + const size_t * /* host_offset */, + 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 */); + +HB_OCL_API(cl_int, CL_API_CALL, clEnqueueWriteBuffer) +(cl_command_queue /* command_queue */, + cl_mem /* buffer */, + cl_bool /* blocking_write */, + size_t /* offset */, + size_t /* size */, + const void * /* ptr */, + cl_uint /* num_events_in_wait_list */, + const cl_event * /* event_wait_list */, + cl_event * /* event */); + +HB_OCL_API(cl_int, CL_API_CALL, clEnqueueWriteBufferRect) +(cl_command_queue /* command_queue */, + cl_mem /* buffer */, + cl_bool /* blocking_write */, + const size_t * /* buffer_offset */, + const size_t * /* host_offset */, + 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 */); + +HB_OCL_API(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 /* size */, + cl_uint /* num_events_in_wait_list */, + const cl_event * /* event_wait_list */, + cl_event * /* event */); + +HB_OCL_API(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 /* size */, + cl_uint /* num_events_in_wait_list */, + const cl_event * /* event_wait_list */, + cl_event * /* event */); + +HB_OCL_API(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 */); + +HB_OCL_API(cl_int, CL_API_CALL, clEnqueueReadImage) +(cl_command_queue /* command_queue */, + cl_mem /* image */, + cl_bool /* blocking_read */, + const size_t * /* origin[3] */, + const size_t * /* region[3] */, + 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 */); + +HB_OCL_API(cl_int, CL_API_CALL, clEnqueueWriteImage) +(cl_command_queue /* command_queue */, + cl_mem /* image */, + cl_bool /* blocking_write */, + const size_t * /* origin[3] */, + const size_t * /* region[3] */, + 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 */); + +HB_OCL_API(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 */); + +HB_OCL_API(cl_int, CL_API_CALL, clEnqueueCopyImage) +(cl_command_queue /* command_queue */, + cl_mem /* src_image */, + cl_mem /* dst_image */, + const size_t * /* src_origin[3] */, + const size_t * /* dst_origin[3] */, + const size_t * /* region[3] */, + cl_uint /* num_events_in_wait_list */, + const cl_event * /* event_wait_list */, + cl_event * /* event */); + +HB_OCL_API(cl_int, CL_API_CALL, clEnqueueCopyImageToBuffer) +(cl_command_queue /* command_queue */, + cl_mem /* src_image */, + cl_mem /* dst_buffer */, + const size_t * /* src_origin[3] */, + const size_t * /* region[3] */, + size_t /* dst_offset */, + cl_uint /* num_events_in_wait_list */, + const cl_event * /* event_wait_list */, + cl_event * /* event */); + +HB_OCL_API(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[3] */, + const size_t * /* region[3] */, + cl_uint /* num_events_in_wait_list */, + const cl_event * /* event_wait_list */, + cl_event * /* event */); + +HB_OCL_API(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 /* size */, + cl_uint /* num_events_in_wait_list */, + const cl_event * /* event_wait_list */, + cl_event * /* event */, + cl_int * /* errcode_ret */); + +HB_OCL_API(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[3] */, + const size_t * /* region[3] */, + 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 */); + +HB_OCL_API(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 */); + +HB_OCL_API(cl_int, CL_API_CALL, clEnqueueMigrateMemObjects) +(cl_command_queue /* command_queue */, + cl_uint /* num_mem_objects */, + const cl_mem * /* mem_objects */, + cl_mem_migration_flags /* flags */, + cl_uint /* num_events_in_wait_list */, + const cl_event * /* event_wait_list */, + cl_event * /* event */); + +HB_OCL_API(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 */); + +HB_OCL_API(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 */); + +HB_OCL_API(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 */); + +HB_OCL_API(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 */); + +HB_OCL_API(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 */); + + +/* Extension function access + * + * Returns the extension function address for the given function name, + * or NULL if a valid function can not be found. The client must + * check to make sure the address is not NULL, before using or + * calling the returned function address. + */ +HB_OCL_API(void *, CL_API_CALL, clGetExtensionFunctionAddressForPlatform) +(cl_platform_id /* platform */, + const char * /* func_name */); + +#pragma mark - + +typedef struct hb_opencl_library_s +{ + void *library; + + /* Pointers to select OpenCL API functions */ + HB_OCL_FUNC_DECL(clBuildProgram); + HB_OCL_FUNC_DECL(clCreateBuffer); + HB_OCL_FUNC_DECL(clCreateCommandQueue); + HB_OCL_FUNC_DECL(clCreateContextFromType); + HB_OCL_FUNC_DECL(clCreateKernel); + HB_OCL_FUNC_DECL(clCreateProgramWithBinary); + HB_OCL_FUNC_DECL(clCreateProgramWithSource); + HB_OCL_FUNC_DECL(clEnqueueCopyBuffer); + HB_OCL_FUNC_DECL(clEnqueueMapBuffer); + HB_OCL_FUNC_DECL(clEnqueueNDRangeKernel); + HB_OCL_FUNC_DECL(clEnqueueReadBuffer); + HB_OCL_FUNC_DECL(clEnqueueUnmapMemObject); + HB_OCL_FUNC_DECL(clEnqueueWriteBuffer); + HB_OCL_FUNC_DECL(clFlush); + HB_OCL_FUNC_DECL(clGetCommandQueueInfo); + HB_OCL_FUNC_DECL(clGetContextInfo); + HB_OCL_FUNC_DECL(clGetDeviceIDs); + HB_OCL_FUNC_DECL(clGetDeviceInfo); + HB_OCL_FUNC_DECL(clGetPlatformIDs); + HB_OCL_FUNC_DECL(clGetPlatformInfo); + HB_OCL_FUNC_DECL(clGetProgramBuildInfo); + HB_OCL_FUNC_DECL(clGetProgramInfo); + HB_OCL_FUNC_DECL(clReleaseCommandQueue); + HB_OCL_FUNC_DECL(clReleaseContext); + HB_OCL_FUNC_DECL(clReleaseEvent); + HB_OCL_FUNC_DECL(clReleaseKernel); + HB_OCL_FUNC_DECL(clReleaseProgram); + HB_OCL_FUNC_DECL(clSetKernelArg); + HB_OCL_FUNC_DECL(clWaitForEvents); +} hb_opencl_library_t; + +int hb_opencl_library_open (hb_opencl_library_t *opencl); +void hb_opencl_library_close(hb_opencl_library_t *opencl); + +int hb_opencl_available(); +void hb_opencl_info_print(); + +#endif//HB_OPENCL_H |