25 #include <OpenCLFramework/clfException.hh>
26 #include <Base/Common/BIASpragma.hh>
29 #include <Base/Debug/Error.hh>
36 errorCode_ = clerror.err();
37 message_ = clerror.what();
43 case CL_DEVICE_NOT_FOUND:
44 reason_ =
"CL_DEVICE_NOT_FOUND.";
46 case CL_DEVICE_NOT_AVAILABLE:
47 reason_ =
"CL_DEVICE_NOT_AVAILABLE.";
49 case CL_COMPILER_NOT_AVAILABLE:
50 reason_ =
"CL_COMPILER_NOT_AVAILABLE.";
52 case CL_MEM_OBJECT_ALLOCATION_FAILURE:
53 reason_ =
"CL_MEM_OBJECT_ALLOCATION_FAILURE.";
55 case CL_OUT_OF_RESOURCES:
56 reason_ =
"CL_OUT_OF_RESOURCES.";
58 case CL_OUT_OF_HOST_MEMORY:
59 reason_ =
"CL_OUT_OF_HOST_MEMORY.";
61 case CL_PROFILING_INFO_NOT_AVAILABLE:
62 reason_ =
"CL_PROFILING_INFO_NOT_AVAILABLE.";
64 case CL_MEM_COPY_OVERLAP:
65 reason_ =
"CL_MEM_COPY_OVERLAP.";
67 case CL_IMAGE_FORMAT_MISMATCH:
68 reason_ =
"CL_IMAGE_FORMAT_MISMATCH.";
70 case CL_IMAGE_FORMAT_NOT_SUPPORTED:
71 reason_ =
"CL_IMAGE_FORMAT_NOT_SUPPORTED.";
73 case CL_BUILD_PROGRAM_FAILURE:
74 reason_ =
"CL_BUILD_PROGRAM_FAILURE.";
77 reason_ =
"CL_MAP_FAILURE.";
79 case CL_MISALIGNED_SUB_BUFFER_OFFSET:
80 reason_ =
"CL_MISALIGNED_SUB_BUFFER_OFFSET.";
82 case CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST:
83 reason_ =
"CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST.";
85 case CL_INVALID_VALUE:
86 reason_ =
"CL_INVALID_VALUE.";
88 case CL_INVALID_DEVICE_TYPE:
89 reason_ =
"CL_INVALID_DEVICE_TYPE.";
91 case CL_INVALID_PLATFORM:
92 reason_ =
"CL_INVALID_PLATFORM.";
94 case CL_INVALID_DEVICE:
95 reason_ =
"CL_INVALID_DEVICE.";
97 case CL_INVALID_CONTEXT:
98 reason_ =
"CL_INVALID_CONTEXT.";
100 case CL_INVALID_QUEUE_PROPERTIES:
101 reason_ =
"CL_INVALID_QUEUE_PROPERTIES.";
103 case CL_INVALID_COMMAND_QUEUE:
104 reason_ =
"CL_INVALID_COMMAND_QUEUE.";
106 case CL_INVALID_HOST_PTR:
107 reason_ =
"CL_INVALID_HOST_PTR.";
109 case CL_INVALID_MEM_OBJECT:
110 reason_ =
"CL_INVALID_MEM_OBJECT.";
112 case CL_INVALID_IMAGE_FORMAT_DESCRIPTOR:
113 reason_ =
"CL_INVALID_IMAGE_FORMAT_DESCRIPTOR.";
115 case CL_INVALID_IMAGE_SIZE:
116 reason_ =
"CL_INVALID_IMAGE_SIZE.";
118 case CL_INVALID_SAMPLER:
119 reason_ =
"CL_INVALID_SAMPLER.";
121 case CL_INVALID_BINARY:
122 reason_ =
"CL_INVALID_BINARY.";
124 case CL_INVALID_BUILD_OPTIONS:
125 reason_ =
"CL_INVALID_BUILD_OPTIONS.";
127 case CL_INVALID_PROGRAM:
128 reason_ =
"CL_INVALID_PROGRAM.";
130 case CL_INVALID_PROGRAM_EXECUTABLE:
131 reason_ =
"CL_INVALID_PROGRAM_EXECUTABLE.";
133 case CL_INVALID_KERNEL_NAME:
134 reason_ =
"CL_INVALID_KERNEL_NAME.";
136 case CL_INVALID_KERNEL_DEFINITION:
137 reason_ =
"CL_INVALID_KERNEL_DEFINITION.";
139 case CL_INVALID_KERNEL:
140 reason_ =
"CL_INVALID_KERNEL.";
142 case CL_INVALID_ARG_INDEX:
143 reason_ =
"CL_INVALID_ARG_INDEX.";
145 case CL_INVALID_ARG_VALUE:
146 reason_ =
"CL_INVALID_ARG_VALUE.";
148 case CL_INVALID_ARG_SIZE:
149 reason_ =
"CL_INVALID_ARG_SIZE.";
151 case CL_INVALID_KERNEL_ARGS:
152 reason_ =
"CL_INVALID_KERNEL_ARGS.";
154 case CL_INVALID_WORK_DIMENSION:
155 reason_ =
"CL_INVALID_WORK_DIMENSION.";
157 case CL_INVALID_WORK_GROUP_SIZE:
158 reason_ =
"CL_INVALID_WORK_GROUP_SIZE.";
160 case CL_INVALID_WORK_ITEM_SIZE:
161 reason_ =
"CL_INVALID_WORK_ITEM_SIZE.";
163 case CL_INVALID_GLOBAL_OFFSET:
164 reason_ =
"CL_INVALID_GLOBAL_OFFSET.";
166 case CL_INVALID_EVENT_WAIT_LIST:
167 reason_ =
"CL_INVALID_EVENT_WAIT_LIST.";
169 case CL_INVALID_EVENT:
170 reason_ =
"CL_INVALID_EVENT.";
172 case CL_INVALID_OPERATION:
173 reason_ =
"CL_INVALID_OPERATION.";
175 case CL_INVALID_GL_OBJECT:
176 reason_ =
"CL_INVALID_GL_OBJECT.";
178 case CL_INVALID_BUFFER_SIZE:
179 reason_ =
"CL_INVALID_BUFFER_SIZE.";
181 case CL_INVALID_MIP_LEVEL:
182 reason_ =
"CL_INVALID_DECS_LEVEL.";
184 case CL_INVALID_GLOBAL_WORK_SIZE:
185 reason_ =
"CL_INVALID_GLOBAL_WORK_SIZE.";
187 case CL_INVALID_PROPERTY:
188 reason_ =
"CL_INVALID_PROPERTY.";
191 reason_ =
"OpenCLFramework internal error";
194 reason_ =
"reason unknown.";
198 std::stringstream ss;
199 ss <<
"OpenCL Exception:\n" << fileName_ <<
" : " << lineNumber_ <<
"\n"
200 << message_ <<
" (" << errorCode_ <<
")\n" <<
"Reason: " << reason_;
201 detailed_ = ss.str();
216 return detailed_.c_str();
const std::string & GetReasonString() const
clf translated error code (todo clean up text)
virtual const char * what() const
clfException(cl::Error clerror, std::string file, int line)
is called by THROW_CL_EXCEPTION macro
const std::string & GetFileName() const
file in which error occured
const std::string & GetDetailedString() const
detailed combination of all info available
int GetErrorCode() const
clf error code
const std::string & GetMessageString() const
clf error message (usually name of failing c function)
int GetLineNumber() const
line in which error occured