// GENERATED FILE - DO NOT EDIT. // Generated by gen_packed_gl_enums.py using data from packed_cl_enums.json. // // Copyright 2017 The ANGLE Project Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // // PackedCLEnums_autogen.cpp: // Implements ANGLE-specific enums classes for CLenums and functions operating // on them. #include "common/PackedCLEnums_autogen.h" #include "common/debug.h" namespace cl { template <> AddressingMode FromCLenum(CLenum from) { switch (from) { case CL_ADDRESS_NONE: return AddressingMode::None; case CL_ADDRESS_CLAMP_TO_EDGE: return AddressingMode::ClampToEdge; case CL_ADDRESS_CLAMP: return AddressingMode::Clamp; case CL_ADDRESS_REPEAT: return AddressingMode::Repeat; case CL_ADDRESS_MIRRORED_REPEAT: return AddressingMode::MirroredRepeat; default: return AddressingMode::InvalidEnum; } } CLenum ToCLenum(AddressingMode from) { switch (from) { case AddressingMode::None: return CL_ADDRESS_NONE; case AddressingMode::ClampToEdge: return CL_ADDRESS_CLAMP_TO_EDGE; case AddressingMode::Clamp: return CL_ADDRESS_CLAMP; case AddressingMode::Repeat: return CL_ADDRESS_REPEAT; case AddressingMode::MirroredRepeat: return CL_ADDRESS_MIRRORED_REPEAT; default: UNREACHABLE(); return 0; } } std::ostream &operator<<(std::ostream &os, AddressingMode value) { switch (value) { case AddressingMode::None: os << "CL_ADDRESS_NONE"; break; case AddressingMode::ClampToEdge: os << "CL_ADDRESS_CLAMP_TO_EDGE"; break; case AddressingMode::Clamp: os << "CL_ADDRESS_CLAMP"; break; case AddressingMode::Repeat: os << "CL_ADDRESS_REPEAT"; break; case AddressingMode::MirroredRepeat: os << "CL_ADDRESS_MIRRORED_REPEAT"; break; default: os << "GL_INVALID_ENUM"; break; } return os; } template <> CommandQueueInfo FromCLenum(CLenum from) { switch (from) { case CL_QUEUE_CONTEXT: return CommandQueueInfo::Context; case CL_QUEUE_DEVICE: return CommandQueueInfo::Device; case CL_QUEUE_REFERENCE_COUNT: return CommandQueueInfo::ReferenceCount; case CL_QUEUE_PROPERTIES: return CommandQueueInfo::Properties; case CL_QUEUE_SIZE: return CommandQueueInfo::Size; case CL_QUEUE_DEVICE_DEFAULT: return CommandQueueInfo::DeviceDefault; case CL_QUEUE_PROPERTIES_ARRAY: return CommandQueueInfo::PropertiesArray; default: return CommandQueueInfo::InvalidEnum; } } CLenum ToCLenum(CommandQueueInfo from) { switch (from) { case CommandQueueInfo::Context: return CL_QUEUE_CONTEXT; case CommandQueueInfo::Device: return CL_QUEUE_DEVICE; case CommandQueueInfo::ReferenceCount: return CL_QUEUE_REFERENCE_COUNT; case CommandQueueInfo::Properties: return CL_QUEUE_PROPERTIES; case CommandQueueInfo::Size: return CL_QUEUE_SIZE; case CommandQueueInfo::DeviceDefault: return CL_QUEUE_DEVICE_DEFAULT; case CommandQueueInfo::PropertiesArray: return CL_QUEUE_PROPERTIES_ARRAY; default: UNREACHABLE(); return 0; } } std::ostream &operator<<(std::ostream &os, CommandQueueInfo value) { switch (value) { case CommandQueueInfo::Context: os << "CL_QUEUE_CONTEXT"; break; case CommandQueueInfo::Device: os << "CL_QUEUE_DEVICE"; break; case CommandQueueInfo::ReferenceCount: os << "CL_QUEUE_REFERENCE_COUNT"; break; case CommandQueueInfo::Properties: os << "CL_QUEUE_PROPERTIES"; break; case CommandQueueInfo::Size: os << "CL_QUEUE_SIZE"; break; case CommandQueueInfo::DeviceDefault: os << "CL_QUEUE_DEVICE_DEFAULT"; break; case CommandQueueInfo::PropertiesArray: os << "CL_QUEUE_PROPERTIES_ARRAY"; break; default: os << "GL_INVALID_ENUM"; break; } return os; } template <> ContextInfo FromCLenum(CLenum from) { switch (from) { case CL_CONTEXT_REFERENCE_COUNT: return ContextInfo::ReferenceCount; case CL_CONTEXT_DEVICES: return ContextInfo::Devices; case CL_CONTEXT_PROPERTIES: return ContextInfo::Properties; case CL_CONTEXT_NUM_DEVICES: return ContextInfo::NumDevices; default: return ContextInfo::InvalidEnum; } } CLenum ToCLenum(ContextInfo from) { switch (from) { case ContextInfo::ReferenceCount: return CL_CONTEXT_REFERENCE_COUNT; case ContextInfo::Devices: return CL_CONTEXT_DEVICES; case ContextInfo::Properties: return CL_CONTEXT_PROPERTIES; case ContextInfo::NumDevices: return CL_CONTEXT_NUM_DEVICES; default: UNREACHABLE(); return 0; } } std::ostream &operator<<(std::ostream &os, ContextInfo value) { switch (value) { case ContextInfo::ReferenceCount: os << "CL_CONTEXT_REFERENCE_COUNT"; break; case ContextInfo::Devices: os << "CL_CONTEXT_DEVICES"; break; case ContextInfo::Properties: os << "CL_CONTEXT_PROPERTIES"; break; case ContextInfo::NumDevices: os << "CL_CONTEXT_NUM_DEVICES"; break; default: os << "GL_INVALID_ENUM"; break; } return os; } template <> DeviceInfo FromCLenum(CLenum from) { switch (from) { case CL_DEVICE_TYPE: return DeviceInfo::Type; case CL_DEVICE_VENDOR_ID: return DeviceInfo::VendorID; case CL_DEVICE_MAX_COMPUTE_UNITS: return DeviceInfo::MaxComputeUnits; case CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS: return DeviceInfo::MaxWorkItemDimensions; case CL_DEVICE_MAX_WORK_GROUP_SIZE: return DeviceInfo::MaxWorkGroupSize; case CL_DEVICE_MAX_WORK_ITEM_SIZES: return DeviceInfo::MaxWorkItemSizes; case CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR: return DeviceInfo::PreferredVectorWidthChar; case CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT: return DeviceInfo::PreferredVectorWidthShort; case CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT: return DeviceInfo::PreferredVectorWidthInt; case CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG: return DeviceInfo::PreferredVectorWidthLong; case CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT: return DeviceInfo::PreferredVectorWidthFloat; case CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE: return DeviceInfo::PreferredVectorWidthDouble; case CL_DEVICE_MAX_CLOCK_FREQUENCY: return DeviceInfo::MaxClockFrequency; case CL_DEVICE_ADDRESS_BITS: return DeviceInfo::AddressBits; case CL_DEVICE_MAX_READ_IMAGE_ARGS: return DeviceInfo::MaxReadImageArgs; case CL_DEVICE_MAX_WRITE_IMAGE_ARGS: return DeviceInfo::MaxWriteImageArgs; case CL_DEVICE_MAX_MEM_ALLOC_SIZE: return DeviceInfo::MaxMemAllocSize; case CL_DEVICE_IMAGE2D_MAX_WIDTH: return DeviceInfo::Image2D_MaxWidth; case CL_DEVICE_IMAGE2D_MAX_HEIGHT: return DeviceInfo::Image2D_MaxHeight; case CL_DEVICE_IMAGE3D_MAX_WIDTH: return DeviceInfo::Image3D_MaxWidth; case CL_DEVICE_IMAGE3D_MAX_HEIGHT: return DeviceInfo::Image3D_MaxHeight; case CL_DEVICE_IMAGE3D_MAX_DEPTH: return DeviceInfo::Image3D_MaxDepth; case CL_DEVICE_IMAGE_SUPPORT: return DeviceInfo::ImageSupport; case CL_DEVICE_MAX_PARAMETER_SIZE: return DeviceInfo::MaxParameterSize; case CL_DEVICE_MAX_SAMPLERS: return DeviceInfo::MaxSamplers; case CL_DEVICE_MEM_BASE_ADDR_ALIGN: return DeviceInfo::MemBaseAddrAlign; case CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE: return DeviceInfo::MinDataTypeAlignSize; case CL_DEVICE_SINGLE_FP_CONFIG: return DeviceInfo::SingleFpConfig; case CL_DEVICE_GLOBAL_MEM_CACHE_TYPE: return DeviceInfo::GlobalMemCacheType; case CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE: return DeviceInfo::GlobalMemCachelineSize; case CL_DEVICE_GLOBAL_MEM_CACHE_SIZE: return DeviceInfo::GlobalMemCacheSize; case CL_DEVICE_GLOBAL_MEM_SIZE: return DeviceInfo::GlobalMemSize; case CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE: return DeviceInfo::MaxConstantBufferSize; case CL_DEVICE_MAX_CONSTANT_ARGS: return DeviceInfo::MaxConstantArgs; case CL_DEVICE_LOCAL_MEM_TYPE: return DeviceInfo::LocalMemType; case CL_DEVICE_LOCAL_MEM_SIZE: return DeviceInfo::LocalMemSize; case CL_DEVICE_ERROR_CORRECTION_SUPPORT: return DeviceInfo::ErrorCorrectionSupport; case CL_DEVICE_PROFILING_TIMER_RESOLUTION: return DeviceInfo::ProfilingTimerResolution; case CL_DEVICE_ENDIAN_LITTLE: return DeviceInfo::EndianLittle; case CL_DEVICE_AVAILABLE: return DeviceInfo::Available; case CL_DEVICE_COMPILER_AVAILABLE: return DeviceInfo::CompilerAvailable; case CL_DEVICE_EXECUTION_CAPABILITIES: return DeviceInfo::ExecutionCapabilities; case CL_DEVICE_QUEUE_ON_HOST_PROPERTIES: return DeviceInfo::QueueOnHostProperties; case CL_DEVICE_NAME: return DeviceInfo::Name; case CL_DEVICE_VENDOR: return DeviceInfo::Vendor; case CL_DRIVER_VERSION: return DeviceInfo::DriverVersion; case CL_DEVICE_PROFILE: return DeviceInfo::Profile; case CL_DEVICE_VERSION: return DeviceInfo::Version; case CL_DEVICE_EXTENSIONS: return DeviceInfo::Extensions; case CL_DEVICE_PLATFORM: return DeviceInfo::Platform; case CL_DEVICE_DOUBLE_FP_CONFIG: return DeviceInfo::DoubleFpConfig; case CL_DEVICE_HALF_FP_CONFIG: return DeviceInfo::HalfFpConfig; case CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF: return DeviceInfo::PreferredVectorWidthHalf; case CL_DEVICE_HOST_UNIFIED_MEMORY: return DeviceInfo::HostUnifiedMemory; case CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR: return DeviceInfo::NativeVectorWidthChar; case CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT: return DeviceInfo::NativeVectorWidthShort; case CL_DEVICE_NATIVE_VECTOR_WIDTH_INT: return DeviceInfo::NativeVectorWidthInt; case CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG: return DeviceInfo::NativeVectorWidthLong; case CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT: return DeviceInfo::NativeVectorWidthFloat; case CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE: return DeviceInfo::NativeVectorWidthDouble; case CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF: return DeviceInfo::NativeVectorWidthHalf; case CL_DEVICE_OPENCL_C_VERSION: return DeviceInfo::OpenCL_C_Version; case CL_DEVICE_LINKER_AVAILABLE: return DeviceInfo::LinkerAvailable; case CL_DEVICE_BUILT_IN_KERNELS: return DeviceInfo::BuiltInKernels; case CL_DEVICE_IMAGE_MAX_BUFFER_SIZE: return DeviceInfo::ImageMaxBufferSize; case CL_DEVICE_IMAGE_MAX_ARRAY_SIZE: return DeviceInfo::ImageMaxArraySize; case CL_DEVICE_PARENT_DEVICE: return DeviceInfo::ParentDevice; case CL_DEVICE_PARTITION_MAX_SUB_DEVICES: return DeviceInfo::PartitionMaxSubDevices; case CL_DEVICE_PARTITION_PROPERTIES: return DeviceInfo::PartitionProperties; case CL_DEVICE_PARTITION_AFFINITY_DOMAIN: return DeviceInfo::PartitionAffinityDomain; case CL_DEVICE_PARTITION_TYPE: return DeviceInfo::PartitionType; case CL_DEVICE_REFERENCE_COUNT: return DeviceInfo::ReferenceCount; case CL_DEVICE_PREFERRED_INTEROP_USER_SYNC: return DeviceInfo::PreferredInteropUserSync; case CL_DEVICE_PRINTF_BUFFER_SIZE: return DeviceInfo::PrintfBufferSize; case CL_DEVICE_IMAGE_PITCH_ALIGNMENT: return DeviceInfo::ImagePitchAlignment; case CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT: return DeviceInfo::ImageBaseAddressAlignment; case CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS: return DeviceInfo::MaxReadWriteImageArgs; case CL_DEVICE_MAX_GLOBAL_VARIABLE_SIZE: return DeviceInfo::MaxGlobalVariableSize; case CL_DEVICE_QUEUE_ON_DEVICE_PROPERTIES: return DeviceInfo::QueueOnDeviceProperties; case CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE: return DeviceInfo::QueueOnDevicePreferredSize; case CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE: return DeviceInfo::QueueOnDeviceMaxSize; case CL_DEVICE_MAX_ON_DEVICE_QUEUES: return DeviceInfo::MaxOnDeviceQueues; case CL_DEVICE_MAX_ON_DEVICE_EVENTS: return DeviceInfo::MaxOnDeviceEvents; case CL_DEVICE_SVM_CAPABILITIES: return DeviceInfo::SVM_Capabilities; case CL_DEVICE_GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE: return DeviceInfo::GlobalVariablePreferredTotalSize; case CL_DEVICE_MAX_PIPE_ARGS: return DeviceInfo::MaxPipeArgs; case CL_DEVICE_PIPE_MAX_ACTIVE_RESERVATIONS: return DeviceInfo::PipeMaxActiveReservations; case CL_DEVICE_PIPE_MAX_PACKET_SIZE: return DeviceInfo::PipeMaxPacketSize; case CL_DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT: return DeviceInfo::PreferredPlatformAtomicAlignment; case CL_DEVICE_PREFERRED_GLOBAL_ATOMIC_ALIGNMENT: return DeviceInfo::PreferredGlobalAtomicAlignment; case CL_DEVICE_PREFERRED_LOCAL_ATOMIC_ALIGNMENT: return DeviceInfo::PreferredLocalAtomicAlignment; case CL_DEVICE_IL_VERSION: return DeviceInfo::IL_Version; case CL_DEVICE_MAX_NUM_SUB_GROUPS: return DeviceInfo::MaxNumSubGroups; case CL_DEVICE_SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS: return DeviceInfo::SubGroupIndependentForwardProgress; case CL_DEVICE_NUMERIC_VERSION: return DeviceInfo::NumericVersion; case CL_DEVICE_EXTENSIONS_WITH_VERSION: return DeviceInfo::ExtensionsWithVersion; case CL_DEVICE_ILS_WITH_VERSION: return DeviceInfo::ILsWithVersion; case CL_DEVICE_BUILT_IN_KERNELS_WITH_VERSION: return DeviceInfo::BuiltInKernelsWithVersion; case CL_DEVICE_ATOMIC_MEMORY_CAPABILITIES: return DeviceInfo::AtomicMemoryCapabilities; case CL_DEVICE_ATOMIC_FENCE_CAPABILITIES: return DeviceInfo::AtomicFenceCapabilities; case CL_DEVICE_NON_UNIFORM_WORK_GROUP_SUPPORT: return DeviceInfo::NonUniformWorkGroupSupport; case CL_DEVICE_OPENCL_C_ALL_VERSIONS: return DeviceInfo::OpenCL_C_AllVersions; case CL_DEVICE_PREFERRED_WORK_GROUP_SIZE_MULTIPLE: return DeviceInfo::PreferredWorkGroupSizeMultiple; case CL_DEVICE_WORK_GROUP_COLLECTIVE_FUNCTIONS_SUPPORT: return DeviceInfo::WorkGroupCollectiveFunctionsSupport; case CL_DEVICE_GENERIC_ADDRESS_SPACE_SUPPORT: return DeviceInfo::GenericAddressSpaceSupport; case CL_DEVICE_OPENCL_C_FEATURES: return DeviceInfo::OpenCL_C_Features; case CL_DEVICE_DEVICE_ENQUEUE_CAPABILITIES: return DeviceInfo::DeviceEnqueueCapabilities; case CL_DEVICE_PIPE_SUPPORT: return DeviceInfo::PipeSupport; case CL_DEVICE_LATEST_CONFORMANCE_VERSION_PASSED: return DeviceInfo::LatestConformanceVersionPassed; default: return DeviceInfo::InvalidEnum; } } CLenum ToCLenum(DeviceInfo from) { switch (from) { case DeviceInfo::Type: return CL_DEVICE_TYPE; case DeviceInfo::VendorID: return CL_DEVICE_VENDOR_ID; case DeviceInfo::MaxComputeUnits: return CL_DEVICE_MAX_COMPUTE_UNITS; case DeviceInfo::MaxWorkItemDimensions: return CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS; case DeviceInfo::MaxWorkGroupSize: return CL_DEVICE_MAX_WORK_GROUP_SIZE; case DeviceInfo::MaxWorkItemSizes: return CL_DEVICE_MAX_WORK_ITEM_SIZES; case DeviceInfo::PreferredVectorWidthChar: return CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR; case DeviceInfo::PreferredVectorWidthShort: return CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT; case DeviceInfo::PreferredVectorWidthInt: return CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT; case DeviceInfo::PreferredVectorWidthLong: return CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG; case DeviceInfo::PreferredVectorWidthFloat: return CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT; case DeviceInfo::PreferredVectorWidthDouble: return CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE; case DeviceInfo::MaxClockFrequency: return CL_DEVICE_MAX_CLOCK_FREQUENCY; case DeviceInfo::AddressBits: return CL_DEVICE_ADDRESS_BITS; case DeviceInfo::MaxReadImageArgs: return CL_DEVICE_MAX_READ_IMAGE_ARGS; case DeviceInfo::MaxWriteImageArgs: return CL_DEVICE_MAX_WRITE_IMAGE_ARGS; case DeviceInfo::MaxMemAllocSize: return CL_DEVICE_MAX_MEM_ALLOC_SIZE; case DeviceInfo::Image2D_MaxWidth: return CL_DEVICE_IMAGE2D_MAX_WIDTH; case DeviceInfo::Image2D_MaxHeight: return CL_DEVICE_IMAGE2D_MAX_HEIGHT; case DeviceInfo::Image3D_MaxWidth: return CL_DEVICE_IMAGE3D_MAX_WIDTH; case DeviceInfo::Image3D_MaxHeight: return CL_DEVICE_IMAGE3D_MAX_HEIGHT; case DeviceInfo::Image3D_MaxDepth: return CL_DEVICE_IMAGE3D_MAX_DEPTH; case DeviceInfo::ImageSupport: return CL_DEVICE_IMAGE_SUPPORT; case DeviceInfo::MaxParameterSize: return CL_DEVICE_MAX_PARAMETER_SIZE; case DeviceInfo::MaxSamplers: return CL_DEVICE_MAX_SAMPLERS; case DeviceInfo::MemBaseAddrAlign: return CL_DEVICE_MEM_BASE_ADDR_ALIGN; case DeviceInfo::MinDataTypeAlignSize: return CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE; case DeviceInfo::SingleFpConfig: return CL_DEVICE_SINGLE_FP_CONFIG; case DeviceInfo::GlobalMemCacheType: return CL_DEVICE_GLOBAL_MEM_CACHE_TYPE; case DeviceInfo::GlobalMemCachelineSize: return CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE; case DeviceInfo::GlobalMemCacheSize: return CL_DEVICE_GLOBAL_MEM_CACHE_SIZE; case DeviceInfo::GlobalMemSize: return CL_DEVICE_GLOBAL_MEM_SIZE; case DeviceInfo::MaxConstantBufferSize: return CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE; case DeviceInfo::MaxConstantArgs: return CL_DEVICE_MAX_CONSTANT_ARGS; case DeviceInfo::LocalMemType: return CL_DEVICE_LOCAL_MEM_TYPE; case DeviceInfo::LocalMemSize: return CL_DEVICE_LOCAL_MEM_SIZE; case DeviceInfo::ErrorCorrectionSupport: return CL_DEVICE_ERROR_CORRECTION_SUPPORT; case DeviceInfo::ProfilingTimerResolution: return CL_DEVICE_PROFILING_TIMER_RESOLUTION; case DeviceInfo::EndianLittle: return CL_DEVICE_ENDIAN_LITTLE; case DeviceInfo::Available: return CL_DEVICE_AVAILABLE; case DeviceInfo::CompilerAvailable: return CL_DEVICE_COMPILER_AVAILABLE; case DeviceInfo::ExecutionCapabilities: return CL_DEVICE_EXECUTION_CAPABILITIES; case DeviceInfo::QueueOnHostProperties: return CL_DEVICE_QUEUE_ON_HOST_PROPERTIES; case DeviceInfo::Name: return CL_DEVICE_NAME; case DeviceInfo::Vendor: return CL_DEVICE_VENDOR; case DeviceInfo::DriverVersion: return CL_DRIVER_VERSION; case DeviceInfo::Profile: return CL_DEVICE_PROFILE; case DeviceInfo::Version: return CL_DEVICE_VERSION; case DeviceInfo::Extensions: return CL_DEVICE_EXTENSIONS; case DeviceInfo::Platform: return CL_DEVICE_PLATFORM; case DeviceInfo::DoubleFpConfig: return CL_DEVICE_DOUBLE_FP_CONFIG; case DeviceInfo::HalfFpConfig: return CL_DEVICE_HALF_FP_CONFIG; case DeviceInfo::PreferredVectorWidthHalf: return CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF; case DeviceInfo::HostUnifiedMemory: return CL_DEVICE_HOST_UNIFIED_MEMORY; case DeviceInfo::NativeVectorWidthChar: return CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR; case DeviceInfo::NativeVectorWidthShort: return CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT; case DeviceInfo::NativeVectorWidthInt: return CL_DEVICE_NATIVE_VECTOR_WIDTH_INT; case DeviceInfo::NativeVectorWidthLong: return CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG; case DeviceInfo::NativeVectorWidthFloat: return CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT; case DeviceInfo::NativeVectorWidthDouble: return CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE; case DeviceInfo::NativeVectorWidthHalf: return CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF; case DeviceInfo::OpenCL_C_Version: return CL_DEVICE_OPENCL_C_VERSION; case DeviceInfo::LinkerAvailable: return CL_DEVICE_LINKER_AVAILABLE; case DeviceInfo::BuiltInKernels: return CL_DEVICE_BUILT_IN_KERNELS; case DeviceInfo::ImageMaxBufferSize: return CL_DEVICE_IMAGE_MAX_BUFFER_SIZE; case DeviceInfo::ImageMaxArraySize: return CL_DEVICE_IMAGE_MAX_ARRAY_SIZE; case DeviceInfo::ParentDevice: return CL_DEVICE_PARENT_DEVICE; case DeviceInfo::PartitionMaxSubDevices: return CL_DEVICE_PARTITION_MAX_SUB_DEVICES; case DeviceInfo::PartitionProperties: return CL_DEVICE_PARTITION_PROPERTIES; case DeviceInfo::PartitionAffinityDomain: return CL_DEVICE_PARTITION_AFFINITY_DOMAIN; case DeviceInfo::PartitionType: return CL_DEVICE_PARTITION_TYPE; case DeviceInfo::ReferenceCount: return CL_DEVICE_REFERENCE_COUNT; case DeviceInfo::PreferredInteropUserSync: return CL_DEVICE_PREFERRED_INTEROP_USER_SYNC; case DeviceInfo::PrintfBufferSize: return CL_DEVICE_PRINTF_BUFFER_SIZE; case DeviceInfo::ImagePitchAlignment: return CL_DEVICE_IMAGE_PITCH_ALIGNMENT; case DeviceInfo::ImageBaseAddressAlignment: return CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT; case DeviceInfo::MaxReadWriteImageArgs: return CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS; case DeviceInfo::MaxGlobalVariableSize: return CL_DEVICE_MAX_GLOBAL_VARIABLE_SIZE; case DeviceInfo::QueueOnDeviceProperties: return CL_DEVICE_QUEUE_ON_DEVICE_PROPERTIES; case DeviceInfo::QueueOnDevicePreferredSize: return CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE; case DeviceInfo::QueueOnDeviceMaxSize: return CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE; case DeviceInfo::MaxOnDeviceQueues: return CL_DEVICE_MAX_ON_DEVICE_QUEUES; case DeviceInfo::MaxOnDeviceEvents: return CL_DEVICE_MAX_ON_DEVICE_EVENTS; case DeviceInfo::SVM_Capabilities: return CL_DEVICE_SVM_CAPABILITIES; case DeviceInfo::GlobalVariablePreferredTotalSize: return CL_DEVICE_GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE; case DeviceInfo::MaxPipeArgs: return CL_DEVICE_MAX_PIPE_ARGS; case DeviceInfo::PipeMaxActiveReservations: return CL_DEVICE_PIPE_MAX_ACTIVE_RESERVATIONS; case DeviceInfo::PipeMaxPacketSize: return CL_DEVICE_PIPE_MAX_PACKET_SIZE; case DeviceInfo::PreferredPlatformAtomicAlignment: return CL_DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT; case DeviceInfo::PreferredGlobalAtomicAlignment: return CL_DEVICE_PREFERRED_GLOBAL_ATOMIC_ALIGNMENT; case DeviceInfo::PreferredLocalAtomicAlignment: return CL_DEVICE_PREFERRED_LOCAL_ATOMIC_ALIGNMENT; case DeviceInfo::IL_Version: return CL_DEVICE_IL_VERSION; case DeviceInfo::MaxNumSubGroups: return CL_DEVICE_MAX_NUM_SUB_GROUPS; case DeviceInfo::SubGroupIndependentForwardProgress: return CL_DEVICE_SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS; case DeviceInfo::NumericVersion: return CL_DEVICE_NUMERIC_VERSION; case DeviceInfo::ExtensionsWithVersion: return CL_DEVICE_EXTENSIONS_WITH_VERSION; case DeviceInfo::ILsWithVersion: return CL_DEVICE_ILS_WITH_VERSION; case DeviceInfo::BuiltInKernelsWithVersion: return CL_DEVICE_BUILT_IN_KERNELS_WITH_VERSION; case DeviceInfo::AtomicMemoryCapabilities: return CL_DEVICE_ATOMIC_MEMORY_CAPABILITIES; case DeviceInfo::AtomicFenceCapabilities: return CL_DEVICE_ATOMIC_FENCE_CAPABILITIES; case DeviceInfo::NonUniformWorkGroupSupport: return CL_DEVICE_NON_UNIFORM_WORK_GROUP_SUPPORT; case DeviceInfo::OpenCL_C_AllVersions: return CL_DEVICE_OPENCL_C_ALL_VERSIONS; case DeviceInfo::PreferredWorkGroupSizeMultiple: return CL_DEVICE_PREFERRED_WORK_GROUP_SIZE_MULTIPLE; case DeviceInfo::WorkGroupCollectiveFunctionsSupport: return CL_DEVICE_WORK_GROUP_COLLECTIVE_FUNCTIONS_SUPPORT; case DeviceInfo::GenericAddressSpaceSupport: return CL_DEVICE_GENERIC_ADDRESS_SPACE_SUPPORT; case DeviceInfo::OpenCL_C_Features: return CL_DEVICE_OPENCL_C_FEATURES; case DeviceInfo::DeviceEnqueueCapabilities: return CL_DEVICE_DEVICE_ENQUEUE_CAPABILITIES; case DeviceInfo::PipeSupport: return CL_DEVICE_PIPE_SUPPORT; case DeviceInfo::LatestConformanceVersionPassed: return CL_DEVICE_LATEST_CONFORMANCE_VERSION_PASSED; default: UNREACHABLE(); return 0; } } std::ostream &operator<<(std::ostream &os, DeviceInfo value) { switch (value) { case DeviceInfo::Type: os << "CL_DEVICE_TYPE"; break; case DeviceInfo::VendorID: os << "CL_DEVICE_VENDOR_ID"; break; case DeviceInfo::MaxComputeUnits: os << "CL_DEVICE_MAX_COMPUTE_UNITS"; break; case DeviceInfo::MaxWorkItemDimensions: os << "CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS"; break; case DeviceInfo::MaxWorkGroupSize: os << "CL_DEVICE_MAX_WORK_GROUP_SIZE"; break; case DeviceInfo::MaxWorkItemSizes: os << "CL_DEVICE_MAX_WORK_ITEM_SIZES"; break; case DeviceInfo::PreferredVectorWidthChar: os << "CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR"; break; case DeviceInfo::PreferredVectorWidthShort: os << "CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT"; break; case DeviceInfo::PreferredVectorWidthInt: os << "CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT"; break; case DeviceInfo::PreferredVectorWidthLong: os << "CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG"; break; case DeviceInfo::PreferredVectorWidthFloat: os << "CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT"; break; case DeviceInfo::PreferredVectorWidthDouble: os << "CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE"; break; case DeviceInfo::MaxClockFrequency: os << "CL_DEVICE_MAX_CLOCK_FREQUENCY"; break; case DeviceInfo::AddressBits: os << "CL_DEVICE_ADDRESS_BITS"; break; case DeviceInfo::MaxReadImageArgs: os << "CL_DEVICE_MAX_READ_IMAGE_ARGS"; break; case DeviceInfo::MaxWriteImageArgs: os << "CL_DEVICE_MAX_WRITE_IMAGE_ARGS"; break; case DeviceInfo::MaxMemAllocSize: os << "CL_DEVICE_MAX_MEM_ALLOC_SIZE"; break; case DeviceInfo::Image2D_MaxWidth: os << "CL_DEVICE_IMAGE2D_MAX_WIDTH"; break; case DeviceInfo::Image2D_MaxHeight: os << "CL_DEVICE_IMAGE2D_MAX_HEIGHT"; break; case DeviceInfo::Image3D_MaxWidth: os << "CL_DEVICE_IMAGE3D_MAX_WIDTH"; break; case DeviceInfo::Image3D_MaxHeight: os << "CL_DEVICE_IMAGE3D_MAX_HEIGHT"; break; case DeviceInfo::Image3D_MaxDepth: os << "CL_DEVICE_IMAGE3D_MAX_DEPTH"; break; case DeviceInfo::ImageSupport: os << "CL_DEVICE_IMAGE_SUPPORT"; break; case DeviceInfo::MaxParameterSize: os << "CL_DEVICE_MAX_PARAMETER_SIZE"; break; case DeviceInfo::MaxSamplers: os << "CL_DEVICE_MAX_SAMPLERS"; break; case DeviceInfo::MemBaseAddrAlign: os << "CL_DEVICE_MEM_BASE_ADDR_ALIGN"; break; case DeviceInfo::MinDataTypeAlignSize: os << "CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE"; break; case DeviceInfo::SingleFpConfig: os << "CL_DEVICE_SINGLE_FP_CONFIG"; break; case DeviceInfo::GlobalMemCacheType: os << "CL_DEVICE_GLOBAL_MEM_CACHE_TYPE"; break; case DeviceInfo::GlobalMemCachelineSize: os << "CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE"; break; case DeviceInfo::GlobalMemCacheSize: os << "CL_DEVICE_GLOBAL_MEM_CACHE_SIZE"; break; case DeviceInfo::GlobalMemSize: os << "CL_DEVICE_GLOBAL_MEM_SIZE"; break; case DeviceInfo::MaxConstantBufferSize: os << "CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE"; break; case DeviceInfo::MaxConstantArgs: os << "CL_DEVICE_MAX_CONSTANT_ARGS"; break; case DeviceInfo::LocalMemType: os << "CL_DEVICE_LOCAL_MEM_TYPE"; break; case DeviceInfo::LocalMemSize: os << "CL_DEVICE_LOCAL_MEM_SIZE"; break; case DeviceInfo::ErrorCorrectionSupport: os << "CL_DEVICE_ERROR_CORRECTION_SUPPORT"; break; case DeviceInfo::ProfilingTimerResolution: os << "CL_DEVICE_PROFILING_TIMER_RESOLUTION"; break; case DeviceInfo::EndianLittle: os << "CL_DEVICE_ENDIAN_LITTLE"; break; case DeviceInfo::Available: os << "CL_DEVICE_AVAILABLE"; break; case DeviceInfo::CompilerAvailable: os << "CL_DEVICE_COMPILER_AVAILABLE"; break; case DeviceInfo::ExecutionCapabilities: os << "CL_DEVICE_EXECUTION_CAPABILITIES"; break; case DeviceInfo::QueueOnHostProperties: os << "CL_DEVICE_QUEUE_ON_HOST_PROPERTIES"; break; case DeviceInfo::Name: os << "CL_DEVICE_NAME"; break; case DeviceInfo::Vendor: os << "CL_DEVICE_VENDOR"; break; case DeviceInfo::DriverVersion: os << "CL_DRIVER_VERSION"; break; case DeviceInfo::Profile: os << "CL_DEVICE_PROFILE"; break; case DeviceInfo::Version: os << "CL_DEVICE_VERSION"; break; case DeviceInfo::Extensions: os << "CL_DEVICE_EXTENSIONS"; break; case DeviceInfo::Platform: os << "CL_DEVICE_PLATFORM"; break; case DeviceInfo::DoubleFpConfig: os << "CL_DEVICE_DOUBLE_FP_CONFIG"; break; case DeviceInfo::HalfFpConfig: os << "CL_DEVICE_HALF_FP_CONFIG"; break; case DeviceInfo::PreferredVectorWidthHalf: os << "CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF"; break; case DeviceInfo::HostUnifiedMemory: os << "CL_DEVICE_HOST_UNIFIED_MEMORY"; break; case DeviceInfo::NativeVectorWidthChar: os << "CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR"; break; case DeviceInfo::NativeVectorWidthShort: os << "CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT"; break; case DeviceInfo::NativeVectorWidthInt: os << "CL_DEVICE_NATIVE_VECTOR_WIDTH_INT"; break; case DeviceInfo::NativeVectorWidthLong: os << "CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG"; break; case DeviceInfo::NativeVectorWidthFloat: os << "CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT"; break; case DeviceInfo::NativeVectorWidthDouble: os << "CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE"; break; case DeviceInfo::NativeVectorWidthHalf: os << "CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF"; break; case DeviceInfo::OpenCL_C_Version: os << "CL_DEVICE_OPENCL_C_VERSION"; break; case DeviceInfo::LinkerAvailable: os << "CL_DEVICE_LINKER_AVAILABLE"; break; case DeviceInfo::BuiltInKernels: os << "CL_DEVICE_BUILT_IN_KERNELS"; break; case DeviceInfo::ImageMaxBufferSize: os << "CL_DEVICE_IMAGE_MAX_BUFFER_SIZE"; break; case DeviceInfo::ImageMaxArraySize: os << "CL_DEVICE_IMAGE_MAX_ARRAY_SIZE"; break; case DeviceInfo::ParentDevice: os << "CL_DEVICE_PARENT_DEVICE"; break; case DeviceInfo::PartitionMaxSubDevices: os << "CL_DEVICE_PARTITION_MAX_SUB_DEVICES"; break; case DeviceInfo::PartitionProperties: os << "CL_DEVICE_PARTITION_PROPERTIES"; break; case DeviceInfo::PartitionAffinityDomain: os << "CL_DEVICE_PARTITION_AFFINITY_DOMAIN"; break; case DeviceInfo::PartitionType: os << "CL_DEVICE_PARTITION_TYPE"; break; case DeviceInfo::ReferenceCount: os << "CL_DEVICE_REFERENCE_COUNT"; break; case DeviceInfo::PreferredInteropUserSync: os << "CL_DEVICE_PREFERRED_INTEROP_USER_SYNC"; break; case DeviceInfo::PrintfBufferSize: os << "CL_DEVICE_PRINTF_BUFFER_SIZE"; break; case DeviceInfo::ImagePitchAlignment: os << "CL_DEVICE_IMAGE_PITCH_ALIGNMENT"; break; case DeviceInfo::ImageBaseAddressAlignment: os << "CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT"; break; case DeviceInfo::MaxReadWriteImageArgs: os << "CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS"; break; case DeviceInfo::MaxGlobalVariableSize: os << "CL_DEVICE_MAX_GLOBAL_VARIABLE_SIZE"; break; case DeviceInfo::QueueOnDeviceProperties: os << "CL_DEVICE_QUEUE_ON_DEVICE_PROPERTIES"; break; case DeviceInfo::QueueOnDevicePreferredSize: os << "CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE"; break; case DeviceInfo::QueueOnDeviceMaxSize: os << "CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE"; break; case DeviceInfo::MaxOnDeviceQueues: os << "CL_DEVICE_MAX_ON_DEVICE_QUEUES"; break; case DeviceInfo::MaxOnDeviceEvents: os << "CL_DEVICE_MAX_ON_DEVICE_EVENTS"; break; case DeviceInfo::SVM_Capabilities: os << "CL_DEVICE_SVM_CAPABILITIES"; break; case DeviceInfo::GlobalVariablePreferredTotalSize: os << "CL_DEVICE_GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE"; break; case DeviceInfo::MaxPipeArgs: os << "CL_DEVICE_MAX_PIPE_ARGS"; break; case DeviceInfo::PipeMaxActiveReservations: os << "CL_DEVICE_PIPE_MAX_ACTIVE_RESERVATIONS"; break; case DeviceInfo::PipeMaxPacketSize: os << "CL_DEVICE_PIPE_MAX_PACKET_SIZE"; break; case DeviceInfo::PreferredPlatformAtomicAlignment: os << "CL_DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT"; break; case DeviceInfo::PreferredGlobalAtomicAlignment: os << "CL_DEVICE_PREFERRED_GLOBAL_ATOMIC_ALIGNMENT"; break; case DeviceInfo::PreferredLocalAtomicAlignment: os << "CL_DEVICE_PREFERRED_LOCAL_ATOMIC_ALIGNMENT"; break; case DeviceInfo::IL_Version: os << "CL_DEVICE_IL_VERSION"; break; case DeviceInfo::MaxNumSubGroups: os << "CL_DEVICE_MAX_NUM_SUB_GROUPS"; break; case DeviceInfo::SubGroupIndependentForwardProgress: os << "CL_DEVICE_SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS"; break; case DeviceInfo::NumericVersion: os << "CL_DEVICE_NUMERIC_VERSION"; break; case DeviceInfo::ExtensionsWithVersion: os << "CL_DEVICE_EXTENSIONS_WITH_VERSION"; break; case DeviceInfo::ILsWithVersion: os << "CL_DEVICE_ILS_WITH_VERSION"; break; case DeviceInfo::BuiltInKernelsWithVersion: os << "CL_DEVICE_BUILT_IN_KERNELS_WITH_VERSION"; break; case DeviceInfo::AtomicMemoryCapabilities: os << "CL_DEVICE_ATOMIC_MEMORY_CAPABILITIES"; break; case DeviceInfo::AtomicFenceCapabilities: os << "CL_DEVICE_ATOMIC_FENCE_CAPABILITIES"; break; case DeviceInfo::NonUniformWorkGroupSupport: os << "CL_DEVICE_NON_UNIFORM_WORK_GROUP_SUPPORT"; break; case DeviceInfo::OpenCL_C_AllVersions: os << "CL_DEVICE_OPENCL_C_ALL_VERSIONS"; break; case DeviceInfo::PreferredWorkGroupSizeMultiple: os << "CL_DEVICE_PREFERRED_WORK_GROUP_SIZE_MULTIPLE"; break; case DeviceInfo::WorkGroupCollectiveFunctionsSupport: os << "CL_DEVICE_WORK_GROUP_COLLECTIVE_FUNCTIONS_SUPPORT"; break; case DeviceInfo::GenericAddressSpaceSupport: os << "CL_DEVICE_GENERIC_ADDRESS_SPACE_SUPPORT"; break; case DeviceInfo::OpenCL_C_Features: os << "CL_DEVICE_OPENCL_C_FEATURES"; break; case DeviceInfo::DeviceEnqueueCapabilities: os << "CL_DEVICE_DEVICE_ENQUEUE_CAPABILITIES"; break; case DeviceInfo::PipeSupport: os << "CL_DEVICE_PIPE_SUPPORT"; break; case DeviceInfo::LatestConformanceVersionPassed: os << "CL_DEVICE_LATEST_CONFORMANCE_VERSION_PASSED"; break; default: os << "GL_INVALID_ENUM"; break; } return os; } template <> EventInfo FromCLenum(CLenum from) { switch (from) { case CL_EVENT_COMMAND_QUEUE: return EventInfo::CommandQueue; case CL_EVENT_COMMAND_TYPE: return EventInfo::CommandType; case CL_EVENT_REFERENCE_COUNT: return EventInfo::ReferenceCount; case CL_EVENT_COMMAND_EXECUTION_STATUS: return EventInfo::CommandExecutionStatus; case CL_EVENT_CONTEXT: return EventInfo::Context; default: return EventInfo::InvalidEnum; } } CLenum ToCLenum(EventInfo from) { switch (from) { case EventInfo::CommandQueue: return CL_EVENT_COMMAND_QUEUE; case EventInfo::CommandType: return CL_EVENT_COMMAND_TYPE; case EventInfo::ReferenceCount: return CL_EVENT_REFERENCE_COUNT; case EventInfo::CommandExecutionStatus: return CL_EVENT_COMMAND_EXECUTION_STATUS; case EventInfo::Context: return CL_EVENT_CONTEXT; default: UNREACHABLE(); return 0; } } std::ostream &operator<<(std::ostream &os, EventInfo value) { switch (value) { case EventInfo::CommandQueue: os << "CL_EVENT_COMMAND_QUEUE"; break; case EventInfo::CommandType: os << "CL_EVENT_COMMAND_TYPE"; break; case EventInfo::ReferenceCount: os << "CL_EVENT_REFERENCE_COUNT"; break; case EventInfo::CommandExecutionStatus: os << "CL_EVENT_COMMAND_EXECUTION_STATUS"; break; case EventInfo::Context: os << "CL_EVENT_CONTEXT"; break; default: os << "GL_INVALID_ENUM"; break; } return os; } template <> FilterMode FromCLenum(CLenum from) { switch (from) { case CL_FILTER_NEAREST: return FilterMode::Nearest; case CL_FILTER_LINEAR: return FilterMode::Linear; default: return FilterMode::InvalidEnum; } } CLenum ToCLenum(FilterMode from) { switch (from) { case FilterMode::Nearest: return CL_FILTER_NEAREST; case FilterMode::Linear: return CL_FILTER_LINEAR; default: UNREACHABLE(); return 0; } } std::ostream &operator<<(std::ostream &os, FilterMode value) { switch (value) { case FilterMode::Nearest: os << "CL_FILTER_NEAREST"; break; case FilterMode::Linear: os << "CL_FILTER_LINEAR"; break; default: os << "GL_INVALID_ENUM"; break; } return os; } template <> ImageInfo FromCLenum(CLenum from) { switch (from) { case CL_IMAGE_FORMAT: return ImageInfo::Format; case CL_IMAGE_ELEMENT_SIZE: return ImageInfo::ElementSize; case CL_IMAGE_ROW_PITCH: return ImageInfo::RowPitch; case CL_IMAGE_SLICE_PITCH: return ImageInfo::SlicePitch; case CL_IMAGE_WIDTH: return ImageInfo::Width; case CL_IMAGE_HEIGHT: return ImageInfo::Height; case CL_IMAGE_DEPTH: return ImageInfo::Depth; case CL_IMAGE_ARRAY_SIZE: return ImageInfo::ArraySize; case CL_IMAGE_BUFFER: return ImageInfo::Buffer; case CL_IMAGE_NUM_MIP_LEVELS: return ImageInfo::NumMipLevels; case CL_IMAGE_NUM_SAMPLES: return ImageInfo::NumSamples; default: return ImageInfo::InvalidEnum; } } CLenum ToCLenum(ImageInfo from) { switch (from) { case ImageInfo::Format: return CL_IMAGE_FORMAT; case ImageInfo::ElementSize: return CL_IMAGE_ELEMENT_SIZE; case ImageInfo::RowPitch: return CL_IMAGE_ROW_PITCH; case ImageInfo::SlicePitch: return CL_IMAGE_SLICE_PITCH; case ImageInfo::Width: return CL_IMAGE_WIDTH; case ImageInfo::Height: return CL_IMAGE_HEIGHT; case ImageInfo::Depth: return CL_IMAGE_DEPTH; case ImageInfo::ArraySize: return CL_IMAGE_ARRAY_SIZE; case ImageInfo::Buffer: return CL_IMAGE_BUFFER; case ImageInfo::NumMipLevels: return CL_IMAGE_NUM_MIP_LEVELS; case ImageInfo::NumSamples: return CL_IMAGE_NUM_SAMPLES; default: UNREACHABLE(); return 0; } } std::ostream &operator<<(std::ostream &os, ImageInfo value) { switch (value) { case ImageInfo::Format: os << "CL_IMAGE_FORMAT"; break; case ImageInfo::ElementSize: os << "CL_IMAGE_ELEMENT_SIZE"; break; case ImageInfo::RowPitch: os << "CL_IMAGE_ROW_PITCH"; break; case ImageInfo::SlicePitch: os << "CL_IMAGE_SLICE_PITCH"; break; case ImageInfo::Width: os << "CL_IMAGE_WIDTH"; break; case ImageInfo::Height: os << "CL_IMAGE_HEIGHT"; break; case ImageInfo::Depth: os << "CL_IMAGE_DEPTH"; break; case ImageInfo::ArraySize: os << "CL_IMAGE_ARRAY_SIZE"; break; case ImageInfo::Buffer: os << "CL_IMAGE_BUFFER"; break; case ImageInfo::NumMipLevels: os << "CL_IMAGE_NUM_MIP_LEVELS"; break; case ImageInfo::NumSamples: os << "CL_IMAGE_NUM_SAMPLES"; break; default: os << "GL_INVALID_ENUM"; break; } return os; } template <> KernelArgInfo FromCLenum(CLenum from) { switch (from) { case CL_KERNEL_ARG_ADDRESS_QUALIFIER: return KernelArgInfo::AddressQualifier; case CL_KERNEL_ARG_ACCESS_QUALIFIER: return KernelArgInfo::AccessQualifier; case CL_KERNEL_ARG_TYPE_NAME: return KernelArgInfo::TypeName; case CL_KERNEL_ARG_TYPE_QUALIFIER: return KernelArgInfo::TypeQualifier; case CL_KERNEL_ARG_NAME: return KernelArgInfo::Name; default: return KernelArgInfo::InvalidEnum; } } CLenum ToCLenum(KernelArgInfo from) { switch (from) { case KernelArgInfo::AddressQualifier: return CL_KERNEL_ARG_ADDRESS_QUALIFIER; case KernelArgInfo::AccessQualifier: return CL_KERNEL_ARG_ACCESS_QUALIFIER; case KernelArgInfo::TypeName: return CL_KERNEL_ARG_TYPE_NAME; case KernelArgInfo::TypeQualifier: return CL_KERNEL_ARG_TYPE_QUALIFIER; case KernelArgInfo::Name: return CL_KERNEL_ARG_NAME; default: UNREACHABLE(); return 0; } } std::ostream &operator<<(std::ostream &os, KernelArgInfo value) { switch (value) { case KernelArgInfo::AddressQualifier: os << "CL_KERNEL_ARG_ADDRESS_QUALIFIER"; break; case KernelArgInfo::AccessQualifier: os << "CL_KERNEL_ARG_ACCESS_QUALIFIER"; break; case KernelArgInfo::TypeName: os << "CL_KERNEL_ARG_TYPE_NAME"; break; case KernelArgInfo::TypeQualifier: os << "CL_KERNEL_ARG_TYPE_QUALIFIER"; break; case KernelArgInfo::Name: os << "CL_KERNEL_ARG_NAME"; break; default: os << "GL_INVALID_ENUM"; break; } return os; } template <> KernelExecInfo FromCLenum(CLenum from) { switch (from) { case CL_KERNEL_EXEC_INFO_SVM_PTRS: return KernelExecInfo::SVM_Ptrs; case CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM: return KernelExecInfo::SVM_FineGrainSystem; default: return KernelExecInfo::InvalidEnum; } } CLenum ToCLenum(KernelExecInfo from) { switch (from) { case KernelExecInfo::SVM_Ptrs: return CL_KERNEL_EXEC_INFO_SVM_PTRS; case KernelExecInfo::SVM_FineGrainSystem: return CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM; default: UNREACHABLE(); return 0; } } std::ostream &operator<<(std::ostream &os, KernelExecInfo value) { switch (value) { case KernelExecInfo::SVM_Ptrs: os << "CL_KERNEL_EXEC_INFO_SVM_PTRS"; break; case KernelExecInfo::SVM_FineGrainSystem: os << "CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM"; break; default: os << "GL_INVALID_ENUM"; break; } return os; } template <> KernelInfo FromCLenum(CLenum from) { switch (from) { case CL_KERNEL_FUNCTION_NAME: return KernelInfo::FunctionName; case CL_KERNEL_NUM_ARGS: return KernelInfo::NumArgs; case CL_KERNEL_REFERENCE_COUNT: return KernelInfo::ReferenceCount; case CL_KERNEL_CONTEXT: return KernelInfo::Context; case CL_KERNEL_PROGRAM: return KernelInfo::Program; case CL_KERNEL_ATTRIBUTES: return KernelInfo::Attributes; default: return KernelInfo::InvalidEnum; } } CLenum ToCLenum(KernelInfo from) { switch (from) { case KernelInfo::FunctionName: return CL_KERNEL_FUNCTION_NAME; case KernelInfo::NumArgs: return CL_KERNEL_NUM_ARGS; case KernelInfo::ReferenceCount: return CL_KERNEL_REFERENCE_COUNT; case KernelInfo::Context: return CL_KERNEL_CONTEXT; case KernelInfo::Program: return CL_KERNEL_PROGRAM; case KernelInfo::Attributes: return CL_KERNEL_ATTRIBUTES; default: UNREACHABLE(); return 0; } } std::ostream &operator<<(std::ostream &os, KernelInfo value) { switch (value) { case KernelInfo::FunctionName: os << "CL_KERNEL_FUNCTION_NAME"; break; case KernelInfo::NumArgs: os << "CL_KERNEL_NUM_ARGS"; break; case KernelInfo::ReferenceCount: os << "CL_KERNEL_REFERENCE_COUNT"; break; case KernelInfo::Context: os << "CL_KERNEL_CONTEXT"; break; case KernelInfo::Program: os << "CL_KERNEL_PROGRAM"; break; case KernelInfo::Attributes: os << "CL_KERNEL_ATTRIBUTES"; break; default: os << "GL_INVALID_ENUM"; break; } return os; } template <> KernelSubGroupInfo FromCLenum(CLenum from) { switch (from) { case CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE: return KernelSubGroupInfo::MaxSubGroupSizeForNdrange; case CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE: return KernelSubGroupInfo::SubGroupCountForNdrange; case CL_KERNEL_LOCAL_SIZE_FOR_SUB_GROUP_COUNT: return KernelSubGroupInfo::LocalSizeForSubGroupCount; case CL_KERNEL_MAX_NUM_SUB_GROUPS: return KernelSubGroupInfo::MaxNumSubGroups; case CL_KERNEL_COMPILE_NUM_SUB_GROUPS: return KernelSubGroupInfo::CompileNumSubGroups; default: return KernelSubGroupInfo::InvalidEnum; } } CLenum ToCLenum(KernelSubGroupInfo from) { switch (from) { case KernelSubGroupInfo::MaxSubGroupSizeForNdrange: return CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE; case KernelSubGroupInfo::SubGroupCountForNdrange: return CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE; case KernelSubGroupInfo::LocalSizeForSubGroupCount: return CL_KERNEL_LOCAL_SIZE_FOR_SUB_GROUP_COUNT; case KernelSubGroupInfo::MaxNumSubGroups: return CL_KERNEL_MAX_NUM_SUB_GROUPS; case KernelSubGroupInfo::CompileNumSubGroups: return CL_KERNEL_COMPILE_NUM_SUB_GROUPS; default: UNREACHABLE(); return 0; } } std::ostream &operator<<(std::ostream &os, KernelSubGroupInfo value) { switch (value) { case KernelSubGroupInfo::MaxSubGroupSizeForNdrange: os << "CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE"; break; case KernelSubGroupInfo::SubGroupCountForNdrange: os << "CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE"; break; case KernelSubGroupInfo::LocalSizeForSubGroupCount: os << "CL_KERNEL_LOCAL_SIZE_FOR_SUB_GROUP_COUNT"; break; case KernelSubGroupInfo::MaxNumSubGroups: os << "CL_KERNEL_MAX_NUM_SUB_GROUPS"; break; case KernelSubGroupInfo::CompileNumSubGroups: os << "CL_KERNEL_COMPILE_NUM_SUB_GROUPS"; break; default: os << "GL_INVALID_ENUM"; break; } return os; } template <> KernelWorkGroupInfo FromCLenum(CLenum from) { switch (from) { case CL_KERNEL_WORK_GROUP_SIZE: return KernelWorkGroupInfo::WorkGroupSize; case CL_KERNEL_COMPILE_WORK_GROUP_SIZE: return KernelWorkGroupInfo::CompileWorkGroupSize; case CL_KERNEL_LOCAL_MEM_SIZE: return KernelWorkGroupInfo::LocalMemSize; case CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE: return KernelWorkGroupInfo::PreferredWorkGroupSizeMultiple; case CL_KERNEL_PRIVATE_MEM_SIZE: return KernelWorkGroupInfo::PrivateMemSize; case CL_KERNEL_GLOBAL_WORK_SIZE: return KernelWorkGroupInfo::GlobalWorkSize; default: return KernelWorkGroupInfo::InvalidEnum; } } CLenum ToCLenum(KernelWorkGroupInfo from) { switch (from) { case KernelWorkGroupInfo::WorkGroupSize: return CL_KERNEL_WORK_GROUP_SIZE; case KernelWorkGroupInfo::CompileWorkGroupSize: return CL_KERNEL_COMPILE_WORK_GROUP_SIZE; case KernelWorkGroupInfo::LocalMemSize: return CL_KERNEL_LOCAL_MEM_SIZE; case KernelWorkGroupInfo::PreferredWorkGroupSizeMultiple: return CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE; case KernelWorkGroupInfo::PrivateMemSize: return CL_KERNEL_PRIVATE_MEM_SIZE; case KernelWorkGroupInfo::GlobalWorkSize: return CL_KERNEL_GLOBAL_WORK_SIZE; default: UNREACHABLE(); return 0; } } std::ostream &operator<<(std::ostream &os, KernelWorkGroupInfo value) { switch (value) { case KernelWorkGroupInfo::WorkGroupSize: os << "CL_KERNEL_WORK_GROUP_SIZE"; break; case KernelWorkGroupInfo::CompileWorkGroupSize: os << "CL_KERNEL_COMPILE_WORK_GROUP_SIZE"; break; case KernelWorkGroupInfo::LocalMemSize: os << "CL_KERNEL_LOCAL_MEM_SIZE"; break; case KernelWorkGroupInfo::PreferredWorkGroupSizeMultiple: os << "CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE"; break; case KernelWorkGroupInfo::PrivateMemSize: os << "CL_KERNEL_PRIVATE_MEM_SIZE"; break; case KernelWorkGroupInfo::GlobalWorkSize: os << "CL_KERNEL_GLOBAL_WORK_SIZE"; break; default: os << "GL_INVALID_ENUM"; break; } return os; } template <> MemInfo FromCLenum(CLenum from) { switch (from) { case CL_MEM_TYPE: return MemInfo::Type; case CL_MEM_FLAGS: return MemInfo::Flags; case CL_MEM_SIZE: return MemInfo::Size; case CL_MEM_HOST_PTR: return MemInfo::HostPtr; case CL_MEM_MAP_COUNT: return MemInfo::MapCount; case CL_MEM_REFERENCE_COUNT: return MemInfo::ReferenceCount; case CL_MEM_CONTEXT: return MemInfo::Context; case CL_MEM_ASSOCIATED_MEMOBJECT: return MemInfo::AssociatedMemObject; case CL_MEM_OFFSET: return MemInfo::Offset; case CL_MEM_USES_SVM_POINTER: return MemInfo::UsesSVM_Pointer; case CL_MEM_PROPERTIES: return MemInfo::Properties; default: return MemInfo::InvalidEnum; } } CLenum ToCLenum(MemInfo from) { switch (from) { case MemInfo::Type: return CL_MEM_TYPE; case MemInfo::Flags: return CL_MEM_FLAGS; case MemInfo::Size: return CL_MEM_SIZE; case MemInfo::HostPtr: return CL_MEM_HOST_PTR; case MemInfo::MapCount: return CL_MEM_MAP_COUNT; case MemInfo::ReferenceCount: return CL_MEM_REFERENCE_COUNT; case MemInfo::Context: return CL_MEM_CONTEXT; case MemInfo::AssociatedMemObject: return CL_MEM_ASSOCIATED_MEMOBJECT; case MemInfo::Offset: return CL_MEM_OFFSET; case MemInfo::UsesSVM_Pointer: return CL_MEM_USES_SVM_POINTER; case MemInfo::Properties: return CL_MEM_PROPERTIES; default: UNREACHABLE(); return 0; } } std::ostream &operator<<(std::ostream &os, MemInfo value) { switch (value) { case MemInfo::Type: os << "CL_MEM_TYPE"; break; case MemInfo::Flags: os << "CL_MEM_FLAGS"; break; case MemInfo::Size: os << "CL_MEM_SIZE"; break; case MemInfo::HostPtr: os << "CL_MEM_HOST_PTR"; break; case MemInfo::MapCount: os << "CL_MEM_MAP_COUNT"; break; case MemInfo::ReferenceCount: os << "CL_MEM_REFERENCE_COUNT"; break; case MemInfo::Context: os << "CL_MEM_CONTEXT"; break; case MemInfo::AssociatedMemObject: os << "CL_MEM_ASSOCIATED_MEMOBJECT"; break; case MemInfo::Offset: os << "CL_MEM_OFFSET"; break; case MemInfo::UsesSVM_Pointer: os << "CL_MEM_USES_SVM_POINTER"; break; case MemInfo::Properties: os << "CL_MEM_PROPERTIES"; break; default: os << "GL_INVALID_ENUM"; break; } return os; } template <> MemObjectType FromCLenum(CLenum from) { switch (from) { case CL_MEM_OBJECT_BUFFER: return MemObjectType::Buffer; case CL_MEM_OBJECT_IMAGE2D: return MemObjectType::Image2D; case CL_MEM_OBJECT_IMAGE3D: return MemObjectType::Image3D; case CL_MEM_OBJECT_IMAGE2D_ARRAY: return MemObjectType::Image2D_Array; case CL_MEM_OBJECT_IMAGE1D: return MemObjectType::Image1D; case CL_MEM_OBJECT_IMAGE1D_ARRAY: return MemObjectType::Image1D_Array; case CL_MEM_OBJECT_IMAGE1D_BUFFER: return MemObjectType::Image1D_Buffer; case CL_MEM_OBJECT_PIPE: return MemObjectType::Pipe; default: return MemObjectType::InvalidEnum; } } CLenum ToCLenum(MemObjectType from) { switch (from) { case MemObjectType::Buffer: return CL_MEM_OBJECT_BUFFER; case MemObjectType::Image2D: return CL_MEM_OBJECT_IMAGE2D; case MemObjectType::Image3D: return CL_MEM_OBJECT_IMAGE3D; case MemObjectType::Image2D_Array: return CL_MEM_OBJECT_IMAGE2D_ARRAY; case MemObjectType::Image1D: return CL_MEM_OBJECT_IMAGE1D; case MemObjectType::Image1D_Array: return CL_MEM_OBJECT_IMAGE1D_ARRAY; case MemObjectType::Image1D_Buffer: return CL_MEM_OBJECT_IMAGE1D_BUFFER; case MemObjectType::Pipe: return CL_MEM_OBJECT_PIPE; default: UNREACHABLE(); return 0; } } std::ostream &operator<<(std::ostream &os, MemObjectType value) { switch (value) { case MemObjectType::Buffer: os << "CL_MEM_OBJECT_BUFFER"; break; case MemObjectType::Image2D: os << "CL_MEM_OBJECT_IMAGE2D"; break; case MemObjectType::Image3D: os << "CL_MEM_OBJECT_IMAGE3D"; break; case MemObjectType::Image2D_Array: os << "CL_MEM_OBJECT_IMAGE2D_ARRAY"; break; case MemObjectType::Image1D: os << "CL_MEM_OBJECT_IMAGE1D"; break; case MemObjectType::Image1D_Array: os << "CL_MEM_OBJECT_IMAGE1D_ARRAY"; break; case MemObjectType::Image1D_Buffer: os << "CL_MEM_OBJECT_IMAGE1D_BUFFER"; break; case MemObjectType::Pipe: os << "CL_MEM_OBJECT_PIPE"; break; default: os << "GL_INVALID_ENUM"; break; } return os; } template <> PipeInfo FromCLenum(CLenum from) { switch (from) { case CL_PIPE_PACKET_SIZE: return PipeInfo::PacketSize; case CL_PIPE_MAX_PACKETS: return PipeInfo::MaxPackets; case CL_PIPE_PROPERTIES: return PipeInfo::Properties; default: return PipeInfo::InvalidEnum; } } CLenum ToCLenum(PipeInfo from) { switch (from) { case PipeInfo::PacketSize: return CL_PIPE_PACKET_SIZE; case PipeInfo::MaxPackets: return CL_PIPE_MAX_PACKETS; case PipeInfo::Properties: return CL_PIPE_PROPERTIES; default: UNREACHABLE(); return 0; } } std::ostream &operator<<(std::ostream &os, PipeInfo value) { switch (value) { case PipeInfo::PacketSize: os << "CL_PIPE_PACKET_SIZE"; break; case PipeInfo::MaxPackets: os << "CL_PIPE_MAX_PACKETS"; break; case PipeInfo::Properties: os << "CL_PIPE_PROPERTIES"; break; default: os << "GL_INVALID_ENUM"; break; } return os; } template <> PlatformInfo FromCLenum(CLenum from) { switch (from) { case CL_PLATFORM_PROFILE: return PlatformInfo::Profile; case CL_PLATFORM_VERSION: return PlatformInfo::Version; case CL_PLATFORM_NAME: return PlatformInfo::Name; case CL_PLATFORM_VENDOR: return PlatformInfo::Vendor; case CL_PLATFORM_EXTENSIONS: return PlatformInfo::Extensions; case CL_PLATFORM_HOST_TIMER_RESOLUTION: return PlatformInfo::HostTimerResolution; case CL_PLATFORM_NUMERIC_VERSION: return PlatformInfo::NumericVersion; case CL_PLATFORM_EXTENSIONS_WITH_VERSION: return PlatformInfo::ExtensionsWithVersion; case CL_PLATFORM_ICD_SUFFIX_KHR: return PlatformInfo::IcdSuffix; default: return PlatformInfo::InvalidEnum; } } CLenum ToCLenum(PlatformInfo from) { switch (from) { case PlatformInfo::Profile: return CL_PLATFORM_PROFILE; case PlatformInfo::Version: return CL_PLATFORM_VERSION; case PlatformInfo::Name: return CL_PLATFORM_NAME; case PlatformInfo::Vendor: return CL_PLATFORM_VENDOR; case PlatformInfo::Extensions: return CL_PLATFORM_EXTENSIONS; case PlatformInfo::HostTimerResolution: return CL_PLATFORM_HOST_TIMER_RESOLUTION; case PlatformInfo::NumericVersion: return CL_PLATFORM_NUMERIC_VERSION; case PlatformInfo::ExtensionsWithVersion: return CL_PLATFORM_EXTENSIONS_WITH_VERSION; case PlatformInfo::IcdSuffix: return CL_PLATFORM_ICD_SUFFIX_KHR; default: UNREACHABLE(); return 0; } } std::ostream &operator<<(std::ostream &os, PlatformInfo value) { switch (value) { case PlatformInfo::Profile: os << "CL_PLATFORM_PROFILE"; break; case PlatformInfo::Version: os << "CL_PLATFORM_VERSION"; break; case PlatformInfo::Name: os << "CL_PLATFORM_NAME"; break; case PlatformInfo::Vendor: os << "CL_PLATFORM_VENDOR"; break; case PlatformInfo::Extensions: os << "CL_PLATFORM_EXTENSIONS"; break; case PlatformInfo::HostTimerResolution: os << "CL_PLATFORM_HOST_TIMER_RESOLUTION"; break; case PlatformInfo::NumericVersion: os << "CL_PLATFORM_NUMERIC_VERSION"; break; case PlatformInfo::ExtensionsWithVersion: os << "CL_PLATFORM_EXTENSIONS_WITH_VERSION"; break; case PlatformInfo::IcdSuffix: os << "CL_PLATFORM_ICD_SUFFIX_KHR"; break; default: os << "GL_INVALID_ENUM"; break; } return os; } template <> ProfilingInfo FromCLenum(CLenum from) { switch (from) { case CL_PROFILING_COMMAND_QUEUED: return ProfilingInfo::CommandQueued; case CL_PROFILING_COMMAND_SUBMIT: return ProfilingInfo::CommandSubmit; case CL_PROFILING_COMMAND_START: return ProfilingInfo::CommandStart; case CL_PROFILING_COMMAND_END: return ProfilingInfo::CommandEnd; case CL_PROFILING_COMMAND_COMPLETE: return ProfilingInfo::CommandComplete; default: return ProfilingInfo::InvalidEnum; } } CLenum ToCLenum(ProfilingInfo from) { switch (from) { case ProfilingInfo::CommandQueued: return CL_PROFILING_COMMAND_QUEUED; case ProfilingInfo::CommandSubmit: return CL_PROFILING_COMMAND_SUBMIT; case ProfilingInfo::CommandStart: return CL_PROFILING_COMMAND_START; case ProfilingInfo::CommandEnd: return CL_PROFILING_COMMAND_END; case ProfilingInfo::CommandComplete: return CL_PROFILING_COMMAND_COMPLETE; default: UNREACHABLE(); return 0; } } std::ostream &operator<<(std::ostream &os, ProfilingInfo value) { switch (value) { case ProfilingInfo::CommandQueued: os << "CL_PROFILING_COMMAND_QUEUED"; break; case ProfilingInfo::CommandSubmit: os << "CL_PROFILING_COMMAND_SUBMIT"; break; case ProfilingInfo::CommandStart: os << "CL_PROFILING_COMMAND_START"; break; case ProfilingInfo::CommandEnd: os << "CL_PROFILING_COMMAND_END"; break; case ProfilingInfo::CommandComplete: os << "CL_PROFILING_COMMAND_COMPLETE"; break; default: os << "GL_INVALID_ENUM"; break; } return os; } template <> ProgramBuildInfo FromCLenum(CLenum from) { switch (from) { case CL_PROGRAM_BUILD_STATUS: return ProgramBuildInfo::Status; case CL_PROGRAM_BUILD_OPTIONS: return ProgramBuildInfo::Options; case CL_PROGRAM_BUILD_LOG: return ProgramBuildInfo::Log; case CL_PROGRAM_BINARY_TYPE: return ProgramBuildInfo::BinaryType; case CL_PROGRAM_BUILD_GLOBAL_VARIABLE_TOTAL_SIZE: return ProgramBuildInfo::GlobalVariableTotalSize; default: return ProgramBuildInfo::InvalidEnum; } } CLenum ToCLenum(ProgramBuildInfo from) { switch (from) { case ProgramBuildInfo::Status: return CL_PROGRAM_BUILD_STATUS; case ProgramBuildInfo::Options: return CL_PROGRAM_BUILD_OPTIONS; case ProgramBuildInfo::Log: return CL_PROGRAM_BUILD_LOG; case ProgramBuildInfo::BinaryType: return CL_PROGRAM_BINARY_TYPE; case ProgramBuildInfo::GlobalVariableTotalSize: return CL_PROGRAM_BUILD_GLOBAL_VARIABLE_TOTAL_SIZE; default: UNREACHABLE(); return 0; } } std::ostream &operator<<(std::ostream &os, ProgramBuildInfo value) { switch (value) { case ProgramBuildInfo::Status: os << "CL_PROGRAM_BUILD_STATUS"; break; case ProgramBuildInfo::Options: os << "CL_PROGRAM_BUILD_OPTIONS"; break; case ProgramBuildInfo::Log: os << "CL_PROGRAM_BUILD_LOG"; break; case ProgramBuildInfo::BinaryType: os << "CL_PROGRAM_BINARY_TYPE"; break; case ProgramBuildInfo::GlobalVariableTotalSize: os << "CL_PROGRAM_BUILD_GLOBAL_VARIABLE_TOTAL_SIZE"; break; default: os << "GL_INVALID_ENUM"; break; } return os; } template <> ProgramInfo FromCLenum(CLenum from) { switch (from) { case CL_PROGRAM_REFERENCE_COUNT: return ProgramInfo::ReferenceCount; case CL_PROGRAM_CONTEXT: return ProgramInfo::Context; case CL_PROGRAM_NUM_DEVICES: return ProgramInfo::NumDevices; case CL_PROGRAM_DEVICES: return ProgramInfo::Devices; case CL_PROGRAM_SOURCE: return ProgramInfo::Source; case CL_PROGRAM_BINARY_SIZES: return ProgramInfo::BinarySizes; case CL_PROGRAM_BINARIES: return ProgramInfo::Binaries; case CL_PROGRAM_NUM_KERNELS: return ProgramInfo::NumKernels; case CL_PROGRAM_KERNEL_NAMES: return ProgramInfo::KernelNames; case CL_PROGRAM_IL: return ProgramInfo::IL; case CL_PROGRAM_SCOPE_GLOBAL_CTORS_PRESENT: return ProgramInfo::ScopeGlobalCtorsPresent; case CL_PROGRAM_SCOPE_GLOBAL_DTORS_PRESENT: return ProgramInfo::ScopeGlobalDtorsPresent; default: return ProgramInfo::InvalidEnum; } } CLenum ToCLenum(ProgramInfo from) { switch (from) { case ProgramInfo::ReferenceCount: return CL_PROGRAM_REFERENCE_COUNT; case ProgramInfo::Context: return CL_PROGRAM_CONTEXT; case ProgramInfo::NumDevices: return CL_PROGRAM_NUM_DEVICES; case ProgramInfo::Devices: return CL_PROGRAM_DEVICES; case ProgramInfo::Source: return CL_PROGRAM_SOURCE; case ProgramInfo::BinarySizes: return CL_PROGRAM_BINARY_SIZES; case ProgramInfo::Binaries: return CL_PROGRAM_BINARIES; case ProgramInfo::NumKernels: return CL_PROGRAM_NUM_KERNELS; case ProgramInfo::KernelNames: return CL_PROGRAM_KERNEL_NAMES; case ProgramInfo::IL: return CL_PROGRAM_IL; case ProgramInfo::ScopeGlobalCtorsPresent: return CL_PROGRAM_SCOPE_GLOBAL_CTORS_PRESENT; case ProgramInfo::ScopeGlobalDtorsPresent: return CL_PROGRAM_SCOPE_GLOBAL_DTORS_PRESENT; default: UNREACHABLE(); return 0; } } std::ostream &operator<<(std::ostream &os, ProgramInfo value) { switch (value) { case ProgramInfo::ReferenceCount: os << "CL_PROGRAM_REFERENCE_COUNT"; break; case ProgramInfo::Context: os << "CL_PROGRAM_CONTEXT"; break; case ProgramInfo::NumDevices: os << "CL_PROGRAM_NUM_DEVICES"; break; case ProgramInfo::Devices: os << "CL_PROGRAM_DEVICES"; break; case ProgramInfo::Source: os << "CL_PROGRAM_SOURCE"; break; case ProgramInfo::BinarySizes: os << "CL_PROGRAM_BINARY_SIZES"; break; case ProgramInfo::Binaries: os << "CL_PROGRAM_BINARIES"; break; case ProgramInfo::NumKernels: os << "CL_PROGRAM_NUM_KERNELS"; break; case ProgramInfo::KernelNames: os << "CL_PROGRAM_KERNEL_NAMES"; break; case ProgramInfo::IL: os << "CL_PROGRAM_IL"; break; case ProgramInfo::ScopeGlobalCtorsPresent: os << "CL_PROGRAM_SCOPE_GLOBAL_CTORS_PRESENT"; break; case ProgramInfo::ScopeGlobalDtorsPresent: os << "CL_PROGRAM_SCOPE_GLOBAL_DTORS_PRESENT"; break; default: os << "GL_INVALID_ENUM"; break; } return os; } template <> SamplerInfo FromCLenum(CLenum from) { switch (from) { case CL_SAMPLER_REFERENCE_COUNT: return SamplerInfo::ReferenceCount; case CL_SAMPLER_CONTEXT: return SamplerInfo::Context; case CL_SAMPLER_NORMALIZED_COORDS: return SamplerInfo::NormalizedCoords; case CL_SAMPLER_ADDRESSING_MODE: return SamplerInfo::AddressingMode; case CL_SAMPLER_FILTER_MODE: return SamplerInfo::FilterMode; case CL_SAMPLER_PROPERTIES: return SamplerInfo::Properties; default: return SamplerInfo::InvalidEnum; } } CLenum ToCLenum(SamplerInfo from) { switch (from) { case SamplerInfo::ReferenceCount: return CL_SAMPLER_REFERENCE_COUNT; case SamplerInfo::Context: return CL_SAMPLER_CONTEXT; case SamplerInfo::NormalizedCoords: return CL_SAMPLER_NORMALIZED_COORDS; case SamplerInfo::AddressingMode: return CL_SAMPLER_ADDRESSING_MODE; case SamplerInfo::FilterMode: return CL_SAMPLER_FILTER_MODE; case SamplerInfo::Properties: return CL_SAMPLER_PROPERTIES; default: UNREACHABLE(); return 0; } } std::ostream &operator<<(std::ostream &os, SamplerInfo value) { switch (value) { case SamplerInfo::ReferenceCount: os << "CL_SAMPLER_REFERENCE_COUNT"; break; case SamplerInfo::Context: os << "CL_SAMPLER_CONTEXT"; break; case SamplerInfo::NormalizedCoords: os << "CL_SAMPLER_NORMALIZED_COORDS"; break; case SamplerInfo::AddressingMode: os << "CL_SAMPLER_ADDRESSING_MODE"; break; case SamplerInfo::FilterMode: os << "CL_SAMPLER_FILTER_MODE"; break; case SamplerInfo::Properties: os << "CL_SAMPLER_PROPERTIES"; break; default: os << "GL_INVALID_ENUM"; break; } return os; } } // namespace cl