123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809 |
- /*****************************************************************************
- * opencl.h: OpenCL structures and defines
- *****************************************************************************
- * Copyright (C) 2012-2018 x264 project
- *
- * Authors: Steve Borho <sborho@multicorewareinc.com>
- * Anton Mitrofanov <BugMaster@narod.ru>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111, USA.
- *
- * This program is also available under a commercial proprietary license.
- * For more information, contact us at licensing@x264.com.
- *****************************************************************************/
- #ifndef X264_OPENCL_H
- #define X264_OPENCL_H
- #define CL_USE_DEPRECATED_OPENCL_1_1_APIS
- #include "extras/cl.h"
- #define OCL_API(ret, attr, name) typedef ret (attr *name##_func)
- /* Platform API */
- OCL_API(cl_int, CL_API_CALL, clGetPlatformIDs)
- ( cl_uint /* num_entries */,
- cl_platform_id * /* platforms */,
- cl_uint * /* num_platforms */);
- 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 */
- 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 */);
- 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 */);
- 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 */);
- OCL_API(cl_int, CL_API_CALL, clRetainDevice)
- ( cl_device_id /* device */);
- OCL_API(cl_int, CL_API_CALL, clReleaseDevice)
- ( cl_device_id /* device */);
- /* Context APIs */
- 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 */);
- 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 */);
- OCL_API(cl_int, CL_API_CALL, clRetainContext)
- ( cl_context /* context */);
- OCL_API(cl_int, CL_API_CALL, clReleaseContext)
- ( cl_context /* context */);
- 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 */
- 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 */);
- OCL_API(cl_int, CL_API_CALL, clRetainCommandQueue)
- ( cl_command_queue /* command_queue */);
- OCL_API(cl_int, CL_API_CALL, clReleaseCommandQueue)
- ( cl_command_queue /* command_queue */);
- 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 */
- 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 */);
- 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 */);
- 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 */);
- OCL_API(cl_int, CL_API_CALL, clRetainMemObject)
- ( cl_mem /* memobj */);
- OCL_API(cl_int, CL_API_CALL, clReleaseMemObject)
- ( cl_mem /* memobj */);
- 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 */);
- 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 */);
- 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 */);
- 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 */
- 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 */);
- OCL_API(cl_int, CL_API_CALL, clRetainSampler)
- ( cl_sampler /* sampler */);
- OCL_API(cl_int, CL_API_CALL, clReleaseSampler)
- ( cl_sampler /* sampler */);
- 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 */
- 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 */);
- 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 */);
- 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 */);
- OCL_API(cl_int, CL_API_CALL, clRetainProgram)
- ( cl_program /* program */);
- OCL_API(cl_int, CL_API_CALL, clReleaseProgram)
- ( cl_program /* program */);
- 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 */);
- 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 */);
- 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 */ );
- OCL_API(cl_int, CL_API_CALL, clUnloadPlatformCompiler)
- ( cl_platform_id /* platform */);
- 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 */);
- 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 */
- OCL_API(cl_kernel, CL_API_CALL, clCreateKernel)
- ( cl_program /* program */,
- const char * /* kernel_name */,
- cl_int * /* errcode_ret */);
- OCL_API(cl_int, CL_API_CALL, clCreateKernelsInProgram)
- ( cl_program /* program */,
- cl_uint /* num_kernels */,
- cl_kernel * /* kernels */,
- cl_uint * /* num_kernels_ret */);
- OCL_API(cl_int, CL_API_CALL, clRetainKernel)
- ( cl_kernel /* kernel */);
- OCL_API(cl_int, CL_API_CALL, clReleaseKernel)
- ( cl_kernel /* kernel */);
- OCL_API(cl_int, CL_API_CALL, clSetKernelArg)
- ( cl_kernel /* kernel */,
- cl_uint /* arg_index */,
- size_t /* arg_size */,
- const void * /* arg_value */);
- 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 */);
- 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 */);
- 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 */
- OCL_API(cl_int, CL_API_CALL, clWaitForEvents)
- ( cl_uint /* num_events */,
- const cl_event * /* event_list */);
- 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 */);
- OCL_API(cl_event, CL_API_CALL, clCreateUserEvent)
- ( cl_context /* context */,
- cl_int * /* errcode_ret */);
- OCL_API(cl_int, CL_API_CALL, clRetainEvent)
- ( cl_event /* event */);
- OCL_API(cl_int, CL_API_CALL, clReleaseEvent)
- ( cl_event /* event */);
- OCL_API(cl_int, CL_API_CALL, clSetUserEventStatus)
- ( cl_event /* event */,
- cl_int /* execution_status */);
- 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 */
- 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 */
- OCL_API(cl_int, CL_API_CALL, clFlush)
- ( cl_command_queue /* command_queue */);
- OCL_API(cl_int, CL_API_CALL, clFinish)
- ( cl_command_queue /* command_queue */);
- /* Enqueued Commands APIs */
- 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 */);
- 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 */);
- 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 */);
- 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 */);
- 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 */);
- 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 */);
- 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 */);
- 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 */);
- 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 */);
- 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 */);
- 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 */);
- 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 */);
- 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 */);
- 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 */);
- 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 */);
- 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 */);
- 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 */);
- 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 */);
- 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 */);
- 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 */);
- 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 */);
- 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.
- */
- OCL_API(void *, CL_API_CALL, clGetExtensionFunctionAddressForPlatform)
- ( cl_platform_id /* platform */,
- const char * /* func_name */);
- // Deprecated OpenCL 1.1 APIs
- OCL_API(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 */);
- OCL_API(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 */);
- OCL_API(cl_int, CL_API_CALL, clEnqueueMarker)
- ( cl_command_queue /* command_queue */,
- cl_event * /* event */);
- OCL_API(cl_int, CL_API_CALL, clEnqueueWaitForEvents)
- ( cl_command_queue /* command_queue */,
- cl_uint /* num_events */,
- const cl_event * /* event_list */);
- OCL_API(cl_int, CL_API_CALL, clEnqueueBarrier)
- ( cl_command_queue /* command_queue */);
- OCL_API(cl_int, CL_API_CALL, clUnloadCompiler)
- ( void);
- OCL_API(void *, CL_API_CALL, clGetExtensionFunctionAddress)
- ( const char * /* func_name */);
- #define OCL_DECLARE_FUNC(name) name##_func name
- typedef struct
- {
- void *library;
- OCL_DECLARE_FUNC( clBuildProgram );
- OCL_DECLARE_FUNC( clCreateBuffer );
- OCL_DECLARE_FUNC( clCreateCommandQueue );
- OCL_DECLARE_FUNC( clCreateContext );
- OCL_DECLARE_FUNC( clCreateImage2D );
- OCL_DECLARE_FUNC( clCreateKernel );
- OCL_DECLARE_FUNC( clCreateProgramWithBinary );
- OCL_DECLARE_FUNC( clCreateProgramWithSource );
- OCL_DECLARE_FUNC( clEnqueueCopyBuffer );
- OCL_DECLARE_FUNC( clEnqueueMapBuffer );
- OCL_DECLARE_FUNC( clEnqueueNDRangeKernel );
- OCL_DECLARE_FUNC( clEnqueueReadBuffer );
- OCL_DECLARE_FUNC( clEnqueueWriteBuffer );
- OCL_DECLARE_FUNC( clFinish );
- OCL_DECLARE_FUNC( clGetCommandQueueInfo );
- OCL_DECLARE_FUNC( clGetDeviceIDs );
- OCL_DECLARE_FUNC( clGetDeviceInfo );
- OCL_DECLARE_FUNC( clGetKernelWorkGroupInfo );
- OCL_DECLARE_FUNC( clGetPlatformIDs );
- OCL_DECLARE_FUNC( clGetProgramBuildInfo );
- OCL_DECLARE_FUNC( clGetProgramInfo );
- OCL_DECLARE_FUNC( clGetSupportedImageFormats );
- OCL_DECLARE_FUNC( clReleaseCommandQueue );
- OCL_DECLARE_FUNC( clReleaseContext );
- OCL_DECLARE_FUNC( clReleaseKernel );
- OCL_DECLARE_FUNC( clReleaseMemObject );
- OCL_DECLARE_FUNC( clReleaseProgram );
- OCL_DECLARE_FUNC( clSetKernelArg );
- } x264_opencl_function_t;
- /* Number of downscale resolutions to use for motion search */
- #define NUM_IMAGE_SCALES 4
- /* Number of PCIe copies that can be queued before requiring a flush */
- #define MAX_FINISH_COPIES 1024
- /* Size (in bytes) of the page-locked buffer used for PCIe xfers */
- #define PAGE_LOCKED_BUF_SIZE 32 * 1024 * 1024
- typedef struct
- {
- x264_opencl_function_t *ocl;
- cl_context context;
- cl_device_id device;
- cl_command_queue queue;
- cl_program lookahead_program;
- cl_int last_buf;
- cl_mem page_locked_buffer;
- char *page_locked_ptr;
- int pl_occupancy;
- struct
- {
- void *src;
- void *dest;
- int bytes;
- } copies[MAX_FINISH_COPIES];
- int num_copies;
- int b_device_AMD_SI;
- int b_fatal_error;
- int lookahead_thread_pri;
- int opencl_thread_pri;
- /* downscale lowres luma */
- cl_kernel downscale_hpel_kernel;
- cl_kernel downscale_kernel1;
- cl_kernel downscale_kernel2;
- cl_mem luma_16x16_image[2];
- /* weightp filtering */
- cl_kernel weightp_hpel_kernel;
- cl_kernel weightp_scaled_images_kernel;
- cl_mem weighted_scaled_images[NUM_IMAGE_SCALES];
- cl_mem weighted_luma_hpel;
- /* intra */
- cl_kernel memset_kernel;
- cl_kernel intra_kernel;
- cl_kernel rowsum_intra_kernel;
- cl_mem row_satds[2];
- /* hierarchical motion estimation */
- cl_kernel hme_kernel;
- cl_kernel subpel_refine_kernel;
- cl_mem mv_buffers[2];
- cl_mem lowres_mv_costs;
- cl_mem mvp_buffer;
- /* bidir */
- cl_kernel mode_select_kernel;
- cl_kernel rowsum_inter_kernel;
- cl_mem lowres_costs[2];
- cl_mem frame_stats[2]; /* cost_est, cost_est_aq, intra_mbs */
- } x264_opencl_t;
- typedef struct
- {
- x264_opencl_function_t *ocl;
- cl_mem scaled_image2Ds[NUM_IMAGE_SCALES];
- cl_mem luma_hpel;
- cl_mem inv_qscale_factor;
- cl_mem intra_cost;
- cl_mem lowres_mvs0;
- cl_mem lowres_mvs1;
- cl_mem lowres_mv_costs0;
- cl_mem lowres_mv_costs1;
- } x264_frame_opencl_t;
- typedef struct x264_frame x264_frame;
- #define x264_opencl_load_library x264_template(opencl_load_library)
- x264_opencl_function_t *x264_opencl_load_library( void );
- #define x264_opencl_close_library x264_template(opencl_close_library)
- void x264_opencl_close_library( x264_opencl_function_t *ocl );
- #define x264_opencl_lookahead_init x264_template(opencl_lookahead_init)
- int x264_opencl_lookahead_init( x264_t *h );
- #define x264_opencl_lookahead_delete x264_template(opencl_lookahead_delete)
- void x264_opencl_lookahead_delete( x264_t *h );
- #define x264_opencl_frame_delete x264_template(opencl_frame_delete)
- void x264_opencl_frame_delete( x264_frame *frame );
- #endif
|