Skip to content

Commit 0d2cee4

Browse files
committed
Merge pull request opencv#10971 from alalek:ocl_error_code_string
2 parents d1cecb0 + b1fc7d4 commit 0d2cee4

File tree

1 file changed

+75
-88
lines changed

1 file changed

+75
-88
lines changed

modules/core/src/ocl.cpp

Lines changed: 75 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -6015,98 +6015,85 @@ const char* convertTypeStr(int sdepth, int ddepth, int cn, char* buf)
60156015

60166016
const char* getOpenCLErrorString(int errorCode)
60176017
{
6018+
#define CV_OCL_CODE(id) case id: return #id
6019+
#define CV_OCL_CODE_(id, name) case id: return #name
60186020
switch (errorCode)
60196021
{
6020-
case 0: return "CL_SUCCESS";
6021-
case -1: return "CL_DEVICE_NOT_FOUND";
6022-
case -2: return "CL_DEVICE_NOT_AVAILABLE";
6023-
case -3: return "CL_COMPILER_NOT_AVAILABLE";
6024-
case -4: return "CL_MEM_OBJECT_ALLOCATION_FAILURE";
6025-
case -5: return "CL_OUT_OF_RESOURCES";
6026-
case -6: return "CL_OUT_OF_HOST_MEMORY";
6027-
case -7: return "CL_PROFILING_INFO_NOT_AVAILABLE";
6028-
case -8: return "CL_MEM_COPY_OVERLAP";
6029-
case -9: return "CL_IMAGE_FORMAT_MISMATCH";
6030-
case -10: return "CL_IMAGE_FORMAT_NOT_SUPPORTED";
6031-
case -11: return "CL_BUILD_PROGRAM_FAILURE";
6032-
case -12: return "CL_MAP_FAILURE";
6033-
case -13: return "CL_MISALIGNED_SUB_BUFFER_OFFSET";
6034-
case -14: return "CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST";
6035-
case -15: return "CL_COMPILE_PROGRAM_FAILURE";
6036-
case -16: return "CL_LINKER_NOT_AVAILABLE";
6037-
case -17: return "CL_LINK_PROGRAM_FAILURE";
6038-
case -18: return "CL_DEVICE_PARTITION_FAILED";
6039-
case -19: return "CL_KERNEL_ARG_INFO_NOT_AVAILABLE";
6040-
case -30: return "CL_INVALID_VALUE";
6041-
case -31: return "CL_INVALID_DEVICE_TYPE";
6042-
case -32: return "CL_INVALID_PLATFORM";
6043-
case -33: return "CL_INVALID_DEVICE";
6044-
case -34: return "CL_INVALID_CONTEXT";
6045-
case -35: return "CL_INVALID_QUEUE_PROPERTIES";
6046-
case -36: return "CL_INVALID_COMMAND_QUEUE";
6047-
case -37: return "CL_INVALID_HOST_PTR";
6048-
case -38: return "CL_INVALID_MEM_OBJECT";
6049-
case -39: return "CL_INVALID_IMAGE_FORMAT_DESCRIPTOR";
6050-
case -40: return "CL_INVALID_IMAGE_SIZE";
6051-
case -41: return "CL_INVALID_SAMPLER";
6052-
case -42: return "CL_INVALID_BINARY";
6053-
case -43: return "CL_INVALID_BUILD_OPTIONS";
6054-
case -44: return "CL_INVALID_PROGRAM";
6055-
case -45: return "CL_INVALID_PROGRAM_EXECUTABLE";
6056-
case -46: return "CL_INVALID_KERNEL_NAME";
6057-
case -47: return "CL_INVALID_KERNEL_DEFINITION";
6058-
case -48: return "CL_INVALID_KERNEL";
6059-
case -49: return "CL_INVALID_ARG_INDEX";
6060-
case -50: return "CL_INVALID_ARG_VALUE";
6061-
case -51: return "CL_INVALID_ARG_SIZE";
6062-
case -52: return "CL_INVALID_KERNEL_ARGS";
6063-
case -53: return "CL_INVALID_WORK_DIMENSION";
6064-
case -54: return "CL_INVALID_WORK_GROUP_SIZE";
6065-
case -55: return "CL_INVALID_WORK_ITEM_SIZE";
6066-
case -56: return "CL_INVALID_GLOBAL_OFFSET";
6067-
case -57: return "CL_INVALID_EVENT_WAIT_LIST";
6068-
case -58: return "CL_INVALID_EVENT";
6069-
case -59: return "CL_INVALID_OPERATION";
6070-
case -60: return "CL_INVALID_GL_OBJECT";
6071-
case -61: return "CL_INVALID_BUFFER_SIZE";
6072-
case -62: return "CL_INVALID_MIP_LEVEL";
6073-
case -63: return "CL_INVALID_GLOBAL_WORK_SIZE";
6074-
case -64: return "CL_INVALID_PROPERTY";
6075-
case -65: return "CL_INVALID_IMAGE_DESCRIPTOR";
6076-
case -66: return "CL_INVALID_COMPILER_OPTIONS";
6077-
case -67: return "CL_INVALID_LINKER_OPTIONS";
6078-
case -68: return "CL_INVALID_DEVICE_PARTITION_COUNT";
6079-
case -69: return "CL_INVALID_PIPE_SIZE";
6080-
case -70: return "CL_INVALID_DEVICE_QUEUE";
6081-
case -1000: return "CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR";
6082-
case -1001: return "CL_PLATFORM_NOT_FOUND_KHR";
6083-
case -1002: return "CL_INVALID_D3D10_DEVICE_KHR";
6084-
case -1003: return "CL_INVALID_D3D10_RESOURCE_KHR";
6085-
case -1004: return "CL_D3D10_RESOURCE_ALREADY_ACQUIRED_KHR";
6086-
case -1005: return "CL_D3D10_RESOURCE_NOT_ACQUIRED_KHR";
6087-
case -1024: return "clBLAS: Functionality is not implemented";
6088-
case -1023: return "clBLAS: Library is not initialized yet";
6089-
case -1022: return "clBLAS: Matrix A is not a valid memory object";
6090-
case -1021: return "clBLAS: Matrix B is not a valid memory object";
6091-
case -1020: return "clBLAS: Matrix C is not a valid memory object";
6092-
case -1019: return "clBLAS: Vector X is not a valid memory object";
6093-
case -1018: return "clBLAS: Vector Y is not a valid memory object";
6094-
case -1017: return "clBLAS: An input dimension (M:N:K) is invalid";
6095-
case -1016: return "clBLAS: Leading dimension A must not be less than the "
6096-
"size of the first dimension";
6097-
case -1015: return "clBLAS: Leading dimension B must not be less than the "
6098-
"size of the second dimension";
6099-
case -1014: return "clBLAS: Leading dimension C must not be less than the "
6100-
"size of the third dimension";
6101-
case -1013: return "clBLAS: The increment for a vector X must not be 0";
6102-
case -1012: return "clBLAS: The increment for a vector Y must not be 0";
6103-
case -1011: return "clBLAS: The memory object for Matrix A is too small";
6104-
case -1010: return "clBLAS: The memory object for Matrix B is too small";
6105-
case -1009: return "clBLAS: The memory object for Matrix C is too small";
6106-
case -1008: return "clBLAS: The memory object for Vector X is too small";
6107-
case -1007: return "clBLAS: The memory object for Vector Y is too small";
6022+
CV_OCL_CODE(CL_SUCCESS);
6023+
CV_OCL_CODE(CL_DEVICE_NOT_FOUND);
6024+
CV_OCL_CODE(CL_DEVICE_NOT_AVAILABLE);
6025+
CV_OCL_CODE(CL_COMPILER_NOT_AVAILABLE);
6026+
CV_OCL_CODE(CL_MEM_OBJECT_ALLOCATION_FAILURE);
6027+
CV_OCL_CODE(CL_OUT_OF_RESOURCES);
6028+
CV_OCL_CODE(CL_OUT_OF_HOST_MEMORY);
6029+
CV_OCL_CODE(CL_PROFILING_INFO_NOT_AVAILABLE);
6030+
CV_OCL_CODE(CL_MEM_COPY_OVERLAP);
6031+
CV_OCL_CODE(CL_IMAGE_FORMAT_MISMATCH);
6032+
CV_OCL_CODE(CL_IMAGE_FORMAT_NOT_SUPPORTED);
6033+
CV_OCL_CODE(CL_BUILD_PROGRAM_FAILURE);
6034+
CV_OCL_CODE(CL_MAP_FAILURE);
6035+
CV_OCL_CODE(CL_MISALIGNED_SUB_BUFFER_OFFSET);
6036+
CV_OCL_CODE(CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST);
6037+
CV_OCL_CODE(CL_COMPILE_PROGRAM_FAILURE);
6038+
CV_OCL_CODE(CL_LINKER_NOT_AVAILABLE);
6039+
CV_OCL_CODE(CL_LINK_PROGRAM_FAILURE);
6040+
CV_OCL_CODE(CL_DEVICE_PARTITION_FAILED);
6041+
CV_OCL_CODE(CL_KERNEL_ARG_INFO_NOT_AVAILABLE);
6042+
CV_OCL_CODE(CL_INVALID_VALUE);
6043+
CV_OCL_CODE(CL_INVALID_DEVICE_TYPE);
6044+
CV_OCL_CODE(CL_INVALID_PLATFORM);
6045+
CV_OCL_CODE(CL_INVALID_DEVICE);
6046+
CV_OCL_CODE(CL_INVALID_CONTEXT);
6047+
CV_OCL_CODE(CL_INVALID_QUEUE_PROPERTIES);
6048+
CV_OCL_CODE(CL_INVALID_COMMAND_QUEUE);
6049+
CV_OCL_CODE(CL_INVALID_HOST_PTR);
6050+
CV_OCL_CODE(CL_INVALID_MEM_OBJECT);
6051+
CV_OCL_CODE(CL_INVALID_IMAGE_FORMAT_DESCRIPTOR);
6052+
CV_OCL_CODE(CL_INVALID_IMAGE_SIZE);
6053+
CV_OCL_CODE(CL_INVALID_SAMPLER);
6054+
CV_OCL_CODE(CL_INVALID_BINARY);
6055+
CV_OCL_CODE(CL_INVALID_BUILD_OPTIONS);
6056+
CV_OCL_CODE(CL_INVALID_PROGRAM);
6057+
CV_OCL_CODE(CL_INVALID_PROGRAM_EXECUTABLE);
6058+
CV_OCL_CODE(CL_INVALID_KERNEL_NAME);
6059+
CV_OCL_CODE(CL_INVALID_KERNEL_DEFINITION);
6060+
CV_OCL_CODE(CL_INVALID_KERNEL);
6061+
CV_OCL_CODE(CL_INVALID_ARG_INDEX);
6062+
CV_OCL_CODE(CL_INVALID_ARG_VALUE);
6063+
CV_OCL_CODE(CL_INVALID_ARG_SIZE);
6064+
CV_OCL_CODE(CL_INVALID_KERNEL_ARGS);
6065+
CV_OCL_CODE(CL_INVALID_WORK_DIMENSION);
6066+
CV_OCL_CODE(CL_INVALID_WORK_GROUP_SIZE);
6067+
CV_OCL_CODE(CL_INVALID_WORK_ITEM_SIZE);
6068+
CV_OCL_CODE(CL_INVALID_GLOBAL_OFFSET);
6069+
CV_OCL_CODE(CL_INVALID_EVENT_WAIT_LIST);
6070+
CV_OCL_CODE(CL_INVALID_EVENT);
6071+
CV_OCL_CODE(CL_INVALID_OPERATION);
6072+
CV_OCL_CODE(CL_INVALID_GL_OBJECT);
6073+
CV_OCL_CODE(CL_INVALID_BUFFER_SIZE);
6074+
CV_OCL_CODE(CL_INVALID_MIP_LEVEL);
6075+
CV_OCL_CODE(CL_INVALID_GLOBAL_WORK_SIZE);
6076+
// OpenCL 1.1
6077+
CV_OCL_CODE(CL_INVALID_PROPERTY);
6078+
// OpenCL 1.2
6079+
CV_OCL_CODE(CL_INVALID_IMAGE_DESCRIPTOR);
6080+
CV_OCL_CODE(CL_INVALID_COMPILER_OPTIONS);
6081+
CV_OCL_CODE(CL_INVALID_LINKER_OPTIONS);
6082+
CV_OCL_CODE(CL_INVALID_DEVICE_PARTITION_COUNT);
6083+
// OpenCL 2.0
6084+
CV_OCL_CODE_(-69, CL_INVALID_PIPE_SIZE);
6085+
CV_OCL_CODE_(-70, CL_INVALID_DEVICE_QUEUE);
6086+
// Extensions
6087+
CV_OCL_CODE_(-1000, CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR);
6088+
CV_OCL_CODE_(-1001, CL_PLATFORM_NOT_FOUND_KHR);
6089+
CV_OCL_CODE_(-1002, CL_INVALID_D3D10_DEVICE_KHR);
6090+
CV_OCL_CODE_(-1003, CL_INVALID_D3D10_RESOURCE_KHR);
6091+
CV_OCL_CODE_(-1004, CL_D3D10_RESOURCE_ALREADY_ACQUIRED_KHR);
6092+
CV_OCL_CODE_(-1005, CL_D3D10_RESOURCE_NOT_ACQUIRED_KHR);
61086093
default: return "Unknown OpenCL error";
61096094
}
6095+
#undef CV_OCL_CODE
6096+
#undef CV_OCL_CODE_
61106097
}
61116098

61126099
template <typename T>

0 commit comments

Comments
 (0)