o patch for OpenCL package by Denis Golovan, resolves #18119

+ A constant for querying OpenCL version is added.
  + A small function for converting errors code into error texts is added.

git-svn-id: trunk@16495 -
This commit is contained in:
florian 2010-12-02 17:15:21 +00:00
parent 8b209be7e9
commit 07e3232fef

View File

@ -407,6 +407,7 @@ const
CL_DEVICE_VERSION = $102F;
CL_DEVICE_EXTENSIONS = $1030;
CL_DEVICE_PLATFORM = $1031;
CL_DEVICE_OPENCL_C_VERSION = $103D;
// cl_device_address_info - bitfield
CL_DEVICE_ADDRESS_32_BITS = (1 shl 0);
@ -1161,6 +1162,62 @@ function clEnqueueBarrier(command_queue: cl_command_queue
): cl_int; extdecl;
external {$ifdef DYNLINK}opencllib{$endif} name 'clEnqueueBarrier';
function clErrorText(err:cl_int):string;
implementation
function clErrorText(err:cl_int):string;
begin
case err of
CL_DEVICE_NOT_FOUND : clErrorText:='CL_DEVICE_NOT_FOUND';
CL_DEVICE_NOT_AVAILABLE : clErrorText:='CL_DEVICE_NOT_AVAILABLE';
CL_DEVICE_COMPILER_NOT_AVAILABLE : clErrorText:='CL_DEVICE_COMPILER_NOT_AVAILABLE';
CL_MEM_OBJECT_ALLOCATION_FAILURE : clErrorText:='CL_MEM_OBJECT_ALLOCATION_FAILURE';
CL_OUT_OF_RESOURCES : clErrorText:='CL_OUT_OF_RESOURCES';
CL_OUT_OF_HOST_MEMORY : clErrorText:='CL_OUT_OF_HOST_MEMORY';
CL_PROFILING_INFO_NOT_AVAILABLE : clErrorText:='CL_PROFILING_INFO_NOT_AVAILABLE';
CL_MEM_COPY_OVERLAP : clErrorText:='CL_MEM_COPY_OVERLAP';
CL_IMAGE_FORMAT_MISMATCH : clErrorText:='CL_IMAGE_FORMAT_MISMATCH';
CL_IMAGE_FORMAT_NOT_SUPPORTED : clErrorText:='CL_IMAGE_FORMAT_NOT_SUPPORTED';
CL_BUILD_PROGRAM_FAILURE : clErrorText:='CL_BUILD_PROGRAM_FAILURE';
CL_MAP_FAILURE : clErrorText:='CL_MAP_FAILURE';
CL_INVALID_VALUE : clErrorText:='CL_INVALID_VALUE';
CL_INVALID_DEVICE_TYPE : clErrorText:='CL_INVALID_DEVICE_TYPE';
CL_INVALID_PLATFORM : clErrorText:='CL_INVALID_PLATFORM';
CL_INVALID_DEVICE : clErrorText:='CL_INVALID_DEVICE';
CL_INVALID_CONTEXT : clErrorText:='CL_INVALID_CONTEXT';
CL_INVALID_QUEUE_PROPERTIES : clErrorText:='CL_INVALID_QUEUE_PROPERTIES';
CL_INVALID_COMMAND_QUEUE : clErrorText:='CL_INVALID_COMMAND_QUEUE';
CL_INVALID_HOST_PTR : clErrorText:='CL_INVALID_HOST_PTR';
CL_INVALID_MEM_OBJECT : clErrorText:='CL_INVALID_MEM_OBJECT';
CL_INVALID_IMAGE_FORMAT_DESCRIPTOR : clErrorText:='CL_INVALID_IMAGE_FORMAT_DESCRIPTOR';
CL_INVALID_IMAGE_SIZE : clErrorText:='CL_INVALID_IMAGE_SIZE';
CL_INVALID_SAMPLER : clErrorText:='CL_INVALID_SAMPLER';
CL_INVALID_BINARY : clErrorText:='CL_INVALID_BINARY';
CL_INVALID_BUILD_OPTIONS : clErrorText:='CL_INVALID_BUILD_OPTIONS';
CL_INVALID_PROGRAM : clErrorText:='CL_INVALID_PROGRAM';
CL_INVALID_PROGRAM_EXECUTABLE : clErrorText:='CL_INVALID_PROGRAM_EXECUTABLE';
CL_INVALID_KERNEL_NAME : clErrorText:='CL_INVALID_KERNEL_NAME';
CL_INVALID_KERNEL_DEFINITION : clErrorText:='CL_INVALID_KERNEL_DEFINITION';
CL_INVALID_KERNEL : clErrorText:='CL_INVALID_KERNEL';
CL_INVALID_ARG_INDEX : clErrorText:='CL_INVALID_ARG_INDEX';
CL_INVALID_ARG_VALUE : clErrorText:='CL_INVALID_ARG_VALUE';
CL_INVALID_ARG_SIZE : clErrorText:='CL_INVALID_ARG_SIZE';
CL_INVALID_KERNEL_ARGS : clErrorText:='CL_INVALID_KERNEL_ARGS';
CL_INVALID_WORK_DIMENSION : clErrorText:='CL_INVALID_WORK_DIMENSION';
CL_INVALID_WORK_GROUP_SIZE : clErrorText:='CL_INVALID_WORK_GROUP_SIZE';
CL_INVALID_WORK_ITEM_SIZE : clErrorText:='CL_INVALID_WORK_ITEM_SIZE';
CL_INVALID_GLOBAL_OFFSET : clErrorText:='CL_INVALID_GLOBAL_OFFSET';
CL_INVALID_EVENT_WAIT_LIST : clErrorText:='CL_INVALID_EVENT_WAIT_LIST';
CL_INVALID_EVENT : clErrorText:='CL_INVALID_EVENT';
CL_INVALID_OPERATION : clErrorText:='CL_INVALID_OPERATION';
CL_INVALID_GL_OBJECT : clErrorText:='CL_INVALID_GL_OBJECT';
CL_INVALID_BUFFER_SIZE : clErrorText:='CL_INVALID_BUFFER_SIZE';
CL_INVALID_MIP_LEVEL : clErrorText:='CL_INVALID_MIP_LEVEL';
else
clErrorText:='Unknown OpenCL error';
end;
end;
end.