blob: 7a77a7af25c0acd3c7cfc498b0366a2044c261f4 [file] [log] [blame]
//TODO: Copyrights
#include <windows.h>
#include <cstring>
#include "opencl.h"
#include "device.h"
#include "debug.h"
#include "context.h"
#include "platform.h"
#include "commandqueue.h"
#include "buffer.h"
#include "memobject.h"
#include "events.h"
#include "dllmain.h"
static Devices::CPUDevice cpudevice;
//static Devices::GPUDevice gpudevice;
static inline cl_int queueEvent(Devices::CommandQueue *queue,
Devices::Event *command,
cl_event *event,
cl_bool blocking)
{
cl_int rs;
rs = queue->queueEvent(command);
if(rs != CL_SUCCESS)
{
delete command;
return rs;
}
if(event)
{
*event = (cl_event)command;
command->reference();
}
if(blocking)
{
rs = clWaitForEvents(1, (cl_event *)&command);
if(rs != CL_SUCCESS)
{
delete command;
return rs;
}
}
return CL_SUCCESS;
}
CL_API_ENTRY cl_int CL_API_CALL
clGetPlatformIDs(cl_uint num_entries, cl_platform_id * platforms, cl_uint * num_platforms) CL_API_SUFFIX__VERSION_1_0
{
TRACE("(cl_uint num_entries = %u, cl_platform_id * platforms = %p, cl_uint * num_platforms = %p)", num_entries, platforms, num_platforms);
if(num_platforms)
{
*num_platforms = MAX_PLATFORMS;
}
else if(!platforms)
{
return CL_INVALID_VALUE;
}
if(!num_entries && platforms)
{
return CL_INVALID_VALUE;
}
if(platforms != 0)
{
*platforms = DEFAULT_PLATFORM;
}
return CL_SUCCESS;
}
CL_API_ENTRY 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) CL_API_SUFFIX__VERSION_1_0
{
TRACE("(cl_platform_id platform = %p, cl_platform_info param_name = %u, size_t param_value_size = %lu, void * param_value = %p, size_t * param_value_size_ret = %lu)", platform, param_name, param_value_size, param_value, param_value_size_ret);
static const char platform_profile[] = "FULL_PROFILE";
static const char platform_version[] = "OpenCL 1.1 CUDA 7.0.28";
static const char platform_name[] = "NVIDIA CUDA";
static const char platform_vendor[] = "NVIDIA Corporation"; //TODO: get whitelisted by Adobe
static const char platform_extensions[] = "cl_khr_fp64 cl_khr_int64_base_atomics cl_khr_int64_extended_atomics";
const char *string = 0;
unsigned long length = 0;
if(platform != DEFAULT_PLATFORM)
{
return CL_INVALID_PLATFORM;
}
switch(param_name)
{
case CL_PLATFORM_PROFILE:
string = platform_profile;
length = sizeof(platform_profile);
break;
case CL_PLATFORM_VERSION:
string = platform_version;
length = sizeof(platform_version);
break;
case CL_PLATFORM_NAME:
string = platform_name;
length = sizeof(platform_name);
break;
case CL_PLATFORM_VENDOR:
string = platform_vendor;
length = sizeof(platform_vendor);
break;
case CL_PLATFORM_EXTENSIONS:
string = platform_extensions;
length = sizeof(platform_extensions);
break;
default:
return CL_INVALID_VALUE;
}
if(param_value_size < length && param_value != 0)
{
return CL_INVALID_VALUE;
}
if(param_value != 0)
std::memcpy(param_value, string, length);
if(param_value_size_ret)
{
*param_value_size_ret = length;
}
return CL_SUCCESS;
}
/* Device APIs */
CL_API_ENTRY 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) CL_API_SUFFIX__VERSION_1_0
{
TRACE("(cl_platform_id platform = %p, cl_device_type device_type = %u, cl_uint num_entries = %u, cl_device_id * devices = %p, cl_uint * num_devices = %p)", platform, device_type, num_entries, devices, num_devices);
if(platform != DEFAULT_PLATFORM)
{
return CL_INVALID_PLATFORM;
}
if((num_entries == 0 && devices != 0) || (num_devices == 0 && devices == 0))
{
return CL_INVALID_VALUE;
}
switch(device_type)
{
case CL_DEVICE_TYPE_DEFAULT:
case CL_DEVICE_TYPE_CPU:
cpudevice.init();
if(devices)
devices[0] = (cl_device_id)(&cpudevice);
if(num_devices)
*num_devices = 1;
break;
case CL_DEVICE_TYPE_GPU:
cpudevice.init();
if(devices)
devices[0] = (cl_device_id)(&cpudevice);
if(num_devices)
*num_devices = 1;
break;
case CL_DEVICE_TYPE_ACCELERATOR:
case CL_DEVICE_TYPE_ALL:
UNIMPLEMENTED();
default:
return CL_DEVICE_NOT_FOUND;
}
return CL_SUCCESS;
}
CL_API_ENTRY 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) CL_API_SUFFIX__VERSION_1_0
{
TRACE("(cl_device_id device = %p, cl_device_info param_name = %u, size_t param_value_size = %lu, void * param_value = %p, size_t * param_value_size_ret = %p)", device, param_name, param_value_size, param_value, param_value_size_ret);
UNIMPLEMENTED();
return CL_DEVICE_NOT_FOUND;
}
/* Context APIs */
CL_API_ENTRY 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) CL_API_SUFFIX__VERSION_1_0
{
TRACE("(const cl_context_properties * properties = %p, cl_uint num_devices = %u, const cl_device_id * devices = %p, void (CL_CALLBACK * pfn_notify) = %p, void * user_data = %p, cl_int * errcode_ret = %p)", properties, num_devices, devices, pfn_notify, user_data, errcode_ret);
cl_int default_errcode_ret;
// No errcode_ret ?
if(!errcode_ret)
errcode_ret = &default_errcode_ret;
if(!devices ||
!num_devices ||
(!pfn_notify && user_data))
{
*errcode_ret = CL_INVALID_VALUE;
return 0;
}
*errcode_ret = CL_SUCCESS;
Devices::Context *ctx = new Devices::Context(properties, num_devices, devices,
pfn_notify, user_data, errcode_ret);
if(*errcode_ret != CL_SUCCESS)
{
// Initialization failed, destroy context
delete ctx;
return 0;
}
cl::makeCurrent(DEFAULT_PLATFORM, ctx);
return (_cl_context *)ctx;
}
CL_API_ENTRY 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 */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
CL_API_ENTRY cl_int CL_API_CALL
clRetainContext(cl_context /* context */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
CL_API_ENTRY cl_int CL_API_CALL
clReleaseContext(cl_context context) CL_API_SUFFIX__VERSION_1_0
{
TRACE("(cl_context context = %p)", context);
if(!context->isA(Devices::Object::T_Context))
{
return CL_INVALID_CONTEXT;
}
if(context->dereference())
{
delete context;
cl::makeCurrent(NULL, NULL);
}
return CL_SUCCESS;
}
CL_API_ENTRY 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 */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
/* Command Queue APIs */
CL_API_ENTRY cl_command_queue CL_API_CALL
clCreateCommandQueue(cl_context context, cl_device_id device, cl_command_queue_properties properties, cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0
{
TRACE("(cl_context context = %p, cl_device_id device = %p, cl_command_queue_properties properties = %lu, cl_int * errcode_ret = %p)", context, device, properties, errcode_ret);
cl_int default_errcode_ret;
// No errcode_ret ?
if(!errcode_ret)
errcode_ret = &default_errcode_ret;
if(!device->isA(Devices::Object::T_Device))
{
*errcode_ret = CL_INVALID_DEVICE;
return NULL;
}
if(!context->isA(Devices::Object::T_Context))
{
*errcode_ret = CL_INVALID_CONTEXT;
return NULL;
}
*errcode_ret = CL_SUCCESS;
Devices::CommandQueue *queue = new Devices::CommandQueue(
(Devices::Context *)context,
(Devices::DeviceInterface *)device,
properties,
errcode_ret);
if(*errcode_ret != CL_SUCCESS)
{
// Initialization failed, destroy context
delete queue;
return NULL;
}
return (_cl_command_queue *)queue;
}
CL_API_ENTRY cl_int CL_API_CALL
clRetainCommandQueue(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
CL_API_ENTRY cl_int CL_API_CALL
clReleaseCommandQueue(cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0
{
TRACE("(cl_command_queue command_queue = %p)", command_queue);
if(!command_queue->isA(Devices::Object::T_CommandQueue))
return CL_INVALID_COMMAND_QUEUE;
command_queue->flush();
if(command_queue->dereference())
delete command_queue;
return CL_SUCCESS;
}
CL_API_ENTRY 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 */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
/* Memory Object APIs */
extern CL_API_ENTRY cl_mem CL_API_CALL
clCreateBuffer(cl_context context, cl_mem_flags flags, size_t size, void * host_ptr, cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0
{
TRACE("(cl_context context = %p, cl_mem_flags flags = %lu, size_t size = %lu, void * host_ptr %p, cl_int * errcode_ret = %p)", context, flags, size, host_ptr, errcode_ret);
cl_int dummy_errcode;
if(!errcode_ret)
errcode_ret = &dummy_errcode;
if(!context->isA(Devices::Object::T_Context))
{
*errcode_ret = CL_INVALID_CONTEXT;
return 0;
}
*errcode_ret = CL_SUCCESS;
Devices::Buffer *buf = new Devices::Buffer(context, size, host_ptr, flags,
errcode_ret);
if(*errcode_ret != CL_SUCCESS || (*errcode_ret = buf->init()) != CL_SUCCESS)
{
delete buf;
return 0;
}
return (cl_mem)buf;
}
extern CL_API_ENTRY 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 */) CL_API_SUFFIX__VERSION_1_1
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY 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 */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY 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 */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern "C" CL_API_ENTRY cl_int CL_API_CALL
clRetainMemObject(cl_mem /* memobj */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY cl_int CL_API_CALL
clReleaseMemObject(cl_mem memobj) CL_API_SUFFIX__VERSION_1_0
{
TRACE("(cl_mem memobj = %p)", memobj);
if(!memobj->isA(Devices::Object::T_MemObject))
return CL_INVALID_MEM_OBJECT;
if(memobj->dereference())
delete memobj;
return CL_SUCCESS;
}
extern CL_API_ENTRY 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 */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY 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 */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY 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 */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY cl_int CL_API_CALL
clSetMemObjectDestructorCallback(cl_mem /* memobj */,
void (CL_CALLBACK * /*pfn_notify*/)(cl_mem /* memobj */, void* /*user_data*/),
void * /*user_data */) CL_API_SUFFIX__VERSION_1_1
{
UNIMPLEMENTED();
return 0;
}
/* Sampler APIs */
extern CL_API_ENTRY 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 */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY cl_int CL_API_CALL
clRetainSampler(cl_sampler /* sampler */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY cl_int CL_API_CALL
clReleaseSampler(cl_sampler /* sampler */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY 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 */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
/* Program Object APIs */
extern CL_API_ENTRY cl_program CL_API_CALL
clCreateProgramWithSource(cl_context /* context */,
cl_uint /* count */,
const char ** /* strings */,
const size_t * /* lengths */,
cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY 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 */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY cl_int CL_API_CALL
clRetainProgram(cl_program /* program */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY cl_int CL_API_CALL
clReleaseProgram(cl_program /* program */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern "C" CL_API_ENTRY 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 */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY cl_int CL_API_CALL
clUnloadCompiler(void) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY 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 */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY 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 */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
/* Kernel Object APIs */
extern CL_API_ENTRY cl_kernel CL_API_CALL
clCreateKernel(cl_program /* program */,
const char * /* kernel_name */,
cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY cl_int CL_API_CALL
clCreateKernelsInProgram(cl_program /* program */,
cl_uint /* num_kernels */,
cl_kernel * /* kernels */,
cl_uint * /* num_kernels_ret */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY cl_int CL_API_CALL
clRetainKernel(cl_kernel /* kernel */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY cl_int CL_API_CALL
clReleaseKernel(cl_kernel /* kernel */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY cl_int CL_API_CALL
clSetKernelArg(cl_kernel /* kernel */,
cl_uint /* arg_index */,
size_t /* arg_size */,
const void * /* arg_value */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY 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 */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY 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 */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
/* Event Object APIs */
extern CL_API_ENTRY cl_int CL_API_CALL
clWaitForEvents(cl_uint /* num_events */,
const cl_event * /* event_list */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY 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 */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY cl_event CL_API_CALL
clCreateUserEvent(cl_context /* context */,
cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY cl_int CL_API_CALL
clRetainEvent(cl_event /* event */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY cl_int CL_API_CALL
clReleaseEvent(cl_event event) CL_API_SUFFIX__VERSION_1_0
{
TRACE("(cl_event event = %p)", event);
if(!event->isA(Devices::Object::T_Event))
return CL_INVALID_EVENT;
if(event->dereference())
{
event->freeDeviceData();
delete event;
}
return CL_SUCCESS;
}
extern CL_API_ENTRY cl_int CL_API_CALL
clSetUserEventStatus(cl_event /* event */,
cl_int /* execution_status */) CL_API_SUFFIX__VERSION_1_1
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY 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 */) CL_API_SUFFIX__VERSION_1_1
{
UNIMPLEMENTED();
return 0;
}
/* Profiling APIs */
extern CL_API_ENTRY 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) CL_API_SUFFIX__VERSION_1_0
{
TRACE("(cl_event event = %p, cl_profiling_info param_name = %u, size_t param_value_size = %lu, void * param_value = %p, size_t * param_value_size_ret = %lu)", event, param_name, param_value_size, param_value, param_value_size_ret);
if(!event->isA(Devices::Object::T_Event))
{
return CL_INVALID_EVENT;
}
return event->profilingInfo(param_name, param_value_size, param_value,
param_value_size_ret);
}
/* Flush and Finish APIs */
extern CL_API_ENTRY cl_int CL_API_CALL
clFlush(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY cl_int CL_API_CALL
clFinish(cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0
{
TRACE("(cl_command_queue command_queue = %p)", command_queue);
if(!command_queue->isA(Devices::Object::T_CommandQueue))
{
return CL_INVALID_COMMAND_QUEUE;
}
command_queue->finish();
return CL_SUCCESS;
}
/* Enqueued Commands APIs */
extern CL_API_ENTRY cl_int CL_API_CALL
clEnqueueReadBuffer(cl_command_queue /* command_queue */,
cl_mem /* buffer */,
cl_bool /* blocking_read */,
size_t /* offset */,
size_t /* cb */,
void * /* ptr */,
cl_uint /* num_events_in_wait_list */,
const cl_event * /* event_wait_list */,
cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY 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 */) CL_API_SUFFIX__VERSION_1_1
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY cl_int CL_API_CALL
clEnqueueWriteBuffer(cl_command_queue /* command_queue */,
cl_mem /* buffer */,
cl_bool /* blocking_write */,
size_t /* offset */,
size_t /* cb */,
const void * /* ptr */,
cl_uint /* num_events_in_wait_list */,
const cl_event * /* event_wait_list */,
cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY 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 */) CL_API_SUFFIX__VERSION_1_1
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY 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 cb, cl_uint num_events_in_wait_list, const cl_event * event_wait_list, cl_event * event) CL_API_SUFFIX__VERSION_1_0
{
TRACE("(cl_command_queue command_queue = %p, cl_mem src_buffer = %p, cl_mem dst_buffer = %p, size_t src_offset = %ul, size_t dst_offset = %ul, size_t cb = %ul, cl_uint num_events_in_wait_list = %u, const cl_event * event_wait_list = %p, cl_event * event = %p)", command_queue, src_buffer, dst_buffer, src_offset, dst_offset, cb, num_events_in_wait_list, event_wait_list, event);
cl_int rs = CL_SUCCESS;
if(!command_queue->isA(Devices::Object::T_CommandQueue))
return CL_INVALID_COMMAND_QUEUE;
Devices::CopyBufferEvent *command = new Devices::CopyBufferEvent(
(Devices::CommandQueue *)command_queue,
(Devices::MemObject *)src_buffer,
(Devices::MemObject *)dst_buffer,
src_offset, dst_offset, cb,
num_events_in_wait_list, (const Devices::Event **)event_wait_list, &rs
);
if(rs != CL_SUCCESS)
{
delete command;
return rs;
}
return queueEvent(command_queue, command, event, false);
}
extern CL_API_ENTRY 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 */) CL_API_SUFFIX__VERSION_1_1
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY 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 */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY 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 */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY 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 */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY 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 */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY 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 */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY 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 /* cb */,
cl_uint /* num_events_in_wait_list */,
const cl_event * /* event_wait_list */,
cl_event * /* event */,
cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY 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 */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY 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 */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY 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 */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY 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 */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY 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 */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY cl_int CL_API_CALL
clEnqueueMarker(cl_command_queue /* command_queue */,
cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY cl_int CL_API_CALL
clEnqueueWaitForEvents(cl_command_queue /* command_queue */,
cl_uint /* num_events */,
const cl_event * /* event_list */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY cl_int CL_API_CALL
clEnqueueBarrier(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
/* 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.
*/
extern CL_API_ENTRY void * CL_API_CALL clGetExtensionFunctionAddress(const char * /* func_name */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY 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 */) CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED
{
UNIMPLEMENTED();
return 0;
}
cl_int CL_API_ENTRY clSetMemObjectDestructorAPPLE(cl_mem /* memobj */,
void(* /*pfn_notify*/)(cl_mem /* memobj */, void* /*user_data*/),
void * /*user_data */) CL_EXT_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern void CL_API_ENTRY clLogMessagesToSystemLogAPPLE(const char * /* errstr */,
const void * /* private_info */,
size_t /* cb */,
void * /* user_data */) CL_EXT_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
}
extern void CL_API_ENTRY clLogMessagesToStdoutAPPLE(const char * /* errstr */,
const void * /* private_info */,
size_t /* cb */,
void * /* user_data */) CL_EXT_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
}
extern void CL_API_ENTRY clLogMessagesToStderrAPPLE(const char * /* errstr */,
const void * /* private_info */,
size_t /* cb */,
void * /* user_data */) CL_EXT_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
}
extern CL_API_ENTRY cl_int CL_API_CALL
clIcdGetPlatformIDsKHR(cl_uint /* num_entries */,
cl_platform_id * /* platforms */,
cl_uint * /* num_platforms */)
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY cl_int CL_API_CALL
clReleaseDeviceEXT(cl_device_id /*device*/) CL_EXT_SUFFIX__VERSION_1_1
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY cl_int CL_API_CALL
clRetainDeviceEXT(cl_device_id /*device*/) CL_EXT_SUFFIX__VERSION_1_1
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY cl_int CL_API_CALL
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*/) CL_EXT_SUFFIX__VERSION_1_1
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY cl_int CL_API_CALL
clGetDeviceImageInfoQCOM(cl_device_id device,
size_t image_width,
size_t image_height,
const cl_image_format *image_format,
cl_image_pitch_info_qcom param_name,
size_t param_value_size,
void *param_value,
size_t *param_value_size_ret)
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY cl_mem CL_API_CALL
clCreateFromGLBuffer(cl_context /* context */,
cl_mem_flags /* flags */,
cl_GLuint /* bufobj */,
int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY cl_mem CL_API_CALL
clCreateFromGLTexture2D(cl_context /* context */,
cl_mem_flags /* flags */,
cl_GLenum /* target */,
cl_GLint /* miplevel */,
cl_GLuint /* texture */,
cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY cl_mem CL_API_CALL
clCreateFromGLTexture3D(cl_context /* context */,
cl_mem_flags /* flags */,
cl_GLenum /* target */,
cl_GLint /* miplevel */,
cl_GLuint /* texture */,
cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY cl_mem CL_API_CALL
clCreateFromGLRenderbuffer(cl_context /* context */,
cl_mem_flags /* flags */,
cl_GLuint /* renderbuffer */,
cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY cl_int CL_API_CALL
clGetGLObjectInfo(cl_mem /* memobj */,
cl_gl_object_type * /* gl_object_type */,
cl_GLuint * /* gl_object_name */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY cl_int CL_API_CALL
clGetGLTextureInfo(cl_mem /* memobj */,
cl_gl_texture_info /* param_name */,
size_t /* param_value_size */,
void * /* param_value */,
size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY cl_int CL_API_CALL
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 */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY cl_int CL_API_CALL
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 */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY cl_int CL_API_CALL
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 */) CL_API_SUFFIX__VERSION_1_0
{
UNIMPLEMENTED();
return 0;
}
extern CL_API_ENTRY cl_event CL_API_CALL
clCreateEventFromGLsyncKHR(cl_context /* context */,
cl_GLsync /* cl_GLsync */,
cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1
{
UNIMPLEMENTED();
return 0;
}