aboutsummaryrefslogtreecommitdiff
path: root/cl_error.c
diff options
context:
space:
mode:
authorDavid Phillips <david@sighup.nz>2017-02-12 21:04:58 +1300
committerDavid Phillips <david@sighup.nz>2017-02-12 21:12:05 +1300
commit6605c05adf8775eddb1d4045b408895e0183f931 (patch)
treeedb9333d528d8fa22b900bbf7cccc57966cbe945 /cl_error.c
parentc83eacc524ffd0cc3e93a2b88ea69e98c04859ec (diff)
downloadfractal-gen-opencl-6605c05adf8775eddb1d4045b408895e0183f931.tar.xz
Add stringy CL error messages
Diffstat (limited to 'cl_error.c')
-rw-r--r--cl_error.c84
1 files changed, 84 insertions, 0 deletions
diff --git a/cl_error.c b/cl_error.c
new file mode 100644
index 0000000..293a3d8
--- /dev/null
+++ b/cl_error.c
@@ -0,0 +1,84 @@
+#include <cl.h>
+
+static const char *cl_error_strings[] = {
+ "CL_SUCCESS",
+ "CL_DEVICE_NOT_FOUND",
+ "CL_DEVICE_NOT_AVAILABLE",
+ "CL_COMPILER_NOT_AVAILABLE",
+ "CL_MEM_OBJECT_ALLOCATION_FAILURE",
+ "CL_OUT_OF_RESOURCES",
+ "CL_OUT_OF_HOST_MEMORY",
+ "CL_PROFILING_INFO_NOT_AVAILABLE",
+ "CL_MEM_COPY_OVERLAP",
+ "CL_IMAGE_FORMAT_MISMATCH",
+ "CL_IMAGE_FORMAT_NOT_SUPPORTED",
+ "CL_BUILD_PROGRAM_FAILURE",
+ "CL_MAP_FAILURE",
+ "CL_MISALIGNED_SUB_BUFFER_OFFSET",
+ "CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST",
+ "CL_COMPILE_PROGRAM_FAILURE",
+ "CL_LINKER_NOT_AVAILABLE",
+ "CL_LINK_PROGRAM_FAILURE",
+ "CL_DEVICE_PARTITION_FAILED",
+ "CL_KERNEL_ARG_INFO_NOT_AVAILABLE",
+ "(Invalid)",
+ "(Invalid)",
+ "(Invalid)",
+ "(Invalid)",
+ "(Invalid)",
+ "(Invalid)",
+ "(Invalid)",
+ "(Invalid)",
+ "(Invalid)",
+ "(Invalid)",
+ "CL_INVALID_VALUE",
+ "CL_INVALID_DEVICE_TYPE",
+ "CL_INVALID_PLATFORM",
+ "CL_INVALID_DEVICE",
+ "CL_INVALID_CONTEXT",
+ "CL_INVALID_QUEUE_PROPERTIES",
+ "CL_INVALID_COMMAND_QUEUE",
+ "CL_INVALID_HOST_PTR",
+ "CL_INVALID_MEM_OBJECT",
+ "CL_INVALID_IMAGE_FORMAT_DESCRIPTOR",
+ "CL_INVALID_IMAGE_SIZE",
+ "CL_INVALID_SAMPLER",
+ "CL_INVALID_BINARY",
+ "CL_INVALID_BUILD_OPTIONS",
+ "CL_INVALID_PROGRAM",
+ "CL_INVALID_PROGRAM_EXECUTABLE",
+ "CL_INVALID_KERNEL_NAME",
+ "CL_INVALID_KERNEL_DEFINITION",
+ "CL_INVALID_KERNEL",
+ "CL_INVALID_ARG_INDEX",
+ "CL_INVALID_ARG_VALUE",
+ "CL_INVALID_ARG_SIZE",
+ "CL_INVALID_KERNEL_ARGS",
+ "CL_INVALID_WORK_DIMENSION",
+ "CL_INVALID_WORK_GROUP_SIZE",
+ "CL_INVALID_WORK_ITEM_SIZE",
+ "CL_INVALID_GLOBAL_OFFSET",
+ "CL_INVALID_EVENT_WAIT_LIST",
+ "CL_INVALID_EVENT",
+ "CL_INVALID_OPERATION",
+ "CL_INVALID_GL_OBJECT",
+ "CL_INVALID_BUFFER_SIZE",
+ "CL_INVALID_MIP_LEVEL",
+ "CL_INVALID_GLOBAL_WORK_SIZE",
+ "CL_INVALID_PROPERTY",
+ "CL_INVALID_IMAGE_DESCRIPTOR",
+ "CL_INVALID_COMPILER_OPTIONS",
+ "CL_INVALID_LINKER_OPTIONS",
+ "CL_INVALID_DEVICE_PARTITION_COUNT",
+ "CL_INVALID_PIPE_SIZE",
+ "CL_INVALID_DEVICE_QUEUE",
+};
+
+const char *get_cl_error_string(cl_int error)
+{
+ error = -error;
+ if (error < 0 || error > sizeof(cl_error_strings) / sizeof(const char *))
+ return "Error value out of bounds";
+
+ return cl_error_strings[error];
+}