123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374 |
- //////////////////////////////////////////////////////////////////////////
- // Copyright (c) 2009 Organic Vectory B.V.
- // Written by George van Venrooij
- //
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file license.txt)
- //////////////////////////////////////////////////////////////////////////
- #include "clew.h"
- #ifdef _WIN32
- #define WIN32_LEAN_AND_MEAN
- #define VC_EXTRALEAN
- #include <windows.h>
- typedef HMODULE CLEW_DYNLIB_HANDLE;
- #define CLEW_DYNLIB_OPEN LoadLibraryA
- #define CLEW_DYNLIB_CLOSE FreeLibrary
- #define CLEW_DYNLIB_IMPORT GetProcAddress
- #else
- #include <dlfcn.h>
- typedef void* CLEW_DYNLIB_HANDLE;
- #define CLEW_DYNLIB_OPEN(path) dlopen(path, RTLD_NOW | RTLD_GLOBAL)
- #define CLEW_DYNLIB_CLOSE dlclose
- #define CLEW_DYNLIB_IMPORT dlsym
- #endif
- #include <stdlib.h>
- //! \brief module handle
- static CLEW_DYNLIB_HANDLE module = NULL;
- // Variables holding function entry points
- PFNCLGETPLATFORMIDS __clewGetPlatformIDs = NULL;
- PFNCLGETPLATFORMINFO __clewGetPlatformInfo = NULL;
- PFNCLGETDEVICEIDS __clewGetDeviceIDs = NULL;
- PFNCLGETDEVICEINFO __clewGetDeviceInfo = NULL;
- PFNCLCREATECONTEXT __clewCreateContext = NULL;
- PFNCLCREATECONTEXTFROMTYPE __clewCreateContextFromType = NULL;
- PFNCLRETAINCONTEXT __clewRetainContext = NULL;
- PFNCLRELEASECONTEXT __clewReleaseContext = NULL;
- PFNCLGETCONTEXTINFO __clewGetContextInfo = NULL;
- PFNCLCREATECOMMANDQUEUE __clewCreateCommandQueue = NULL;
- PFNCLRETAINCOMMANDQUEUE __clewRetainCommandQueue = NULL;
- PFNCLRELEASECOMMANDQUEUE __clewReleaseCommandQueue = NULL;
- PFNCLGETCOMMANDQUEUEINFO __clewGetCommandQueueInfo = NULL;
- #ifdef CL_USE_DEPRECATED_OPENCL_1_0_APIS
- PFNCLSETCOMMANDQUEUEPROPERTY __clewSetCommandQueueProperty = NULL;
- #endif
- PFNCLCREATEBUFFER __clewCreateBuffer = NULL;
- PFNCLCREATESUBBUFFER __clewCreateSubBuffer = NULL;
- PFNCLCREATEIMAGE2D __clewCreateImage2D = NULL;
- PFNCLCREATEIMAGE3D __clewCreateImage3D = NULL;
- PFNCLRETAINMEMOBJECT __clewRetainMemObject = NULL;
- PFNCLRELEASEMEMOBJECT __clewReleaseMemObject = NULL;
- PFNCLGETSUPPORTEDIMAGEFORMATS __clewGetSupportedImageFormats = NULL;
- PFNCLGETMEMOBJECTINFO __clewGetMemObjectInfo = NULL;
- PFNCLGETIMAGEINFO __clewGetImageInfo = NULL;
- PFNCLSETMEMOBJECTDESTRUCTORCALLBACK __clewSetMemObjectDestructorCallback = NULL;
- PFNCLCREATESAMPLER __clewCreateSampler = NULL;
- PFNCLRETAINSAMPLER __clewRetainSampler = NULL;
- PFNCLRELEASESAMPLER __clewReleaseSampler = NULL;
- PFNCLGETSAMPLERINFO __clewGetSamplerInfo = NULL;
- PFNCLCREATEPROGRAMWITHSOURCE __clewCreateProgramWithSource = NULL;
- PFNCLCREATEPROGRAMWITHBINARY __clewCreateProgramWithBinary = NULL;
- PFNCLRETAINPROGRAM __clewRetainProgram = NULL;
- PFNCLRELEASEPROGRAM __clewReleaseProgram = NULL;
- PFNCLBUILDPROGRAM __clewBuildProgram = NULL;
- PFNCLUNLOADCOMPILER __clewUnloadCompiler = NULL;
- PFNCLGETPROGRAMINFO __clewGetProgramInfo = NULL;
- PFNCLGETPROGRAMBUILDINFO __clewGetProgramBuildInfo = NULL;
- PFNCLCREATEKERNEL __clewCreateKernel = NULL;
- PFNCLCREATEKERNELSINPROGRAM __clewCreateKernelsInProgram = NULL;
- PFNCLRETAINKERNEL __clewRetainKernel = NULL;
- PFNCLRELEASEKERNEL __clewReleaseKernel = NULL;
- PFNCLSETKERNELARG __clewSetKernelArg = NULL;
- PFNCLGETKERNELINFO __clewGetKernelInfo = NULL;
- PFNCLGETKERNELWORKGROUPINFO __clewGetKernelWorkGroupInfo = NULL;
- PFNCLWAITFOREVENTS __clewWaitForEvents = NULL;
- PFNCLGETEVENTINFO __clewGetEventInfo = NULL;
- PFNCLCREATEUSEREVENT __clewCreateUserEvent = NULL;
- PFNCLRETAINEVENT __clewRetainEvent = NULL;
- PFNCLRELEASEEVENT __clewReleaseEvent = NULL;
- PFNCLSETUSEREVENTSTATUS __clewSetUserEventStatus = NULL;
- PFNCLSETEVENTCALLBACK __clewSetEventCallback = NULL;
- PFNCLGETEVENTPROFILINGINFO __clewGetEventProfilingInfo = NULL;
- PFNCLFLUSH __clewFlush = NULL;
- PFNCLFINISH __clewFinish = NULL;
- PFNCLENQUEUEREADBUFFER __clewEnqueueReadBuffer = NULL;
- PFNCLENQUEUEREADBUFFERRECT __clewEnqueueReadBufferRect = NULL;
- PFNCLENQUEUEWRITEBUFFER __clewEnqueueWriteBuffer = NULL;
- PFNCLENQUEUEWRITEBUFFERRECT __clewEnqueueWriteBufferRect = NULL;
- PFNCLENQUEUECOPYBUFFER __clewEnqueueCopyBuffer = NULL;
- PFNCLENQUEUEREADIMAGE __clewEnqueueReadImage = NULL;
- PFNCLENQUEUEWRITEIMAGE __clewEnqueueWriteImage = NULL;
- PFNCLENQUEUECOPYIMAGE __clewEnqueueCopyImage = NULL;
- PFNCLENQUEUECOPYBUFFERRECT __clewEnqueueCopyBufferRect = NULL;
- PFNCLENQUEUECOPYIMAGETOBUFFER __clewEnqueueCopyImageToBuffer = NULL;
- PFNCLENQUEUECOPYBUFFERTOIMAGE __clewEnqueueCopyBufferToImage = NULL;
- PFNCLENQUEUEMAPBUFFER __clewEnqueueMapBuffer = NULL;
- PFNCLENQUEUEMAPIMAGE __clewEnqueueMapImage = NULL;
- PFNCLENQUEUEUNMAPMEMOBJECT __clewEnqueueUnmapMemObject = NULL;
- PFNCLENQUEUENDRANGEKERNEL __clewEnqueueNDRangeKernel = NULL;
- PFNCLENQUEUETASK __clewEnqueueTask = NULL;
- PFNCLENQUEUENATIVEKERNEL __clewEnqueueNativeKernel = NULL;
- PFNCLENQUEUEMARKER __clewEnqueueMarker = NULL;
- PFNCLENQUEUEWAITFOREVENTS __clewEnqueueWaitForEvents = NULL;
- PFNCLENQUEUEBARRIER __clewEnqueueBarrier = NULL;
- PFNCLGETEXTENSIONFUNCTIONADDRESS __clewGetExtensionFunctionAddress = NULL;
- void clewExit(void)
- {
- if (module != NULL)
- {
- // Ignore errors
- CLEW_DYNLIB_CLOSE(module);
- module = NULL;
- }
- }
- int clewInit(const char* path)
- {
- int error = 0;
- // Check if already initialized
- if (module != NULL)
- {
- return CLEW_SUCCESS;
- }
- // Load library
- module = CLEW_DYNLIB_OPEN(path);
- // Check for errors
- if (module == NULL)
- {
- return CLEW_ERROR_OPEN_FAILED;
- }
- // Set unloading
- error = atexit(clewExit);
- if (error)
- {
- // Failure queuing atexit, shutdown with error
- CLEW_DYNLIB_CLOSE(module);
- module = NULL;
- return CLEW_ERROR_ATEXIT_FAILED;
- }
- // Determine function entry-points
- __clewGetPlatformIDs = (PFNCLGETPLATFORMIDS)CLEW_DYNLIB_IMPORT(module, "clGetPlatformIDs");
- __clewGetPlatformInfo = (PFNCLGETPLATFORMINFO)CLEW_DYNLIB_IMPORT(module, "clGetPlatformInfo");
- __clewGetDeviceIDs = (PFNCLGETDEVICEIDS)CLEW_DYNLIB_IMPORT(module, "clGetDeviceIDs");
- __clewGetDeviceInfo = (PFNCLGETDEVICEINFO)CLEW_DYNLIB_IMPORT(module, "clGetDeviceInfo");
- __clewCreateContext = (PFNCLCREATECONTEXT)CLEW_DYNLIB_IMPORT(module, "clCreateContext");
- __clewCreateContextFromType = (PFNCLCREATECONTEXTFROMTYPE)CLEW_DYNLIB_IMPORT(module, "clCreateContextFromType");
- __clewRetainContext = (PFNCLRETAINCONTEXT)CLEW_DYNLIB_IMPORT(module, "clRetainContext");
- __clewReleaseContext = (PFNCLRELEASECONTEXT)CLEW_DYNLIB_IMPORT(module, "clReleaseContext");
- __clewGetContextInfo = (PFNCLGETCONTEXTINFO)CLEW_DYNLIB_IMPORT(module, "clGetContextInfo");
- __clewCreateCommandQueue = (PFNCLCREATECOMMANDQUEUE)CLEW_DYNLIB_IMPORT(module, "clCreateCommandQueue");
- __clewRetainCommandQueue = (PFNCLRETAINCOMMANDQUEUE)CLEW_DYNLIB_IMPORT(module, "clRetainCommandQueue");
- __clewReleaseCommandQueue = (PFNCLRELEASECOMMANDQUEUE)CLEW_DYNLIB_IMPORT(module, "clReleaseCommandQueue");
- __clewGetCommandQueueInfo = (PFNCLGETCOMMANDQUEUEINFO)CLEW_DYNLIB_IMPORT(module, "clGetCommandQueueInfo");
- #ifdef CL_USE_DEPRECATED_OPENCL_1_0_APIS
- __clewSetCommandQueueProperty = (PFNCLSETCOMMANDQUEUEPROPERTY)CLEW_DYNLIB_IMPORT(module, "clSetCommandQueueProperty");
- #endif
- __clewCreateBuffer = (PFNCLCREATEBUFFER)CLEW_DYNLIB_IMPORT(module, "clCreateBuffer");
- __clewCreateSubBuffer = (PFNCLCREATESUBBUFFER)CLEW_DYNLIB_IMPORT(module, "clCreateBuffer");
- __clewCreateImage2D = (PFNCLCREATEIMAGE2D)CLEW_DYNLIB_IMPORT(module, "clCreateImage2D");
- __clewCreateImage3D = (PFNCLCREATEIMAGE3D)CLEW_DYNLIB_IMPORT(module, "clCreateImage3D");
- __clewRetainMemObject = (PFNCLRETAINMEMOBJECT)CLEW_DYNLIB_IMPORT(module, "clRetainMemObject");
- __clewReleaseMemObject = (PFNCLRELEASEMEMOBJECT)CLEW_DYNLIB_IMPORT(module, "clReleaseMemObject");
- __clewGetSupportedImageFormats = (PFNCLGETSUPPORTEDIMAGEFORMATS)CLEW_DYNLIB_IMPORT(module, "clGetSupportedImageFormats");
- __clewGetMemObjectInfo = (PFNCLGETMEMOBJECTINFO)CLEW_DYNLIB_IMPORT(module, "clGetMemObjectInfo");
- __clewGetImageInfo = (PFNCLGETIMAGEINFO)CLEW_DYNLIB_IMPORT(module, "clGetImageInfo");
- __clewSetMemObjectDestructorCallback = (PFNCLSETMEMOBJECTDESTRUCTORCALLBACK)CLEW_DYNLIB_IMPORT(module, "clSetMemObjectDestructorCallback");
- __clewCreateSampler = (PFNCLCREATESAMPLER)CLEW_DYNLIB_IMPORT(module, "clCreateSampler");
- __clewRetainSampler = (PFNCLRETAINSAMPLER)CLEW_DYNLIB_IMPORT(module, "clRetainSampler");
- __clewReleaseSampler = (PFNCLRELEASESAMPLER)CLEW_DYNLIB_IMPORT(module, "clReleaseSampler");
- __clewGetSamplerInfo = (PFNCLGETSAMPLERINFO)CLEW_DYNLIB_IMPORT(module, "clGetSamplerInfo");
- __clewCreateProgramWithSource = (PFNCLCREATEPROGRAMWITHSOURCE)CLEW_DYNLIB_IMPORT(module, "clCreateProgramWithSource");
- __clewCreateProgramWithBinary = (PFNCLCREATEPROGRAMWITHBINARY)CLEW_DYNLIB_IMPORT(module, "clCreateProgramWithBinary");
- __clewRetainProgram = (PFNCLRETAINPROGRAM)CLEW_DYNLIB_IMPORT(module, "clRetainProgram");
- __clewReleaseProgram = (PFNCLRELEASEPROGRAM)CLEW_DYNLIB_IMPORT(module, "clReleaseProgram");
- __clewBuildProgram = (PFNCLBUILDPROGRAM)CLEW_DYNLIB_IMPORT(module, "clBuildProgram");
- __clewUnloadCompiler = (PFNCLUNLOADCOMPILER)CLEW_DYNLIB_IMPORT(module, "clUnloadCompiler");
- __clewGetProgramInfo = (PFNCLGETPROGRAMINFO)CLEW_DYNLIB_IMPORT(module, "clGetProgramInfo");
- __clewGetProgramBuildInfo = (PFNCLGETPROGRAMBUILDINFO)CLEW_DYNLIB_IMPORT(module, "clGetProgramBuildInfo");
- __clewCreateKernel = (PFNCLCREATEKERNEL)CLEW_DYNLIB_IMPORT(module, "clCreateKernel");
- __clewCreateKernelsInProgram = (PFNCLCREATEKERNELSINPROGRAM)CLEW_DYNLIB_IMPORT(module, "clCreateKernelsInProgram");
- __clewRetainKernel = (PFNCLRETAINKERNEL)CLEW_DYNLIB_IMPORT(module, "clRetainKernel");
- __clewReleaseKernel = (PFNCLRELEASEKERNEL)CLEW_DYNLIB_IMPORT(module, "clReleaseKernel");
- __clewSetKernelArg = (PFNCLSETKERNELARG)CLEW_DYNLIB_IMPORT(module, "clSetKernelArg");
- __clewGetKernelInfo = (PFNCLGETKERNELINFO)CLEW_DYNLIB_IMPORT(module, "clGetKernelInfo");
- __clewGetKernelWorkGroupInfo = (PFNCLGETKERNELWORKGROUPINFO)CLEW_DYNLIB_IMPORT(module, "clGetKernelWorkGroupInfo");
- __clewWaitForEvents = (PFNCLWAITFOREVENTS)CLEW_DYNLIB_IMPORT(module, "clWaitForEvents");
- __clewGetEventInfo = (PFNCLGETEVENTINFO)CLEW_DYNLIB_IMPORT(module, "clGetEventInfo");
- __clewCreateUserEvent = (PFNCLCREATEUSEREVENT)CLEW_DYNLIB_IMPORT(module, "clCreateUserEvent");
- __clewRetainEvent = (PFNCLRETAINEVENT)CLEW_DYNLIB_IMPORT(module, "clRetainEvent");
- __clewReleaseEvent = (PFNCLRELEASEEVENT)CLEW_DYNLIB_IMPORT(module, "clReleaseEvent");
- __clewSetUserEventStatus = (PFNCLSETUSEREVENTSTATUS)CLEW_DYNLIB_IMPORT(module, "clSetUserEventStatus");
- __clewSetEventCallback = (PFNCLSETEVENTCALLBACK)CLEW_DYNLIB_IMPORT(module, "clSetEventCallback");
- __clewGetEventProfilingInfo = (PFNCLGETEVENTPROFILINGINFO)CLEW_DYNLIB_IMPORT(module, "clGetEventProfilingInfo");
- __clewFlush = (PFNCLFLUSH)CLEW_DYNLIB_IMPORT(module, "clFlush");
- __clewFinish = (PFNCLFINISH)CLEW_DYNLIB_IMPORT(module, "clFinish");
- __clewEnqueueReadBuffer = (PFNCLENQUEUEREADBUFFER)CLEW_DYNLIB_IMPORT(module, "clEnqueueReadBuffer");
- __clewEnqueueReadBufferRect = (PFNCLENQUEUEREADBUFFERRECT)CLEW_DYNLIB_IMPORT(module, "clEnqueueReadBufferRect");
- __clewEnqueueWriteBuffer = (PFNCLENQUEUEWRITEBUFFER)CLEW_DYNLIB_IMPORT(module, "clEnqueueWriteBuffer");
- __clewEnqueueWriteBufferRect = (PFNCLENQUEUEWRITEBUFFERRECT)CLEW_DYNLIB_IMPORT(module, "clEnqueueWriteBufferRect");
- __clewEnqueueCopyBuffer = (PFNCLENQUEUECOPYBUFFER)CLEW_DYNLIB_IMPORT(module, "clEnqueueCopyBuffer");
- __clewEnqueueCopyBufferRect = (PFNCLENQUEUECOPYBUFFERRECT)CLEW_DYNLIB_IMPORT(module, "clEnqueueCopyBufferRect");
- __clewEnqueueReadImage = (PFNCLENQUEUEREADIMAGE)CLEW_DYNLIB_IMPORT(module, "clEnqueueReadImage");
- __clewEnqueueWriteImage = (PFNCLENQUEUEWRITEIMAGE)CLEW_DYNLIB_IMPORT(module, "clEnqueueWriteImage");
- __clewEnqueueCopyImage = (PFNCLENQUEUECOPYIMAGE)CLEW_DYNLIB_IMPORT(module, "clEnqueueCopyImage");
- __clewEnqueueCopyImageToBuffer = (PFNCLENQUEUECOPYIMAGETOBUFFER)CLEW_DYNLIB_IMPORT(module, "clEnqueueCopyImageToBuffer");
- __clewEnqueueCopyBufferToImage = (PFNCLENQUEUECOPYBUFFERTOIMAGE)CLEW_DYNLIB_IMPORT(module, "clEnqueueCopyBufferToImage");
- __clewEnqueueMapBuffer = (PFNCLENQUEUEMAPBUFFER)CLEW_DYNLIB_IMPORT(module, "clEnqueueMapBuffer");
- __clewEnqueueMapImage = (PFNCLENQUEUEMAPIMAGE)CLEW_DYNLIB_IMPORT(module, "clEnqueueMapImage");
- __clewEnqueueUnmapMemObject = (PFNCLENQUEUEUNMAPMEMOBJECT)CLEW_DYNLIB_IMPORT(module, "clEnqueueUnmapMemObject");
- __clewEnqueueNDRangeKernel = (PFNCLENQUEUENDRANGEKERNEL)CLEW_DYNLIB_IMPORT(module, "clEnqueueNDRangeKernel");
- __clewEnqueueTask = (PFNCLENQUEUETASK)CLEW_DYNLIB_IMPORT(module, "clEnqueueTask");
- __clewEnqueueNativeKernel = (PFNCLENQUEUENATIVEKERNEL)CLEW_DYNLIB_IMPORT(module, "clEnqueueNativeKernel");
- __clewEnqueueMarker = (PFNCLENQUEUEMARKER)CLEW_DYNLIB_IMPORT(module, "clEnqueueMarker");
- __clewEnqueueWaitForEvents = (PFNCLENQUEUEWAITFOREVENTS)CLEW_DYNLIB_IMPORT(module, "clEnqueueWaitForEvents");
- __clewEnqueueBarrier = (PFNCLENQUEUEBARRIER)CLEW_DYNLIB_IMPORT(module, "clEnqueueBarrier");
- __clewGetExtensionFunctionAddress = (PFNCLGETEXTENSIONFUNCTIONADDRESS)CLEW_DYNLIB_IMPORT(module, "clGetExtensionFunctionAddress");
- return CLEW_SUCCESS;
- }
- const char* clewErrorString(cl_int error)
- {
- static const char* strings[] =
- {
- // Error Codes
- "CL_SUCCESS" // 0
- ,
- "CL_DEVICE_NOT_FOUND" // -1
- ,
- "CL_DEVICE_NOT_AVAILABLE" // -2
- ,
- "CL_COMPILER_NOT_AVAILABLE" // -3
- ,
- "CL_MEM_OBJECT_ALLOCATION_FAILURE" // -4
- ,
- "CL_OUT_OF_RESOURCES" // -5
- ,
- "CL_OUT_OF_HOST_MEMORY" // -6
- ,
- "CL_PROFILING_INFO_NOT_AVAILABLE" // -7
- ,
- "CL_MEM_COPY_OVERLAP" // -8
- ,
- "CL_IMAGE_FORMAT_MISMATCH" // -9
- ,
- "CL_IMAGE_FORMAT_NOT_SUPPORTED" // -10
- ,
- "CL_BUILD_PROGRAM_FAILURE" // -11
- ,
- "CL_MAP_FAILURE" // -12
- ,
- "" // -13
- ,
- "" // -14
- ,
- "" // -15
- ,
- "" // -16
- ,
- "" // -17
- ,
- "" // -18
- ,
- "" // -19
- ,
- "" // -20
- ,
- "" // -21
- ,
- "" // -22
- ,
- "" // -23
- ,
- "" // -24
- ,
- "" // -25
- ,
- "" // -26
- ,
- "" // -27
- ,
- "" // -28
- ,
- "" // -29
- ,
- "CL_INVALID_VALUE" // -30
- ,
- "CL_INVALID_DEVICE_TYPE" // -31
- ,
- "CL_INVALID_PLATFORM" // -32
- ,
- "CL_INVALID_DEVICE" // -33
- ,
- "CL_INVALID_CONTEXT" // -34
- ,
- "CL_INVALID_QUEUE_PROPERTIES" // -35
- ,
- "CL_INVALID_COMMAND_QUEUE" // -36
- ,
- "CL_INVALID_HOST_PTR" // -37
- ,
- "CL_INVALID_MEM_OBJECT" // -38
- ,
- "CL_INVALID_IMAGE_FORMAT_DESCRIPTOR" // -39
- ,
- "CL_INVALID_IMAGE_SIZE" // -40
- ,
- "CL_INVALID_SAMPLER" // -41
- ,
- "CL_INVALID_BINARY" // -42
- ,
- "CL_INVALID_BUILD_OPTIONS" // -43
- ,
- "CL_INVALID_PROGRAM" // -44
- ,
- "CL_INVALID_PROGRAM_EXECUTABLE" // -45
- ,
- "CL_INVALID_KERNEL_NAME" // -46
- ,
- "CL_INVALID_KERNEL_DEFINITION" // -47
- ,
- "CL_INVALID_KERNEL" // -48
- ,
- "CL_INVALID_ARG_INDEX" // -49
- ,
- "CL_INVALID_ARG_VALUE" // -50
- ,
- "CL_INVALID_ARG_SIZE" // -51
- ,
- "CL_INVALID_KERNEL_ARGS" // -52
- ,
- "CL_INVALID_WORK_DIMENSION" // -53
- ,
- "CL_INVALID_WORK_GROUP_SIZE" // -54
- ,
- "CL_INVALID_WORK_ITEM_SIZE" // -55
- ,
- "CL_INVALID_GLOBAL_OFFSET" // -56
- ,
- "CL_INVALID_EVENT_WAIT_LIST" // -57
- ,
- "CL_INVALID_EVENT" // -58
- ,
- "CL_INVALID_OPERATION" // -59
- ,
- "CL_INVALID_GL_OBJECT" // -60
- ,
- "CL_INVALID_BUFFER_SIZE" // -61
- ,
- "CL_INVALID_MIP_LEVEL" // -62
- ,
- "CL_INVALID_GLOBAL_WORK_SIZE" // -63
- };
- return strings[-error];
- }
|