diff options
Diffstat (limited to 'libhb/opencl.h')
-rw-r--r-- | libhb/opencl.h | 749 |
1 files changed, 0 insertions, 749 deletions
diff --git a/libhb/opencl.h b/libhb/opencl.h deleted file mode 100644 index c68dfb8ce..000000000 --- a/libhb/opencl.h +++ /dev/null @@ -1,749 +0,0 @@ -/* opencl.h - - Copyright (c) 2003-2017 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" -#include "openclwrapper.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)) - -#ifdef __APPLE__ -#pragma mark - -#pragma mark OpenCL API -#endif // __APPLE__ - -/* 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 */); - -#ifdef __APPLE__ -#pragma mark - -#endif // __APPLE__ - -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(clReleaseMemObject); - HB_OCL_FUNC_DECL(clReleaseProgram); - HB_OCL_FUNC_DECL(clSetKernelArg); - HB_OCL_FUNC_DECL(clWaitForEvents); -} hb_opencl_library_t; - -hb_opencl_library_t* hb_opencl_library_init(); -void hb_opencl_library_close(hb_opencl_library_t **_opencl); - -/* - * Convenience pointer to a single shared OpenCL library wrapper. - * - * It can be initialized and closed via hb_ocl_init/close(). - */ -extern hb_opencl_library_t *hb_ocl; -int hb_ocl_init(); -void hb_ocl_close(); - -typedef struct hb_opencl_device_s -{ - cl_platform_id platform; - cl_device_type type; - cl_device_id id; - char version[128]; - char driver[128]; - char vendor[128]; - char name[128]; - enum - { - HB_OCL_VENDOR_AMD, - HB_OCL_VENDOR_NVIDIA, - HB_OCL_VENDOR_INTEL, - HB_OCL_VENDOR_OTHER, - } ocl_vendor; -} hb_opencl_device_t; - -int hb_opencl_available(); -void hb_opencl_info_print(); - -/* OpenCL scaling */ -typedef struct hb_oclscale_s -{ - int initialized; - // bicubic scale weights - cl_mem bicubic_x_weights; - cl_mem bicubic_y_weights; - cl_float xscale; - cl_float yscale; - int width; - int height; - // horizontal scaling and vertical scaling kernel handle - cl_kernel m_kernel; - int use_ocl_mem; // 0 use host memory. 1 use gpu oclmem -} hb_oclscale_t; - -int hb_ocl_scale(hb_buffer_t *in, hb_buffer_t *out, int *crop, - hb_oclscale_t *os); - -/* Utilities */ -#define HB_OCL_BUF_CREATE(ocl_lib, out, flags, size) \ -{ \ - out = ocl_lib->clCreateBuffer(kenv->context, flags, size, NULL, &status); \ - if (CL_SUCCESS != status) \ - { \ - return -1; \ - } \ -} - -#define HB_OCL_BUF_FREE(ocl_lib, buf) \ -{ \ - if (buf != NULL) \ - { \ - ocl_lib->clReleaseMemObject(buf); \ - buf = NULL; \ - } \ -} - -#define HB_OCL_CHECK(method, ...) \ -{ \ - status = method(__VA_ARGS__); \ - if (status != CL_SUCCESS) \ - { \ - hb_error("%s:%d (%s) error: %d\n",__FUNCTION__,__LINE__,#method,status);\ - return status; \ - } \ -} - -#endif//HB_OPENCL_H |