easy_async_opencl3/error/
api_error.rs1#[derive(Debug)]
2pub enum ApiError {
3 Unknown(i32),
4 ClAcceleratorTypeNotSupportedIntel,
5 ClBuildProgramFailure,
6 ClCancelledImg,
7 ClCommandTerminatedItselfWithFailureArm,
8 ClCompilerNotAvailable,
9 ClCompileProgramFailure,
10 ClContextTerminatedKhr,
11 ClD3D11ResourceAlreadyAcquiredKhr,
12 ClD3D11ResourceNotAcquiredKhr,
13 ClDeviceNotAvailable,
14 ClDeviceNotFound,
15 ClMemObjectAllocationFailure,
16 ClOutOfResources,
17 ClOutOfHostMemory,
18 ClProfilingInfoNotAvailable,
19 ClMemCopyOverlap,
20 ClImageFormatMismatch,
21 ClImageFormatNotSupported,
22 ClMapFailure,
23 ClMisalignedSubBufferOffset,
24 ClExecStatusErrorForEventsInWaitList,
25 ClLinkerNotAvailable,
26 ClLinkProgramFailure,
27 ClDevicePartitionFailed,
28 ClKernelArgInfoNotAvailable,
29 ClInvalidValue,
30 ClInvalidDeviceType,
31 ClInvalidPlatform,
32 ClInvalidDevice,
33 ClInvalidContext,
34 ClInvalidQueueProperties,
35 ClInvalidCommandQueue,
36 ClInvalidHostPtr,
37 ClInvalidMemObject,
38 ClInvalidImageFormatDescriptor,
39 ClInvalidImageSize,
40 ClInvalidSampler,
41 ClInvalidBinary,
42 ClInvalidBuildOptions,
43 ClInvalidProgram,
44 ClInvalidProgramExecutable,
45 ClInvalidKernelName,
46 ClInvalidKernelDefinition,
47 ClInvalidKernel,
48 ClInvalidArgIndex,
49 ClInvalidArgValue,
50 ClInvalidArgSize,
51 ClInvalidKernelArgs,
52 ClInvalidWorkDimension,
53 ClInvalidWorkGroupSize,
54 ClInvalidWorkItemSize,
55 ClInvalidGlobalOffset,
56 ClInvalidEventWaitList,
57 ClInvalidEvent,
58 ClInvalidOperation,
59 ClInvalidGlObject,
60 ClInvalidBufferSize,
61 ClInvalidMipLevel,
62 ClInvalidGlobalWorkSize,
63 ClInvalidProperty,
64 ClInvalidImageDescriptor,
65 ClInvalidCompilerOptions,
66 ClInvalidLinkerOptions,
67 ClInvalidDevicePartitionCount,
68 ClInvalidPipeSize,
69 ClInvalidDeviceQueue,
70 ClInvalidSpecId,
71 ClMaxSizeRestrictionExceeded,
72}
73
74impl ApiError {
75 pub fn get_error(code: i32) -> ApiError {
76 match code {
77 cl3::error_codes::CL_ACCELERATOR_TYPE_NOT_SUPPORTED_INTEL => {
78 ApiError::ClAcceleratorTypeNotSupportedIntel
79 }
80 cl3::error_codes::CL_BUILD_PROGRAM_FAILURE => ApiError::ClBuildProgramFailure,
81 cl3::error_codes::CL_CANCELLED_IMG => ApiError::ClCancelledImg,
82 cl3::error_codes::CL_COMMAND_TERMINATED_ITSELF_WITH_FAILURE_ARM => {
83 ApiError::ClCommandTerminatedItselfWithFailureArm
84 }
85 cl3::error_codes::CL_COMPILER_NOT_AVAILABLE => ApiError::ClCompilerNotAvailable,
86 cl3::error_codes::CL_COMPILE_PROGRAM_FAILURE => ApiError::ClCompileProgramFailure,
87 cl3::error_codes::CL_CONTEXT_TERMINATED_KHR => ApiError::ClContextTerminatedKhr,
88 cl3::error_codes::CL_D3D11_RESOURCE_ALREADY_ACQUIRED_KHR => {
89 ApiError::ClD3D11ResourceAlreadyAcquiredKhr
90 }
91 cl3::error_codes::CL_D3D11_RESOURCE_NOT_ACQUIRED_KHR => {
92 ApiError::ClD3D11ResourceNotAcquiredKhr
93 }
94 cl3::error_codes::CL_DEVICE_NOT_AVAILABLE => ApiError::ClDeviceNotAvailable,
95 cl3::error_codes::CL_DEVICE_NOT_FOUND => ApiError::ClDeviceNotFound,
96 cl3::error_codes::CL_MEM_OBJECT_ALLOCATION_FAILURE => {
97 ApiError::ClMemObjectAllocationFailure
98 }
99 cl3::error_codes::CL_OUT_OF_RESOURCES => ApiError::ClOutOfResources,
100 cl3::error_codes::CL_OUT_OF_HOST_MEMORY => ApiError::ClOutOfHostMemory,
101 cl3::error_codes::CL_PROFILING_INFO_NOT_AVAILABLE => {
102 ApiError::ClProfilingInfoNotAvailable
103 }
104 cl3::error_codes::CL_MEM_COPY_OVERLAP => ApiError::ClMemCopyOverlap,
105 cl3::error_codes::CL_IMAGE_FORMAT_MISMATCH => ApiError::ClImageFormatMismatch,
106 cl3::error_codes::CL_IMAGE_FORMAT_NOT_SUPPORTED => ApiError::ClImageFormatNotSupported,
107 cl3::error_codes::CL_MAP_FAILURE => ApiError::ClMapFailure,
108 cl3::error_codes::CL_MISALIGNED_SUB_BUFFER_OFFSET => {
109 ApiError::ClMisalignedSubBufferOffset
110 }
111 cl3::error_codes::CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST => {
112 ApiError::ClExecStatusErrorForEventsInWaitList
113 }
114 cl3::error_codes::CL_LINKER_NOT_AVAILABLE => ApiError::ClLinkerNotAvailable,
115 cl3::error_codes::CL_LINK_PROGRAM_FAILURE => ApiError::ClLinkProgramFailure,
116 cl3::error_codes::CL_DEVICE_PARTITION_FAILED => ApiError::ClDevicePartitionFailed,
117 cl3::error_codes::CL_KERNEL_ARG_INFO_NOT_AVAILABLE => {
118 ApiError::ClKernelArgInfoNotAvailable
119 }
120 cl3::error_codes::CL_INVALID_VALUE => ApiError::ClInvalidValue,
121 cl3::error_codes::CL_INVALID_DEVICE_TYPE => ApiError::ClInvalidDeviceType,
122 cl3::error_codes::CL_INVALID_PLATFORM => ApiError::ClInvalidPlatform,
123 cl3::error_codes::CL_INVALID_DEVICE => ApiError::ClInvalidDevice,
124 cl3::error_codes::CL_INVALID_CONTEXT => ApiError::ClInvalidContext,
125 cl3::error_codes::CL_INVALID_QUEUE_PROPERTIES => ApiError::ClInvalidQueueProperties,
126 cl3::error_codes::CL_INVALID_COMMAND_QUEUE => ApiError::ClInvalidCommandQueue,
127 cl3::error_codes::CL_INVALID_HOST_PTR => ApiError::ClInvalidHostPtr,
128 cl3::error_codes::CL_INVALID_MEM_OBJECT => ApiError::ClInvalidMemObject,
129 cl3::error_codes::CL_INVALID_IMAGE_FORMAT_DESCRIPTOR => {
130 ApiError::ClInvalidImageFormatDescriptor
131 }
132 cl3::error_codes::CL_INVALID_IMAGE_SIZE => ApiError::ClInvalidImageSize,
133 cl3::error_codes::CL_INVALID_SAMPLER => ApiError::ClInvalidSampler,
134 cl3::error_codes::CL_INVALID_BINARY => ApiError::ClInvalidBinary,
135 cl3::error_codes::CL_INVALID_BUILD_OPTIONS => ApiError::ClInvalidBuildOptions,
136 cl3::error_codes::CL_INVALID_PROGRAM => ApiError::ClInvalidProgram,
137 cl3::error_codes::CL_INVALID_PROGRAM_EXECUTABLE => ApiError::ClInvalidProgramExecutable,
138 cl3::error_codes::CL_INVALID_KERNEL_NAME => ApiError::ClInvalidKernelName,
139 cl3::error_codes::CL_INVALID_KERNEL_DEFINITION => ApiError::ClInvalidKernelDefinition,
140 cl3::error_codes::CL_INVALID_KERNEL => ApiError::ClInvalidKernel,
141 cl3::error_codes::CL_INVALID_ARG_INDEX => ApiError::ClInvalidArgIndex,
142 cl3::error_codes::CL_INVALID_ARG_VALUE => ApiError::ClInvalidArgValue,
143 cl3::error_codes::CL_INVALID_ARG_SIZE => ApiError::ClInvalidArgSize,
144 cl3::error_codes::CL_INVALID_KERNEL_ARGS => ApiError::ClInvalidKernelArgs,
145 cl3::error_codes::CL_INVALID_WORK_DIMENSION => ApiError::ClInvalidWorkDimension,
146 cl3::error_codes::CL_INVALID_WORK_GROUP_SIZE => ApiError::ClInvalidWorkGroupSize,
147 cl3::error_codes::CL_INVALID_WORK_ITEM_SIZE => ApiError::ClInvalidWorkItemSize,
148 cl3::error_codes::CL_INVALID_GLOBAL_OFFSET => ApiError::ClInvalidGlobalOffset,
149 cl3::error_codes::CL_INVALID_EVENT_WAIT_LIST => ApiError::ClInvalidEventWaitList,
150 cl3::error_codes::CL_INVALID_EVENT => ApiError::ClInvalidEvent,
151 cl3::error_codes::CL_INVALID_OPERATION => ApiError::ClInvalidOperation,
152 cl3::error_codes::CL_INVALID_GL_OBJECT => ApiError::ClInvalidGlObject,
153 cl3::error_codes::CL_INVALID_BUFFER_SIZE => ApiError::ClInvalidBufferSize,
154 cl3::error_codes::CL_INVALID_MIP_LEVEL => ApiError::ClInvalidMipLevel,
155 cl3::error_codes::CL_INVALID_GLOBAL_WORK_SIZE => ApiError::ClInvalidGlobalWorkSize,
156 cl3::error_codes::CL_INVALID_PROPERTY => ApiError::ClInvalidProperty,
157 cl3::error_codes::CL_INVALID_IMAGE_DESCRIPTOR => ApiError::ClInvalidImageDescriptor,
158 cl3::error_codes::CL_INVALID_COMPILER_OPTIONS => ApiError::ClInvalidCompilerOptions,
159 cl3::error_codes::CL_INVALID_LINKER_OPTIONS => ApiError::ClInvalidLinkerOptions,
160 cl3::error_codes::CL_INVALID_DEVICE_PARTITION_COUNT => {
161 ApiError::ClInvalidDevicePartitionCount
162 }
163 cl3::error_codes::CL_INVALID_PIPE_SIZE => ApiError::ClInvalidPipeSize,
164 cl3::error_codes::CL_INVALID_DEVICE_QUEUE => ApiError::ClInvalidDeviceQueue,
165 cl3::error_codes::CL_INVALID_SPEC_ID => ApiError::ClInvalidSpecId,
166 cl3::error_codes::CL_MAX_SIZE_RESTRICTION_EXCEEDED => {
167 ApiError::ClMaxSizeRestrictionExceeded
168 }
169 _ => ApiError::Unknown(code),
170 }
171 }
172}
173
174impl std::fmt::Display for ApiError {
175 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
176 write!(f, "OpenCL API Error: {:?}", self)
177 }
178}
179
180impl std::error::Error for ApiError {}