1 // GENERATED FILE - DO NOT EDIT.
2 // Generated by gen_packed_gl_enums.py using data from packed_cl_enums.json.
3 //
4 // Copyright 2017 The ANGLE Project Authors. All rights reserved.
5 // Use of this source code is governed by a BSD-style license that can be
6 // found in the LICENSE file.
7 //
8 // PackedCLEnums_autogen.cpp:
9 // Implements ANGLE-specific enums classes for CLenums and functions operating
10 // on them.
11
12 #include "common/PackedCLEnums_autogen.h"
13 #include "common/debug.h"
14
15 namespace cl
16 {
17
18 template <>
FromCLenum(CLenum from)19 AddressingMode FromCLenum<AddressingMode>(CLenum from)
20 {
21 switch (from)
22 {
23 case CL_ADDRESS_NONE:
24 return AddressingMode::None;
25 case CL_ADDRESS_CLAMP_TO_EDGE:
26 return AddressingMode::ClampToEdge;
27 case CL_ADDRESS_CLAMP:
28 return AddressingMode::Clamp;
29 case CL_ADDRESS_REPEAT:
30 return AddressingMode::Repeat;
31 case CL_ADDRESS_MIRRORED_REPEAT:
32 return AddressingMode::MirroredRepeat;
33 default:
34 return AddressingMode::InvalidEnum;
35 }
36 }
37
ToCLenum(AddressingMode from)38 CLenum ToCLenum(AddressingMode from)
39 {
40 switch (from)
41 {
42 case AddressingMode::None:
43 return CL_ADDRESS_NONE;
44 case AddressingMode::ClampToEdge:
45 return CL_ADDRESS_CLAMP_TO_EDGE;
46 case AddressingMode::Clamp:
47 return CL_ADDRESS_CLAMP;
48 case AddressingMode::Repeat:
49 return CL_ADDRESS_REPEAT;
50 case AddressingMode::MirroredRepeat:
51 return CL_ADDRESS_MIRRORED_REPEAT;
52 default:
53 UNREACHABLE();
54 return 0;
55 }
56 }
57
operator <<(std::ostream & os,AddressingMode value)58 std::ostream &operator<<(std::ostream &os, AddressingMode value)
59 {
60 switch (value)
61 {
62 case AddressingMode::None:
63 os << "CL_ADDRESS_NONE";
64 break;
65 case AddressingMode::ClampToEdge:
66 os << "CL_ADDRESS_CLAMP_TO_EDGE";
67 break;
68 case AddressingMode::Clamp:
69 os << "CL_ADDRESS_CLAMP";
70 break;
71 case AddressingMode::Repeat:
72 os << "CL_ADDRESS_REPEAT";
73 break;
74 case AddressingMode::MirroredRepeat:
75 os << "CL_ADDRESS_MIRRORED_REPEAT";
76 break;
77 default:
78 os << "GL_INVALID_ENUM";
79 break;
80 }
81 return os;
82 }
83
84 template <>
FromCLenum(CLenum from)85 CommandQueueInfo FromCLenum<CommandQueueInfo>(CLenum from)
86 {
87 switch (from)
88 {
89 case CL_QUEUE_CONTEXT:
90 return CommandQueueInfo::Context;
91 case CL_QUEUE_DEVICE:
92 return CommandQueueInfo::Device;
93 case CL_QUEUE_REFERENCE_COUNT:
94 return CommandQueueInfo::ReferenceCount;
95 case CL_QUEUE_PROPERTIES:
96 return CommandQueueInfo::Properties;
97 case CL_QUEUE_SIZE:
98 return CommandQueueInfo::Size;
99 case CL_QUEUE_DEVICE_DEFAULT:
100 return CommandQueueInfo::DeviceDefault;
101 case CL_QUEUE_PROPERTIES_ARRAY:
102 return CommandQueueInfo::PropertiesArray;
103 default:
104 return CommandQueueInfo::InvalidEnum;
105 }
106 }
107
ToCLenum(CommandQueueInfo from)108 CLenum ToCLenum(CommandQueueInfo from)
109 {
110 switch (from)
111 {
112 case CommandQueueInfo::Context:
113 return CL_QUEUE_CONTEXT;
114 case CommandQueueInfo::Device:
115 return CL_QUEUE_DEVICE;
116 case CommandQueueInfo::ReferenceCount:
117 return CL_QUEUE_REFERENCE_COUNT;
118 case CommandQueueInfo::Properties:
119 return CL_QUEUE_PROPERTIES;
120 case CommandQueueInfo::Size:
121 return CL_QUEUE_SIZE;
122 case CommandQueueInfo::DeviceDefault:
123 return CL_QUEUE_DEVICE_DEFAULT;
124 case CommandQueueInfo::PropertiesArray:
125 return CL_QUEUE_PROPERTIES_ARRAY;
126 default:
127 UNREACHABLE();
128 return 0;
129 }
130 }
131
operator <<(std::ostream & os,CommandQueueInfo value)132 std::ostream &operator<<(std::ostream &os, CommandQueueInfo value)
133 {
134 switch (value)
135 {
136 case CommandQueueInfo::Context:
137 os << "CL_QUEUE_CONTEXT";
138 break;
139 case CommandQueueInfo::Device:
140 os << "CL_QUEUE_DEVICE";
141 break;
142 case CommandQueueInfo::ReferenceCount:
143 os << "CL_QUEUE_REFERENCE_COUNT";
144 break;
145 case CommandQueueInfo::Properties:
146 os << "CL_QUEUE_PROPERTIES";
147 break;
148 case CommandQueueInfo::Size:
149 os << "CL_QUEUE_SIZE";
150 break;
151 case CommandQueueInfo::DeviceDefault:
152 os << "CL_QUEUE_DEVICE_DEFAULT";
153 break;
154 case CommandQueueInfo::PropertiesArray:
155 os << "CL_QUEUE_PROPERTIES_ARRAY";
156 break;
157 default:
158 os << "GL_INVALID_ENUM";
159 break;
160 }
161 return os;
162 }
163
164 template <>
FromCLenum(CLenum from)165 ContextInfo FromCLenum<ContextInfo>(CLenum from)
166 {
167 switch (from)
168 {
169 case CL_CONTEXT_REFERENCE_COUNT:
170 return ContextInfo::ReferenceCount;
171 case CL_CONTEXT_DEVICES:
172 return ContextInfo::Devices;
173 case CL_CONTEXT_PROPERTIES:
174 return ContextInfo::Properties;
175 case CL_CONTEXT_NUM_DEVICES:
176 return ContextInfo::NumDevices;
177 default:
178 return ContextInfo::InvalidEnum;
179 }
180 }
181
ToCLenum(ContextInfo from)182 CLenum ToCLenum(ContextInfo from)
183 {
184 switch (from)
185 {
186 case ContextInfo::ReferenceCount:
187 return CL_CONTEXT_REFERENCE_COUNT;
188 case ContextInfo::Devices:
189 return CL_CONTEXT_DEVICES;
190 case ContextInfo::Properties:
191 return CL_CONTEXT_PROPERTIES;
192 case ContextInfo::NumDevices:
193 return CL_CONTEXT_NUM_DEVICES;
194 default:
195 UNREACHABLE();
196 return 0;
197 }
198 }
199
operator <<(std::ostream & os,ContextInfo value)200 std::ostream &operator<<(std::ostream &os, ContextInfo value)
201 {
202 switch (value)
203 {
204 case ContextInfo::ReferenceCount:
205 os << "CL_CONTEXT_REFERENCE_COUNT";
206 break;
207 case ContextInfo::Devices:
208 os << "CL_CONTEXT_DEVICES";
209 break;
210 case ContextInfo::Properties:
211 os << "CL_CONTEXT_PROPERTIES";
212 break;
213 case ContextInfo::NumDevices:
214 os << "CL_CONTEXT_NUM_DEVICES";
215 break;
216 default:
217 os << "GL_INVALID_ENUM";
218 break;
219 }
220 return os;
221 }
222
223 template <>
FromCLenum(CLenum from)224 DeviceInfo FromCLenum<DeviceInfo>(CLenum from)
225 {
226 switch (from)
227 {
228 case CL_DEVICE_TYPE:
229 return DeviceInfo::Type;
230 case CL_DEVICE_VENDOR_ID:
231 return DeviceInfo::VendorID;
232 case CL_DEVICE_MAX_COMPUTE_UNITS:
233 return DeviceInfo::MaxComputeUnits;
234 case CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS:
235 return DeviceInfo::MaxWorkItemDimensions;
236 case CL_DEVICE_MAX_WORK_GROUP_SIZE:
237 return DeviceInfo::MaxWorkGroupSize;
238 case CL_DEVICE_MAX_WORK_ITEM_SIZES:
239 return DeviceInfo::MaxWorkItemSizes;
240 case CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR:
241 return DeviceInfo::PreferredVectorWidthChar;
242 case CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT:
243 return DeviceInfo::PreferredVectorWidthShort;
244 case CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT:
245 return DeviceInfo::PreferredVectorWidthInt;
246 case CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG:
247 return DeviceInfo::PreferredVectorWidthLong;
248 case CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT:
249 return DeviceInfo::PreferredVectorWidthFloat;
250 case CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE:
251 return DeviceInfo::PreferredVectorWidthDouble;
252 case CL_DEVICE_MAX_CLOCK_FREQUENCY:
253 return DeviceInfo::MaxClockFrequency;
254 case CL_DEVICE_ADDRESS_BITS:
255 return DeviceInfo::AddressBits;
256 case CL_DEVICE_MAX_READ_IMAGE_ARGS:
257 return DeviceInfo::MaxReadImageArgs;
258 case CL_DEVICE_MAX_WRITE_IMAGE_ARGS:
259 return DeviceInfo::MaxWriteImageArgs;
260 case CL_DEVICE_MAX_MEM_ALLOC_SIZE:
261 return DeviceInfo::MaxMemAllocSize;
262 case CL_DEVICE_IMAGE2D_MAX_WIDTH:
263 return DeviceInfo::Image2D_MaxWidth;
264 case CL_DEVICE_IMAGE2D_MAX_HEIGHT:
265 return DeviceInfo::Image2D_MaxHeight;
266 case CL_DEVICE_IMAGE3D_MAX_WIDTH:
267 return DeviceInfo::Image3D_MaxWidth;
268 case CL_DEVICE_IMAGE3D_MAX_HEIGHT:
269 return DeviceInfo::Image3D_MaxHeight;
270 case CL_DEVICE_IMAGE3D_MAX_DEPTH:
271 return DeviceInfo::Image3D_MaxDepth;
272 case CL_DEVICE_IMAGE_SUPPORT:
273 return DeviceInfo::ImageSupport;
274 case CL_DEVICE_MAX_PARAMETER_SIZE:
275 return DeviceInfo::MaxParameterSize;
276 case CL_DEVICE_MAX_SAMPLERS:
277 return DeviceInfo::MaxSamplers;
278 case CL_DEVICE_MEM_BASE_ADDR_ALIGN:
279 return DeviceInfo::MemBaseAddrAlign;
280 case CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE:
281 return DeviceInfo::MinDataTypeAlignSize;
282 case CL_DEVICE_SINGLE_FP_CONFIG:
283 return DeviceInfo::SingleFpConfig;
284 case CL_DEVICE_GLOBAL_MEM_CACHE_TYPE:
285 return DeviceInfo::GlobalMemCacheType;
286 case CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE:
287 return DeviceInfo::GlobalMemCachelineSize;
288 case CL_DEVICE_GLOBAL_MEM_CACHE_SIZE:
289 return DeviceInfo::GlobalMemCacheSize;
290 case CL_DEVICE_GLOBAL_MEM_SIZE:
291 return DeviceInfo::GlobalMemSize;
292 case CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE:
293 return DeviceInfo::MaxConstantBufferSize;
294 case CL_DEVICE_MAX_CONSTANT_ARGS:
295 return DeviceInfo::MaxConstantArgs;
296 case CL_DEVICE_LOCAL_MEM_TYPE:
297 return DeviceInfo::LocalMemType;
298 case CL_DEVICE_LOCAL_MEM_SIZE:
299 return DeviceInfo::LocalMemSize;
300 case CL_DEVICE_ERROR_CORRECTION_SUPPORT:
301 return DeviceInfo::ErrorCorrectionSupport;
302 case CL_DEVICE_PROFILING_TIMER_RESOLUTION:
303 return DeviceInfo::ProfilingTimerResolution;
304 case CL_DEVICE_ENDIAN_LITTLE:
305 return DeviceInfo::EndianLittle;
306 case CL_DEVICE_AVAILABLE:
307 return DeviceInfo::Available;
308 case CL_DEVICE_COMPILER_AVAILABLE:
309 return DeviceInfo::CompilerAvailable;
310 case CL_DEVICE_EXECUTION_CAPABILITIES:
311 return DeviceInfo::ExecutionCapabilities;
312 case CL_DEVICE_QUEUE_ON_HOST_PROPERTIES:
313 return DeviceInfo::QueueOnHostProperties;
314 case CL_DEVICE_NAME:
315 return DeviceInfo::Name;
316 case CL_DEVICE_VENDOR:
317 return DeviceInfo::Vendor;
318 case CL_DRIVER_VERSION:
319 return DeviceInfo::DriverVersion;
320 case CL_DEVICE_PROFILE:
321 return DeviceInfo::Profile;
322 case CL_DEVICE_VERSION:
323 return DeviceInfo::Version;
324 case CL_DEVICE_EXTENSIONS:
325 return DeviceInfo::Extensions;
326 case CL_DEVICE_PLATFORM:
327 return DeviceInfo::Platform;
328 case CL_DEVICE_DOUBLE_FP_CONFIG:
329 return DeviceInfo::DoubleFpConfig;
330 case CL_DEVICE_HALF_FP_CONFIG:
331 return DeviceInfo::HalfFpConfig;
332 case CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF:
333 return DeviceInfo::PreferredVectorWidthHalf;
334 case CL_DEVICE_HOST_UNIFIED_MEMORY:
335 return DeviceInfo::HostUnifiedMemory;
336 case CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR:
337 return DeviceInfo::NativeVectorWidthChar;
338 case CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT:
339 return DeviceInfo::NativeVectorWidthShort;
340 case CL_DEVICE_NATIVE_VECTOR_WIDTH_INT:
341 return DeviceInfo::NativeVectorWidthInt;
342 case CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG:
343 return DeviceInfo::NativeVectorWidthLong;
344 case CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT:
345 return DeviceInfo::NativeVectorWidthFloat;
346 case CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE:
347 return DeviceInfo::NativeVectorWidthDouble;
348 case CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF:
349 return DeviceInfo::NativeVectorWidthHalf;
350 case CL_DEVICE_OPENCL_C_VERSION:
351 return DeviceInfo::OpenCL_C_Version;
352 case CL_DEVICE_LINKER_AVAILABLE:
353 return DeviceInfo::LinkerAvailable;
354 case CL_DEVICE_BUILT_IN_KERNELS:
355 return DeviceInfo::BuiltInKernels;
356 case CL_DEVICE_IMAGE_MAX_BUFFER_SIZE:
357 return DeviceInfo::ImageMaxBufferSize;
358 case CL_DEVICE_IMAGE_MAX_ARRAY_SIZE:
359 return DeviceInfo::ImageMaxArraySize;
360 case CL_DEVICE_PARENT_DEVICE:
361 return DeviceInfo::ParentDevice;
362 case CL_DEVICE_PARTITION_MAX_SUB_DEVICES:
363 return DeviceInfo::PartitionMaxSubDevices;
364 case CL_DEVICE_PARTITION_PROPERTIES:
365 return DeviceInfo::PartitionProperties;
366 case CL_DEVICE_PARTITION_AFFINITY_DOMAIN:
367 return DeviceInfo::PartitionAffinityDomain;
368 case CL_DEVICE_PARTITION_TYPE:
369 return DeviceInfo::PartitionType;
370 case CL_DEVICE_REFERENCE_COUNT:
371 return DeviceInfo::ReferenceCount;
372 case CL_DEVICE_PREFERRED_INTEROP_USER_SYNC:
373 return DeviceInfo::PreferredInteropUserSync;
374 case CL_DEVICE_PRINTF_BUFFER_SIZE:
375 return DeviceInfo::PrintfBufferSize;
376 case CL_DEVICE_IMAGE_PITCH_ALIGNMENT:
377 return DeviceInfo::ImagePitchAlignment;
378 case CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT:
379 return DeviceInfo::ImageBaseAddressAlignment;
380 case CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS:
381 return DeviceInfo::MaxReadWriteImageArgs;
382 case CL_DEVICE_MAX_GLOBAL_VARIABLE_SIZE:
383 return DeviceInfo::MaxGlobalVariableSize;
384 case CL_DEVICE_QUEUE_ON_DEVICE_PROPERTIES:
385 return DeviceInfo::QueueOnDeviceProperties;
386 case CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE:
387 return DeviceInfo::QueueOnDevicePreferredSize;
388 case CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE:
389 return DeviceInfo::QueueOnDeviceMaxSize;
390 case CL_DEVICE_MAX_ON_DEVICE_QUEUES:
391 return DeviceInfo::MaxOnDeviceQueues;
392 case CL_DEVICE_MAX_ON_DEVICE_EVENTS:
393 return DeviceInfo::MaxOnDeviceEvents;
394 case CL_DEVICE_SVM_CAPABILITIES:
395 return DeviceInfo::SVM_Capabilities;
396 case CL_DEVICE_GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE:
397 return DeviceInfo::GlobalVariablePreferredTotalSize;
398 case CL_DEVICE_MAX_PIPE_ARGS:
399 return DeviceInfo::MaxPipeArgs;
400 case CL_DEVICE_PIPE_MAX_ACTIVE_RESERVATIONS:
401 return DeviceInfo::PipeMaxActiveReservations;
402 case CL_DEVICE_PIPE_MAX_PACKET_SIZE:
403 return DeviceInfo::PipeMaxPacketSize;
404 case CL_DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT:
405 return DeviceInfo::PreferredPlatformAtomicAlignment;
406 case CL_DEVICE_PREFERRED_GLOBAL_ATOMIC_ALIGNMENT:
407 return DeviceInfo::PreferredGlobalAtomicAlignment;
408 case CL_DEVICE_PREFERRED_LOCAL_ATOMIC_ALIGNMENT:
409 return DeviceInfo::PreferredLocalAtomicAlignment;
410 case CL_DEVICE_IL_VERSION:
411 return DeviceInfo::IL_Version;
412 case CL_DEVICE_MAX_NUM_SUB_GROUPS:
413 return DeviceInfo::MaxNumSubGroups;
414 case CL_DEVICE_SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS:
415 return DeviceInfo::SubGroupIndependentForwardProgress;
416 case CL_DEVICE_NUMERIC_VERSION:
417 return DeviceInfo::NumericVersion;
418 case CL_DEVICE_EXTENSIONS_WITH_VERSION:
419 return DeviceInfo::ExtensionsWithVersion;
420 case CL_DEVICE_ILS_WITH_VERSION:
421 return DeviceInfo::ILsWithVersion;
422 case CL_DEVICE_BUILT_IN_KERNELS_WITH_VERSION:
423 return DeviceInfo::BuiltInKernelsWithVersion;
424 case CL_DEVICE_ATOMIC_MEMORY_CAPABILITIES:
425 return DeviceInfo::AtomicMemoryCapabilities;
426 case CL_DEVICE_ATOMIC_FENCE_CAPABILITIES:
427 return DeviceInfo::AtomicFenceCapabilities;
428 case CL_DEVICE_NON_UNIFORM_WORK_GROUP_SUPPORT:
429 return DeviceInfo::NonUniformWorkGroupSupport;
430 case CL_DEVICE_OPENCL_C_ALL_VERSIONS:
431 return DeviceInfo::OpenCL_C_AllVersions;
432 case CL_DEVICE_PREFERRED_WORK_GROUP_SIZE_MULTIPLE:
433 return DeviceInfo::PreferredWorkGroupSizeMultiple;
434 case CL_DEVICE_WORK_GROUP_COLLECTIVE_FUNCTIONS_SUPPORT:
435 return DeviceInfo::WorkGroupCollectiveFunctionsSupport;
436 case CL_DEVICE_GENERIC_ADDRESS_SPACE_SUPPORT:
437 return DeviceInfo::GenericAddressSpaceSupport;
438 case CL_DEVICE_OPENCL_C_FEATURES:
439 return DeviceInfo::OpenCL_C_Features;
440 case CL_DEVICE_DEVICE_ENQUEUE_CAPABILITIES:
441 return DeviceInfo::DeviceEnqueueCapabilities;
442 case CL_DEVICE_PIPE_SUPPORT:
443 return DeviceInfo::PipeSupport;
444 case CL_DEVICE_LATEST_CONFORMANCE_VERSION_PASSED:
445 return DeviceInfo::LatestConformanceVersionPassed;
446 default:
447 return DeviceInfo::InvalidEnum;
448 }
449 }
450
ToCLenum(DeviceInfo from)451 CLenum ToCLenum(DeviceInfo from)
452 {
453 switch (from)
454 {
455 case DeviceInfo::Type:
456 return CL_DEVICE_TYPE;
457 case DeviceInfo::VendorID:
458 return CL_DEVICE_VENDOR_ID;
459 case DeviceInfo::MaxComputeUnits:
460 return CL_DEVICE_MAX_COMPUTE_UNITS;
461 case DeviceInfo::MaxWorkItemDimensions:
462 return CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS;
463 case DeviceInfo::MaxWorkGroupSize:
464 return CL_DEVICE_MAX_WORK_GROUP_SIZE;
465 case DeviceInfo::MaxWorkItemSizes:
466 return CL_DEVICE_MAX_WORK_ITEM_SIZES;
467 case DeviceInfo::PreferredVectorWidthChar:
468 return CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR;
469 case DeviceInfo::PreferredVectorWidthShort:
470 return CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT;
471 case DeviceInfo::PreferredVectorWidthInt:
472 return CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT;
473 case DeviceInfo::PreferredVectorWidthLong:
474 return CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG;
475 case DeviceInfo::PreferredVectorWidthFloat:
476 return CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT;
477 case DeviceInfo::PreferredVectorWidthDouble:
478 return CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE;
479 case DeviceInfo::MaxClockFrequency:
480 return CL_DEVICE_MAX_CLOCK_FREQUENCY;
481 case DeviceInfo::AddressBits:
482 return CL_DEVICE_ADDRESS_BITS;
483 case DeviceInfo::MaxReadImageArgs:
484 return CL_DEVICE_MAX_READ_IMAGE_ARGS;
485 case DeviceInfo::MaxWriteImageArgs:
486 return CL_DEVICE_MAX_WRITE_IMAGE_ARGS;
487 case DeviceInfo::MaxMemAllocSize:
488 return CL_DEVICE_MAX_MEM_ALLOC_SIZE;
489 case DeviceInfo::Image2D_MaxWidth:
490 return CL_DEVICE_IMAGE2D_MAX_WIDTH;
491 case DeviceInfo::Image2D_MaxHeight:
492 return CL_DEVICE_IMAGE2D_MAX_HEIGHT;
493 case DeviceInfo::Image3D_MaxWidth:
494 return CL_DEVICE_IMAGE3D_MAX_WIDTH;
495 case DeviceInfo::Image3D_MaxHeight:
496 return CL_DEVICE_IMAGE3D_MAX_HEIGHT;
497 case DeviceInfo::Image3D_MaxDepth:
498 return CL_DEVICE_IMAGE3D_MAX_DEPTH;
499 case DeviceInfo::ImageSupport:
500 return CL_DEVICE_IMAGE_SUPPORT;
501 case DeviceInfo::MaxParameterSize:
502 return CL_DEVICE_MAX_PARAMETER_SIZE;
503 case DeviceInfo::MaxSamplers:
504 return CL_DEVICE_MAX_SAMPLERS;
505 case DeviceInfo::MemBaseAddrAlign:
506 return CL_DEVICE_MEM_BASE_ADDR_ALIGN;
507 case DeviceInfo::MinDataTypeAlignSize:
508 return CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE;
509 case DeviceInfo::SingleFpConfig:
510 return CL_DEVICE_SINGLE_FP_CONFIG;
511 case DeviceInfo::GlobalMemCacheType:
512 return CL_DEVICE_GLOBAL_MEM_CACHE_TYPE;
513 case DeviceInfo::GlobalMemCachelineSize:
514 return CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE;
515 case DeviceInfo::GlobalMemCacheSize:
516 return CL_DEVICE_GLOBAL_MEM_CACHE_SIZE;
517 case DeviceInfo::GlobalMemSize:
518 return CL_DEVICE_GLOBAL_MEM_SIZE;
519 case DeviceInfo::MaxConstantBufferSize:
520 return CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE;
521 case DeviceInfo::MaxConstantArgs:
522 return CL_DEVICE_MAX_CONSTANT_ARGS;
523 case DeviceInfo::LocalMemType:
524 return CL_DEVICE_LOCAL_MEM_TYPE;
525 case DeviceInfo::LocalMemSize:
526 return CL_DEVICE_LOCAL_MEM_SIZE;
527 case DeviceInfo::ErrorCorrectionSupport:
528 return CL_DEVICE_ERROR_CORRECTION_SUPPORT;
529 case DeviceInfo::ProfilingTimerResolution:
530 return CL_DEVICE_PROFILING_TIMER_RESOLUTION;
531 case DeviceInfo::EndianLittle:
532 return CL_DEVICE_ENDIAN_LITTLE;
533 case DeviceInfo::Available:
534 return CL_DEVICE_AVAILABLE;
535 case DeviceInfo::CompilerAvailable:
536 return CL_DEVICE_COMPILER_AVAILABLE;
537 case DeviceInfo::ExecutionCapabilities:
538 return CL_DEVICE_EXECUTION_CAPABILITIES;
539 case DeviceInfo::QueueOnHostProperties:
540 return CL_DEVICE_QUEUE_ON_HOST_PROPERTIES;
541 case DeviceInfo::Name:
542 return CL_DEVICE_NAME;
543 case DeviceInfo::Vendor:
544 return CL_DEVICE_VENDOR;
545 case DeviceInfo::DriverVersion:
546 return CL_DRIVER_VERSION;
547 case DeviceInfo::Profile:
548 return CL_DEVICE_PROFILE;
549 case DeviceInfo::Version:
550 return CL_DEVICE_VERSION;
551 case DeviceInfo::Extensions:
552 return CL_DEVICE_EXTENSIONS;
553 case DeviceInfo::Platform:
554 return CL_DEVICE_PLATFORM;
555 case DeviceInfo::DoubleFpConfig:
556 return CL_DEVICE_DOUBLE_FP_CONFIG;
557 case DeviceInfo::HalfFpConfig:
558 return CL_DEVICE_HALF_FP_CONFIG;
559 case DeviceInfo::PreferredVectorWidthHalf:
560 return CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF;
561 case DeviceInfo::HostUnifiedMemory:
562 return CL_DEVICE_HOST_UNIFIED_MEMORY;
563 case DeviceInfo::NativeVectorWidthChar:
564 return CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR;
565 case DeviceInfo::NativeVectorWidthShort:
566 return CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT;
567 case DeviceInfo::NativeVectorWidthInt:
568 return CL_DEVICE_NATIVE_VECTOR_WIDTH_INT;
569 case DeviceInfo::NativeVectorWidthLong:
570 return CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG;
571 case DeviceInfo::NativeVectorWidthFloat:
572 return CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT;
573 case DeviceInfo::NativeVectorWidthDouble:
574 return CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE;
575 case DeviceInfo::NativeVectorWidthHalf:
576 return CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF;
577 case DeviceInfo::OpenCL_C_Version:
578 return CL_DEVICE_OPENCL_C_VERSION;
579 case DeviceInfo::LinkerAvailable:
580 return CL_DEVICE_LINKER_AVAILABLE;
581 case DeviceInfo::BuiltInKernels:
582 return CL_DEVICE_BUILT_IN_KERNELS;
583 case DeviceInfo::ImageMaxBufferSize:
584 return CL_DEVICE_IMAGE_MAX_BUFFER_SIZE;
585 case DeviceInfo::ImageMaxArraySize:
586 return CL_DEVICE_IMAGE_MAX_ARRAY_SIZE;
587 case DeviceInfo::ParentDevice:
588 return CL_DEVICE_PARENT_DEVICE;
589 case DeviceInfo::PartitionMaxSubDevices:
590 return CL_DEVICE_PARTITION_MAX_SUB_DEVICES;
591 case DeviceInfo::PartitionProperties:
592 return CL_DEVICE_PARTITION_PROPERTIES;
593 case DeviceInfo::PartitionAffinityDomain:
594 return CL_DEVICE_PARTITION_AFFINITY_DOMAIN;
595 case DeviceInfo::PartitionType:
596 return CL_DEVICE_PARTITION_TYPE;
597 case DeviceInfo::ReferenceCount:
598 return CL_DEVICE_REFERENCE_COUNT;
599 case DeviceInfo::PreferredInteropUserSync:
600 return CL_DEVICE_PREFERRED_INTEROP_USER_SYNC;
601 case DeviceInfo::PrintfBufferSize:
602 return CL_DEVICE_PRINTF_BUFFER_SIZE;
603 case DeviceInfo::ImagePitchAlignment:
604 return CL_DEVICE_IMAGE_PITCH_ALIGNMENT;
605 case DeviceInfo::ImageBaseAddressAlignment:
606 return CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT;
607 case DeviceInfo::MaxReadWriteImageArgs:
608 return CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS;
609 case DeviceInfo::MaxGlobalVariableSize:
610 return CL_DEVICE_MAX_GLOBAL_VARIABLE_SIZE;
611 case DeviceInfo::QueueOnDeviceProperties:
612 return CL_DEVICE_QUEUE_ON_DEVICE_PROPERTIES;
613 case DeviceInfo::QueueOnDevicePreferredSize:
614 return CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE;
615 case DeviceInfo::QueueOnDeviceMaxSize:
616 return CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE;
617 case DeviceInfo::MaxOnDeviceQueues:
618 return CL_DEVICE_MAX_ON_DEVICE_QUEUES;
619 case DeviceInfo::MaxOnDeviceEvents:
620 return CL_DEVICE_MAX_ON_DEVICE_EVENTS;
621 case DeviceInfo::SVM_Capabilities:
622 return CL_DEVICE_SVM_CAPABILITIES;
623 case DeviceInfo::GlobalVariablePreferredTotalSize:
624 return CL_DEVICE_GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE;
625 case DeviceInfo::MaxPipeArgs:
626 return CL_DEVICE_MAX_PIPE_ARGS;
627 case DeviceInfo::PipeMaxActiveReservations:
628 return CL_DEVICE_PIPE_MAX_ACTIVE_RESERVATIONS;
629 case DeviceInfo::PipeMaxPacketSize:
630 return CL_DEVICE_PIPE_MAX_PACKET_SIZE;
631 case DeviceInfo::PreferredPlatformAtomicAlignment:
632 return CL_DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT;
633 case DeviceInfo::PreferredGlobalAtomicAlignment:
634 return CL_DEVICE_PREFERRED_GLOBAL_ATOMIC_ALIGNMENT;
635 case DeviceInfo::PreferredLocalAtomicAlignment:
636 return CL_DEVICE_PREFERRED_LOCAL_ATOMIC_ALIGNMENT;
637 case DeviceInfo::IL_Version:
638 return CL_DEVICE_IL_VERSION;
639 case DeviceInfo::MaxNumSubGroups:
640 return CL_DEVICE_MAX_NUM_SUB_GROUPS;
641 case DeviceInfo::SubGroupIndependentForwardProgress:
642 return CL_DEVICE_SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS;
643 case DeviceInfo::NumericVersion:
644 return CL_DEVICE_NUMERIC_VERSION;
645 case DeviceInfo::ExtensionsWithVersion:
646 return CL_DEVICE_EXTENSIONS_WITH_VERSION;
647 case DeviceInfo::ILsWithVersion:
648 return CL_DEVICE_ILS_WITH_VERSION;
649 case DeviceInfo::BuiltInKernelsWithVersion:
650 return CL_DEVICE_BUILT_IN_KERNELS_WITH_VERSION;
651 case DeviceInfo::AtomicMemoryCapabilities:
652 return CL_DEVICE_ATOMIC_MEMORY_CAPABILITIES;
653 case DeviceInfo::AtomicFenceCapabilities:
654 return CL_DEVICE_ATOMIC_FENCE_CAPABILITIES;
655 case DeviceInfo::NonUniformWorkGroupSupport:
656 return CL_DEVICE_NON_UNIFORM_WORK_GROUP_SUPPORT;
657 case DeviceInfo::OpenCL_C_AllVersions:
658 return CL_DEVICE_OPENCL_C_ALL_VERSIONS;
659 case DeviceInfo::PreferredWorkGroupSizeMultiple:
660 return CL_DEVICE_PREFERRED_WORK_GROUP_SIZE_MULTIPLE;
661 case DeviceInfo::WorkGroupCollectiveFunctionsSupport:
662 return CL_DEVICE_WORK_GROUP_COLLECTIVE_FUNCTIONS_SUPPORT;
663 case DeviceInfo::GenericAddressSpaceSupport:
664 return CL_DEVICE_GENERIC_ADDRESS_SPACE_SUPPORT;
665 case DeviceInfo::OpenCL_C_Features:
666 return CL_DEVICE_OPENCL_C_FEATURES;
667 case DeviceInfo::DeviceEnqueueCapabilities:
668 return CL_DEVICE_DEVICE_ENQUEUE_CAPABILITIES;
669 case DeviceInfo::PipeSupport:
670 return CL_DEVICE_PIPE_SUPPORT;
671 case DeviceInfo::LatestConformanceVersionPassed:
672 return CL_DEVICE_LATEST_CONFORMANCE_VERSION_PASSED;
673 default:
674 UNREACHABLE();
675 return 0;
676 }
677 }
678
operator <<(std::ostream & os,DeviceInfo value)679 std::ostream &operator<<(std::ostream &os, DeviceInfo value)
680 {
681 switch (value)
682 {
683 case DeviceInfo::Type:
684 os << "CL_DEVICE_TYPE";
685 break;
686 case DeviceInfo::VendorID:
687 os << "CL_DEVICE_VENDOR_ID";
688 break;
689 case DeviceInfo::MaxComputeUnits:
690 os << "CL_DEVICE_MAX_COMPUTE_UNITS";
691 break;
692 case DeviceInfo::MaxWorkItemDimensions:
693 os << "CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS";
694 break;
695 case DeviceInfo::MaxWorkGroupSize:
696 os << "CL_DEVICE_MAX_WORK_GROUP_SIZE";
697 break;
698 case DeviceInfo::MaxWorkItemSizes:
699 os << "CL_DEVICE_MAX_WORK_ITEM_SIZES";
700 break;
701 case DeviceInfo::PreferredVectorWidthChar:
702 os << "CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR";
703 break;
704 case DeviceInfo::PreferredVectorWidthShort:
705 os << "CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT";
706 break;
707 case DeviceInfo::PreferredVectorWidthInt:
708 os << "CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT";
709 break;
710 case DeviceInfo::PreferredVectorWidthLong:
711 os << "CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG";
712 break;
713 case DeviceInfo::PreferredVectorWidthFloat:
714 os << "CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT";
715 break;
716 case DeviceInfo::PreferredVectorWidthDouble:
717 os << "CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE";
718 break;
719 case DeviceInfo::MaxClockFrequency:
720 os << "CL_DEVICE_MAX_CLOCK_FREQUENCY";
721 break;
722 case DeviceInfo::AddressBits:
723 os << "CL_DEVICE_ADDRESS_BITS";
724 break;
725 case DeviceInfo::MaxReadImageArgs:
726 os << "CL_DEVICE_MAX_READ_IMAGE_ARGS";
727 break;
728 case DeviceInfo::MaxWriteImageArgs:
729 os << "CL_DEVICE_MAX_WRITE_IMAGE_ARGS";
730 break;
731 case DeviceInfo::MaxMemAllocSize:
732 os << "CL_DEVICE_MAX_MEM_ALLOC_SIZE";
733 break;
734 case DeviceInfo::Image2D_MaxWidth:
735 os << "CL_DEVICE_IMAGE2D_MAX_WIDTH";
736 break;
737 case DeviceInfo::Image2D_MaxHeight:
738 os << "CL_DEVICE_IMAGE2D_MAX_HEIGHT";
739 break;
740 case DeviceInfo::Image3D_MaxWidth:
741 os << "CL_DEVICE_IMAGE3D_MAX_WIDTH";
742 break;
743 case DeviceInfo::Image3D_MaxHeight:
744 os << "CL_DEVICE_IMAGE3D_MAX_HEIGHT";
745 break;
746 case DeviceInfo::Image3D_MaxDepth:
747 os << "CL_DEVICE_IMAGE3D_MAX_DEPTH";
748 break;
749 case DeviceInfo::ImageSupport:
750 os << "CL_DEVICE_IMAGE_SUPPORT";
751 break;
752 case DeviceInfo::MaxParameterSize:
753 os << "CL_DEVICE_MAX_PARAMETER_SIZE";
754 break;
755 case DeviceInfo::MaxSamplers:
756 os << "CL_DEVICE_MAX_SAMPLERS";
757 break;
758 case DeviceInfo::MemBaseAddrAlign:
759 os << "CL_DEVICE_MEM_BASE_ADDR_ALIGN";
760 break;
761 case DeviceInfo::MinDataTypeAlignSize:
762 os << "CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE";
763 break;
764 case DeviceInfo::SingleFpConfig:
765 os << "CL_DEVICE_SINGLE_FP_CONFIG";
766 break;
767 case DeviceInfo::GlobalMemCacheType:
768 os << "CL_DEVICE_GLOBAL_MEM_CACHE_TYPE";
769 break;
770 case DeviceInfo::GlobalMemCachelineSize:
771 os << "CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE";
772 break;
773 case DeviceInfo::GlobalMemCacheSize:
774 os << "CL_DEVICE_GLOBAL_MEM_CACHE_SIZE";
775 break;
776 case DeviceInfo::GlobalMemSize:
777 os << "CL_DEVICE_GLOBAL_MEM_SIZE";
778 break;
779 case DeviceInfo::MaxConstantBufferSize:
780 os << "CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE";
781 break;
782 case DeviceInfo::MaxConstantArgs:
783 os << "CL_DEVICE_MAX_CONSTANT_ARGS";
784 break;
785 case DeviceInfo::LocalMemType:
786 os << "CL_DEVICE_LOCAL_MEM_TYPE";
787 break;
788 case DeviceInfo::LocalMemSize:
789 os << "CL_DEVICE_LOCAL_MEM_SIZE";
790 break;
791 case DeviceInfo::ErrorCorrectionSupport:
792 os << "CL_DEVICE_ERROR_CORRECTION_SUPPORT";
793 break;
794 case DeviceInfo::ProfilingTimerResolution:
795 os << "CL_DEVICE_PROFILING_TIMER_RESOLUTION";
796 break;
797 case DeviceInfo::EndianLittle:
798 os << "CL_DEVICE_ENDIAN_LITTLE";
799 break;
800 case DeviceInfo::Available:
801 os << "CL_DEVICE_AVAILABLE";
802 break;
803 case DeviceInfo::CompilerAvailable:
804 os << "CL_DEVICE_COMPILER_AVAILABLE";
805 break;
806 case DeviceInfo::ExecutionCapabilities:
807 os << "CL_DEVICE_EXECUTION_CAPABILITIES";
808 break;
809 case DeviceInfo::QueueOnHostProperties:
810 os << "CL_DEVICE_QUEUE_ON_HOST_PROPERTIES";
811 break;
812 case DeviceInfo::Name:
813 os << "CL_DEVICE_NAME";
814 break;
815 case DeviceInfo::Vendor:
816 os << "CL_DEVICE_VENDOR";
817 break;
818 case DeviceInfo::DriverVersion:
819 os << "CL_DRIVER_VERSION";
820 break;
821 case DeviceInfo::Profile:
822 os << "CL_DEVICE_PROFILE";
823 break;
824 case DeviceInfo::Version:
825 os << "CL_DEVICE_VERSION";
826 break;
827 case DeviceInfo::Extensions:
828 os << "CL_DEVICE_EXTENSIONS";
829 break;
830 case DeviceInfo::Platform:
831 os << "CL_DEVICE_PLATFORM";
832 break;
833 case DeviceInfo::DoubleFpConfig:
834 os << "CL_DEVICE_DOUBLE_FP_CONFIG";
835 break;
836 case DeviceInfo::HalfFpConfig:
837 os << "CL_DEVICE_HALF_FP_CONFIG";
838 break;
839 case DeviceInfo::PreferredVectorWidthHalf:
840 os << "CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF";
841 break;
842 case DeviceInfo::HostUnifiedMemory:
843 os << "CL_DEVICE_HOST_UNIFIED_MEMORY";
844 break;
845 case DeviceInfo::NativeVectorWidthChar:
846 os << "CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR";
847 break;
848 case DeviceInfo::NativeVectorWidthShort:
849 os << "CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT";
850 break;
851 case DeviceInfo::NativeVectorWidthInt:
852 os << "CL_DEVICE_NATIVE_VECTOR_WIDTH_INT";
853 break;
854 case DeviceInfo::NativeVectorWidthLong:
855 os << "CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG";
856 break;
857 case DeviceInfo::NativeVectorWidthFloat:
858 os << "CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT";
859 break;
860 case DeviceInfo::NativeVectorWidthDouble:
861 os << "CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE";
862 break;
863 case DeviceInfo::NativeVectorWidthHalf:
864 os << "CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF";
865 break;
866 case DeviceInfo::OpenCL_C_Version:
867 os << "CL_DEVICE_OPENCL_C_VERSION";
868 break;
869 case DeviceInfo::LinkerAvailable:
870 os << "CL_DEVICE_LINKER_AVAILABLE";
871 break;
872 case DeviceInfo::BuiltInKernels:
873 os << "CL_DEVICE_BUILT_IN_KERNELS";
874 break;
875 case DeviceInfo::ImageMaxBufferSize:
876 os << "CL_DEVICE_IMAGE_MAX_BUFFER_SIZE";
877 break;
878 case DeviceInfo::ImageMaxArraySize:
879 os << "CL_DEVICE_IMAGE_MAX_ARRAY_SIZE";
880 break;
881 case DeviceInfo::ParentDevice:
882 os << "CL_DEVICE_PARENT_DEVICE";
883 break;
884 case DeviceInfo::PartitionMaxSubDevices:
885 os << "CL_DEVICE_PARTITION_MAX_SUB_DEVICES";
886 break;
887 case DeviceInfo::PartitionProperties:
888 os << "CL_DEVICE_PARTITION_PROPERTIES";
889 break;
890 case DeviceInfo::PartitionAffinityDomain:
891 os << "CL_DEVICE_PARTITION_AFFINITY_DOMAIN";
892 break;
893 case DeviceInfo::PartitionType:
894 os << "CL_DEVICE_PARTITION_TYPE";
895 break;
896 case DeviceInfo::ReferenceCount:
897 os << "CL_DEVICE_REFERENCE_COUNT";
898 break;
899 case DeviceInfo::PreferredInteropUserSync:
900 os << "CL_DEVICE_PREFERRED_INTEROP_USER_SYNC";
901 break;
902 case DeviceInfo::PrintfBufferSize:
903 os << "CL_DEVICE_PRINTF_BUFFER_SIZE";
904 break;
905 case DeviceInfo::ImagePitchAlignment:
906 os << "CL_DEVICE_IMAGE_PITCH_ALIGNMENT";
907 break;
908 case DeviceInfo::ImageBaseAddressAlignment:
909 os << "CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT";
910 break;
911 case DeviceInfo::MaxReadWriteImageArgs:
912 os << "CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS";
913 break;
914 case DeviceInfo::MaxGlobalVariableSize:
915 os << "CL_DEVICE_MAX_GLOBAL_VARIABLE_SIZE";
916 break;
917 case DeviceInfo::QueueOnDeviceProperties:
918 os << "CL_DEVICE_QUEUE_ON_DEVICE_PROPERTIES";
919 break;
920 case DeviceInfo::QueueOnDevicePreferredSize:
921 os << "CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE";
922 break;
923 case DeviceInfo::QueueOnDeviceMaxSize:
924 os << "CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE";
925 break;
926 case DeviceInfo::MaxOnDeviceQueues:
927 os << "CL_DEVICE_MAX_ON_DEVICE_QUEUES";
928 break;
929 case DeviceInfo::MaxOnDeviceEvents:
930 os << "CL_DEVICE_MAX_ON_DEVICE_EVENTS";
931 break;
932 case DeviceInfo::SVM_Capabilities:
933 os << "CL_DEVICE_SVM_CAPABILITIES";
934 break;
935 case DeviceInfo::GlobalVariablePreferredTotalSize:
936 os << "CL_DEVICE_GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE";
937 break;
938 case DeviceInfo::MaxPipeArgs:
939 os << "CL_DEVICE_MAX_PIPE_ARGS";
940 break;
941 case DeviceInfo::PipeMaxActiveReservations:
942 os << "CL_DEVICE_PIPE_MAX_ACTIVE_RESERVATIONS";
943 break;
944 case DeviceInfo::PipeMaxPacketSize:
945 os << "CL_DEVICE_PIPE_MAX_PACKET_SIZE";
946 break;
947 case DeviceInfo::PreferredPlatformAtomicAlignment:
948 os << "CL_DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT";
949 break;
950 case DeviceInfo::PreferredGlobalAtomicAlignment:
951 os << "CL_DEVICE_PREFERRED_GLOBAL_ATOMIC_ALIGNMENT";
952 break;
953 case DeviceInfo::PreferredLocalAtomicAlignment:
954 os << "CL_DEVICE_PREFERRED_LOCAL_ATOMIC_ALIGNMENT";
955 break;
956 case DeviceInfo::IL_Version:
957 os << "CL_DEVICE_IL_VERSION";
958 break;
959 case DeviceInfo::MaxNumSubGroups:
960 os << "CL_DEVICE_MAX_NUM_SUB_GROUPS";
961 break;
962 case DeviceInfo::SubGroupIndependentForwardProgress:
963 os << "CL_DEVICE_SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS";
964 break;
965 case DeviceInfo::NumericVersion:
966 os << "CL_DEVICE_NUMERIC_VERSION";
967 break;
968 case DeviceInfo::ExtensionsWithVersion:
969 os << "CL_DEVICE_EXTENSIONS_WITH_VERSION";
970 break;
971 case DeviceInfo::ILsWithVersion:
972 os << "CL_DEVICE_ILS_WITH_VERSION";
973 break;
974 case DeviceInfo::BuiltInKernelsWithVersion:
975 os << "CL_DEVICE_BUILT_IN_KERNELS_WITH_VERSION";
976 break;
977 case DeviceInfo::AtomicMemoryCapabilities:
978 os << "CL_DEVICE_ATOMIC_MEMORY_CAPABILITIES";
979 break;
980 case DeviceInfo::AtomicFenceCapabilities:
981 os << "CL_DEVICE_ATOMIC_FENCE_CAPABILITIES";
982 break;
983 case DeviceInfo::NonUniformWorkGroupSupport:
984 os << "CL_DEVICE_NON_UNIFORM_WORK_GROUP_SUPPORT";
985 break;
986 case DeviceInfo::OpenCL_C_AllVersions:
987 os << "CL_DEVICE_OPENCL_C_ALL_VERSIONS";
988 break;
989 case DeviceInfo::PreferredWorkGroupSizeMultiple:
990 os << "CL_DEVICE_PREFERRED_WORK_GROUP_SIZE_MULTIPLE";
991 break;
992 case DeviceInfo::WorkGroupCollectiveFunctionsSupport:
993 os << "CL_DEVICE_WORK_GROUP_COLLECTIVE_FUNCTIONS_SUPPORT";
994 break;
995 case DeviceInfo::GenericAddressSpaceSupport:
996 os << "CL_DEVICE_GENERIC_ADDRESS_SPACE_SUPPORT";
997 break;
998 case DeviceInfo::OpenCL_C_Features:
999 os << "CL_DEVICE_OPENCL_C_FEATURES";
1000 break;
1001 case DeviceInfo::DeviceEnqueueCapabilities:
1002 os << "CL_DEVICE_DEVICE_ENQUEUE_CAPABILITIES";
1003 break;
1004 case DeviceInfo::PipeSupport:
1005 os << "CL_DEVICE_PIPE_SUPPORT";
1006 break;
1007 case DeviceInfo::LatestConformanceVersionPassed:
1008 os << "CL_DEVICE_LATEST_CONFORMANCE_VERSION_PASSED";
1009 break;
1010 default:
1011 os << "GL_INVALID_ENUM";
1012 break;
1013 }
1014 return os;
1015 }
1016
1017 template <>
FromCLenum(CLenum from)1018 EventInfo FromCLenum<EventInfo>(CLenum from)
1019 {
1020 switch (from)
1021 {
1022 case CL_EVENT_COMMAND_QUEUE:
1023 return EventInfo::CommandQueue;
1024 case CL_EVENT_COMMAND_TYPE:
1025 return EventInfo::CommandType;
1026 case CL_EVENT_REFERENCE_COUNT:
1027 return EventInfo::ReferenceCount;
1028 case CL_EVENT_COMMAND_EXECUTION_STATUS:
1029 return EventInfo::CommandExecutionStatus;
1030 case CL_EVENT_CONTEXT:
1031 return EventInfo::Context;
1032 default:
1033 return EventInfo::InvalidEnum;
1034 }
1035 }
1036
ToCLenum(EventInfo from)1037 CLenum ToCLenum(EventInfo from)
1038 {
1039 switch (from)
1040 {
1041 case EventInfo::CommandQueue:
1042 return CL_EVENT_COMMAND_QUEUE;
1043 case EventInfo::CommandType:
1044 return CL_EVENT_COMMAND_TYPE;
1045 case EventInfo::ReferenceCount:
1046 return CL_EVENT_REFERENCE_COUNT;
1047 case EventInfo::CommandExecutionStatus:
1048 return CL_EVENT_COMMAND_EXECUTION_STATUS;
1049 case EventInfo::Context:
1050 return CL_EVENT_CONTEXT;
1051 default:
1052 UNREACHABLE();
1053 return 0;
1054 }
1055 }
1056
operator <<(std::ostream & os,EventInfo value)1057 std::ostream &operator<<(std::ostream &os, EventInfo value)
1058 {
1059 switch (value)
1060 {
1061 case EventInfo::CommandQueue:
1062 os << "CL_EVENT_COMMAND_QUEUE";
1063 break;
1064 case EventInfo::CommandType:
1065 os << "CL_EVENT_COMMAND_TYPE";
1066 break;
1067 case EventInfo::ReferenceCount:
1068 os << "CL_EVENT_REFERENCE_COUNT";
1069 break;
1070 case EventInfo::CommandExecutionStatus:
1071 os << "CL_EVENT_COMMAND_EXECUTION_STATUS";
1072 break;
1073 case EventInfo::Context:
1074 os << "CL_EVENT_CONTEXT";
1075 break;
1076 default:
1077 os << "GL_INVALID_ENUM";
1078 break;
1079 }
1080 return os;
1081 }
1082
1083 template <>
FromCLenum(CLenum from)1084 ExecutionStatus FromCLenum<ExecutionStatus>(CLenum from)
1085 {
1086 switch (from)
1087 {
1088 case CL_COMPLETE:
1089 return ExecutionStatus::Complete;
1090 case CL_RUNNING:
1091 return ExecutionStatus::Running;
1092 case CL_SUBMITTED:
1093 return ExecutionStatus::Submitted;
1094 case CL_QUEUED:
1095 return ExecutionStatus::Queued;
1096 default:
1097 return ExecutionStatus::InvalidEnum;
1098 }
1099 }
1100
ToCLenum(ExecutionStatus from)1101 CLenum ToCLenum(ExecutionStatus from)
1102 {
1103 switch (from)
1104 {
1105 case ExecutionStatus::Complete:
1106 return CL_COMPLETE;
1107 case ExecutionStatus::Running:
1108 return CL_RUNNING;
1109 case ExecutionStatus::Submitted:
1110 return CL_SUBMITTED;
1111 case ExecutionStatus::Queued:
1112 return CL_QUEUED;
1113 default:
1114 UNREACHABLE();
1115 return 0;
1116 }
1117 }
1118
operator <<(std::ostream & os,ExecutionStatus value)1119 std::ostream &operator<<(std::ostream &os, ExecutionStatus value)
1120 {
1121 switch (value)
1122 {
1123 case ExecutionStatus::Complete:
1124 os << "CL_COMPLETE";
1125 break;
1126 case ExecutionStatus::Running:
1127 os << "CL_RUNNING";
1128 break;
1129 case ExecutionStatus::Submitted:
1130 os << "CL_SUBMITTED";
1131 break;
1132 case ExecutionStatus::Queued:
1133 os << "CL_QUEUED";
1134 break;
1135 default:
1136 os << "GL_INVALID_ENUM";
1137 break;
1138 }
1139 return os;
1140 }
1141
1142 template <>
FromCLenum(CLenum from)1143 FilterMode FromCLenum<FilterMode>(CLenum from)
1144 {
1145 switch (from)
1146 {
1147 case CL_FILTER_NEAREST:
1148 return FilterMode::Nearest;
1149 case CL_FILTER_LINEAR:
1150 return FilterMode::Linear;
1151 default:
1152 return FilterMode::InvalidEnum;
1153 }
1154 }
1155
ToCLenum(FilterMode from)1156 CLenum ToCLenum(FilterMode from)
1157 {
1158 switch (from)
1159 {
1160 case FilterMode::Nearest:
1161 return CL_FILTER_NEAREST;
1162 case FilterMode::Linear:
1163 return CL_FILTER_LINEAR;
1164 default:
1165 UNREACHABLE();
1166 return 0;
1167 }
1168 }
1169
operator <<(std::ostream & os,FilterMode value)1170 std::ostream &operator<<(std::ostream &os, FilterMode value)
1171 {
1172 switch (value)
1173 {
1174 case FilterMode::Nearest:
1175 os << "CL_FILTER_NEAREST";
1176 break;
1177 case FilterMode::Linear:
1178 os << "CL_FILTER_LINEAR";
1179 break;
1180 default:
1181 os << "GL_INVALID_ENUM";
1182 break;
1183 }
1184 return os;
1185 }
1186
1187 template <>
FromCLenum(CLenum from)1188 ImageInfo FromCLenum<ImageInfo>(CLenum from)
1189 {
1190 switch (from)
1191 {
1192 case CL_IMAGE_FORMAT:
1193 return ImageInfo::Format;
1194 case CL_IMAGE_ELEMENT_SIZE:
1195 return ImageInfo::ElementSize;
1196 case CL_IMAGE_ROW_PITCH:
1197 return ImageInfo::RowPitch;
1198 case CL_IMAGE_SLICE_PITCH:
1199 return ImageInfo::SlicePitch;
1200 case CL_IMAGE_WIDTH:
1201 return ImageInfo::Width;
1202 case CL_IMAGE_HEIGHT:
1203 return ImageInfo::Height;
1204 case CL_IMAGE_DEPTH:
1205 return ImageInfo::Depth;
1206 case CL_IMAGE_ARRAY_SIZE:
1207 return ImageInfo::ArraySize;
1208 case CL_IMAGE_BUFFER:
1209 return ImageInfo::Buffer;
1210 case CL_IMAGE_NUM_MIP_LEVELS:
1211 return ImageInfo::NumMipLevels;
1212 case CL_IMAGE_NUM_SAMPLES:
1213 return ImageInfo::NumSamples;
1214 default:
1215 return ImageInfo::InvalidEnum;
1216 }
1217 }
1218
ToCLenum(ImageInfo from)1219 CLenum ToCLenum(ImageInfo from)
1220 {
1221 switch (from)
1222 {
1223 case ImageInfo::Format:
1224 return CL_IMAGE_FORMAT;
1225 case ImageInfo::ElementSize:
1226 return CL_IMAGE_ELEMENT_SIZE;
1227 case ImageInfo::RowPitch:
1228 return CL_IMAGE_ROW_PITCH;
1229 case ImageInfo::SlicePitch:
1230 return CL_IMAGE_SLICE_PITCH;
1231 case ImageInfo::Width:
1232 return CL_IMAGE_WIDTH;
1233 case ImageInfo::Height:
1234 return CL_IMAGE_HEIGHT;
1235 case ImageInfo::Depth:
1236 return CL_IMAGE_DEPTH;
1237 case ImageInfo::ArraySize:
1238 return CL_IMAGE_ARRAY_SIZE;
1239 case ImageInfo::Buffer:
1240 return CL_IMAGE_BUFFER;
1241 case ImageInfo::NumMipLevels:
1242 return CL_IMAGE_NUM_MIP_LEVELS;
1243 case ImageInfo::NumSamples:
1244 return CL_IMAGE_NUM_SAMPLES;
1245 default:
1246 UNREACHABLE();
1247 return 0;
1248 }
1249 }
1250
operator <<(std::ostream & os,ImageInfo value)1251 std::ostream &operator<<(std::ostream &os, ImageInfo value)
1252 {
1253 switch (value)
1254 {
1255 case ImageInfo::Format:
1256 os << "CL_IMAGE_FORMAT";
1257 break;
1258 case ImageInfo::ElementSize:
1259 os << "CL_IMAGE_ELEMENT_SIZE";
1260 break;
1261 case ImageInfo::RowPitch:
1262 os << "CL_IMAGE_ROW_PITCH";
1263 break;
1264 case ImageInfo::SlicePitch:
1265 os << "CL_IMAGE_SLICE_PITCH";
1266 break;
1267 case ImageInfo::Width:
1268 os << "CL_IMAGE_WIDTH";
1269 break;
1270 case ImageInfo::Height:
1271 os << "CL_IMAGE_HEIGHT";
1272 break;
1273 case ImageInfo::Depth:
1274 os << "CL_IMAGE_DEPTH";
1275 break;
1276 case ImageInfo::ArraySize:
1277 os << "CL_IMAGE_ARRAY_SIZE";
1278 break;
1279 case ImageInfo::Buffer:
1280 os << "CL_IMAGE_BUFFER";
1281 break;
1282 case ImageInfo::NumMipLevels:
1283 os << "CL_IMAGE_NUM_MIP_LEVELS";
1284 break;
1285 case ImageInfo::NumSamples:
1286 os << "CL_IMAGE_NUM_SAMPLES";
1287 break;
1288 default:
1289 os << "GL_INVALID_ENUM";
1290 break;
1291 }
1292 return os;
1293 }
1294
1295 template <>
FromCLenum(CLenum from)1296 KernelArgInfo FromCLenum<KernelArgInfo>(CLenum from)
1297 {
1298 switch (from)
1299 {
1300 case CL_KERNEL_ARG_ADDRESS_QUALIFIER:
1301 return KernelArgInfo::AddressQualifier;
1302 case CL_KERNEL_ARG_ACCESS_QUALIFIER:
1303 return KernelArgInfo::AccessQualifier;
1304 case CL_KERNEL_ARG_TYPE_NAME:
1305 return KernelArgInfo::TypeName;
1306 case CL_KERNEL_ARG_TYPE_QUALIFIER:
1307 return KernelArgInfo::TypeQualifier;
1308 case CL_KERNEL_ARG_NAME:
1309 return KernelArgInfo::Name;
1310 default:
1311 return KernelArgInfo::InvalidEnum;
1312 }
1313 }
1314
ToCLenum(KernelArgInfo from)1315 CLenum ToCLenum(KernelArgInfo from)
1316 {
1317 switch (from)
1318 {
1319 case KernelArgInfo::AddressQualifier:
1320 return CL_KERNEL_ARG_ADDRESS_QUALIFIER;
1321 case KernelArgInfo::AccessQualifier:
1322 return CL_KERNEL_ARG_ACCESS_QUALIFIER;
1323 case KernelArgInfo::TypeName:
1324 return CL_KERNEL_ARG_TYPE_NAME;
1325 case KernelArgInfo::TypeQualifier:
1326 return CL_KERNEL_ARG_TYPE_QUALIFIER;
1327 case KernelArgInfo::Name:
1328 return CL_KERNEL_ARG_NAME;
1329 default:
1330 UNREACHABLE();
1331 return 0;
1332 }
1333 }
1334
operator <<(std::ostream & os,KernelArgInfo value)1335 std::ostream &operator<<(std::ostream &os, KernelArgInfo value)
1336 {
1337 switch (value)
1338 {
1339 case KernelArgInfo::AddressQualifier:
1340 os << "CL_KERNEL_ARG_ADDRESS_QUALIFIER";
1341 break;
1342 case KernelArgInfo::AccessQualifier:
1343 os << "CL_KERNEL_ARG_ACCESS_QUALIFIER";
1344 break;
1345 case KernelArgInfo::TypeName:
1346 os << "CL_KERNEL_ARG_TYPE_NAME";
1347 break;
1348 case KernelArgInfo::TypeQualifier:
1349 os << "CL_KERNEL_ARG_TYPE_QUALIFIER";
1350 break;
1351 case KernelArgInfo::Name:
1352 os << "CL_KERNEL_ARG_NAME";
1353 break;
1354 default:
1355 os << "GL_INVALID_ENUM";
1356 break;
1357 }
1358 return os;
1359 }
1360
1361 template <>
FromCLenum(CLenum from)1362 KernelExecInfo FromCLenum<KernelExecInfo>(CLenum from)
1363 {
1364 switch (from)
1365 {
1366 case CL_KERNEL_EXEC_INFO_SVM_PTRS:
1367 return KernelExecInfo::SVM_Ptrs;
1368 case CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM:
1369 return KernelExecInfo::SVM_FineGrainSystem;
1370 default:
1371 return KernelExecInfo::InvalidEnum;
1372 }
1373 }
1374
ToCLenum(KernelExecInfo from)1375 CLenum ToCLenum(KernelExecInfo from)
1376 {
1377 switch (from)
1378 {
1379 case KernelExecInfo::SVM_Ptrs:
1380 return CL_KERNEL_EXEC_INFO_SVM_PTRS;
1381 case KernelExecInfo::SVM_FineGrainSystem:
1382 return CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM;
1383 default:
1384 UNREACHABLE();
1385 return 0;
1386 }
1387 }
1388
operator <<(std::ostream & os,KernelExecInfo value)1389 std::ostream &operator<<(std::ostream &os, KernelExecInfo value)
1390 {
1391 switch (value)
1392 {
1393 case KernelExecInfo::SVM_Ptrs:
1394 os << "CL_KERNEL_EXEC_INFO_SVM_PTRS";
1395 break;
1396 case KernelExecInfo::SVM_FineGrainSystem:
1397 os << "CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM";
1398 break;
1399 default:
1400 os << "GL_INVALID_ENUM";
1401 break;
1402 }
1403 return os;
1404 }
1405
1406 template <>
FromCLenum(CLenum from)1407 KernelInfo FromCLenum<KernelInfo>(CLenum from)
1408 {
1409 switch (from)
1410 {
1411 case CL_KERNEL_FUNCTION_NAME:
1412 return KernelInfo::FunctionName;
1413 case CL_KERNEL_NUM_ARGS:
1414 return KernelInfo::NumArgs;
1415 case CL_KERNEL_REFERENCE_COUNT:
1416 return KernelInfo::ReferenceCount;
1417 case CL_KERNEL_CONTEXT:
1418 return KernelInfo::Context;
1419 case CL_KERNEL_PROGRAM:
1420 return KernelInfo::Program;
1421 case CL_KERNEL_ATTRIBUTES:
1422 return KernelInfo::Attributes;
1423 default:
1424 return KernelInfo::InvalidEnum;
1425 }
1426 }
1427
ToCLenum(KernelInfo from)1428 CLenum ToCLenum(KernelInfo from)
1429 {
1430 switch (from)
1431 {
1432 case KernelInfo::FunctionName:
1433 return CL_KERNEL_FUNCTION_NAME;
1434 case KernelInfo::NumArgs:
1435 return CL_KERNEL_NUM_ARGS;
1436 case KernelInfo::ReferenceCount:
1437 return CL_KERNEL_REFERENCE_COUNT;
1438 case KernelInfo::Context:
1439 return CL_KERNEL_CONTEXT;
1440 case KernelInfo::Program:
1441 return CL_KERNEL_PROGRAM;
1442 case KernelInfo::Attributes:
1443 return CL_KERNEL_ATTRIBUTES;
1444 default:
1445 UNREACHABLE();
1446 return 0;
1447 }
1448 }
1449
operator <<(std::ostream & os,KernelInfo value)1450 std::ostream &operator<<(std::ostream &os, KernelInfo value)
1451 {
1452 switch (value)
1453 {
1454 case KernelInfo::FunctionName:
1455 os << "CL_KERNEL_FUNCTION_NAME";
1456 break;
1457 case KernelInfo::NumArgs:
1458 os << "CL_KERNEL_NUM_ARGS";
1459 break;
1460 case KernelInfo::ReferenceCount:
1461 os << "CL_KERNEL_REFERENCE_COUNT";
1462 break;
1463 case KernelInfo::Context:
1464 os << "CL_KERNEL_CONTEXT";
1465 break;
1466 case KernelInfo::Program:
1467 os << "CL_KERNEL_PROGRAM";
1468 break;
1469 case KernelInfo::Attributes:
1470 os << "CL_KERNEL_ATTRIBUTES";
1471 break;
1472 default:
1473 os << "GL_INVALID_ENUM";
1474 break;
1475 }
1476 return os;
1477 }
1478
1479 template <>
FromCLenum(CLenum from)1480 KernelSubGroupInfo FromCLenum<KernelSubGroupInfo>(CLenum from)
1481 {
1482 switch (from)
1483 {
1484 case CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE:
1485 return KernelSubGroupInfo::MaxSubGroupSizeForNdrange;
1486 case CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE:
1487 return KernelSubGroupInfo::SubGroupCountForNdrange;
1488 case CL_KERNEL_LOCAL_SIZE_FOR_SUB_GROUP_COUNT:
1489 return KernelSubGroupInfo::LocalSizeForSubGroupCount;
1490 case CL_KERNEL_MAX_NUM_SUB_GROUPS:
1491 return KernelSubGroupInfo::MaxNumSubGroups;
1492 case CL_KERNEL_COMPILE_NUM_SUB_GROUPS:
1493 return KernelSubGroupInfo::CompileNumSubGroups;
1494 default:
1495 return KernelSubGroupInfo::InvalidEnum;
1496 }
1497 }
1498
ToCLenum(KernelSubGroupInfo from)1499 CLenum ToCLenum(KernelSubGroupInfo from)
1500 {
1501 switch (from)
1502 {
1503 case KernelSubGroupInfo::MaxSubGroupSizeForNdrange:
1504 return CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE;
1505 case KernelSubGroupInfo::SubGroupCountForNdrange:
1506 return CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE;
1507 case KernelSubGroupInfo::LocalSizeForSubGroupCount:
1508 return CL_KERNEL_LOCAL_SIZE_FOR_SUB_GROUP_COUNT;
1509 case KernelSubGroupInfo::MaxNumSubGroups:
1510 return CL_KERNEL_MAX_NUM_SUB_GROUPS;
1511 case KernelSubGroupInfo::CompileNumSubGroups:
1512 return CL_KERNEL_COMPILE_NUM_SUB_GROUPS;
1513 default:
1514 UNREACHABLE();
1515 return 0;
1516 }
1517 }
1518
operator <<(std::ostream & os,KernelSubGroupInfo value)1519 std::ostream &operator<<(std::ostream &os, KernelSubGroupInfo value)
1520 {
1521 switch (value)
1522 {
1523 case KernelSubGroupInfo::MaxSubGroupSizeForNdrange:
1524 os << "CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE";
1525 break;
1526 case KernelSubGroupInfo::SubGroupCountForNdrange:
1527 os << "CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE";
1528 break;
1529 case KernelSubGroupInfo::LocalSizeForSubGroupCount:
1530 os << "CL_KERNEL_LOCAL_SIZE_FOR_SUB_GROUP_COUNT";
1531 break;
1532 case KernelSubGroupInfo::MaxNumSubGroups:
1533 os << "CL_KERNEL_MAX_NUM_SUB_GROUPS";
1534 break;
1535 case KernelSubGroupInfo::CompileNumSubGroups:
1536 os << "CL_KERNEL_COMPILE_NUM_SUB_GROUPS";
1537 break;
1538 default:
1539 os << "GL_INVALID_ENUM";
1540 break;
1541 }
1542 return os;
1543 }
1544
1545 template <>
FromCLenum(CLenum from)1546 KernelWorkGroupInfo FromCLenum<KernelWorkGroupInfo>(CLenum from)
1547 {
1548 switch (from)
1549 {
1550 case CL_KERNEL_WORK_GROUP_SIZE:
1551 return KernelWorkGroupInfo::WorkGroupSize;
1552 case CL_KERNEL_COMPILE_WORK_GROUP_SIZE:
1553 return KernelWorkGroupInfo::CompileWorkGroupSize;
1554 case CL_KERNEL_LOCAL_MEM_SIZE:
1555 return KernelWorkGroupInfo::LocalMemSize;
1556 case CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE:
1557 return KernelWorkGroupInfo::PreferredWorkGroupSizeMultiple;
1558 case CL_KERNEL_PRIVATE_MEM_SIZE:
1559 return KernelWorkGroupInfo::PrivateMemSize;
1560 case CL_KERNEL_GLOBAL_WORK_SIZE:
1561 return KernelWorkGroupInfo::GlobalWorkSize;
1562 default:
1563 return KernelWorkGroupInfo::InvalidEnum;
1564 }
1565 }
1566
ToCLenum(KernelWorkGroupInfo from)1567 CLenum ToCLenum(KernelWorkGroupInfo from)
1568 {
1569 switch (from)
1570 {
1571 case KernelWorkGroupInfo::WorkGroupSize:
1572 return CL_KERNEL_WORK_GROUP_SIZE;
1573 case KernelWorkGroupInfo::CompileWorkGroupSize:
1574 return CL_KERNEL_COMPILE_WORK_GROUP_SIZE;
1575 case KernelWorkGroupInfo::LocalMemSize:
1576 return CL_KERNEL_LOCAL_MEM_SIZE;
1577 case KernelWorkGroupInfo::PreferredWorkGroupSizeMultiple:
1578 return CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE;
1579 case KernelWorkGroupInfo::PrivateMemSize:
1580 return CL_KERNEL_PRIVATE_MEM_SIZE;
1581 case KernelWorkGroupInfo::GlobalWorkSize:
1582 return CL_KERNEL_GLOBAL_WORK_SIZE;
1583 default:
1584 UNREACHABLE();
1585 return 0;
1586 }
1587 }
1588
operator <<(std::ostream & os,KernelWorkGroupInfo value)1589 std::ostream &operator<<(std::ostream &os, KernelWorkGroupInfo value)
1590 {
1591 switch (value)
1592 {
1593 case KernelWorkGroupInfo::WorkGroupSize:
1594 os << "CL_KERNEL_WORK_GROUP_SIZE";
1595 break;
1596 case KernelWorkGroupInfo::CompileWorkGroupSize:
1597 os << "CL_KERNEL_COMPILE_WORK_GROUP_SIZE";
1598 break;
1599 case KernelWorkGroupInfo::LocalMemSize:
1600 os << "CL_KERNEL_LOCAL_MEM_SIZE";
1601 break;
1602 case KernelWorkGroupInfo::PreferredWorkGroupSizeMultiple:
1603 os << "CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE";
1604 break;
1605 case KernelWorkGroupInfo::PrivateMemSize:
1606 os << "CL_KERNEL_PRIVATE_MEM_SIZE";
1607 break;
1608 case KernelWorkGroupInfo::GlobalWorkSize:
1609 os << "CL_KERNEL_GLOBAL_WORK_SIZE";
1610 break;
1611 default:
1612 os << "GL_INVALID_ENUM";
1613 break;
1614 }
1615 return os;
1616 }
1617
1618 template <>
FromCLenum(CLenum from)1619 MemInfo FromCLenum<MemInfo>(CLenum from)
1620 {
1621 switch (from)
1622 {
1623 case CL_MEM_TYPE:
1624 return MemInfo::Type;
1625 case CL_MEM_FLAGS:
1626 return MemInfo::Flags;
1627 case CL_MEM_SIZE:
1628 return MemInfo::Size;
1629 case CL_MEM_HOST_PTR:
1630 return MemInfo::HostPtr;
1631 case CL_MEM_MAP_COUNT:
1632 return MemInfo::MapCount;
1633 case CL_MEM_REFERENCE_COUNT:
1634 return MemInfo::ReferenceCount;
1635 case CL_MEM_CONTEXT:
1636 return MemInfo::Context;
1637 case CL_MEM_ASSOCIATED_MEMOBJECT:
1638 return MemInfo::AssociatedMemObject;
1639 case CL_MEM_OFFSET:
1640 return MemInfo::Offset;
1641 case CL_MEM_USES_SVM_POINTER:
1642 return MemInfo::UsesSVM_Pointer;
1643 case CL_MEM_PROPERTIES:
1644 return MemInfo::Properties;
1645 default:
1646 return MemInfo::InvalidEnum;
1647 }
1648 }
1649
ToCLenum(MemInfo from)1650 CLenum ToCLenum(MemInfo from)
1651 {
1652 switch (from)
1653 {
1654 case MemInfo::Type:
1655 return CL_MEM_TYPE;
1656 case MemInfo::Flags:
1657 return CL_MEM_FLAGS;
1658 case MemInfo::Size:
1659 return CL_MEM_SIZE;
1660 case MemInfo::HostPtr:
1661 return CL_MEM_HOST_PTR;
1662 case MemInfo::MapCount:
1663 return CL_MEM_MAP_COUNT;
1664 case MemInfo::ReferenceCount:
1665 return CL_MEM_REFERENCE_COUNT;
1666 case MemInfo::Context:
1667 return CL_MEM_CONTEXT;
1668 case MemInfo::AssociatedMemObject:
1669 return CL_MEM_ASSOCIATED_MEMOBJECT;
1670 case MemInfo::Offset:
1671 return CL_MEM_OFFSET;
1672 case MemInfo::UsesSVM_Pointer:
1673 return CL_MEM_USES_SVM_POINTER;
1674 case MemInfo::Properties:
1675 return CL_MEM_PROPERTIES;
1676 default:
1677 UNREACHABLE();
1678 return 0;
1679 }
1680 }
1681
operator <<(std::ostream & os,MemInfo value)1682 std::ostream &operator<<(std::ostream &os, MemInfo value)
1683 {
1684 switch (value)
1685 {
1686 case MemInfo::Type:
1687 os << "CL_MEM_TYPE";
1688 break;
1689 case MemInfo::Flags:
1690 os << "CL_MEM_FLAGS";
1691 break;
1692 case MemInfo::Size:
1693 os << "CL_MEM_SIZE";
1694 break;
1695 case MemInfo::HostPtr:
1696 os << "CL_MEM_HOST_PTR";
1697 break;
1698 case MemInfo::MapCount:
1699 os << "CL_MEM_MAP_COUNT";
1700 break;
1701 case MemInfo::ReferenceCount:
1702 os << "CL_MEM_REFERENCE_COUNT";
1703 break;
1704 case MemInfo::Context:
1705 os << "CL_MEM_CONTEXT";
1706 break;
1707 case MemInfo::AssociatedMemObject:
1708 os << "CL_MEM_ASSOCIATED_MEMOBJECT";
1709 break;
1710 case MemInfo::Offset:
1711 os << "CL_MEM_OFFSET";
1712 break;
1713 case MemInfo::UsesSVM_Pointer:
1714 os << "CL_MEM_USES_SVM_POINTER";
1715 break;
1716 case MemInfo::Properties:
1717 os << "CL_MEM_PROPERTIES";
1718 break;
1719 default:
1720 os << "GL_INVALID_ENUM";
1721 break;
1722 }
1723 return os;
1724 }
1725
1726 template <>
FromCLenum(CLenum from)1727 MemObjectType FromCLenum<MemObjectType>(CLenum from)
1728 {
1729 switch (from)
1730 {
1731 case CL_MEM_OBJECT_BUFFER:
1732 return MemObjectType::Buffer;
1733 case CL_MEM_OBJECT_IMAGE2D:
1734 return MemObjectType::Image2D;
1735 case CL_MEM_OBJECT_IMAGE3D:
1736 return MemObjectType::Image3D;
1737 case CL_MEM_OBJECT_IMAGE2D_ARRAY:
1738 return MemObjectType::Image2D_Array;
1739 case CL_MEM_OBJECT_IMAGE1D:
1740 return MemObjectType::Image1D;
1741 case CL_MEM_OBJECT_IMAGE1D_ARRAY:
1742 return MemObjectType::Image1D_Array;
1743 case CL_MEM_OBJECT_IMAGE1D_BUFFER:
1744 return MemObjectType::Image1D_Buffer;
1745 case CL_MEM_OBJECT_PIPE:
1746 return MemObjectType::Pipe;
1747 default:
1748 return MemObjectType::InvalidEnum;
1749 }
1750 }
1751
ToCLenum(MemObjectType from)1752 CLenum ToCLenum(MemObjectType from)
1753 {
1754 switch (from)
1755 {
1756 case MemObjectType::Buffer:
1757 return CL_MEM_OBJECT_BUFFER;
1758 case MemObjectType::Image2D:
1759 return CL_MEM_OBJECT_IMAGE2D;
1760 case MemObjectType::Image3D:
1761 return CL_MEM_OBJECT_IMAGE3D;
1762 case MemObjectType::Image2D_Array:
1763 return CL_MEM_OBJECT_IMAGE2D_ARRAY;
1764 case MemObjectType::Image1D:
1765 return CL_MEM_OBJECT_IMAGE1D;
1766 case MemObjectType::Image1D_Array:
1767 return CL_MEM_OBJECT_IMAGE1D_ARRAY;
1768 case MemObjectType::Image1D_Buffer:
1769 return CL_MEM_OBJECT_IMAGE1D_BUFFER;
1770 case MemObjectType::Pipe:
1771 return CL_MEM_OBJECT_PIPE;
1772 default:
1773 UNREACHABLE();
1774 return 0;
1775 }
1776 }
1777
operator <<(std::ostream & os,MemObjectType value)1778 std::ostream &operator<<(std::ostream &os, MemObjectType value)
1779 {
1780 switch (value)
1781 {
1782 case MemObjectType::Buffer:
1783 os << "CL_MEM_OBJECT_BUFFER";
1784 break;
1785 case MemObjectType::Image2D:
1786 os << "CL_MEM_OBJECT_IMAGE2D";
1787 break;
1788 case MemObjectType::Image3D:
1789 os << "CL_MEM_OBJECT_IMAGE3D";
1790 break;
1791 case MemObjectType::Image2D_Array:
1792 os << "CL_MEM_OBJECT_IMAGE2D_ARRAY";
1793 break;
1794 case MemObjectType::Image1D:
1795 os << "CL_MEM_OBJECT_IMAGE1D";
1796 break;
1797 case MemObjectType::Image1D_Array:
1798 os << "CL_MEM_OBJECT_IMAGE1D_ARRAY";
1799 break;
1800 case MemObjectType::Image1D_Buffer:
1801 os << "CL_MEM_OBJECT_IMAGE1D_BUFFER";
1802 break;
1803 case MemObjectType::Pipe:
1804 os << "CL_MEM_OBJECT_PIPE";
1805 break;
1806 default:
1807 os << "GL_INVALID_ENUM";
1808 break;
1809 }
1810 return os;
1811 }
1812
1813 template <>
FromCLenum(CLenum from)1814 PipeInfo FromCLenum<PipeInfo>(CLenum from)
1815 {
1816 switch (from)
1817 {
1818 case CL_PIPE_PACKET_SIZE:
1819 return PipeInfo::PacketSize;
1820 case CL_PIPE_MAX_PACKETS:
1821 return PipeInfo::MaxPackets;
1822 case CL_PIPE_PROPERTIES:
1823 return PipeInfo::Properties;
1824 default:
1825 return PipeInfo::InvalidEnum;
1826 }
1827 }
1828
ToCLenum(PipeInfo from)1829 CLenum ToCLenum(PipeInfo from)
1830 {
1831 switch (from)
1832 {
1833 case PipeInfo::PacketSize:
1834 return CL_PIPE_PACKET_SIZE;
1835 case PipeInfo::MaxPackets:
1836 return CL_PIPE_MAX_PACKETS;
1837 case PipeInfo::Properties:
1838 return CL_PIPE_PROPERTIES;
1839 default:
1840 UNREACHABLE();
1841 return 0;
1842 }
1843 }
1844
operator <<(std::ostream & os,PipeInfo value)1845 std::ostream &operator<<(std::ostream &os, PipeInfo value)
1846 {
1847 switch (value)
1848 {
1849 case PipeInfo::PacketSize:
1850 os << "CL_PIPE_PACKET_SIZE";
1851 break;
1852 case PipeInfo::MaxPackets:
1853 os << "CL_PIPE_MAX_PACKETS";
1854 break;
1855 case PipeInfo::Properties:
1856 os << "CL_PIPE_PROPERTIES";
1857 break;
1858 default:
1859 os << "GL_INVALID_ENUM";
1860 break;
1861 }
1862 return os;
1863 }
1864
1865 template <>
FromCLenum(CLenum from)1866 PlatformInfo FromCLenum<PlatformInfo>(CLenum from)
1867 {
1868 switch (from)
1869 {
1870 case CL_PLATFORM_PROFILE:
1871 return PlatformInfo::Profile;
1872 case CL_PLATFORM_VERSION:
1873 return PlatformInfo::Version;
1874 case CL_PLATFORM_NAME:
1875 return PlatformInfo::Name;
1876 case CL_PLATFORM_VENDOR:
1877 return PlatformInfo::Vendor;
1878 case CL_PLATFORM_EXTENSIONS:
1879 return PlatformInfo::Extensions;
1880 case CL_PLATFORM_HOST_TIMER_RESOLUTION:
1881 return PlatformInfo::HostTimerResolution;
1882 case CL_PLATFORM_NUMERIC_VERSION:
1883 return PlatformInfo::NumericVersion;
1884 case CL_PLATFORM_EXTENSIONS_WITH_VERSION:
1885 return PlatformInfo::ExtensionsWithVersion;
1886 case CL_PLATFORM_ICD_SUFFIX_KHR:
1887 return PlatformInfo::IcdSuffix;
1888 default:
1889 return PlatformInfo::InvalidEnum;
1890 }
1891 }
1892
ToCLenum(PlatformInfo from)1893 CLenum ToCLenum(PlatformInfo from)
1894 {
1895 switch (from)
1896 {
1897 case PlatformInfo::Profile:
1898 return CL_PLATFORM_PROFILE;
1899 case PlatformInfo::Version:
1900 return CL_PLATFORM_VERSION;
1901 case PlatformInfo::Name:
1902 return CL_PLATFORM_NAME;
1903 case PlatformInfo::Vendor:
1904 return CL_PLATFORM_VENDOR;
1905 case PlatformInfo::Extensions:
1906 return CL_PLATFORM_EXTENSIONS;
1907 case PlatformInfo::HostTimerResolution:
1908 return CL_PLATFORM_HOST_TIMER_RESOLUTION;
1909 case PlatformInfo::NumericVersion:
1910 return CL_PLATFORM_NUMERIC_VERSION;
1911 case PlatformInfo::ExtensionsWithVersion:
1912 return CL_PLATFORM_EXTENSIONS_WITH_VERSION;
1913 case PlatformInfo::IcdSuffix:
1914 return CL_PLATFORM_ICD_SUFFIX_KHR;
1915 default:
1916 UNREACHABLE();
1917 return 0;
1918 }
1919 }
1920
operator <<(std::ostream & os,PlatformInfo value)1921 std::ostream &operator<<(std::ostream &os, PlatformInfo value)
1922 {
1923 switch (value)
1924 {
1925 case PlatformInfo::Profile:
1926 os << "CL_PLATFORM_PROFILE";
1927 break;
1928 case PlatformInfo::Version:
1929 os << "CL_PLATFORM_VERSION";
1930 break;
1931 case PlatformInfo::Name:
1932 os << "CL_PLATFORM_NAME";
1933 break;
1934 case PlatformInfo::Vendor:
1935 os << "CL_PLATFORM_VENDOR";
1936 break;
1937 case PlatformInfo::Extensions:
1938 os << "CL_PLATFORM_EXTENSIONS";
1939 break;
1940 case PlatformInfo::HostTimerResolution:
1941 os << "CL_PLATFORM_HOST_TIMER_RESOLUTION";
1942 break;
1943 case PlatformInfo::NumericVersion:
1944 os << "CL_PLATFORM_NUMERIC_VERSION";
1945 break;
1946 case PlatformInfo::ExtensionsWithVersion:
1947 os << "CL_PLATFORM_EXTENSIONS_WITH_VERSION";
1948 break;
1949 case PlatformInfo::IcdSuffix:
1950 os << "CL_PLATFORM_ICD_SUFFIX_KHR";
1951 break;
1952 default:
1953 os << "GL_INVALID_ENUM";
1954 break;
1955 }
1956 return os;
1957 }
1958
1959 template <>
FromCLenum(CLenum from)1960 ProfilingInfo FromCLenum<ProfilingInfo>(CLenum from)
1961 {
1962 switch (from)
1963 {
1964 case CL_PROFILING_COMMAND_QUEUED:
1965 return ProfilingInfo::CommandQueued;
1966 case CL_PROFILING_COMMAND_SUBMIT:
1967 return ProfilingInfo::CommandSubmit;
1968 case CL_PROFILING_COMMAND_START:
1969 return ProfilingInfo::CommandStart;
1970 case CL_PROFILING_COMMAND_END:
1971 return ProfilingInfo::CommandEnd;
1972 case CL_PROFILING_COMMAND_COMPLETE:
1973 return ProfilingInfo::CommandComplete;
1974 default:
1975 return ProfilingInfo::InvalidEnum;
1976 }
1977 }
1978
ToCLenum(ProfilingInfo from)1979 CLenum ToCLenum(ProfilingInfo from)
1980 {
1981 switch (from)
1982 {
1983 case ProfilingInfo::CommandQueued:
1984 return CL_PROFILING_COMMAND_QUEUED;
1985 case ProfilingInfo::CommandSubmit:
1986 return CL_PROFILING_COMMAND_SUBMIT;
1987 case ProfilingInfo::CommandStart:
1988 return CL_PROFILING_COMMAND_START;
1989 case ProfilingInfo::CommandEnd:
1990 return CL_PROFILING_COMMAND_END;
1991 case ProfilingInfo::CommandComplete:
1992 return CL_PROFILING_COMMAND_COMPLETE;
1993 default:
1994 UNREACHABLE();
1995 return 0;
1996 }
1997 }
1998
operator <<(std::ostream & os,ProfilingInfo value)1999 std::ostream &operator<<(std::ostream &os, ProfilingInfo value)
2000 {
2001 switch (value)
2002 {
2003 case ProfilingInfo::CommandQueued:
2004 os << "CL_PROFILING_COMMAND_QUEUED";
2005 break;
2006 case ProfilingInfo::CommandSubmit:
2007 os << "CL_PROFILING_COMMAND_SUBMIT";
2008 break;
2009 case ProfilingInfo::CommandStart:
2010 os << "CL_PROFILING_COMMAND_START";
2011 break;
2012 case ProfilingInfo::CommandEnd:
2013 os << "CL_PROFILING_COMMAND_END";
2014 break;
2015 case ProfilingInfo::CommandComplete:
2016 os << "CL_PROFILING_COMMAND_COMPLETE";
2017 break;
2018 default:
2019 os << "GL_INVALID_ENUM";
2020 break;
2021 }
2022 return os;
2023 }
2024
2025 template <>
FromCLenum(CLenum from)2026 ProgramBuildInfo FromCLenum<ProgramBuildInfo>(CLenum from)
2027 {
2028 switch (from)
2029 {
2030 case CL_PROGRAM_BUILD_STATUS:
2031 return ProgramBuildInfo::Status;
2032 case CL_PROGRAM_BUILD_OPTIONS:
2033 return ProgramBuildInfo::Options;
2034 case CL_PROGRAM_BUILD_LOG:
2035 return ProgramBuildInfo::Log;
2036 case CL_PROGRAM_BINARY_TYPE:
2037 return ProgramBuildInfo::BinaryType;
2038 case CL_PROGRAM_BUILD_GLOBAL_VARIABLE_TOTAL_SIZE:
2039 return ProgramBuildInfo::GlobalVariableTotalSize;
2040 default:
2041 return ProgramBuildInfo::InvalidEnum;
2042 }
2043 }
2044
ToCLenum(ProgramBuildInfo from)2045 CLenum ToCLenum(ProgramBuildInfo from)
2046 {
2047 switch (from)
2048 {
2049 case ProgramBuildInfo::Status:
2050 return CL_PROGRAM_BUILD_STATUS;
2051 case ProgramBuildInfo::Options:
2052 return CL_PROGRAM_BUILD_OPTIONS;
2053 case ProgramBuildInfo::Log:
2054 return CL_PROGRAM_BUILD_LOG;
2055 case ProgramBuildInfo::BinaryType:
2056 return CL_PROGRAM_BINARY_TYPE;
2057 case ProgramBuildInfo::GlobalVariableTotalSize:
2058 return CL_PROGRAM_BUILD_GLOBAL_VARIABLE_TOTAL_SIZE;
2059 default:
2060 UNREACHABLE();
2061 return 0;
2062 }
2063 }
2064
operator <<(std::ostream & os,ProgramBuildInfo value)2065 std::ostream &operator<<(std::ostream &os, ProgramBuildInfo value)
2066 {
2067 switch (value)
2068 {
2069 case ProgramBuildInfo::Status:
2070 os << "CL_PROGRAM_BUILD_STATUS";
2071 break;
2072 case ProgramBuildInfo::Options:
2073 os << "CL_PROGRAM_BUILD_OPTIONS";
2074 break;
2075 case ProgramBuildInfo::Log:
2076 os << "CL_PROGRAM_BUILD_LOG";
2077 break;
2078 case ProgramBuildInfo::BinaryType:
2079 os << "CL_PROGRAM_BINARY_TYPE";
2080 break;
2081 case ProgramBuildInfo::GlobalVariableTotalSize:
2082 os << "CL_PROGRAM_BUILD_GLOBAL_VARIABLE_TOTAL_SIZE";
2083 break;
2084 default:
2085 os << "GL_INVALID_ENUM";
2086 break;
2087 }
2088 return os;
2089 }
2090
2091 template <>
FromCLenum(CLenum from)2092 ProgramInfo FromCLenum<ProgramInfo>(CLenum from)
2093 {
2094 switch (from)
2095 {
2096 case CL_PROGRAM_REFERENCE_COUNT:
2097 return ProgramInfo::ReferenceCount;
2098 case CL_PROGRAM_CONTEXT:
2099 return ProgramInfo::Context;
2100 case CL_PROGRAM_NUM_DEVICES:
2101 return ProgramInfo::NumDevices;
2102 case CL_PROGRAM_DEVICES:
2103 return ProgramInfo::Devices;
2104 case CL_PROGRAM_SOURCE:
2105 return ProgramInfo::Source;
2106 case CL_PROGRAM_BINARY_SIZES:
2107 return ProgramInfo::BinarySizes;
2108 case CL_PROGRAM_BINARIES:
2109 return ProgramInfo::Binaries;
2110 case CL_PROGRAM_NUM_KERNELS:
2111 return ProgramInfo::NumKernels;
2112 case CL_PROGRAM_KERNEL_NAMES:
2113 return ProgramInfo::KernelNames;
2114 case CL_PROGRAM_IL:
2115 return ProgramInfo::IL;
2116 case CL_PROGRAM_SCOPE_GLOBAL_CTORS_PRESENT:
2117 return ProgramInfo::ScopeGlobalCtorsPresent;
2118 case CL_PROGRAM_SCOPE_GLOBAL_DTORS_PRESENT:
2119 return ProgramInfo::ScopeGlobalDtorsPresent;
2120 default:
2121 return ProgramInfo::InvalidEnum;
2122 }
2123 }
2124
ToCLenum(ProgramInfo from)2125 CLenum ToCLenum(ProgramInfo from)
2126 {
2127 switch (from)
2128 {
2129 case ProgramInfo::ReferenceCount:
2130 return CL_PROGRAM_REFERENCE_COUNT;
2131 case ProgramInfo::Context:
2132 return CL_PROGRAM_CONTEXT;
2133 case ProgramInfo::NumDevices:
2134 return CL_PROGRAM_NUM_DEVICES;
2135 case ProgramInfo::Devices:
2136 return CL_PROGRAM_DEVICES;
2137 case ProgramInfo::Source:
2138 return CL_PROGRAM_SOURCE;
2139 case ProgramInfo::BinarySizes:
2140 return CL_PROGRAM_BINARY_SIZES;
2141 case ProgramInfo::Binaries:
2142 return CL_PROGRAM_BINARIES;
2143 case ProgramInfo::NumKernels:
2144 return CL_PROGRAM_NUM_KERNELS;
2145 case ProgramInfo::KernelNames:
2146 return CL_PROGRAM_KERNEL_NAMES;
2147 case ProgramInfo::IL:
2148 return CL_PROGRAM_IL;
2149 case ProgramInfo::ScopeGlobalCtorsPresent:
2150 return CL_PROGRAM_SCOPE_GLOBAL_CTORS_PRESENT;
2151 case ProgramInfo::ScopeGlobalDtorsPresent:
2152 return CL_PROGRAM_SCOPE_GLOBAL_DTORS_PRESENT;
2153 default:
2154 UNREACHABLE();
2155 return 0;
2156 }
2157 }
2158
operator <<(std::ostream & os,ProgramInfo value)2159 std::ostream &operator<<(std::ostream &os, ProgramInfo value)
2160 {
2161 switch (value)
2162 {
2163 case ProgramInfo::ReferenceCount:
2164 os << "CL_PROGRAM_REFERENCE_COUNT";
2165 break;
2166 case ProgramInfo::Context:
2167 os << "CL_PROGRAM_CONTEXT";
2168 break;
2169 case ProgramInfo::NumDevices:
2170 os << "CL_PROGRAM_NUM_DEVICES";
2171 break;
2172 case ProgramInfo::Devices:
2173 os << "CL_PROGRAM_DEVICES";
2174 break;
2175 case ProgramInfo::Source:
2176 os << "CL_PROGRAM_SOURCE";
2177 break;
2178 case ProgramInfo::BinarySizes:
2179 os << "CL_PROGRAM_BINARY_SIZES";
2180 break;
2181 case ProgramInfo::Binaries:
2182 os << "CL_PROGRAM_BINARIES";
2183 break;
2184 case ProgramInfo::NumKernels:
2185 os << "CL_PROGRAM_NUM_KERNELS";
2186 break;
2187 case ProgramInfo::KernelNames:
2188 os << "CL_PROGRAM_KERNEL_NAMES";
2189 break;
2190 case ProgramInfo::IL:
2191 os << "CL_PROGRAM_IL";
2192 break;
2193 case ProgramInfo::ScopeGlobalCtorsPresent:
2194 os << "CL_PROGRAM_SCOPE_GLOBAL_CTORS_PRESENT";
2195 break;
2196 case ProgramInfo::ScopeGlobalDtorsPresent:
2197 os << "CL_PROGRAM_SCOPE_GLOBAL_DTORS_PRESENT";
2198 break;
2199 default:
2200 os << "GL_INVALID_ENUM";
2201 break;
2202 }
2203 return os;
2204 }
2205
2206 template <>
FromCLenum(CLenum from)2207 SamplerInfo FromCLenum<SamplerInfo>(CLenum from)
2208 {
2209 switch (from)
2210 {
2211 case CL_SAMPLER_REFERENCE_COUNT:
2212 return SamplerInfo::ReferenceCount;
2213 case CL_SAMPLER_CONTEXT:
2214 return SamplerInfo::Context;
2215 case CL_SAMPLER_NORMALIZED_COORDS:
2216 return SamplerInfo::NormalizedCoords;
2217 case CL_SAMPLER_ADDRESSING_MODE:
2218 return SamplerInfo::AddressingMode;
2219 case CL_SAMPLER_FILTER_MODE:
2220 return SamplerInfo::FilterMode;
2221 case CL_SAMPLER_PROPERTIES:
2222 return SamplerInfo::Properties;
2223 default:
2224 return SamplerInfo::InvalidEnum;
2225 }
2226 }
2227
ToCLenum(SamplerInfo from)2228 CLenum ToCLenum(SamplerInfo from)
2229 {
2230 switch (from)
2231 {
2232 case SamplerInfo::ReferenceCount:
2233 return CL_SAMPLER_REFERENCE_COUNT;
2234 case SamplerInfo::Context:
2235 return CL_SAMPLER_CONTEXT;
2236 case SamplerInfo::NormalizedCoords:
2237 return CL_SAMPLER_NORMALIZED_COORDS;
2238 case SamplerInfo::AddressingMode:
2239 return CL_SAMPLER_ADDRESSING_MODE;
2240 case SamplerInfo::FilterMode:
2241 return CL_SAMPLER_FILTER_MODE;
2242 case SamplerInfo::Properties:
2243 return CL_SAMPLER_PROPERTIES;
2244 default:
2245 UNREACHABLE();
2246 return 0;
2247 }
2248 }
2249
operator <<(std::ostream & os,SamplerInfo value)2250 std::ostream &operator<<(std::ostream &os, SamplerInfo value)
2251 {
2252 switch (value)
2253 {
2254 case SamplerInfo::ReferenceCount:
2255 os << "CL_SAMPLER_REFERENCE_COUNT";
2256 break;
2257 case SamplerInfo::Context:
2258 os << "CL_SAMPLER_CONTEXT";
2259 break;
2260 case SamplerInfo::NormalizedCoords:
2261 os << "CL_SAMPLER_NORMALIZED_COORDS";
2262 break;
2263 case SamplerInfo::AddressingMode:
2264 os << "CL_SAMPLER_ADDRESSING_MODE";
2265 break;
2266 case SamplerInfo::FilterMode:
2267 os << "CL_SAMPLER_FILTER_MODE";
2268 break;
2269 case SamplerInfo::Properties:
2270 os << "CL_SAMPLER_PROPERTIES";
2271 break;
2272 default:
2273 os << "GL_INVALID_ENUM";
2274 break;
2275 }
2276 return os;
2277 }
2278
2279 } // namespace cl
2280