#include "xsched/utils/function.h"
#include "xsched/opencl/hal/driver.h"
using namespace xsched::opencl;
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::GetPlatformIDs, cl_int, clGetPlatformIDs, cl_uint, num_entries, cl_platform_id *, platforms, cl_uint *, num_platforms);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::GetPlatformInfo, cl_int, clGetPlatformInfo, cl_platform_id, platform, cl_platform_info, param_name, size_t, param_value_size, void *, param_value, size_t *, param_value_size_ret);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::GetDeviceIDs, cl_int, clGetDeviceIDs, cl_platform_id, platform, cl_device_type, device_type, cl_uint, num_entries, cl_device_id *, devices, cl_uint *, num_devices);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::GetDeviceInfo, cl_int, clGetDeviceInfo, cl_device_id, device, cl_device_info, param_name, size_t, param_value_size, void *, param_value, size_t *, param_value_size_ret);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::CreateSubDevices, cl_int, 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);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::RetainDevice, cl_int, clRetainDevice, cl_device_id, device);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::ReleaseDevice, cl_int, clReleaseDevice, cl_device_id, device);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::SetDefaultDeviceCommandQueue, cl_int, clSetDefaultDeviceCommandQueue, cl_context, context, cl_device_id, device, cl_command_queue, command_queue);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::GetDeviceAndHostTimer, cl_int, clGetDeviceAndHostTimer, cl_device_id, device, cl_ulong *, device_timestamp, cl_ulong *, host_timestamp);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::GetHostTimer, cl_int, clGetHostTimer, cl_device_id, device, cl_ulong *, host_timestamp);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::CreateContext, cl_context, clCreateContext, const cl_context_properties *, properties, cl_uint, num_devices, const cl_device_id *, devices, clCreateContext_arg3_t, pfn_notify, void *, user_data, cl_int *, errcode_ret);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::CreateContextFromType, cl_context, clCreateContextFromType, const cl_context_properties *, properties, cl_device_type, device_type, clCreateContextFromType_arg2_t, pfn_notify, void *, user_data, cl_int *, errcode_ret);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::RetainContext, cl_int, clRetainContext, cl_context, context);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::ReleaseContext, cl_int, clReleaseContext, cl_context, context);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::GetContextInfo, cl_int, clGetContextInfo, cl_context, context, cl_context_info, param_name, size_t, param_value_size, void *, param_value, size_t *, param_value_size_ret);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::SetContextDestructorCallback, cl_int, clSetContextDestructorCallback, cl_context, context, clSetContextDestructorCallback_arg1_t, pfn_notify, void *, user_data);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::CreateCommandQueueWithProperties, cl_command_queue, clCreateCommandQueueWithProperties, cl_context, context, cl_device_id, device, const cl_queue_properties *, properties, cl_int *, errcode_ret);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::RetainCommandQueue, cl_int, clRetainCommandQueue, cl_command_queue, command_queue);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::ReleaseCommandQueue, cl_int, clReleaseCommandQueue, cl_command_queue, command_queue);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::GetCommandQueueInfo, cl_int, 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);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::CreateBuffer, cl_mem, clCreateBuffer, cl_context, context, cl_mem_flags, flags, size_t, size, void *, host_ptr, cl_int *, errcode_ret);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::CreateSubBuffer, cl_mem, clCreateSubBuffer, cl_mem, buffer, cl_mem_flags, flags, cl_buffer_create_type, buffer_create_type, const void *, buffer_create_info, cl_int *, errcode_ret);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::CreateImage, cl_mem, 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);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::CreatePipe, cl_mem, clCreatePipe, cl_context, context, cl_mem_flags, flags, cl_uint, pipe_packet_size, cl_uint, pipe_max_packets, const cl_pipe_properties *, properties, cl_int *, errcode_ret);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::CreateBufferWithProperties, cl_mem, clCreateBufferWithProperties, cl_context, context, const cl_mem_properties *, properties, cl_mem_flags, flags, size_t, size, void *, host_ptr, cl_int *, errcode_ret);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::CreateImageWithProperties, cl_mem, clCreateImageWithProperties, cl_context, context, const cl_mem_properties *, properties, cl_mem_flags, flags, const cl_image_format *, image_format, const cl_image_desc *, image_desc, void *, host_ptr, cl_int *, errcode_ret);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::RetainMemObject, cl_int, clRetainMemObject, cl_mem, memobj);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::ReleaseMemObject, cl_int, clReleaseMemObject, cl_mem, memobj);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::GetSupportedImageFormats, cl_int, 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);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::GetMemObjectInfo, cl_int, clGetMemObjectInfo, cl_mem, memobj, cl_mem_info, param_name, size_t, param_value_size, void *, param_value, size_t *, param_value_size_ret);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::GetImageInfo, cl_int, clGetImageInfo, cl_mem, image, cl_image_info, param_name, size_t, param_value_size, void *, param_value, size_t *, param_value_size_ret);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::GetPipeInfo, cl_int, clGetPipeInfo, cl_mem, pipe, cl_pipe_info, param_name, size_t, param_value_size, void *, param_value, size_t *, param_value_size_ret);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::SetMemObjectDestructorCallback, cl_int, clSetMemObjectDestructorCallback, cl_mem, memobj, clSetMemObjectDestructorCallback_arg1_t, pfn_notify, void *, user_data);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::SVMAlloc, void *, clSVMAlloc, cl_context, context, cl_svm_mem_flags, flags, size_t, size, cl_uint, alignment);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::SVMFree, void, clSVMFree, cl_context, context, void *, svm_pointer);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::CreateSamplerWithProperties, cl_sampler, clCreateSamplerWithProperties, cl_context, context, const cl_sampler_properties *, sampler_properties, cl_int *, errcode_ret);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::RetainSampler, cl_int, clRetainSampler, cl_sampler, sampler);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::ReleaseSampler, cl_int, clReleaseSampler, cl_sampler, sampler);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::GetSamplerInfo, cl_int, clGetSamplerInfo, cl_sampler, sampler, cl_sampler_info, param_name, size_t, param_value_size, void *, param_value, size_t *, param_value_size_ret);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::CreateProgramWithSource, cl_program, clCreateProgramWithSource, cl_context, context, cl_uint, count, const char **, strings, const size_t *, lengths, cl_int *, errcode_ret);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::CreateProgramWithBinary, cl_program, 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);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::CreateProgramWithBuiltInKernels, cl_program, clCreateProgramWithBuiltInKernels, cl_context, context, cl_uint, num_devices, const cl_device_id *, device_list, const char *, kernel_names, cl_int *, errcode_ret);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::CreateProgramWithIL, cl_program, clCreateProgramWithIL, cl_context, context, const void *, il, size_t, length, cl_int *, errcode_ret);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::RetainProgram, cl_int, clRetainProgram, cl_program, program);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::ReleaseProgram, cl_int, clReleaseProgram, cl_program, program);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::BuildProgram, cl_int, clBuildProgram, cl_program, program, cl_uint, num_devices, const cl_device_id *, device_list, const char *, options, clBuildProgram_arg4_t, pfn_notify, void *, user_data);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::CompileProgram, cl_int, 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, clCompileProgram_arg7_t, pfn_notify, void *, user_data);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::LinkProgram, cl_program, 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, clLinkProgram_arg6_t, pfn_notify, void *, user_data, cl_int *, errcode_ret);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::SetProgramReleaseCallback, cl_int, clSetProgramReleaseCallback, cl_program, program, clSetProgramReleaseCallback_arg1_t, pfn_notify, void *, user_data);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::SetProgramSpecializationConstant, cl_int, clSetProgramSpecializationConstant, cl_program, program, cl_uint, spec_id, size_t, spec_size, const void *, spec_value);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::UnloadPlatformCompiler, cl_int, clUnloadPlatformCompiler, cl_platform_id, platform);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::GetProgramInfo, cl_int, clGetProgramInfo, cl_program, program, cl_program_info, param_name, size_t, param_value_size, void *, param_value, size_t *, param_value_size_ret);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::GetProgramBuildInfo, cl_int, 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);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::CreateKernel, cl_kernel, clCreateKernel, cl_program, program, const char *, kernel_name, cl_int *, errcode_ret);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::CreateKernelsInProgram, cl_int, clCreateKernelsInProgram, cl_program, program, cl_uint, num_kernels, cl_kernel *, kernels, cl_uint *, num_kernels_ret);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::CloneKernel, cl_kernel, clCloneKernel, cl_kernel, source_kernel, cl_int *, errcode_ret);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::RetainKernel, cl_int, clRetainKernel, cl_kernel, kernel);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::ReleaseKernel, cl_int, clReleaseKernel, cl_kernel, kernel);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::SetKernelArg, cl_int, clSetKernelArg, cl_kernel, kernel, cl_uint, arg_index, size_t, arg_size, const void *, arg_value);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::SetKernelArgSVMPointer, cl_int, clSetKernelArgSVMPointer, cl_kernel, kernel, cl_uint, arg_index, const void *, arg_value);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::SetKernelExecInfo, cl_int, clSetKernelExecInfo, cl_kernel, kernel, cl_kernel_exec_info, param_name, size_t, param_value_size, const void *, param_value);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::GetKernelInfo, cl_int, clGetKernelInfo, cl_kernel, kernel, cl_kernel_info, param_name, size_t, param_value_size, void *, param_value, size_t *, param_value_size_ret);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::GetKernelArgInfo, cl_int, 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);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::GetKernelWorkGroupInfo, cl_int, 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);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::GetKernelSubGroupInfo, cl_int, clGetKernelSubGroupInfo, cl_kernel, kernel, cl_device_id, device, cl_kernel_sub_group_info, param_name, size_t, input_value_size, const void *, input_value, size_t, param_value_size, void *, param_value, size_t *, param_value_size_ret);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::WaitForEvents, cl_int, clWaitForEvents, cl_uint, num_events, const cl_event *, event_list);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::GetEventInfo, cl_int, clGetEventInfo, cl_event, event, cl_event_info, param_name, size_t, param_value_size, void *, param_value, size_t *, param_value_size_ret);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::CreateUserEvent, cl_event, clCreateUserEvent, cl_context, context, cl_int *, errcode_ret);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::RetainEvent, cl_int, clRetainEvent, cl_event, event);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::ReleaseEvent, cl_int, clReleaseEvent, cl_event, event);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::SetUserEventStatus, cl_int, clSetUserEventStatus, cl_event, event, cl_int, execution_status);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::SetEventCallback, cl_int, clSetEventCallback, cl_event, event, cl_int, command_exec_callback_type, clSetEventCallback_arg2_t, pfn_notify, void *, user_data);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::GetEventProfilingInfo, cl_int, clGetEventProfilingInfo, cl_event, event, cl_profiling_info, param_name, size_t, param_value_size, void *, param_value, size_t *, param_value_size_ret);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::Flush, cl_int, clFlush, cl_command_queue, command_queue);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::Finish, cl_int, clFinish, cl_command_queue, command_queue);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::EnqueueReadBuffer, cl_int, 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);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::EnqueueReadBufferRect, cl_int, 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);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::EnqueueWriteBuffer, cl_int, 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);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::EnqueueWriteBufferRect, cl_int, clEnqueueWriteBufferRect, cl_command_queue, command_queue, cl_mem, buffer, cl_bool, blocking_write, 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);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::EnqueueFillBuffer, cl_int, 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);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::EnqueueCopyBuffer, cl_int, 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);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::EnqueueCopyBufferRect, cl_int, 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);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::EnqueueReadImage, cl_int, 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);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::EnqueueWriteImage, cl_int, 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);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::EnqueueFillImage, cl_int, clEnqueueFillImage, cl_command_queue, command_queue, cl_mem, image, const void *, fill_color, const size_t *, origin, const size_t *, region, cl_uint, num_events_in_wait_list, const cl_event *, event_wait_list, cl_event *, event);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::EnqueueCopyImage, cl_int, 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);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::EnqueueCopyImageToBuffer, cl_int, 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);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::EnqueueCopyBufferToImage, cl_int, 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);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::EnqueueMapBuffer, void *, 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);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::EnqueueMapImage, void *, 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);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::EnqueueUnmapMemObject, cl_int, 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);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::EnqueueMigrateMemObjects, cl_int, 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);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::EnqueueNDRangeKernel, cl_int, 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);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::EnqueueNativeKernel, cl_int, clEnqueueNativeKernel, cl_command_queue, command_queue, clEnqueueNativeKernel_arg1_t, user_func, 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);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::EnqueueMarkerWithWaitList, cl_int, clEnqueueMarkerWithWaitList, cl_command_queue, command_queue, cl_uint, num_events_in_wait_list, const cl_event *, event_wait_list, cl_event *, event);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::EnqueueBarrierWithWaitList, cl_int, clEnqueueBarrierWithWaitList, cl_command_queue, command_queue, cl_uint, num_events_in_wait_list, const cl_event *, event_wait_list, cl_event *, event);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::EnqueueSVMFree, cl_int, clEnqueueSVMFree, cl_command_queue, command_queue, cl_uint, num_svm_pointers, clEnqueueSVMFree_arg2_t, svm_pointers, clEnqueueSVMFree_arg3_t, pfn_free_func, void *, user_data, cl_uint, num_events_in_wait_list, const cl_event *, event_wait_list, cl_event *, event);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::EnqueueSVMMemcpy, cl_int, clEnqueueSVMMemcpy, cl_command_queue, command_queue, cl_bool, blocking_copy, void *, dst_ptr, const void *, src_ptr, size_t, size, cl_uint, num_events_in_wait_list, const cl_event *, event_wait_list, cl_event *, event);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::EnqueueSVMMemFill, cl_int, clEnqueueSVMMemFill, cl_command_queue, command_queue, void *, svm_ptr, const void *, pattern, size_t, pattern_size, size_t, size, cl_uint, num_events_in_wait_list, const cl_event *, event_wait_list, cl_event *, event);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::EnqueueSVMMap, cl_int, clEnqueueSVMMap, cl_command_queue, command_queue, cl_bool, blocking_map, cl_map_flags, flags, void *, svm_ptr, size_t, size, cl_uint, num_events_in_wait_list, const cl_event *, event_wait_list, cl_event *, event);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::EnqueueSVMUnmap, cl_int, clEnqueueSVMUnmap, cl_command_queue, command_queue, void *, svm_ptr, cl_uint, num_events_in_wait_list, const cl_event *, event_wait_list, cl_event *, event);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::EnqueueSVMMigrateMem, cl_int, clEnqueueSVMMigrateMem, cl_command_queue, command_queue, cl_uint, num_svm_pointers, const void **, svm_pointers, const size_t *, sizes, cl_mem_migration_flags, flags, cl_uint, num_events_in_wait_list, const cl_event *, event_wait_list, cl_event *, event);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::GetExtensionFunctionAddressForPlatform, void *, clGetExtensionFunctionAddressForPlatform, cl_platform_id, platform, const char *, func_name);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::CreateImage2D, cl_mem, 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);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::CreateImage3D, cl_mem, 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);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::EnqueueMarker, cl_int, clEnqueueMarker, cl_command_queue, command_queue, cl_event *, event);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::EnqueueWaitForEvents, cl_int, clEnqueueWaitForEvents, cl_command_queue, command_queue, cl_uint, num_events, const cl_event *, event_list);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::EnqueueBarrier, cl_int, clEnqueueBarrier, cl_command_queue, command_queue);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::UnloadCompiler, cl_int, clUnloadCompiler);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::GetExtensionFunctionAddress, void *, clGetExtensionFunctionAddress, const char *, func_name);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::CreateCommandQueue, cl_command_queue, clCreateCommandQueue, cl_context, context, cl_device_id, device, cl_command_queue_properties, properties, cl_int *, errcode_ret);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::CreateSampler, cl_sampler, clCreateSampler, cl_context, context, cl_bool, normalized_coords, cl_addressing_mode, addressing_mode, cl_filter_mode, filter_mode, cl_int *, errcode_ret);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::EnqueueTask, cl_int, 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);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::ReleaseDeviceEXT, cl_int, clReleaseDeviceEXT, cl_device_id, device);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::RetainDeviceEXT, cl_int, clRetainDeviceEXT, cl_device_id, device);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::CreateSubDevicesEXT, cl_int, clCreateSubDevicesEXT, cl_device_id, in_device, const cl_device_partition_property_ext *, properties, cl_uint, num_entries, cl_device_id *, out_devices, cl_uint *, num_devices);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::GetKernelSubGroupInfoKHR, cl_int, clGetKernelSubGroupInfoKHR, cl_kernel, in_kernel, cl_device_id, in_device, cl_kernel_sub_group_info, param_name, size_t, input_value_size, const void *, input_value, size_t, param_value_size, void *, param_value, size_t *, param_value_size_ret);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::GetGLContextInfoKHR, cl_int, 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);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::CreateFromGLBuffer, cl_mem, clCreateFromGLBuffer, cl_context, context, cl_mem_flags, flags, cl_GLuint, bufobj, cl_int *, errcode_ret);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::CreateFromGLTexture, cl_mem, clCreateFromGLTexture, cl_context, context, cl_mem_flags, flags, cl_GLenum, target, cl_GLint, miplevel, cl_GLuint, texture, cl_int *, errcode_ret);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::CreateFromGLRenderbuffer, cl_mem, clCreateFromGLRenderbuffer, cl_context, context, cl_mem_flags, flags, cl_GLuint, renderbuffer, cl_int *, errcode_ret);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::GetGLObjectInfo, cl_int, clGetGLObjectInfo, cl_mem, memobj, cl_gl_object_type *, gl_object_type, cl_GLuint *, gl_object_name);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::GetGLTextureInfo, cl_int, clGetGLTextureInfo, cl_mem, memobj, cl_gl_texture_info, param_name, size_t, param_value_size, void *, param_value, size_t *, param_value_size_ret);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::EnqueueAcquireGLObjects, cl_int, 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);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::EnqueueReleaseGLObjects, cl_int, 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);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::CreateFromGLTexture2D, cl_mem, clCreateFromGLTexture2D, cl_context, context, cl_mem_flags, flags, cl_GLenum, target, cl_GLint, miplevel, cl_GLuint, texture, cl_int *, errcode_ret);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::CreateFromGLTexture3D, cl_mem, clCreateFromGLTexture3D, cl_context, context, cl_mem_flags, flags, cl_GLenum, target, cl_GLint, miplevel, cl_GLuint, texture, cl_int *, errcode_ret);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::CreateEventFromGLsyncKHR, cl_event, clCreateEventFromGLsyncKHR, cl_context, context, cl_GLsync, sync, cl_int *, errcode_ret);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::CreateFromEGLImageKHR, cl_mem, clCreateFromEGLImageKHR, cl_context, context, CLeglDisplayKHR, egldisplay, CLeglImageKHR, eglimage, cl_mem_flags, flags, const cl_egl_image_properties_khr *, properties, cl_int *, errcode_ret);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::EnqueueAcquireEGLObjectsKHR, cl_int, clEnqueueAcquireEGLObjectsKHR, 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);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::EnqueueReleaseEGLObjectsKHR, cl_int, clEnqueueReleaseEGLObjectsKHR, 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);
DEFINE_EXPORT_C_REDIRECT_CALL(Driver::CreateEventFromEGLSyncKHR, cl_event, clCreateEventFromEGLSyncKHR, cl_context, context, CLeglSyncKHR, sync, CLeglDisplayKHR, display, cl_int *, errcode_ret);