| // GENERATED FILE - DO NOT EDIT. | |
| // Generated by generate_entry_points.py using data from cl.xml. | |
| // | |
| // Copyright 2020 The ANGLE Project Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| // | |
| // libOpenCL_autogen.cpp: Implements the exported CL functions. | |
| //#include "anglebase/no_destructor.h" | |
| //#include "common/system_utils.h" | |
| #include <iostream> | |
| //#include <memory> | |
| #include "cl_loader.h" | |
| namespace | |
| { | |
| bool gLoaded = false; | |
| /* TODO(jplate): uncomment after entry points moved to GLESV2 lib http://anglebug.com/5759 | |
| std::unique_ptr<angle::Library> &EntryPointsLib() | |
| { | |
| static angle::base::NoDestructor<std::unique_ptr<angle::Library>> sEntryPointsLib; | |
| return *sEntryPointsLib; | |
| } | |
| angle::GenericProc CL_API_CALL GlobalLoad(const char *symbol) | |
| { | |
| return reinterpret_cast<angle::GenericProc>(EntryPointsLib()->getSymbol(symbol)); | |
| } | |
| */ | |
| void EnsureCLLoaded() | |
| { | |
| if (gLoaded) | |
| { | |
| return; | |
| } | |
| // EntryPointsLib().reset( | |
| // angle::OpenSharedLibrary(ANGLE_GLESV2_LIBRARY_NAME, angle::SearchType::ApplicationDir)); | |
| // angle::LoadCL(GlobalLoad); | |
| angle::LoadCL(nullptr); | |
| if (!cl_loader.clGetDeviceIDs) | |
| { | |
| std::cerr << "Error loading CL entry points." << std::endl; | |
| } | |
| else | |
| { | |
| gLoaded = true; | |
| } | |
| } | |
| } // anonymous namespace | |
| extern "C" { | |
| // CL 1.0 | |
| cl_int CL_API_CALL clGetPlatformIDs(cl_uint num_entries, | |
| cl_platform_id *platforms, | |
| cl_uint *num_platforms) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clGetPlatformIDs(num_entries, platforms, num_platforms); | |
| } | |
| 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clGetPlatformInfo(platform, param_name, param_value_size, param_value, | |
| param_value_size_ret); | |
| } | |
| 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clGetDeviceIDs(platform, device_type, num_entries, devices, num_devices); | |
| } | |
| 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clGetDeviceInfo(device, param_name, param_value_size, param_value, | |
| param_value_size_ret); | |
| } | |
| 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 *errinfo, | |
| const void *private_info, | |
| size_t cb, | |
| void *user_data), | |
| void *user_data, | |
| cl_int *errcode_ret) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clCreateContext(properties, num_devices, devices, pfn_notify, user_data, | |
| errcode_ret); | |
| } | |
| cl_context CL_API_CALL | |
| clCreateContextFromType(const cl_context_properties *properties, | |
| cl_device_type device_type, | |
| void(CL_CALLBACK *pfn_notify)(const char *errinfo, | |
| const void *private_info, | |
| size_t cb, | |
| void *user_data), | |
| void *user_data, | |
| cl_int *errcode_ret) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clCreateContextFromType(properties, device_type, pfn_notify, user_data, | |
| errcode_ret); | |
| } | |
| cl_int CL_API_CALL clRetainContext(cl_context context) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clRetainContext(context); | |
| } | |
| cl_int CL_API_CALL clReleaseContext(cl_context context) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clReleaseContext(context); | |
| } | |
| 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clGetContextInfo(context, param_name, param_value_size, param_value, | |
| param_value_size_ret); | |
| } | |
| cl_int CL_API_CALL clRetainCommandQueue(cl_command_queue command_queue) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clRetainCommandQueue(command_queue); | |
| } | |
| cl_int CL_API_CALL clReleaseCommandQueue(cl_command_queue command_queue) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clReleaseCommandQueue(command_queue); | |
| } | |
| 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clGetCommandQueueInfo(command_queue, param_name, param_value_size, param_value, | |
| param_value_size_ret); | |
| } | |
| cl_mem CL_API_CALL clCreateBuffer(cl_context context, | |
| cl_mem_flags flags, | |
| size_t size, | |
| void *host_ptr, | |
| cl_int *errcode_ret) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clCreateBuffer(context, flags, size, host_ptr, errcode_ret); | |
| } | |
| cl_int CL_API_CALL clRetainMemObject(cl_mem memobj) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clRetainMemObject(memobj); | |
| } | |
| cl_int CL_API_CALL clReleaseMemObject(cl_mem memobj) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clReleaseMemObject(memobj); | |
| } | |
| 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clGetSupportedImageFormats(context, flags, image_type, num_entries, | |
| image_formats, num_image_formats); | |
| } | |
| 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clGetMemObjectInfo(memobj, param_name, param_value_size, param_value, | |
| param_value_size_ret); | |
| } | |
| 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clGetImageInfo(image, param_name, param_value_size, param_value, | |
| param_value_size_ret); | |
| } | |
| cl_int CL_API_CALL clRetainSampler(cl_sampler sampler) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clRetainSampler(sampler); | |
| } | |
| cl_int CL_API_CALL clReleaseSampler(cl_sampler sampler) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clReleaseSampler(sampler); | |
| } | |
| 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clGetSamplerInfo(sampler, param_name, param_value_size, param_value, | |
| param_value_size_ret); | |
| } | |
| cl_program CL_API_CALL clCreateProgramWithSource(cl_context context, | |
| cl_uint count, | |
| const char **strings, | |
| const size_t *lengths, | |
| cl_int *errcode_ret) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clCreateProgramWithSource(context, count, strings, lengths, errcode_ret); | |
| } | |
| 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clCreateProgramWithBinary(context, num_devices, device_list, lengths, binaries, | |
| binary_status, errcode_ret); | |
| } | |
| cl_int CL_API_CALL clRetainProgram(cl_program program) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clRetainProgram(program); | |
| } | |
| cl_int CL_API_CALL clReleaseProgram(cl_program program) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clReleaseProgram(program); | |
| } | |
| 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clBuildProgram(program, num_devices, device_list, options, pfn_notify, | |
| user_data); | |
| } | |
| 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clGetProgramInfo(program, param_name, param_value_size, param_value, | |
| param_value_size_ret); | |
| } | |
| 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clGetProgramBuildInfo(program, device, param_name, param_value_size, | |
| param_value, param_value_size_ret); | |
| } | |
| cl_kernel CL_API_CALL clCreateKernel(cl_program program, | |
| const char *kernel_name, | |
| cl_int *errcode_ret) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clCreateKernel(program, kernel_name, errcode_ret); | |
| } | |
| cl_int CL_API_CALL clCreateKernelsInProgram(cl_program program, | |
| cl_uint num_kernels, | |
| cl_kernel *kernels, | |
| cl_uint *num_kernels_ret) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clCreateKernelsInProgram(program, num_kernels, kernels, num_kernels_ret); | |
| } | |
| cl_int CL_API_CALL clRetainKernel(cl_kernel kernel) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clRetainKernel(kernel); | |
| } | |
| cl_int CL_API_CALL clReleaseKernel(cl_kernel kernel) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clReleaseKernel(kernel); | |
| } | |
| cl_int CL_API_CALL clSetKernelArg(cl_kernel kernel, | |
| cl_uint arg_index, | |
| size_t arg_size, | |
| const void *arg_value) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clSetKernelArg(kernel, arg_index, arg_size, arg_value); | |
| } | |
| 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clGetKernelInfo(kernel, param_name, param_value_size, param_value, | |
| param_value_size_ret); | |
| } | |
| 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clGetKernelWorkGroupInfo(kernel, device, param_name, param_value_size, | |
| param_value, param_value_size_ret); | |
| } | |
| cl_int CL_API_CALL clWaitForEvents(cl_uint num_events, const cl_event *event_list) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clWaitForEvents(num_events, event_list); | |
| } | |
| 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clGetEventInfo(event, param_name, param_value_size, param_value, | |
| param_value_size_ret); | |
| } | |
| cl_int CL_API_CALL clRetainEvent(cl_event event) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clRetainEvent(event); | |
| } | |
| cl_int CL_API_CALL clReleaseEvent(cl_event event) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clReleaseEvent(event); | |
| } | |
| 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clGetEventProfilingInfo(event, param_name, param_value_size, param_value, | |
| param_value_size_ret); | |
| } | |
| cl_int CL_API_CALL clFlush(cl_command_queue command_queue) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clFlush(command_queue); | |
| } | |
| cl_int CL_API_CALL clFinish(cl_command_queue command_queue) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clFinish(command_queue); | |
| } | |
| 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clEnqueueReadBuffer(command_queue, buffer, blocking_read, offset, size, ptr, | |
| num_events_in_wait_list, event_wait_list, event); | |
| } | |
| 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clEnqueueWriteBuffer(command_queue, buffer, blocking_write, offset, size, ptr, | |
| num_events_in_wait_list, event_wait_list, event); | |
| } | |
| 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clEnqueueCopyBuffer(command_queue, src_buffer, dst_buffer, src_offset, | |
| dst_offset, size, num_events_in_wait_list, event_wait_list, | |
| event); | |
| } | |
| cl_int CL_API_CALL clEnqueueReadImage(cl_command_queue command_queue, | |
| cl_mem image, | |
| cl_bool blocking_read, | |
| const size_t *origin, | |
| const size_t *region, | |
| size_t row_pitch, | |
| size_t slice_pitch, | |
| void *ptr, | |
| cl_uint num_events_in_wait_list, | |
| const cl_event *event_wait_list, | |
| cl_event *event) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clEnqueueReadImage(command_queue, image, blocking_read, origin, region, | |
| row_pitch, slice_pitch, ptr, num_events_in_wait_list, | |
| event_wait_list, event); | |
| } | |
| cl_int CL_API_CALL clEnqueueWriteImage(cl_command_queue command_queue, | |
| cl_mem image, | |
| cl_bool blocking_write, | |
| const size_t *origin, | |
| const size_t *region, | |
| size_t input_row_pitch, | |
| size_t input_slice_pitch, | |
| const void *ptr, | |
| cl_uint num_events_in_wait_list, | |
| const cl_event *event_wait_list, | |
| cl_event *event) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clEnqueueWriteImage(command_queue, image, blocking_write, origin, region, | |
| input_row_pitch, input_slice_pitch, ptr, | |
| num_events_in_wait_list, event_wait_list, event); | |
| } | |
| cl_int CL_API_CALL clEnqueueCopyImage(cl_command_queue command_queue, | |
| cl_mem src_image, | |
| cl_mem dst_image, | |
| const size_t *src_origin, | |
| const size_t *dst_origin, | |
| const size_t *region, | |
| cl_uint num_events_in_wait_list, | |
| const cl_event *event_wait_list, | |
| cl_event *event) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clEnqueueCopyImage(command_queue, src_image, dst_image, src_origin, dst_origin, | |
| region, num_events_in_wait_list, event_wait_list, event); | |
| } | |
| cl_int CL_API_CALL clEnqueueCopyImageToBuffer(cl_command_queue command_queue, | |
| cl_mem src_image, | |
| cl_mem dst_buffer, | |
| const size_t *src_origin, | |
| const size_t *region, | |
| size_t dst_offset, | |
| cl_uint num_events_in_wait_list, | |
| const cl_event *event_wait_list, | |
| cl_event *event) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clEnqueueCopyImageToBuffer(command_queue, src_image, dst_buffer, src_origin, | |
| region, dst_offset, num_events_in_wait_list, | |
| event_wait_list, event); | |
| } | |
| cl_int CL_API_CALL clEnqueueCopyBufferToImage(cl_command_queue command_queue, | |
| cl_mem src_buffer, | |
| cl_mem dst_image, | |
| size_t src_offset, | |
| const size_t *dst_origin, | |
| const size_t *region, | |
| cl_uint num_events_in_wait_list, | |
| const cl_event *event_wait_list, | |
| cl_event *event) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clEnqueueCopyBufferToImage(command_queue, src_buffer, dst_image, src_offset, | |
| dst_origin, region, num_events_in_wait_list, | |
| event_wait_list, event); | |
| } | |
| 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clEnqueueMapBuffer(command_queue, buffer, blocking_map, map_flags, offset, | |
| size, num_events_in_wait_list, event_wait_list, event, | |
| errcode_ret); | |
| } | |
| void *CL_API_CALL clEnqueueMapImage(cl_command_queue command_queue, | |
| cl_mem image, | |
| cl_bool blocking_map, | |
| cl_map_flags map_flags, | |
| const size_t *origin, | |
| const size_t *region, | |
| size_t *image_row_pitch, | |
| size_t *image_slice_pitch, | |
| cl_uint num_events_in_wait_list, | |
| const cl_event *event_wait_list, | |
| cl_event *event, | |
| cl_int *errcode_ret) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clEnqueueMapImage( | |
| command_queue, image, blocking_map, map_flags, origin, region, image_row_pitch, | |
| image_slice_pitch, num_events_in_wait_list, event_wait_list, event, errcode_ret); | |
| } | |
| 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clEnqueueUnmapMemObject(command_queue, memobj, mapped_ptr, | |
| num_events_in_wait_list, event_wait_list, event); | |
| } | |
| 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clEnqueueNDRangeKernel(command_queue, kernel, work_dim, global_work_offset, | |
| global_work_size, local_work_size, | |
| num_events_in_wait_list, event_wait_list, event); | |
| } | |
| 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clEnqueueNativeKernel(command_queue, user_func, args, cb_args, num_mem_objects, | |
| mem_list, args_mem_loc, num_events_in_wait_list, | |
| event_wait_list, event); | |
| } | |
| cl_int CL_API_CALL clSetCommandQueueProperty(cl_command_queue command_queue, | |
| cl_command_queue_properties properties, | |
| cl_bool enable, | |
| cl_command_queue_properties *old_properties) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clSetCommandQueueProperty(command_queue, properties, enable, old_properties); | |
| } | |
| 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clCreateImage2D(context, flags, image_format, image_width, image_height, | |
| image_row_pitch, host_ptr, errcode_ret); | |
| } | |
| 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clCreateImage3D(context, flags, image_format, image_width, image_height, | |
| image_depth, image_row_pitch, image_slice_pitch, host_ptr, | |
| errcode_ret); | |
| } | |
| cl_int CL_API_CALL clEnqueueMarker(cl_command_queue command_queue, cl_event *event) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clEnqueueMarker(command_queue, event); | |
| } | |
| cl_int CL_API_CALL clEnqueueWaitForEvents(cl_command_queue command_queue, | |
| cl_uint num_events, | |
| const cl_event *event_list) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clEnqueueWaitForEvents(command_queue, num_events, event_list); | |
| } | |
| cl_int CL_API_CALL clEnqueueBarrier(cl_command_queue command_queue) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clEnqueueBarrier(command_queue); | |
| } | |
| cl_int CL_API_CALL clUnloadCompiler() | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clUnloadCompiler(); | |
| } | |
| void *CL_API_CALL clGetExtensionFunctionAddress(const char *func_name) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clGetExtensionFunctionAddress(func_name); | |
| } | |
| cl_command_queue CL_API_CALL clCreateCommandQueue(cl_context context, | |
| cl_device_id device, | |
| cl_command_queue_properties properties, | |
| cl_int *errcode_ret) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clCreateCommandQueue(context, device, properties, errcode_ret); | |
| } | |
| 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clCreateSampler(context, normalized_coords, addressing_mode, filter_mode, | |
| errcode_ret); | |
| } | |
| 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clEnqueueTask(command_queue, kernel, num_events_in_wait_list, event_wait_list, | |
| event); | |
| } | |
| // CL 1.1 | |
| 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clCreateSubBuffer(buffer, flags, buffer_create_type, buffer_create_info, | |
| errcode_ret); | |
| } | |
| cl_int CL_API_CALL clSetMemObjectDestructorCallback(cl_mem memobj, | |
| void(CL_CALLBACK *pfn_notify)(cl_mem memobj, | |
| void *user_data), | |
| void *user_data) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clSetMemObjectDestructorCallback(memobj, pfn_notify, user_data); | |
| } | |
| cl_event CL_API_CALL clCreateUserEvent(cl_context context, cl_int *errcode_ret) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clCreateUserEvent(context, errcode_ret); | |
| } | |
| cl_int CL_API_CALL clSetUserEventStatus(cl_event event, cl_int execution_status) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clSetUserEventStatus(event, execution_status); | |
| } | |
| cl_int CL_API_CALL clSetEventCallback(cl_event event, | |
| cl_int command_exec_callback_type, | |
| void(CL_CALLBACK *pfn_notify)(cl_event event, | |
| cl_int event_command_status, | |
| void *user_data), | |
| void *user_data) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clSetEventCallback(event, command_exec_callback_type, pfn_notify, user_data); | |
| } | |
| cl_int CL_API_CALL clEnqueueReadBufferRect(cl_command_queue command_queue, | |
| cl_mem buffer, | |
| cl_bool blocking_read, | |
| const size_t *buffer_origin, | |
| const size_t *host_origin, | |
| const size_t *region, | |
| size_t buffer_row_pitch, | |
| size_t buffer_slice_pitch, | |
| size_t host_row_pitch, | |
| size_t host_slice_pitch, | |
| void *ptr, | |
| cl_uint num_events_in_wait_list, | |
| const cl_event *event_wait_list, | |
| cl_event *event) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clEnqueueReadBufferRect(command_queue, buffer, blocking_read, buffer_origin, | |
| host_origin, region, buffer_row_pitch, | |
| buffer_slice_pitch, host_row_pitch, host_slice_pitch, | |
| ptr, num_events_in_wait_list, event_wait_list, event); | |
| } | |
| cl_int CL_API_CALL 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clEnqueueWriteBufferRect(command_queue, buffer, blocking_write, buffer_origin, | |
| host_origin, region, buffer_row_pitch, | |
| buffer_slice_pitch, host_row_pitch, host_slice_pitch, | |
| ptr, num_events_in_wait_list, event_wait_list, event); | |
| } | |
| 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clEnqueueCopyBufferRect(command_queue, src_buffer, dst_buffer, src_origin, | |
| dst_origin, region, src_row_pitch, src_slice_pitch, | |
| dst_row_pitch, dst_slice_pitch, | |
| num_events_in_wait_list, event_wait_list, event); | |
| } | |
| // CL 1.2 | |
| 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clCreateSubDevices(in_device, properties, num_devices, out_devices, | |
| num_devices_ret); | |
| } | |
| cl_int CL_API_CALL clRetainDevice(cl_device_id device) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clRetainDevice(device); | |
| } | |
| cl_int CL_API_CALL clReleaseDevice(cl_device_id device) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clReleaseDevice(device); | |
| } | |
| 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clCreateImage(context, flags, image_format, image_desc, host_ptr, errcode_ret); | |
| } | |
| 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clCreateProgramWithBuiltInKernels(context, num_devices, device_list, | |
| kernel_names, errcode_ret); | |
| } | |
| 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clCompileProgram(program, num_devices, device_list, options, num_input_headers, | |
| input_headers, header_include_names, pfn_notify, user_data); | |
| } | |
| 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clLinkProgram(context, num_devices, device_list, options, num_input_programs, | |
| input_programs, pfn_notify, user_data, errcode_ret); | |
| } | |
| cl_int CL_API_CALL clUnloadPlatformCompiler(cl_platform_id platform) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clUnloadPlatformCompiler(platform); | |
| } | |
| cl_int CL_API_CALL clGetKernelArgInfo(cl_kernel kernel, | |
| cl_uint arg_index, | |
| cl_kernel_arg_info param_name, | |
| size_t param_value_size, | |
| void *param_value, | |
| size_t *param_value_size_ret) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clGetKernelArgInfo(kernel, arg_index, param_name, param_value_size, | |
| param_value, param_value_size_ret); | |
| } | |
| 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clEnqueueFillBuffer(command_queue, buffer, pattern, pattern_size, offset, size, | |
| num_events_in_wait_list, event_wait_list, event); | |
| } | |
| cl_int CL_API_CALL 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clEnqueueFillImage(command_queue, image, fill_color, origin, region, | |
| num_events_in_wait_list, event_wait_list, event); | |
| } | |
| 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clEnqueueMigrateMemObjects(command_queue, num_mem_objects, mem_objects, flags, | |
| num_events_in_wait_list, event_wait_list, event); | |
| } | |
| 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clEnqueueMarkerWithWaitList(command_queue, num_events_in_wait_list, | |
| event_wait_list, event); | |
| } | |
| 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clEnqueueBarrierWithWaitList(command_queue, num_events_in_wait_list, | |
| event_wait_list, event); | |
| } | |
| void *CL_API_CALL clGetExtensionFunctionAddressForPlatform(cl_platform_id platform, | |
| const char *func_name) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clGetExtensionFunctionAddressForPlatform(platform, func_name); | |
| } | |
| // CL 2.0 | |
| cl_command_queue CL_API_CALL | |
| clCreateCommandQueueWithProperties(cl_context context, | |
| cl_device_id device, | |
| const cl_queue_properties *properties, | |
| cl_int *errcode_ret) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clCreateCommandQueueWithProperties(context, device, properties, errcode_ret); | |
| } | |
| cl_mem CL_API_CALL 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clCreatePipe(context, flags, pipe_packet_size, pipe_max_packets, properties, | |
| errcode_ret); | |
| } | |
| cl_int CL_API_CALL clGetPipeInfo(cl_mem pipe, | |
| cl_pipe_info param_name, | |
| size_t param_value_size, | |
| void *param_value, | |
| size_t *param_value_size_ret) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clGetPipeInfo(pipe, param_name, param_value_size, param_value, | |
| param_value_size_ret); | |
| } | |
| void *CL_API_CALL clSVMAlloc(cl_context context, | |
| cl_svm_mem_flags flags, | |
| size_t size, | |
| cl_uint alignment) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clSVMAlloc(context, flags, size, alignment); | |
| } | |
| void CL_API_CALL clSVMFree(cl_context context, void *svm_pointer) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clSVMFree(context, svm_pointer); | |
| } | |
| cl_sampler CL_API_CALL | |
| clCreateSamplerWithProperties(cl_context context, | |
| const cl_sampler_properties *sampler_properties, | |
| cl_int *errcode_ret) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clCreateSamplerWithProperties(context, sampler_properties, errcode_ret); | |
| } | |
| cl_int CL_API_CALL clSetKernelArgSVMPointer(cl_kernel kernel, | |
| cl_uint arg_index, | |
| const void *arg_value) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clSetKernelArgSVMPointer(kernel, arg_index, arg_value); | |
| } | |
| cl_int CL_API_CALL clSetKernelExecInfo(cl_kernel kernel, | |
| cl_kernel_exec_info param_name, | |
| size_t param_value_size, | |
| const void *param_value) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clSetKernelExecInfo(kernel, param_name, param_value_size, param_value); | |
| } | |
| cl_int CL_API_CALL clEnqueueSVMFree(cl_command_queue command_queue, | |
| cl_uint num_svm_pointers, | |
| void *svm_pointers[], | |
| void(CL_CALLBACK *pfn_free_func)(cl_command_queue queue, | |
| cl_uint num_svm_pointers, | |
| void *svm_pointers[], | |
| void *user_data), | |
| void *user_data, | |
| cl_uint num_events_in_wait_list, | |
| const cl_event *event_wait_list, | |
| cl_event *event) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clEnqueueSVMFree(command_queue, num_svm_pointers, svm_pointers, pfn_free_func, | |
| user_data, num_events_in_wait_list, event_wait_list, event); | |
| } | |
| cl_int CL_API_CALL 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clEnqueueSVMMemcpy(command_queue, blocking_copy, dst_ptr, src_ptr, size, | |
| num_events_in_wait_list, event_wait_list, event); | |
| } | |
| cl_int CL_API_CALL 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clEnqueueSVMMemFill(command_queue, svm_ptr, pattern, pattern_size, size, | |
| num_events_in_wait_list, event_wait_list, event); | |
| } | |
| cl_int CL_API_CALL 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clEnqueueSVMMap(command_queue, blocking_map, flags, svm_ptr, size, | |
| num_events_in_wait_list, event_wait_list, event); | |
| } | |
| cl_int CL_API_CALL 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clEnqueueSVMUnmap(command_queue, svm_ptr, num_events_in_wait_list, | |
| event_wait_list, event); | |
| } | |
| // CL 2.1 | |
| cl_int CL_API_CALL clSetDefaultDeviceCommandQueue(cl_context context, | |
| cl_device_id device, | |
| cl_command_queue command_queue) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clSetDefaultDeviceCommandQueue(context, device, command_queue); | |
| } | |
| cl_int CL_API_CALL clGetDeviceAndHostTimer(cl_device_id device, | |
| cl_ulong *device_timestamp, | |
| cl_ulong *host_timestamp) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clGetDeviceAndHostTimer(device, device_timestamp, host_timestamp); | |
| } | |
| cl_int CL_API_CALL clGetHostTimer(cl_device_id device, cl_ulong *host_timestamp) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clGetHostTimer(device, host_timestamp); | |
| } | |
| cl_program CL_API_CALL clCreateProgramWithIL(cl_context context, | |
| const void *il, | |
| size_t length, | |
| cl_int *errcode_ret) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clCreateProgramWithIL(context, il, length, errcode_ret); | |
| } | |
| cl_kernel CL_API_CALL clCloneKernel(cl_kernel source_kernel, cl_int *errcode_ret) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clCloneKernel(source_kernel, errcode_ret); | |
| } | |
| cl_int CL_API_CALL 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clGetKernelSubGroupInfo(kernel, device, param_name, input_value_size, | |
| input_value, param_value_size, param_value, | |
| param_value_size_ret); | |
| } | |
| cl_int CL_API_CALL 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clEnqueueSVMMigrateMem(command_queue, num_svm_pointers, svm_pointers, sizes, | |
| flags, num_events_in_wait_list, event_wait_list, event); | |
| } | |
| // CL 2.2 | |
| cl_int CL_API_CALL clSetProgramReleaseCallback(cl_program program, | |
| void(CL_CALLBACK *pfn_notify)(cl_program program, | |
| void *user_data), | |
| void *user_data) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clSetProgramReleaseCallback(program, pfn_notify, user_data); | |
| } | |
| cl_int CL_API_CALL clSetProgramSpecializationConstant(cl_program program, | |
| cl_uint spec_id, | |
| size_t spec_size, | |
| const void *spec_value) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clSetProgramSpecializationConstant(program, spec_id, spec_size, spec_value); | |
| } | |
| // CL 3.0 | |
| cl_int CL_API_CALL clSetContextDestructorCallback(cl_context context, | |
| void(CL_CALLBACK *pfn_notify)(cl_context context, | |
| void *user_data), | |
| void *user_data) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clSetContextDestructorCallback(context, pfn_notify, user_data); | |
| } | |
| cl_mem CL_API_CALL clCreateBufferWithProperties(cl_context context, | |
| const cl_mem_properties *properties, | |
| cl_mem_flags flags, | |
| size_t size, | |
| void *host_ptr, | |
| cl_int *errcode_ret) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clCreateBufferWithProperties(context, properties, flags, size, host_ptr, | |
| errcode_ret); | |
| } | |
| cl_mem CL_API_CALL 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) | |
| { | |
| EnsureCLLoaded(); | |
| return cl_loader.clCreateImageWithProperties(context, properties, flags, image_format, | |
| image_desc, host_ptr, errcode_ret); | |
| } | |
| } // extern "C" |