// GENERATED FILE - DO NOT EDIT.
// Generated by gen_gl_enum_utils.py using data from gl.xml and gl_angle_ext.xml.
//
// Copyright 2019 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.
//
// gl_enum_utils_autogen.cpp:
//   mapping of GLenum value to string.

#include "libANGLE/gl_enum_utils_autogen.h"

#include <sstream>

#include "common/bitset_utils.h"
#include "common/debug.h"

namespace gl
{

const char *GLenumToString(GLenumGroup enumGroup, unsigned int value)
{
    switch (enumGroup)
    {
        case GLenumGroup::AlphaFunction:
        {
            switch (value)
            {
                case 0x200:
                    return "GL_NEVER";
                case 0x201:
                    return "GL_LESS";
                case 0x202:
                    return "GL_EQUAL";
                case 0x203:
                    return "GL_LEQUAL";
                case 0x204:
                    return "GL_GREATER";
                case 0x205:
                    return "GL_NOTEQUAL";
                case 0x206:
                    return "GL_GEQUAL";
                case 0x207:
                    return "GL_ALWAYS";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::AtomicCounterBufferPName:
        {
            switch (value)
            {
                case 0x92c1:
                    return "GL_ATOMIC_COUNTER_BUFFER_BINDING";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::AttribMask:
        {
            switch (value)
            {
                case 0x100:
                    return "GL_DEPTH_BUFFER_BIT";
                case 0x400:
                    return "GL_STENCIL_BUFFER_BIT";
                case 0x4000:
                    return "GL_COLOR_BUFFER_BIT";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::AttributeType:
        {
            switch (value)
            {
                case 0x8b50:
                    return "GL_FLOAT_VEC2";
                case 0x8b51:
                    return "GL_FLOAT_VEC3";
                case 0x8b52:
                    return "GL_FLOAT_VEC4";
                case 0x8b53:
                    return "GL_INT_VEC2";
                case 0x8b54:
                    return "GL_INT_VEC3";
                case 0x8b55:
                    return "GL_INT_VEC4";
                case 0x8b56:
                    return "GL_BOOL";
                case 0x8b57:
                    return "GL_BOOL_VEC2";
                case 0x8b58:
                    return "GL_BOOL_VEC3";
                case 0x8b59:
                    return "GL_BOOL_VEC4";
                case 0x8b5a:
                    return "GL_FLOAT_MAT2";
                case 0x8b5b:
                    return "GL_FLOAT_MAT3";
                case 0x8b5c:
                    return "GL_FLOAT_MAT4";
                case 0x8b5e:
                    return "GL_SAMPLER_2D";
                case 0x8b5f:
                    return "GL_SAMPLER_3D";
                case 0x8b60:
                    return "GL_SAMPLER_CUBE";
                case 0x8b62:
                    return "GL_SAMPLER_2D_SHADOW";
                case 0x8b65:
                    return "GL_FLOAT_MAT2x3";
                case 0x8b66:
                    return "GL_FLOAT_MAT2x4";
                case 0x8b67:
                    return "GL_FLOAT_MAT3x2";
                case 0x8b68:
                    return "GL_FLOAT_MAT3x4";
                case 0x8b69:
                    return "GL_FLOAT_MAT4x2";
                case 0x8b6a:
                    return "GL_FLOAT_MAT4x3";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::BindTransformFeedbackTarget:
        {
            switch (value)
            {
                case 0x8e22:
                    return "GL_TRANSFORM_FEEDBACK";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::BlendEquationModeEXT:
        {
            switch (value)
            {
                case 0x8006:
                    return "GL_FUNC_ADD";
                case 0x800a:
                    return "GL_FUNC_SUBTRACT";
                case 0x800b:
                    return "GL_FUNC_REVERSE_SUBTRACT";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::BlendingFactor:
        {
            switch (value)
            {
                case 0x0:
                    return "GL_ZERO";
                case 0x1:
                    return "GL_ONE";
                case 0x300:
                    return "GL_SRC_COLOR";
                case 0x301:
                    return "GL_ONE_MINUS_SRC_COLOR";
                case 0x302:
                    return "GL_SRC_ALPHA";
                case 0x303:
                    return "GL_ONE_MINUS_SRC_ALPHA";
                case 0x304:
                    return "GL_DST_ALPHA";
                case 0x305:
                    return "GL_ONE_MINUS_DST_ALPHA";
                case 0x306:
                    return "GL_DST_COLOR";
                case 0x307:
                    return "GL_ONE_MINUS_DST_COLOR";
                case 0x308:
                    return "GL_SRC_ALPHA_SATURATE";
                case 0x8001:
                    return "GL_CONSTANT_COLOR";
                case 0x8002:
                    return "GL_ONE_MINUS_CONSTANT_COLOR";
                case 0x8003:
                    return "GL_CONSTANT_ALPHA";
                case 0x8004:
                    return "GL_ONE_MINUS_CONSTANT_ALPHA";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::BlitFramebufferFilter:
        {
            switch (value)
            {
                case 0x2600:
                    return "GL_NEAREST";
                case 0x2601:
                    return "GL_LINEAR";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::Buffer:
        {
            switch (value)
            {
                case 0x1800:
                    return "GL_COLOR";
                case 0x1801:
                    return "GL_DEPTH";
                case 0x1802:
                    return "GL_STENCIL";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::BufferAccessARB:
        {
            switch (value)
            {
                case 0x88b8:
                    return "GL_READ_ONLY";
                case 0x88b9:
                    return "GL_WRITE_ONLY";
                case 0x88ba:
                    return "GL_READ_WRITE";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::BufferAccessMask:
        {
            switch (value)
            {
                case 0x1:
                    return "GL_MAP_READ_BIT";
                case 0x2:
                    return "GL_MAP_WRITE_BIT";
                case 0x4:
                    return "GL_MAP_INVALIDATE_RANGE_BIT";
                case 0x8:
                    return "GL_MAP_INVALIDATE_BUFFER_BIT";
                case 0x10:
                    return "GL_MAP_FLUSH_EXPLICIT_BIT";
                case 0x20:
                    return "GL_MAP_UNSYNCHRONIZED_BIT";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::BufferStorageTarget:
        {
            switch (value)
            {
                case 0x8892:
                    return "GL_ARRAY_BUFFER";
                case 0x8893:
                    return "GL_ELEMENT_ARRAY_BUFFER";
                case 0x88eb:
                    return "GL_PIXEL_PACK_BUFFER";
                case 0x88ec:
                    return "GL_PIXEL_UNPACK_BUFFER";
                case 0x8a11:
                    return "GL_UNIFORM_BUFFER";
                case 0x8c2a:
                    return "GL_TEXTURE_BUFFER";
                case 0x8c8e:
                    return "GL_TRANSFORM_FEEDBACK_BUFFER";
                case 0x8f36:
                    return "GL_COPY_READ_BUFFER";
                case 0x8f37:
                    return "GL_COPY_WRITE_BUFFER";
                case 0x8f3f:
                    return "GL_DRAW_INDIRECT_BUFFER";
                case 0x90d2:
                    return "GL_SHADER_STORAGE_BUFFER";
                case 0x90ee:
                    return "GL_DISPATCH_INDIRECT_BUFFER";
                case 0x92c0:
                    return "GL_ATOMIC_COUNTER_BUFFER";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::BufferTargetARB:
        {
            switch (value)
            {
                case 0x8892:
                    return "GL_ARRAY_BUFFER";
                case 0x8893:
                    return "GL_ELEMENT_ARRAY_BUFFER";
                case 0x88eb:
                    return "GL_PIXEL_PACK_BUFFER";
                case 0x88ec:
                    return "GL_PIXEL_UNPACK_BUFFER";
                case 0x8a11:
                    return "GL_UNIFORM_BUFFER";
                case 0x8c2a:
                    return "GL_TEXTURE_BUFFER";
                case 0x8c8e:
                    return "GL_TRANSFORM_FEEDBACK_BUFFER";
                case 0x8f36:
                    return "GL_COPY_READ_BUFFER";
                case 0x8f37:
                    return "GL_COPY_WRITE_BUFFER";
                case 0x8f3f:
                    return "GL_DRAW_INDIRECT_BUFFER";
                case 0x90d2:
                    return "GL_SHADER_STORAGE_BUFFER";
                case 0x90ee:
                    return "GL_DISPATCH_INDIRECT_BUFFER";
                case 0x92c0:
                    return "GL_ATOMIC_COUNTER_BUFFER";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::BufferUsageARB:
        {
            switch (value)
            {
                case 0x88e0:
                    return "GL_STREAM_DRAW";
                case 0x88e1:
                    return "GL_STREAM_READ";
                case 0x88e2:
                    return "GL_STREAM_COPY";
                case 0x88e4:
                    return "GL_STATIC_DRAW";
                case 0x88e5:
                    return "GL_STATIC_READ";
                case 0x88e6:
                    return "GL_STATIC_COPY";
                case 0x88e8:
                    return "GL_DYNAMIC_DRAW";
                case 0x88e9:
                    return "GL_DYNAMIC_READ";
                case 0x88ea:
                    return "GL_DYNAMIC_COPY";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::CheckFramebufferStatusTarget:
        {
            switch (value)
            {
                case 0x8ca8:
                    return "GL_READ_FRAMEBUFFER";
                case 0x8ca9:
                    return "GL_DRAW_FRAMEBUFFER";
                case 0x8d40:
                    return "GL_FRAMEBUFFER";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::ClearBufferMask:
        {
            switch (value)
            {
                case 0x100:
                    return "GL_DEPTH_BUFFER_BIT";
                case 0x400:
                    return "GL_STENCIL_BUFFER_BIT";
                case 0x4000:
                    return "GL_COLOR_BUFFER_BIT";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::ColorBuffer:
        {
            switch (value)
            {
                case 0x0:
                    return "GL_NONE";
                case 0x404:
                    return "GL_FRONT";
                case 0x405:
                    return "GL_BACK";
                case 0x408:
                    return "GL_FRONT_AND_BACK";
                case 0x8ce0:
                    return "GL_COLOR_ATTACHMENT0";
                case 0x8ce1:
                    return "GL_COLOR_ATTACHMENT1";
                case 0x8ce2:
                    return "GL_COLOR_ATTACHMENT2";
                case 0x8ce3:
                    return "GL_COLOR_ATTACHMENT3";
                case 0x8ce4:
                    return "GL_COLOR_ATTACHMENT4";
                case 0x8ce5:
                    return "GL_COLOR_ATTACHMENT5";
                case 0x8ce6:
                    return "GL_COLOR_ATTACHMENT6";
                case 0x8ce7:
                    return "GL_COLOR_ATTACHMENT7";
                case 0x8ce8:
                    return "GL_COLOR_ATTACHMENT8";
                case 0x8ce9:
                    return "GL_COLOR_ATTACHMENT9";
                case 0x8cea:
                    return "GL_COLOR_ATTACHMENT10";
                case 0x8ceb:
                    return "GL_COLOR_ATTACHMENT11";
                case 0x8cec:
                    return "GL_COLOR_ATTACHMENT12";
                case 0x8ced:
                    return "GL_COLOR_ATTACHMENT13";
                case 0x8cee:
                    return "GL_COLOR_ATTACHMENT14";
                case 0x8cef:
                    return "GL_COLOR_ATTACHMENT15";
                case 0x8cf0:
                    return "GL_COLOR_ATTACHMENT16";
                case 0x8cf1:
                    return "GL_COLOR_ATTACHMENT17";
                case 0x8cf2:
                    return "GL_COLOR_ATTACHMENT18";
                case 0x8cf3:
                    return "GL_COLOR_ATTACHMENT19";
                case 0x8cf4:
                    return "GL_COLOR_ATTACHMENT20";
                case 0x8cf5:
                    return "GL_COLOR_ATTACHMENT21";
                case 0x8cf6:
                    return "GL_COLOR_ATTACHMENT22";
                case 0x8cf7:
                    return "GL_COLOR_ATTACHMENT23";
                case 0x8cf8:
                    return "GL_COLOR_ATTACHMENT24";
                case 0x8cf9:
                    return "GL_COLOR_ATTACHMENT25";
                case 0x8cfa:
                    return "GL_COLOR_ATTACHMENT26";
                case 0x8cfb:
                    return "GL_COLOR_ATTACHMENT27";
                case 0x8cfc:
                    return "GL_COLOR_ATTACHMENT28";
                case 0x8cfd:
                    return "GL_COLOR_ATTACHMENT29";
                case 0x8cfe:
                    return "GL_COLOR_ATTACHMENT30";
                case 0x8cff:
                    return "GL_COLOR_ATTACHMENT31";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::ColorMaterialFace:
        {
            switch (value)
            {
                case 0x404:
                    return "GL_FRONT";
                case 0x405:
                    return "GL_BACK";
                case 0x408:
                    return "GL_FRONT_AND_BACK";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::ColorPointerType:
        {
            switch (value)
            {
                case 0x1400:
                    return "GL_BYTE";
                case 0x1401:
                    return "GL_UNSIGNED_BYTE";
                case 0x1402:
                    return "GL_SHORT";
                case 0x1403:
                    return "GL_UNSIGNED_SHORT";
                case 0x1404:
                    return "GL_INT";
                case 0x1405:
                    return "GL_UNSIGNED_INT";
                case 0x1406:
                    return "GL_FLOAT";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::ContextFlagMask:
        {
            switch (value)
            {
                case 0x2:
                    return "GL_CONTEXT_FLAG_DEBUG_BIT";
                case 0x4:
                    return "GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::CopyBufferSubDataTarget:
        {
            switch (value)
            {
                case 0x8892:
                    return "GL_ARRAY_BUFFER";
                case 0x8893:
                    return "GL_ELEMENT_ARRAY_BUFFER";
                case 0x88eb:
                    return "GL_PIXEL_PACK_BUFFER";
                case 0x88ec:
                    return "GL_PIXEL_UNPACK_BUFFER";
                case 0x8a11:
                    return "GL_UNIFORM_BUFFER";
                case 0x8c2a:
                    return "GL_TEXTURE_BUFFER";
                case 0x8c8e:
                    return "GL_TRANSFORM_FEEDBACK_BUFFER";
                case 0x8f36:
                    return "GL_COPY_READ_BUFFER";
                case 0x8f37:
                    return "GL_COPY_WRITE_BUFFER";
                case 0x8f3f:
                    return "GL_DRAW_INDIRECT_BUFFER";
                case 0x90d2:
                    return "GL_SHADER_STORAGE_BUFFER";
                case 0x90ee:
                    return "GL_DISPATCH_INDIRECT_BUFFER";
                case 0x92c0:
                    return "GL_ATOMIC_COUNTER_BUFFER";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::CullFaceMode:
        {
            switch (value)
            {
                case 0x404:
                    return "GL_FRONT";
                case 0x405:
                    return "GL_BACK";
                case 0x408:
                    return "GL_FRONT_AND_BACK";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::DebugSeverity:
        {
            switch (value)
            {
                case 0x1100:
                    return "GL_DONT_CARE";
                case 0x9146:
                    return "GL_DEBUG_SEVERITY_HIGH";
                case 0x9147:
                    return "GL_DEBUG_SEVERITY_MEDIUM";
                case 0x9148:
                    return "GL_DEBUG_SEVERITY_LOW";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::DebugSource:
        {
            switch (value)
            {
                case 0x1100:
                    return "GL_DONT_CARE";
                case 0x8246:
                    return "GL_DEBUG_SOURCE_API";
                case 0x8247:
                    return "GL_DEBUG_SOURCE_WINDOW_SYSTEM";
                case 0x8248:
                    return "GL_DEBUG_SOURCE_SHADER_COMPILER";
                case 0x8249:
                    return "GL_DEBUG_SOURCE_THIRD_PARTY";
                case 0x824a:
                    return "GL_DEBUG_SOURCE_APPLICATION";
                case 0x824b:
                    return "GL_DEBUG_SOURCE_OTHER";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::DebugType:
        {
            switch (value)
            {
                case 0x1100:
                    return "GL_DONT_CARE";
                case 0x824c:
                    return "GL_DEBUG_TYPE_ERROR";
                case 0x824d:
                    return "GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR";
                case 0x824e:
                    return "GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR";
                case 0x824f:
                    return "GL_DEBUG_TYPE_PORTABILITY";
                case 0x8250:
                    return "GL_DEBUG_TYPE_PERFORMANCE";
                case 0x8251:
                    return "GL_DEBUG_TYPE_OTHER";
                case 0x8268:
                    return "GL_DEBUG_TYPE_MARKER";
                case 0x8269:
                    return "GL_DEBUG_TYPE_PUSH_GROUP";
                case 0x826a:
                    return "GL_DEBUG_TYPE_POP_GROUP";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::DefaultGroup:
        {
            switch (value)
            {
                case 0x16:
                    return "GL_UUID_SIZE_EXT";
                case 0x308:
                    return "GL_SRC_ALPHA_SATURATE_EXT";
                case 0x503:
                    return "GL_STACK_OVERFLOW_KHR";
                case 0x504:
                    return "GL_STACK_UNDERFLOW_KHR";
                case 0x507:
                    return "GL_CONTEXT_LOST";
                case 0x1004:
                    return "GL_TEXTURE_BORDER_COLOR_OES";
                case 0x2500:
                    return "GL_TEXTURE_GEN_MODE_OES";
                case 0x8005:
                    return "GL_BLEND_COLOR";
                case 0x8007:
                    return "GL_MIN";
                case 0x8008:
                    return "GL_MAX";
                case 0x8009:
                    return "GL_BLEND_EQUATION";
                case 0x803c:
                    return "GL_ALPHA8_EXT";
                case 0x8040:
                    return "GL_LUMINANCE8_EXT";
                case 0x8045:
                    return "GL_LUMINANCE8_ALPHA8_EXT";
                case 0x806a:
                    return "GL_TEXTURE_BINDING_3D_OES";
                case 0x8071:
                    return "GL_TEXTURE_DEPTH";
                case 0x8073:
                    return "GL_MAX_3D_TEXTURE_SIZE";
                case 0x8074:
                    return "GL_VERTEX_ARRAY_KHR";
                case 0x809e:
                    return "GL_SAMPLE_ALPHA_TO_COVERAGE";
                case 0x80a0:
                    return "GL_SAMPLE_COVERAGE";
                case 0x80aa:
                    return "GL_SAMPLE_COVERAGE_VALUE";
                case 0x80ab:
                    return "GL_SAMPLE_COVERAGE_INVERT";
                case 0x80c8:
                    return "GL_BLEND_DST_RGB";
                case 0x80c9:
                    return "GL_BLEND_SRC_RGB";
                case 0x80ca:
                    return "GL_BLEND_DST_ALPHA";
                case 0x80cb:
                    return "GL_BLEND_SRC_ALPHA";
                case 0x80e8:
                    return "GL_MAX_ELEMENTS_VERTICES";
                case 0x80e9:
                    return "GL_MAX_ELEMENTS_INDICES";
                case 0x812d:
                    return "GL_CLAMP_TO_BORDER_OES";
                case 0x81a6:
                    return "GL_DEPTH_COMPONENT24";
                case 0x8218:
                    return "GL_FRAMEBUFFER_DEFAULT";
                case 0x821a:
                    return "GL_DEPTH_STENCIL_ATTACHMENT";
                case 0x821b:
                    return "GL_MAJOR_VERSION";
                case 0x821c:
                    return "GL_MINOR_VERSION";
                case 0x821d:
                    return "GL_NUM_EXTENSIONS";
                case 0x821e:
                    return "GL_CONTEXT_FLAGS";
                case 0x8221:
                    return "GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED";
                case 0x8228:
                    return "GL_RG_INTEGER";
                case 0x8242:
                    return "GL_DEBUG_OUTPUT_SYNCHRONOUS";
                case 0x8243:
                    return "GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH";
                case 0x8244:
                    return "GL_DEBUG_CALLBACK_FUNCTION_KHR";
                case 0x8245:
                    return "GL_DEBUG_CALLBACK_USER_PARAM_KHR";
                case 0x8246:
                    return "GL_DEBUG_SOURCE_API_KHR";
                case 0x8247:
                    return "GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR";
                case 0x8248:
                    return "GL_DEBUG_SOURCE_SHADER_COMPILER_KHR";
                case 0x8249:
                    return "GL_DEBUG_SOURCE_THIRD_PARTY_KHR";
                case 0x824a:
                    return "GL_DEBUG_SOURCE_APPLICATION_KHR";
                case 0x824b:
                    return "GL_DEBUG_SOURCE_OTHER_KHR";
                case 0x824c:
                    return "GL_DEBUG_TYPE_ERROR_KHR";
                case 0x824d:
                    return "GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR";
                case 0x824e:
                    return "GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR";
                case 0x824f:
                    return "GL_DEBUG_TYPE_PORTABILITY_KHR";
                case 0x8250:
                    return "GL_DEBUG_TYPE_PERFORMANCE_KHR";
                case 0x8251:
                    return "GL_DEBUG_TYPE_OTHER_KHR";
                case 0x8252:
                    return "GL_LOSE_CONTEXT_ON_RESET";
                case 0x8253:
                    return "GL_GUILTY_CONTEXT_RESET_EXT";
                case 0x8254:
                    return "GL_INNOCENT_CONTEXT_RESET_EXT";
                case 0x8255:
                    return "GL_UNKNOWN_CONTEXT_RESET_EXT";
                case 0x8256:
                    return "GL_RESET_NOTIFICATION_STRATEGY";
                case 0x825a:
                    return "GL_PROGRAM_PIPELINE_BINDING";
                case 0x825e:
                    return "GL_LAYER_PROVOKING_VERTEX";
                case 0x8260:
                    return "GL_UNDEFINED_VERTEX";
                case 0x8261:
                    return "GL_NO_RESET_NOTIFICATION";
                case 0x8262:
                    return "GL_MAX_COMPUTE_SHARED_MEMORY_SIZE";
                case 0x8263:
                    return "GL_MAX_COMPUTE_UNIFORM_COMPONENTS";
                case 0x8264:
                    return "GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS";
                case 0x8265:
                    return "GL_MAX_COMPUTE_ATOMIC_COUNTERS";
                case 0x8266:
                    return "GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS";
                case 0x8268:
                    return "GL_DEBUG_TYPE_MARKER_KHR";
                case 0x8269:
                    return "GL_DEBUG_TYPE_PUSH_GROUP_KHR";
                case 0x826a:
                    return "GL_DEBUG_TYPE_POP_GROUP_KHR";
                case 0x826b:
                    return "GL_DEBUG_SEVERITY_NOTIFICATION";
                case 0x826c:
                    return "GL_MAX_DEBUG_GROUP_STACK_DEPTH";
                case 0x826d:
                    return "GL_DEBUG_GROUP_STACK_DEPTH";
                case 0x826e:
                    return "GL_MAX_UNIFORM_LOCATIONS";
                case 0x82d4:
                    return "GL_VERTEX_ATTRIB_BINDING";
                case 0x82d6:
                    return "GL_VERTEX_BINDING_DIVISOR";
                case 0x82d7:
                    return "GL_VERTEX_BINDING_OFFSET";
                case 0x82d8:
                    return "GL_VERTEX_BINDING_STRIDE";
                case 0x82d9:
                    return "GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET";
                case 0x82da:
                    return "GL_MAX_VERTEX_ATTRIB_BINDINGS";
                case 0x82df:
                    return "GL_TEXTURE_IMMUTABLE_LEVELS";
                case 0x82e0:
                    return "GL_BUFFER_KHR";
                case 0x82e1:
                    return "GL_SHADER_KHR";
                case 0x82e2:
                    return "GL_PROGRAM_KHR";
                case 0x82e3:
                    return "GL_QUERY_KHR";
                case 0x82e4:
                    return "GL_PROGRAM_PIPELINE_KHR";
                case 0x82e5:
                    return "GL_MAX_VERTEX_ATTRIB_STRIDE";
                case 0x82e6:
                    return "GL_SAMPLER_KHR";
                case 0x82e7:
                    return "GL_DISPLAY_LIST";
                case 0x82e8:
                    return "GL_MAX_LABEL_LENGTH";
                case 0x8363:
                    return "GL_UNSIGNED_SHORT_5_6_5";
                case 0x8370:
                    return "GL_MIRRORED_REPEAT";
                case 0x84e0:
                    return "GL_ACTIVE_TEXTURE";
                case 0x84e8:
                    return "GL_MAX_RENDERBUFFER_SIZE";
                case 0x84f2:
                    return "GL_ALL_COMPLETED_NV";
                case 0x84f3:
                    return "GL_FENCE_STATUS_NV";
                case 0x84f4:
                    return "GL_FENCE_CONDITION_NV";
                case 0x84fa:
                    return "GL_UNSIGNED_INT_24_8";
                case 0x84fd:
                    return "GL_MAX_TEXTURE_LOD_BIAS";
                case 0x8507:
                    return "GL_INCR_WRAP";
                case 0x8508:
                    return "GL_DECR_WRAP";
                case 0x8511:
                    return "GL_NORMAL_MAP_OES";
                case 0x8512:
                    return "GL_REFLECTION_MAP_OES";
                case 0x8513:
                    return "GL_TEXTURE_CUBE_MAP_OES";
                case 0x8514:
                    return "GL_TEXTURE_BINDING_CUBE_MAP";
                case 0x8515:
                    return "GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES";
                case 0x8516:
                    return "GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES";
                case 0x8517:
                    return "GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES";
                case 0x8518:
                    return "GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES";
                case 0x8519:
                    return "GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES";
                case 0x851a:
                    return "GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES";
                case 0x851c:
                    return "GL_MAX_CUBE_MAP_TEXTURE_SIZE";
                case 0x8589:
                    return "GL_SRC1_ALPHA_EXT";
                case 0x85b5:
                    return "GL_VERTEX_ARRAY_BINDING";
                case 0x8645:
                    return "GL_VERTEX_ATTRIB_ARRAY_POINTER";
                case 0x86a2:
                    return "GL_NUM_COMPRESSED_TEXTURE_FORMATS";
                case 0x86a3:
                    return "GL_COMPRESSED_TEXTURE_FORMATS";
                case 0x86a4:
                    return "GL_MAX_VERTEX_UNITS_OES";
                case 0x86a9:
                    return "GL_WEIGHT_ARRAY_TYPE_OES";
                case 0x86aa:
                    return "GL_WEIGHT_ARRAY_STRIDE_OES";
                case 0x86ab:
                    return "GL_WEIGHT_ARRAY_SIZE_OES";
                case 0x86ac:
                    return "GL_WEIGHT_ARRAY_POINTER_OES";
                case 0x86ad:
                    return "GL_WEIGHT_ARRAY_OES";
                case 0x8741:
                    return "GL_PROGRAM_BINARY_LENGTH_OES";
                case 0x87fe:
                    return "GL_NUM_PROGRAM_BINARY_FORMATS";
                case 0x87ff:
                    return "GL_PROGRAM_BINARY_FORMATS";
                case 0x8800:
                    return "GL_STENCIL_BACK_FUNC";
                case 0x8801:
                    return "GL_STENCIL_BACK_FAIL";
                case 0x8802:
                    return "GL_STENCIL_BACK_PASS_DEPTH_FAIL";
                case 0x8803:
                    return "GL_STENCIL_BACK_PASS_DEPTH_PASS";
                case 0x8815:
                    return "GL_RGB32F";
                case 0x8816:
                    return "GL_ALPHA32F_EXT";
                case 0x8818:
                    return "GL_LUMINANCE32F_EXT";
                case 0x8819:
                    return "GL_LUMINANCE_ALPHA32F_EXT";
                case 0x881c:
                    return "GL_ALPHA16F_EXT";
                case 0x881e:
                    return "GL_LUMINANCE16F_EXT";
                case 0x881f:
                    return "GL_LUMINANCE_ALPHA16F_EXT";
                case 0x8824:
                    return "GL_MAX_DRAW_BUFFERS";
                case 0x8825:
                    return "GL_DRAW_BUFFER0";
                case 0x8826:
                    return "GL_DRAW_BUFFER1";
                case 0x8827:
                    return "GL_DRAW_BUFFER2";
                case 0x8828:
                    return "GL_DRAW_BUFFER3";
                case 0x8829:
                    return "GL_DRAW_BUFFER4";
                case 0x882a:
                    return "GL_DRAW_BUFFER5";
                case 0x882b:
                    return "GL_DRAW_BUFFER6";
                case 0x882c:
                    return "GL_DRAW_BUFFER7";
                case 0x882d:
                    return "GL_DRAW_BUFFER8";
                case 0x882e:
                    return "GL_DRAW_BUFFER9";
                case 0x882f:
                    return "GL_DRAW_BUFFER10";
                case 0x8830:
                    return "GL_DRAW_BUFFER11";
                case 0x8831:
                    return "GL_DRAW_BUFFER12";
                case 0x8832:
                    return "GL_DRAW_BUFFER13";
                case 0x8833:
                    return "GL_DRAW_BUFFER14";
                case 0x8834:
                    return "GL_DRAW_BUFFER15";
                case 0x883d:
                    return "GL_BLEND_EQUATION_ALPHA";
                case 0x8840:
                    return "GL_MATRIX_PALETTE_OES";
                case 0x8842:
                    return "GL_MAX_PALETTE_MATRICES_OES";
                case 0x8843:
                    return "GL_CURRENT_PALETTE_MATRIX_OES";
                case 0x8844:
                    return "GL_MATRIX_INDEX_ARRAY_OES";
                case 0x8846:
                    return "GL_MATRIX_INDEX_ARRAY_SIZE_OES";
                case 0x8847:
                    return "GL_MATRIX_INDEX_ARRAY_TYPE_OES";
                case 0x8848:
                    return "GL_MATRIX_INDEX_ARRAY_STRIDE_OES";
                case 0x8849:
                    return "GL_MATRIX_INDEX_ARRAY_POINTER_OES";
                case 0x884a:
                    return "GL_TEXTURE_DEPTH_SIZE";
                case 0x884e:
                    return "GL_COMPARE_REF_TO_TEXTURE";
                case 0x8864:
                    return "GL_QUERY_COUNTER_BITS_EXT";
                case 0x8865:
                    return "GL_CURRENT_QUERY_EXT";
                case 0x8866:
                    return "GL_QUERY_RESULT_EXT";
                case 0x8867:
                    return "GL_QUERY_RESULT_AVAILABLE_EXT";
                case 0x8869:
                    return "GL_MAX_VERTEX_ATTRIBS";
                case 0x886c:
                    return "GL_MAX_TESS_CONTROL_INPUT_COMPONENTS";
                case 0x886d:
                    return "GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS";
                case 0x8872:
                    return "GL_MAX_TEXTURE_IMAGE_UNITS";
                case 0x887f:
                    return "GL_GEOMETRY_SHADER_INVOCATIONS";
                case 0x8894:
                    return "GL_ARRAY_BUFFER_BINDING";
                case 0x8895:
                    return "GL_ELEMENT_ARRAY_BUFFER_BINDING";
                case 0x889e:
                    return "GL_WEIGHT_ARRAY_BUFFER_BINDING_OES";
                case 0x88b9:
                    return "GL_WRITE_ONLY_OES";
                case 0x88bb:
                    return "GL_BUFFER_ACCESS_OES";
                case 0x88bc:
                    return "GL_BUFFER_MAPPED_OES";
                case 0x88bd:
                    return "GL_BUFFER_MAP_POINTER";
                case 0x88bf:
                    return "GL_TIME_ELAPSED_EXT";
                case 0x88ed:
                    return "GL_PIXEL_PACK_BUFFER_BINDING";
                case 0x88ef:
                    return "GL_PIXEL_UNPACK_BUFFER_BINDING";
                case 0x88f1:
                    return "GL_TEXTURE_STENCIL_SIZE";
                case 0x88f9:
                    return "GL_SRC1_COLOR_EXT";
                case 0x88fa:
                    return "GL_ONE_MINUS_SRC1_COLOR_EXT";
                case 0x88fb:
                    return "GL_ONE_MINUS_SRC1_ALPHA_EXT";
                case 0x88fc:
                    return "GL_MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT";
                case 0x88fe:
                    return "GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE";
                case 0x88ff:
                    return "GL_MAX_ARRAY_TEXTURE_LAYERS";
                case 0x8904:
                    return "GL_MIN_PROGRAM_TEXEL_OFFSET";
                case 0x8905:
                    return "GL_MAX_PROGRAM_TEXEL_OFFSET";
                case 0x8916:
                    return "GL_GEOMETRY_LINKED_VERTICES_OUT_EXT";
                case 0x8917:
                    return "GL_GEOMETRY_LINKED_INPUT_TYPE_EXT";
                case 0x8918:
                    return "GL_GEOMETRY_LINKED_OUTPUT_TYPE_EXT";
                case 0x8919:
                    return "GL_SAMPLER_BINDING";
                case 0x898a:
                    return "GL_POINT_SIZE_ARRAY_TYPE_OES";
                case 0x898b:
                    return "GL_POINT_SIZE_ARRAY_STRIDE_OES";
                case 0x898c:
                    return "GL_POINT_SIZE_ARRAY_POINTER_OES";
                case 0x8a28:
                    return "GL_UNIFORM_BUFFER_BINDING";
                case 0x8a29:
                    return "GL_UNIFORM_BUFFER_START";
                case 0x8a2a:
                    return "GL_UNIFORM_BUFFER_SIZE";
                case 0x8a2b:
                    return "GL_MAX_VERTEX_UNIFORM_BLOCKS";
                case 0x8a2c:
                    return "GL_MAX_GEOMETRY_UNIFORM_BLOCKS";
                case 0x8a2d:
                    return "GL_MAX_FRAGMENT_UNIFORM_BLOCKS";
                case 0x8a2e:
                    return "GL_MAX_COMBINED_UNIFORM_BLOCKS";
                case 0x8a2f:
                    return "GL_MAX_UNIFORM_BUFFER_BINDINGS";
                case 0x8a30:
                    return "GL_MAX_UNIFORM_BLOCK_SIZE";
                case 0x8a31:
                    return "GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS";
                case 0x8a32:
                    return "GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS";
                case 0x8a33:
                    return "GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS";
                case 0x8a34:
                    return "GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT";
                case 0x8b49:
                    return "GL_MAX_FRAGMENT_UNIFORM_COMPONENTS";
                case 0x8b4a:
                    return "GL_MAX_VERTEX_UNIFORM_COMPONENTS";
                case 0x8b4b:
                    return "GL_MAX_VARYING_COMPONENTS";
                case 0x8b4c:
                    return "GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS";
                case 0x8b4d:
                    return "GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS";
                case 0x8b8d:
                    return "GL_CURRENT_PROGRAM";
                case 0x8b9c:
                    return "GL_POINT_SIZE_ARRAY_OES";
                case 0x8b9d:
                    return "GL_TEXTURE_CROP_RECT_OES";
                case 0x8b9e:
                    return "GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES";
                case 0x8b9f:
                    return "GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES";
                case 0x8c10:
                    return "GL_TEXTURE_RED_TYPE";
                case 0x8c11:
                    return "GL_TEXTURE_GREEN_TYPE";
                case 0x8c12:
                    return "GL_TEXTURE_BLUE_TYPE";
                case 0x8c13:
                    return "GL_TEXTURE_ALPHA_TYPE";
                case 0x8c16:
                    return "GL_TEXTURE_DEPTH_TYPE";
                case 0x8c17:
                    return "GL_UNSIGNED_NORMALIZED";
                case 0x8c1d:
                    return "GL_TEXTURE_BINDING_2D_ARRAY";
                case 0x8c29:
                    return "GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS";
                case 0x8c2a:
                    return "GL_TEXTURE_BUFFER_BINDING";
                case 0x8c2b:
                    return "GL_MAX_TEXTURE_BUFFER_SIZE";
                case 0x8c2c:
                    return "GL_TEXTURE_BINDING_BUFFER";
                case 0x8c2d:
                    return "GL_TEXTURE_BUFFER_DATA_STORE_BINDING";
                case 0x8c2f:
                    return "GL_ANY_SAMPLES_PASSED_EXT";
                case 0x8c36:
                    return "GL_SAMPLE_SHADING";
                case 0x8c37:
                    return "GL_MIN_SAMPLE_SHADING_VALUE";
                case 0x8c3e:
                    return "GL_UNSIGNED_INT_5_9_9_9_REV";
                case 0x8c3f:
                    return "GL_TEXTURE_SHARED_SIZE";
                case 0x8c80:
                    return "GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS";
                case 0x8c87:
                    return "GL_PRIMITIVES_GENERATED_EXT";
                case 0x8c89:
                    return "GL_RASTERIZER_DISCARD";
                case 0x8c8a:
                    return "GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS";
                case 0x8c8b:
                    return "GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS";
                case 0x8c8c:
                    return "GL_INTERLEAVED_ATTRIBS";
                case 0x8c8d:
                    return "GL_SEPARATE_ATTRIBS";
                case 0x8ca3:
                    return "GL_STENCIL_BACK_REF";
                case 0x8ca4:
                    return "GL_STENCIL_BACK_VALUE_MASK";
                case 0x8ca5:
                    return "GL_STENCIL_BACK_WRITEMASK";
                case 0x8ca6:
                    return "GL_DRAW_FRAMEBUFFER_BINDING";
                case 0x8ca7:
                    return "GL_RENDERBUFFER_BINDING";
                case 0x8ca8:
                    return "GL_READ_FRAMEBUFFER_ANGLE";
                case 0x8ca9:
                    return "GL_DRAW_FRAMEBUFFER_ANGLE";
                case 0x8caa:
                    return "GL_READ_FRAMEBUFFER_BINDING";
                case 0x8cab:
                    return "GL_RENDERBUFFER_SAMPLES_ANGLE";
                case 0x8cd0:
                    return "GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE";
                case 0x8cd1:
                    return "GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES";
                case 0x8cd2:
                    return "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES";
                case 0x8cd3:
                    return "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES";
                case 0x8cd4:
                    return "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES";
                case 0x8cd5:
                    return "GL_FRAMEBUFFER_COMPLETE_OES";
                case 0x8cd6:
                    return "GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES";
                case 0x8cd7:
                    return "GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES";
                case 0x8cd9:
                    return "GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS";
                case 0x8cda:
                    return "GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES";
                case 0x8cdd:
                    return "GL_FRAMEBUFFER_UNSUPPORTED_OES";
                case 0x8d20:
                    return "GL_STENCIL_ATTACHMENT";
                case 0x8d40:
                    return "GL_FRAMEBUFFER_OES";
                case 0x8d41:
                    return "GL_RENDERBUFFER_OES";
                case 0x8d42:
                    return "GL_RENDERBUFFER_WIDTH_OES";
                case 0x8d43:
                    return "GL_RENDERBUFFER_HEIGHT_OES";
                case 0x8d44:
                    return "GL_RENDERBUFFER_INTERNAL_FORMAT_OES";
                case 0x8d48:
                    return "GL_STENCIL_INDEX8";
                case 0x8d50:
                    return "GL_RENDERBUFFER_RED_SIZE_OES";
                case 0x8d51:
                    return "GL_RENDERBUFFER_GREEN_SIZE_OES";
                case 0x8d52:
                    return "GL_RENDERBUFFER_BLUE_SIZE_OES";
                case 0x8d53:
                    return "GL_RENDERBUFFER_ALPHA_SIZE_OES";
                case 0x8d54:
                    return "GL_RENDERBUFFER_DEPTH_SIZE_OES";
                case 0x8d55:
                    return "GL_RENDERBUFFER_STENCIL_SIZE_OES";
                case 0x8d56:
                    return "GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE";
                case 0x8d57:
                    return "GL_MAX_SAMPLES";
                case 0x8d60:
                    return "GL_TEXTURE_GEN_STR_OES";
                case 0x8d62:
                    return "GL_RGB565";
                case 0x8d69:
                    return "GL_PRIMITIVE_RESTART_FIXED_INDEX";
                case 0x8d6a:
                    return "GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT";
                case 0x8d6b:
                    return "GL_MAX_ELEMENT_INDEX";
                case 0x8d94:
                    return "GL_RED_INTEGER";
                case 0x8d98:
                    return "GL_RGB_INTEGER";
                case 0x8d99:
                    return "GL_RGBA_INTEGER";
                case 0x8da7:
                    return "GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT";
                case 0x8da8:
                    return "GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT";
                case 0x8dad:
                    return "GL_FLOAT_32_UNSIGNED_INT_24_8_REV";
                case 0x8dc1:
                    return "GL_SAMPLER_2D_ARRAY";
                case 0x8dc2:
                    return "GL_SAMPLER_BUFFER";
                case 0x8dc4:
                    return "GL_SAMPLER_2D_ARRAY_SHADOW";
                case 0x8dc5:
                    return "GL_SAMPLER_CUBE_SHADOW";
                case 0x8dc6:
                    return "GL_UNSIGNED_INT_VEC2";
                case 0x8dc7:
                    return "GL_UNSIGNED_INT_VEC3";
                case 0x8dc8:
                    return "GL_UNSIGNED_INT_VEC4";
                case 0x8dca:
                    return "GL_INT_SAMPLER_2D";
                case 0x8dcb:
                    return "GL_INT_SAMPLER_3D";
                case 0x8dcc:
                    return "GL_INT_SAMPLER_CUBE";
                case 0x8dcf:
                    return "GL_INT_SAMPLER_2D_ARRAY";
                case 0x8dd0:
                    return "GL_INT_SAMPLER_BUFFER";
                case 0x8dd2:
                    return "GL_UNSIGNED_INT_SAMPLER_2D";
                case 0x8dd3:
                    return "GL_UNSIGNED_INT_SAMPLER_3D";
                case 0x8dd4:
                    return "GL_UNSIGNED_INT_SAMPLER_CUBE";
                case 0x8dd7:
                    return "GL_UNSIGNED_INT_SAMPLER_2D_ARRAY";
                case 0x8dd8:
                    return "GL_UNSIGNED_INT_SAMPLER_BUFFER";
                case 0x8dd9:
                    return "GL_GEOMETRY_SHADER_EXT";
                case 0x8ddf:
                    return "GL_MAX_GEOMETRY_UNIFORM_COMPONENTS";
                case 0x8de0:
                    return "GL_MAX_GEOMETRY_OUTPUT_VERTICES";
                case 0x8de1:
                    return "GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS";
                case 0x8df8:
                    return "GL_SHADER_BINARY_FORMATS";
                case 0x8df9:
                    return "GL_NUM_SHADER_BINARY_FORMATS";
                case 0x8dfa:
                    return "GL_SHADER_COMPILER";
                case 0x8dfb:
                    return "GL_MAX_VERTEX_UNIFORM_VECTORS";
                case 0x8dfc:
                    return "GL_MAX_VARYING_VECTORS";
                case 0x8dfd:
                    return "GL_MAX_FRAGMENT_UNIFORM_VECTORS";
                case 0x8e1e:
                    return "GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS";
                case 0x8e1f:
                    return "GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS";
                case 0x8e25:
                    return "GL_TRANSFORM_FEEDBACK_BINDING";
                case 0x8e28:
                    return "GL_TIMESTAMP_EXT";
                case 0x8e4d:
                    return "GL_FIRST_VERTEX_CONVENTION_EXT";
                case 0x8e4e:
                    return "GL_LAST_VERTEX_CONVENTION_EXT";
                case 0x8e4f:
                    return "GL_PROVOKING_VERTEX";
                case 0x8e50:
                    return "GL_SAMPLE_POSITION";
                case 0x8e51:
                    return "GL_SAMPLE_MASK";
                case 0x8e52:
                    return "GL_SAMPLE_MASK_VALUE";
                case 0x8e59:
                    return "GL_MAX_SAMPLE_MASK_WORDS";
                case 0x8e5a:
                    return "GL_MAX_GEOMETRY_SHADER_INVOCATIONS";
                case 0x8e5b:
                    return "GL_MIN_FRAGMENT_INTERPOLATION_OFFSET";
                case 0x8e5c:
                    return "GL_MAX_FRAGMENT_INTERPOLATION_OFFSET";
                case 0x8e5d:
                    return "GL_FRAGMENT_INTERPOLATION_OFFSET_BITS";
                case 0x8e5e:
                    return "GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET";
                case 0x8e5f:
                    return "GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET";
                case 0x8e75:
                    return "GL_TESS_CONTROL_OUTPUT_VERTICES";
                case 0x8e76:
                    return "GL_TESS_GEN_MODE";
                case 0x8e77:
                    return "GL_TESS_GEN_SPACING";
                case 0x8e78:
                    return "GL_TESS_GEN_VERTEX_ORDER";
                case 0x8e79:
                    return "GL_TESS_GEN_POINT_MODE";
                case 0x8e7a:
                    return "GL_ISOLINES";
                case 0x8e7b:
                    return "GL_FRACTIONAL_ODD";
                case 0x8e7c:
                    return "GL_FRACTIONAL_EVEN";
                case 0x8e7d:
                    return "GL_MAX_PATCH_VERTICES";
                case 0x8e7e:
                    return "GL_MAX_TESS_GEN_LEVEL";
                case 0x8e7f:
                    return "GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS";
                case 0x8e80:
                    return "GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS";
                case 0x8e81:
                    return "GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS";
                case 0x8e82:
                    return "GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS";
                case 0x8e83:
                    return "GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS";
                case 0x8e84:
                    return "GL_MAX_TESS_PATCH_COMPONENTS";
                case 0x8e85:
                    return "GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS";
                case 0x8e86:
                    return "GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS";
                case 0x8e89:
                    return "GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS";
                case 0x8e8a:
                    return "GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS";
                case 0x8f36:
                    return "GL_COPY_READ_BUFFER_BINDING";
                case 0x8f37:
                    return "GL_COPY_WRITE_BUFFER_BINDING";
                case 0x8f38:
                    return "GL_MAX_IMAGE_UNITS";
                case 0x8f39:
                    return "GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES";
                case 0x8f3a:
                    return "GL_IMAGE_BINDING_NAME";
                case 0x8f3b:
                    return "GL_IMAGE_BINDING_LEVEL";
                case 0x8f3c:
                    return "GL_IMAGE_BINDING_LAYERED";
                case 0x8f3d:
                    return "GL_IMAGE_BINDING_LAYER";
                case 0x8f3e:
                    return "GL_IMAGE_BINDING_ACCESS";
                case 0x8f43:
                    return "GL_DRAW_INDIRECT_BUFFER_BINDING";
                case 0x8f4f:
                    return "GL_VERTEX_BINDING_BUFFER";
                case 0x8f9c:
                    return "GL_SIGNED_NORMALIZED";
                case 0x8fbb:
                    return "GL_GPU_DISJOINT_EXT";
                case 0x900a:
                    return "GL_TEXTURE_BINDING_CUBE_MAP_ARRAY";
                case 0x900c:
                    return "GL_SAMPLER_CUBE_MAP_ARRAY";
                case 0x900d:
                    return "GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW";
                case 0x900e:
                    return "GL_INT_SAMPLER_CUBE_MAP_ARRAY";
                case 0x900f:
                    return "GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY";
                case 0x904d:
                    return "GL_IMAGE_2D";
                case 0x904e:
                    return "GL_IMAGE_3D";
                case 0x9050:
                    return "GL_IMAGE_CUBE";
                case 0x9051:
                    return "GL_IMAGE_BUFFER";
                case 0x9053:
                    return "GL_IMAGE_2D_ARRAY";
                case 0x9054:
                    return "GL_IMAGE_CUBE_MAP_ARRAY";
                case 0x9058:
                    return "GL_INT_IMAGE_2D";
                case 0x9059:
                    return "GL_INT_IMAGE_3D";
                case 0x905b:
                    return "GL_INT_IMAGE_CUBE";
                case 0x905c:
                    return "GL_INT_IMAGE_BUFFER";
                case 0x905e:
                    return "GL_INT_IMAGE_2D_ARRAY";
                case 0x905f:
                    return "GL_INT_IMAGE_CUBE_MAP_ARRAY";
                case 0x9063:
                    return "GL_UNSIGNED_INT_IMAGE_2D";
                case 0x9064:
                    return "GL_UNSIGNED_INT_IMAGE_3D";
                case 0x9066:
                    return "GL_UNSIGNED_INT_IMAGE_CUBE";
                case 0x9067:
                    return "GL_UNSIGNED_INT_IMAGE_BUFFER";
                case 0x9069:
                    return "GL_UNSIGNED_INT_IMAGE_2D_ARRAY";
                case 0x906a:
                    return "GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY";
                case 0x906e:
                    return "GL_IMAGE_BINDING_FORMAT";
                case 0x90c8:
                    return "GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE";
                case 0x90c9:
                    return "GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS";
                case 0x90ca:
                    return "GL_MAX_VERTEX_IMAGE_UNIFORMS";
                case 0x90cb:
                    return "GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS";
                case 0x90cc:
                    return "GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS";
                case 0x90cd:
                    return "GL_MAX_GEOMETRY_IMAGE_UNIFORMS";
                case 0x90ce:
                    return "GL_MAX_FRAGMENT_IMAGE_UNIFORMS";
                case 0x90cf:
                    return "GL_MAX_COMBINED_IMAGE_UNIFORMS";
                case 0x90d3:
                    return "GL_SHADER_STORAGE_BUFFER_BINDING";
                case 0x90d4:
                    return "GL_SHADER_STORAGE_BUFFER_START";
                case 0x90d5:
                    return "GL_SHADER_STORAGE_BUFFER_SIZE";
                case 0x90d6:
                    return "GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS";
                case 0x90d7:
                    return "GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS";
                case 0x90d8:
                    return "GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS";
                case 0x90d9:
                    return "GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS";
                case 0x90da:
                    return "GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS";
                case 0x90db:
                    return "GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS";
                case 0x90dc:
                    return "GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS";
                case 0x90dd:
                    return "GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS";
                case 0x90de:
                    return "GL_MAX_SHADER_STORAGE_BLOCK_SIZE";
                case 0x90df:
                    return "GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT";
                case 0x90eb:
                    return "GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS";
                case 0x90ef:
                    return "GL_DISPATCH_INDIRECT_BUFFER_BINDING";
                case 0x90f3:
                    return "GL_CONTEXT_ROBUST_ACCESS_EXT";
                case 0x9102:
                    return "GL_TEXTURE_2D_MULTISAMPLE_ARRAY_OES";
                case 0x9104:
                    return "GL_TEXTURE_BINDING_2D_MULTISAMPLE";
                case 0x9105:
                    return "GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY";
                case 0x9106:
                    return "GL_TEXTURE_SAMPLES";
                case 0x9107:
                    return "GL_TEXTURE_FIXED_SAMPLE_LOCATIONS";
                case 0x9108:
                    return "GL_SAMPLER_2D_MULTISAMPLE";
                case 0x9109:
                    return "GL_INT_SAMPLER_2D_MULTISAMPLE";
                case 0x910a:
                    return "GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE";
                case 0x910b:
                    return "GL_SAMPLER_2D_MULTISAMPLE_ARRAY";
                case 0x910c:
                    return "GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY";
                case 0x910d:
                    return "GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY";
                case 0x910e:
                    return "GL_MAX_COLOR_TEXTURE_SAMPLES";
                case 0x910f:
                    return "GL_MAX_DEPTH_TEXTURE_SAMPLES";
                case 0x9110:
                    return "GL_MAX_INTEGER_SAMPLES";
                case 0x9111:
                    return "GL_MAX_SERVER_WAIT_TIMEOUT";
                case 0x9116:
                    return "GL_SYNC_FENCE";
                case 0x9118:
                    return "GL_UNSIGNALED";
                case 0x9119:
                    return "GL_SIGNALED";
                case 0x9122:
                    return "GL_MAX_VERTEX_OUTPUT_COMPONENTS";
                case 0x9123:
                    return "GL_MAX_GEOMETRY_INPUT_COMPONENTS";
                case 0x9124:
                    return "GL_MAX_GEOMETRY_OUTPUT_COMPONENTS";
                case 0x9125:
                    return "GL_MAX_FRAGMENT_INPUT_COMPONENTS";
                case 0x912f:
                    return "GL_TEXTURE_IMMUTABLE_FORMAT";
                case 0x9143:
                    return "GL_MAX_DEBUG_MESSAGE_LENGTH";
                case 0x9144:
                    return "GL_MAX_DEBUG_LOGGED_MESSAGES";
                case 0x9145:
                    return "GL_DEBUG_LOGGED_MESSAGES";
                case 0x9146:
                    return "GL_DEBUG_SEVERITY_HIGH_KHR";
                case 0x9147:
                    return "GL_DEBUG_SEVERITY_MEDIUM_KHR";
                case 0x9148:
                    return "GL_DEBUG_SEVERITY_LOW_KHR";
                case 0x919d:
                    return "GL_TEXTURE_BUFFER_OFFSET";
                case 0x919e:
                    return "GL_TEXTURE_BUFFER_SIZE";
                case 0x919f:
                    return "GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT";
                case 0x91b0:
                    return "GL_MAX_SHADER_COMPILER_THREADS_KHR";
                case 0x91b1:
                    return "GL_COMPLETION_STATUS_KHR";
                case 0x91bb:
                    return "GL_MAX_COMPUTE_UNIFORM_BLOCKS";
                case 0x91bc:
                    return "GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS";
                case 0x91bd:
                    return "GL_MAX_COMPUTE_IMAGE_UNIFORMS";
                case 0x91be:
                    return "GL_MAX_COMPUTE_WORK_GROUP_COUNT";
                case 0x91bf:
                    return "GL_MAX_COMPUTE_WORK_GROUP_SIZE";
                case 0x9294:
                    return "GL_MULTIPLY";
                case 0x9295:
                    return "GL_SCREEN";
                case 0x9296:
                    return "GL_OVERLAY";
                case 0x9297:
                    return "GL_DARKEN";
                case 0x9298:
                    return "GL_LIGHTEN";
                case 0x9299:
                    return "GL_COLORDODGE";
                case 0x929a:
                    return "GL_COLORBURN";
                case 0x929b:
                    return "GL_HARDLIGHT";
                case 0x929c:
                    return "GL_SOFTLIGHT";
                case 0x929e:
                    return "GL_DIFFERENCE";
                case 0x92a0:
                    return "GL_EXCLUSION";
                case 0x92ad:
                    return "GL_HSL_HUE";
                case 0x92ae:
                    return "GL_HSL_SATURATION";
                case 0x92af:
                    return "GL_HSL_COLOR";
                case 0x92b0:
                    return "GL_HSL_LUMINOSITY";
                case 0x92be:
                    return "GL_PRIMITIVE_BOUNDING_BOX";
                case 0x92c2:
                    return "GL_ATOMIC_COUNTER_BUFFER_START";
                case 0x92c3:
                    return "GL_ATOMIC_COUNTER_BUFFER_SIZE";
                case 0x92cc:
                    return "GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS";
                case 0x92cd:
                    return "GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS";
                case 0x92ce:
                    return "GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS";
                case 0x92cf:
                    return "GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS";
                case 0x92d0:
                    return "GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS";
                case 0x92d1:
                    return "GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS";
                case 0x92d2:
                    return "GL_MAX_VERTEX_ATOMIC_COUNTERS";
                case 0x92d3:
                    return "GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS";
                case 0x92d4:
                    return "GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS";
                case 0x92d5:
                    return "GL_MAX_GEOMETRY_ATOMIC_COUNTERS";
                case 0x92d6:
                    return "GL_MAX_FRAGMENT_ATOMIC_COUNTERS";
                case 0x92d7:
                    return "GL_MAX_COMBINED_ATOMIC_COUNTERS";
                case 0x92d8:
                    return "GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE";
                case 0x92db:
                    return "GL_UNSIGNED_INT_ATOMIC_COUNTER";
                case 0x92dc:
                    return "GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS";
                case 0x92e0:
                    return "GL_DEBUG_OUTPUT";
                case 0x92e7:
                    return "GL_IS_PER_PATCH";
                case 0x92f9:
                    return "GL_NAME_LENGTH";
                case 0x92fa:
                    return "GL_TYPE";
                case 0x92fb:
                    return "GL_ARRAY_SIZE";
                case 0x92fc:
                    return "GL_OFFSET";
                case 0x92fd:
                    return "GL_BLOCK_INDEX";
                case 0x92fe:
                    return "GL_ARRAY_STRIDE";
                case 0x92ff:
                    return "GL_MATRIX_STRIDE";
                case 0x9300:
                    return "GL_IS_ROW_MAJOR";
                case 0x9301:
                    return "GL_ATOMIC_COUNTER_BUFFER_INDEX";
                case 0x9302:
                    return "GL_BUFFER_BINDING";
                case 0x9303:
                    return "GL_BUFFER_DATA_SIZE";
                case 0x9304:
                    return "GL_NUM_ACTIVE_VARIABLES";
                case 0x9305:
                    return "GL_ACTIVE_VARIABLES";
                case 0x9306:
                    return "GL_REFERENCED_BY_VERTEX_SHADER";
                case 0x9307:
                    return "GL_REFERENCED_BY_TESS_CONTROL_SHADER";
                case 0x9308:
                    return "GL_REFERENCED_BY_TESS_EVALUATION_SHADER";
                case 0x9309:
                    return "GL_REFERENCED_BY_GEOMETRY_SHADER";
                case 0x930a:
                    return "GL_REFERENCED_BY_FRAGMENT_SHADER";
                case 0x930b:
                    return "GL_REFERENCED_BY_COMPUTE_SHADER";
                case 0x930c:
                    return "GL_TOP_LEVEL_ARRAY_SIZE";
                case 0x930d:
                    return "GL_TOP_LEVEL_ARRAY_STRIDE";
                case 0x930e:
                    return "GL_LOCATION";
                case 0x930f:
                    return "GL_LOCATION_INDEX_EXT";
                case 0x9312:
                    return "GL_FRAMEBUFFER_DEFAULT_LAYERS_EXT";
                case 0x9315:
                    return "GL_MAX_FRAMEBUFFER_WIDTH";
                case 0x9316:
                    return "GL_MAX_FRAMEBUFFER_HEIGHT";
                case 0x9317:
                    return "GL_MAX_FRAMEBUFFER_LAYERS";
                case 0x9318:
                    return "GL_MAX_FRAMEBUFFER_SAMPLES";
                case 0x9381:
                    return "GL_MULTISAMPLE_LINE_WIDTH_RANGE";
                case 0x9382:
                    return "GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY";
                case 0x93a0:
                    return "GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE";
                case 0x93a1:
                    return "GL_BGRA8_EXT";
                case 0x93b0:
                    return "GL_COMPRESSED_RGBA_ASTC_4x4";
                case 0x93b1:
                    return "GL_COMPRESSED_RGBA_ASTC_5x4";
                case 0x93b2:
                    return "GL_COMPRESSED_RGBA_ASTC_5x5";
                case 0x93b3:
                    return "GL_COMPRESSED_RGBA_ASTC_6x5";
                case 0x93b4:
                    return "GL_COMPRESSED_RGBA_ASTC_6x6";
                case 0x93b5:
                    return "GL_COMPRESSED_RGBA_ASTC_8x5";
                case 0x93b6:
                    return "GL_COMPRESSED_RGBA_ASTC_8x6";
                case 0x93b7:
                    return "GL_COMPRESSED_RGBA_ASTC_8x8";
                case 0x93b8:
                    return "GL_COMPRESSED_RGBA_ASTC_10x5";
                case 0x93b9:
                    return "GL_COMPRESSED_RGBA_ASTC_10x6";
                case 0x93ba:
                    return "GL_COMPRESSED_RGBA_ASTC_10x8";
                case 0x93bb:
                    return "GL_COMPRESSED_RGBA_ASTC_10x10";
                case 0x93bc:
                    return "GL_COMPRESSED_RGBA_ASTC_12x10";
                case 0x93bd:
                    return "GL_COMPRESSED_RGBA_ASTC_12x12";
                case 0x93d0:
                    return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4";
                case 0x93d1:
                    return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4";
                case 0x93d2:
                    return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5";
                case 0x93d3:
                    return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5";
                case 0x93d4:
                    return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6";
                case 0x93d5:
                    return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5";
                case 0x93d6:
                    return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6";
                case 0x93d7:
                    return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8";
                case 0x93d8:
                    return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5";
                case 0x93d9:
                    return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6";
                case 0x93da:
                    return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8";
                case 0x93db:
                    return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10";
                case 0x93dc:
                    return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10";
                case 0x93dd:
                    return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12";
                case 0x9582:
                    return "GL_NUM_TILING_TYPES_EXT";
                case 0x9583:
                    return "GL_TILING_TYPES_EXT";
                case 0x9584:
                    return "GL_OPTIMAL_TILING_EXT";
                case 0x9585:
                    return "GL_LINEAR_TILING_EXT";
                case 0x9630:
                    return "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR";
                case 0x9631:
                    return "GL_MAX_VIEWS_OVR";
                case 0x9632:
                    return "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR";
                case 0x9633:
                    return "GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::DepthFunction:
        {
            switch (value)
            {
                case 0x200:
                    return "GL_NEVER";
                case 0x201:
                    return "GL_LESS";
                case 0x202:
                    return "GL_EQUAL";
                case 0x203:
                    return "GL_LEQUAL";
                case 0x204:
                    return "GL_GREATER";
                case 0x205:
                    return "GL_NOTEQUAL";
                case 0x206:
                    return "GL_GEQUAL";
                case 0x207:
                    return "GL_ALWAYS";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::DrawBufferMode:
        {
            switch (value)
            {
                case 0x0:
                    return "GL_NONE";
                case 0x404:
                    return "GL_FRONT";
                case 0x405:
                    return "GL_BACK";
                case 0x408:
                    return "GL_FRONT_AND_BACK";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::DrawElementsType:
        {
            switch (value)
            {
                case 0x1401:
                    return "GL_UNSIGNED_BYTE";
                case 0x1403:
                    return "GL_UNSIGNED_SHORT";
                case 0x1405:
                    return "GL_UNSIGNED_INT";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::EnableCap:
        {
            switch (value)
            {
                case 0xb44:
                    return "GL_CULL_FACE";
                case 0xb71:
                    return "GL_DEPTH_TEST";
                case 0xb90:
                    return "GL_STENCIL_TEST";
                case 0xbd0:
                    return "GL_DITHER";
                case 0xbe2:
                    return "GL_BLEND";
                case 0xc11:
                    return "GL_SCISSOR_TEST";
                case 0xde1:
                    return "GL_TEXTURE_2D";
                case 0x8037:
                    return "GL_POLYGON_OFFSET_FILL";
                case 0x8074:
                    return "GL_VERTEX_ARRAY";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::ErrorCode:
        {
            switch (value)
            {
                case 0x500:
                    return "GL_INVALID_ENUM";
                case 0x501:
                    return "GL_INVALID_VALUE";
                case 0x502:
                    return "GL_INVALID_OPERATION";
                case 0x503:
                    return "GL_STACK_OVERFLOW";
                case 0x504:
                    return "GL_STACK_UNDERFLOW";
                case 0x505:
                    return "GL_OUT_OF_MEMORY";
                case 0x506:
                    return "GL_INVALID_FRAMEBUFFER_OPERATION";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::ExternalHandleType:
        {
            switch (value)
            {
                case 0x9586:
                    return "GL_HANDLE_TYPE_OPAQUE_FD_EXT";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::FogCoordinatePointerType:
        {
            switch (value)
            {
                case 0x1406:
                    return "GL_FLOAT";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::FogMode:
        {
            switch (value)
            {
                case 0x2601:
                    return "GL_LINEAR";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::FogPointerTypeEXT:
        {
            switch (value)
            {
                case 0x1406:
                    return "GL_FLOAT";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::FogPointerTypeIBM:
        {
            switch (value)
            {
                case 0x1406:
                    return "GL_FLOAT";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::FramebufferAttachment:
        {
            switch (value)
            {
                case 0x8cdf:
                    return "GL_MAX_COLOR_ATTACHMENTS";
                case 0x8ce0:
                    return "GL_COLOR_ATTACHMENT0";
                case 0x8ce1:
                    return "GL_COLOR_ATTACHMENT1";
                case 0x8ce2:
                    return "GL_COLOR_ATTACHMENT2";
                case 0x8ce3:
                    return "GL_COLOR_ATTACHMENT3";
                case 0x8ce4:
                    return "GL_COLOR_ATTACHMENT4";
                case 0x8ce5:
                    return "GL_COLOR_ATTACHMENT5";
                case 0x8ce6:
                    return "GL_COLOR_ATTACHMENT6";
                case 0x8ce7:
                    return "GL_COLOR_ATTACHMENT7";
                case 0x8ce8:
                    return "GL_COLOR_ATTACHMENT8";
                case 0x8ce9:
                    return "GL_COLOR_ATTACHMENT9";
                case 0x8cea:
                    return "GL_COLOR_ATTACHMENT10";
                case 0x8ceb:
                    return "GL_COLOR_ATTACHMENT11";
                case 0x8cec:
                    return "GL_COLOR_ATTACHMENT12";
                case 0x8ced:
                    return "GL_COLOR_ATTACHMENT13";
                case 0x8cee:
                    return "GL_COLOR_ATTACHMENT14";
                case 0x8cef:
                    return "GL_COLOR_ATTACHMENT15";
                case 0x8cf0:
                    return "GL_COLOR_ATTACHMENT16";
                case 0x8cf1:
                    return "GL_COLOR_ATTACHMENT17";
                case 0x8cf2:
                    return "GL_COLOR_ATTACHMENT18";
                case 0x8cf3:
                    return "GL_COLOR_ATTACHMENT19";
                case 0x8cf4:
                    return "GL_COLOR_ATTACHMENT20";
                case 0x8cf5:
                    return "GL_COLOR_ATTACHMENT21";
                case 0x8cf6:
                    return "GL_COLOR_ATTACHMENT22";
                case 0x8cf7:
                    return "GL_COLOR_ATTACHMENT23";
                case 0x8cf8:
                    return "GL_COLOR_ATTACHMENT24";
                case 0x8cf9:
                    return "GL_COLOR_ATTACHMENT25";
                case 0x8cfa:
                    return "GL_COLOR_ATTACHMENT26";
                case 0x8cfb:
                    return "GL_COLOR_ATTACHMENT27";
                case 0x8cfc:
                    return "GL_COLOR_ATTACHMENT28";
                case 0x8cfd:
                    return "GL_COLOR_ATTACHMENT29";
                case 0x8cfe:
                    return "GL_COLOR_ATTACHMENT30";
                case 0x8cff:
                    return "GL_COLOR_ATTACHMENT31";
                case 0x8d00:
                    return "GL_DEPTH_ATTACHMENT";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::FramebufferAttachmentParameterName:
        {
            switch (value)
            {
                case 0x8210:
                    return "GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING";
                case 0x8211:
                    return "GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE";
                case 0x8212:
                    return "GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE";
                case 0x8213:
                    return "GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE";
                case 0x8214:
                    return "GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE";
                case 0x8215:
                    return "GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE";
                case 0x8216:
                    return "GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE";
                case 0x8217:
                    return "GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE";
                case 0x8cd1:
                    return "GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME";
                case 0x8cd2:
                    return "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL";
                case 0x8cd3:
                    return "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE";
                case 0x8cd4:
                    return "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER";
                case 0x8da7:
                    return "GL_FRAMEBUFFER_ATTACHMENT_LAYERED";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::FramebufferParameterName:
        {
            switch (value)
            {
                case 0x9310:
                    return "GL_FRAMEBUFFER_DEFAULT_WIDTH";
                case 0x9311:
                    return "GL_FRAMEBUFFER_DEFAULT_HEIGHT";
                case 0x9312:
                    return "GL_FRAMEBUFFER_DEFAULT_LAYERS";
                case 0x9313:
                    return "GL_FRAMEBUFFER_DEFAULT_SAMPLES";
                case 0x9314:
                    return "GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::FramebufferStatus:
        {
            switch (value)
            {
                case 0x8219:
                    return "GL_FRAMEBUFFER_UNDEFINED";
                case 0x8cd5:
                    return "GL_FRAMEBUFFER_COMPLETE";
                case 0x8cd6:
                    return "GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT";
                case 0x8cd7:
                    return "GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";
                case 0x8cdd:
                    return "GL_FRAMEBUFFER_UNSUPPORTED";
                case 0x8d56:
                    return "GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE";
                case 0x8da8:
                    return "GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::FramebufferTarget:
        {
            switch (value)
            {
                case 0x8ca8:
                    return "GL_READ_FRAMEBUFFER";
                case 0x8ca9:
                    return "GL_DRAW_FRAMEBUFFER";
                case 0x8d40:
                    return "GL_FRAMEBUFFER";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::FrontFaceDirection:
        {
            switch (value)
            {
                case 0x900:
                    return "GL_CW";
                case 0x901:
                    return "GL_CCW";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::GetFramebufferParameter:
        {
            switch (value)
            {
                case 0x80a8:
                    return "GL_SAMPLE_BUFFERS";
                case 0x80a9:
                    return "GL_SAMPLES";
                case 0x8b9a:
                    return "GL_IMPLEMENTATION_COLOR_READ_TYPE";
                case 0x8b9b:
                    return "GL_IMPLEMENTATION_COLOR_READ_FORMAT";
                case 0x9310:
                    return "GL_FRAMEBUFFER_DEFAULT_WIDTH";
                case 0x9311:
                    return "GL_FRAMEBUFFER_DEFAULT_HEIGHT";
                case 0x9312:
                    return "GL_FRAMEBUFFER_DEFAULT_LAYERS";
                case 0x9313:
                    return "GL_FRAMEBUFFER_DEFAULT_SAMPLES";
                case 0x9314:
                    return "GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::GetPName:
        {
            switch (value)
            {
                case 0xb21:
                    return "GL_LINE_WIDTH";
                case 0xb44:
                    return "GL_CULL_FACE";
                case 0xb45:
                    return "GL_CULL_FACE_MODE";
                case 0xb46:
                    return "GL_FRONT_FACE";
                case 0xb70:
                    return "GL_DEPTH_RANGE";
                case 0xb71:
                    return "GL_DEPTH_TEST";
                case 0xb72:
                    return "GL_DEPTH_WRITEMASK";
                case 0xb73:
                    return "GL_DEPTH_CLEAR_VALUE";
                case 0xb74:
                    return "GL_DEPTH_FUNC";
                case 0xb90:
                    return "GL_STENCIL_TEST";
                case 0xb91:
                    return "GL_STENCIL_CLEAR_VALUE";
                case 0xb92:
                    return "GL_STENCIL_FUNC";
                case 0xb93:
                    return "GL_STENCIL_VALUE_MASK";
                case 0xb94:
                    return "GL_STENCIL_FAIL";
                case 0xb95:
                    return "GL_STENCIL_PASS_DEPTH_FAIL";
                case 0xb96:
                    return "GL_STENCIL_PASS_DEPTH_PASS";
                case 0xb97:
                    return "GL_STENCIL_REF";
                case 0xb98:
                    return "GL_STENCIL_WRITEMASK";
                case 0xba2:
                    return "GL_VIEWPORT";
                case 0xbd0:
                    return "GL_DITHER";
                case 0xbe2:
                    return "GL_BLEND";
                case 0xc02:
                    return "GL_READ_BUFFER";
                case 0xc10:
                    return "GL_SCISSOR_BOX";
                case 0xc11:
                    return "GL_SCISSOR_TEST";
                case 0xc22:
                    return "GL_COLOR_CLEAR_VALUE";
                case 0xc23:
                    return "GL_COLOR_WRITEMASK";
                case 0xcf2:
                    return "GL_UNPACK_ROW_LENGTH";
                case 0xcf3:
                    return "GL_UNPACK_SKIP_ROWS";
                case 0xcf4:
                    return "GL_UNPACK_SKIP_PIXELS";
                case 0xcf5:
                    return "GL_UNPACK_ALIGNMENT";
                case 0xd02:
                    return "GL_PACK_ROW_LENGTH";
                case 0xd03:
                    return "GL_PACK_SKIP_ROWS";
                case 0xd04:
                    return "GL_PACK_SKIP_PIXELS";
                case 0xd05:
                    return "GL_PACK_ALIGNMENT";
                case 0xd33:
                    return "GL_MAX_TEXTURE_SIZE";
                case 0xd3a:
                    return "GL_MAX_VIEWPORT_DIMS";
                case 0xd50:
                    return "GL_SUBPIXEL_BITS";
                case 0xd52:
                    return "GL_RED_BITS";
                case 0xd53:
                    return "GL_GREEN_BITS";
                case 0xd54:
                    return "GL_BLUE_BITS";
                case 0xd55:
                    return "GL_ALPHA_BITS";
                case 0xd56:
                    return "GL_DEPTH_BITS";
                case 0xd57:
                    return "GL_STENCIL_BITS";
                case 0xde1:
                    return "GL_TEXTURE_2D";
                case 0x2a00:
                    return "GL_POLYGON_OFFSET_UNITS";
                case 0x8037:
                    return "GL_POLYGON_OFFSET_FILL";
                case 0x8038:
                    return "GL_POLYGON_OFFSET_FACTOR";
                case 0x8069:
                    return "GL_TEXTURE_BINDING_2D";
                case 0x806a:
                    return "GL_TEXTURE_BINDING_3D";
                case 0x8074:
                    return "GL_VERTEX_ARRAY";
                case 0x846d:
                    return "GL_ALIASED_POINT_SIZE_RANGE";
                case 0x846e:
                    return "GL_ALIASED_LINE_WIDTH_RANGE";
                case 0x9596:
                    return "GL_NUM_DEVICE_UUIDS_EXT";
                case 0x9597:
                    return "GL_DEVICE_UUID_EXT";
                case 0x9598:
                    return "GL_DRIVER_UUID_EXT";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::GetPointervPName:
        {
            switch (value)
            {
                case 0x8244:
                    return "GL_DEBUG_CALLBACK_FUNCTION";
                case 0x8245:
                    return "GL_DEBUG_CALLBACK_USER_PARAM";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::GetTextureParameter:
        {
            switch (value)
            {
                case 0x1000:
                    return "GL_TEXTURE_WIDTH";
                case 0x1001:
                    return "GL_TEXTURE_HEIGHT";
                case 0x1003:
                    return "GL_TEXTURE_INTERNAL_FORMAT";
                case 0x1004:
                    return "GL_TEXTURE_BORDER_COLOR";
                case 0x2800:
                    return "GL_TEXTURE_MAG_FILTER";
                case 0x2801:
                    return "GL_TEXTURE_MIN_FILTER";
                case 0x2802:
                    return "GL_TEXTURE_WRAP_S";
                case 0x2803:
                    return "GL_TEXTURE_WRAP_T";
                case 0x805c:
                    return "GL_TEXTURE_RED_SIZE";
                case 0x805d:
                    return "GL_TEXTURE_GREEN_SIZE";
                case 0x805e:
                    return "GL_TEXTURE_BLUE_SIZE";
                case 0x805f:
                    return "GL_TEXTURE_ALPHA_SIZE";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::GraphicsResetStatus:
        {
            switch (value)
            {
                case 0x8253:
                    return "GL_GUILTY_CONTEXT_RESET";
                case 0x8254:
                    return "GL_INNOCENT_CONTEXT_RESET";
                case 0x8255:
                    return "GL_UNKNOWN_CONTEXT_RESET";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::HintMode:
        {
            switch (value)
            {
                case 0x1100:
                    return "GL_DONT_CARE";
                case 0x1101:
                    return "GL_FASTEST";
                case 0x1102:
                    return "GL_NICEST";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::HintTarget:
        {
            switch (value)
            {
                case 0x8192:
                    return "GL_GENERATE_MIPMAP_HINT";
                case 0x8257:
                    return "GL_PROGRAM_BINARY_RETRIEVABLE_HINT";
                case 0x8b8b:
                    return "GL_FRAGMENT_SHADER_DERIVATIVE_HINT";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::IndexPointerType:
        {
            switch (value)
            {
                case 0x1402:
                    return "GL_SHORT";
                case 0x1404:
                    return "GL_INT";
                case 0x1406:
                    return "GL_FLOAT";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::InternalFormat:
        {
            switch (value)
            {
                case 0x1902:
                    return "GL_DEPTH_COMPONENT";
                case 0x1903:
                    return "GL_RED";
                case 0x1907:
                    return "GL_RGB";
                case 0x1908:
                    return "GL_RGBA";
                case 0x8051:
                    return "GL_RGB8";
                case 0x8052:
                    return "GL_RGB10_EXT";
                case 0x8056:
                    return "GL_RGBA4";
                case 0x8057:
                    return "GL_RGB5_A1";
                case 0x8058:
                    return "GL_RGBA8";
                case 0x8059:
                    return "GL_RGB10_A2";
                case 0x81a5:
                    return "GL_DEPTH_COMPONENT16";
                case 0x8227:
                    return "GL_RG";
                case 0x8229:
                    return "GL_R8";
                case 0x822b:
                    return "GL_RG8";
                case 0x822d:
                    return "GL_R16F";
                case 0x822e:
                    return "GL_R32F";
                case 0x822f:
                    return "GL_RG16F";
                case 0x8230:
                    return "GL_RG32F";
                case 0x8231:
                    return "GL_R8I";
                case 0x8232:
                    return "GL_R8UI";
                case 0x8233:
                    return "GL_R16I";
                case 0x8234:
                    return "GL_R16UI";
                case 0x8235:
                    return "GL_R32I";
                case 0x8236:
                    return "GL_R32UI";
                case 0x8237:
                    return "GL_RG8I";
                case 0x8238:
                    return "GL_RG8UI";
                case 0x8239:
                    return "GL_RG16I";
                case 0x823a:
                    return "GL_RG16UI";
                case 0x823b:
                    return "GL_RG32I";
                case 0x823c:
                    return "GL_RG32UI";
                case 0x84f9:
                    return "GL_DEPTH_STENCIL";
                case 0x8814:
                    return "GL_RGBA32F";
                case 0x881a:
                    return "GL_RGBA16F";
                case 0x881b:
                    return "GL_RGB16F";
                case 0x88f0:
                    return "GL_DEPTH24_STENCIL8";
                case 0x8c3a:
                    return "GL_R11F_G11F_B10F";
                case 0x8c3d:
                    return "GL_RGB9_E5";
                case 0x8c40:
                    return "GL_SRGB";
                case 0x8c41:
                    return "GL_SRGB8";
                case 0x8c43:
                    return "GL_SRGB8_ALPHA8";
                case 0x8cac:
                    return "GL_DEPTH_COMPONENT32F";
                case 0x8cad:
                    return "GL_DEPTH32F_STENCIL8";
                case 0x8d70:
                    return "GL_RGBA32UI";
                case 0x8d71:
                    return "GL_RGB32UI";
                case 0x8d76:
                    return "GL_RGBA16UI";
                case 0x8d77:
                    return "GL_RGB16UI";
                case 0x8d7c:
                    return "GL_RGBA8UI";
                case 0x8d7d:
                    return "GL_RGB8UI";
                case 0x8d82:
                    return "GL_RGBA32I";
                case 0x8d83:
                    return "GL_RGB32I";
                case 0x8d88:
                    return "GL_RGBA16I";
                case 0x8d89:
                    return "GL_RGB16I";
                case 0x8d8e:
                    return "GL_RGBA8I";
                case 0x8d8f:
                    return "GL_RGB8I";
                case 0x8f94:
                    return "GL_R8_SNORM";
                case 0x8f95:
                    return "GL_RG8_SNORM";
                case 0x8f96:
                    return "GL_RGB8_SNORM";
                case 0x8f97:
                    return "GL_RGBA8_SNORM";
                case 0x906f:
                    return "GL_RGB10_A2UI";
                case 0x9270:
                    return "GL_COMPRESSED_R11_EAC";
                case 0x9271:
                    return "GL_COMPRESSED_SIGNED_R11_EAC";
                case 0x9272:
                    return "GL_COMPRESSED_RG11_EAC";
                case 0x9273:
                    return "GL_COMPRESSED_SIGNED_RG11_EAC";
                case 0x9274:
                    return "GL_COMPRESSED_RGB8_ETC2";
                case 0x9275:
                    return "GL_COMPRESSED_SRGB8_ETC2";
                case 0x9276:
                    return "GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2";
                case 0x9277:
                    return "GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2";
                case 0x9278:
                    return "GL_COMPRESSED_RGBA8_ETC2_EAC";
                case 0x9279:
                    return "GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::InternalFormatPName:
        {
            switch (value)
            {
                case 0x80a9:
                    return "GL_SAMPLES";
                case 0x86a1:
                    return "GL_TEXTURE_COMPRESSED";
                case 0x90c7:
                    return "GL_IMAGE_FORMAT_COMPATIBILITY_TYPE";
                case 0x9380:
                    return "GL_NUM_SAMPLE_COUNTS";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::LightEnvModeSGIX:
        {
            switch (value)
            {
                case 0x1e01:
                    return "GL_REPLACE";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::ListNameType:
        {
            switch (value)
            {
                case 0x1400:
                    return "GL_BYTE";
                case 0x1401:
                    return "GL_UNSIGNED_BYTE";
                case 0x1402:
                    return "GL_SHORT";
                case 0x1403:
                    return "GL_UNSIGNED_SHORT";
                case 0x1404:
                    return "GL_INT";
                case 0x1405:
                    return "GL_UNSIGNED_INT";
                case 0x1406:
                    return "GL_FLOAT";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::LogicOp:
        {
            switch (value)
            {
                case 0x150a:
                    return "GL_INVERT";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::MapBufferUsageMask:
        {
            switch (value)
            {
                case 0x1:
                    return "GL_MAP_READ_BIT";
                case 0x2:
                    return "GL_MAP_WRITE_BIT";
                case 0x4:
                    return "GL_MAP_INVALIDATE_RANGE_BIT";
                case 0x8:
                    return "GL_MAP_INVALIDATE_BUFFER_BIT";
                case 0x10:
                    return "GL_MAP_FLUSH_EXPLICIT_BIT";
                case 0x20:
                    return "GL_MAP_UNSYNCHRONIZED_BIT";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::MaterialFace:
        {
            switch (value)
            {
                case 0x404:
                    return "GL_FRONT";
                case 0x405:
                    return "GL_BACK";
                case 0x408:
                    return "GL_FRONT_AND_BACK";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::MatrixMode:
        {
            switch (value)
            {
                case 0x1702:
                    return "GL_TEXTURE";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::MemoryBarrierMask:
        {
            switch (value)
            {
                case 0x1:
                    return "GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT";
                case 0x2:
                    return "GL_ELEMENT_ARRAY_BARRIER_BIT";
                case 0x4:
                    return "GL_UNIFORM_BARRIER_BIT";
                case 0x8:
                    return "GL_TEXTURE_FETCH_BARRIER_BIT";
                case 0x20:
                    return "GL_SHADER_IMAGE_ACCESS_BARRIER_BIT";
                case 0x40:
                    return "GL_COMMAND_BARRIER_BIT";
                case 0x80:
                    return "GL_PIXEL_BUFFER_BARRIER_BIT";
                case 0x100:
                    return "GL_TEXTURE_UPDATE_BARRIER_BIT";
                case 0x200:
                    return "GL_BUFFER_UPDATE_BARRIER_BIT";
                case 0x400:
                    return "GL_FRAMEBUFFER_BARRIER_BIT";
                case 0x800:
                    return "GL_TRANSFORM_FEEDBACK_BARRIER_BIT";
                case 0x1000:
                    return "GL_ATOMIC_COUNTER_BARRIER_BIT";
                case 0x2000:
                    return "GL_SHADER_STORAGE_BARRIER_BIT";
                case 0xffffffff:
                    return "GL_ALL_BARRIER_BITS";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::MemoryObjectParameterName:
        {
            switch (value)
            {
                case 0x9581:
                    return "GL_DEDICATED_MEMORY_OBJECT_EXT";
                case 0x959b:
                    return "GL_PROTECTED_MEMORY_OBJECT_EXT";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::NormalPointerType:
        {
            switch (value)
            {
                case 0x1400:
                    return "GL_BYTE";
                case 0x1402:
                    return "GL_SHORT";
                case 0x1404:
                    return "GL_INT";
                case 0x1406:
                    return "GL_FLOAT";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::ObjectIdentifier:
        {
            switch (value)
            {
                case 0x1702:
                    return "GL_TEXTURE";
                case 0x8074:
                    return "GL_VERTEX_ARRAY";
                case 0x82e0:
                    return "GL_BUFFER";
                case 0x82e1:
                    return "GL_SHADER";
                case 0x82e2:
                    return "GL_PROGRAM";
                case 0x82e3:
                    return "GL_QUERY";
                case 0x82e4:
                    return "GL_PROGRAM_PIPELINE";
                case 0x82e6:
                    return "GL_SAMPLER";
                case 0x8d40:
                    return "GL_FRAMEBUFFER";
                case 0x8d41:
                    return "GL_RENDERBUFFER";
                case 0x8e22:
                    return "GL_TRANSFORM_FEEDBACK";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::PatchParameterName:
        {
            switch (value)
            {
                case 0x8e72:
                    return "GL_PATCH_VERTICES";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::PathFillMode:
        {
            switch (value)
            {
                case 0x150a:
                    return "GL_INVERT";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::PathFontStyle:
        {
            switch (value)
            {
                case 0x0:
                    return "GL_NONE";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::PathGenMode:
        {
            switch (value)
            {
                case 0x0:
                    return "GL_NONE";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::PathTransformType:
        {
            switch (value)
            {
                case 0x0:
                    return "GL_NONE";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::PipelineParameterName:
        {
            switch (value)
            {
                case 0x8259:
                    return "GL_ACTIVE_PROGRAM";
                case 0x8b30:
                    return "GL_FRAGMENT_SHADER";
                case 0x8b31:
                    return "GL_VERTEX_SHADER";
                case 0x8b84:
                    return "GL_INFO_LOG_LENGTH";
                case 0x8dd9:
                    return "GL_GEOMETRY_SHADER";
                case 0x8e87:
                    return "GL_TESS_EVALUATION_SHADER";
                case 0x8e88:
                    return "GL_TESS_CONTROL_SHADER";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::PixelCopyType:
        {
            switch (value)
            {
                case 0x1800:
                    return "GL_COLOR";
                case 0x1801:
                    return "GL_DEPTH";
                case 0x1802:
                    return "GL_STENCIL";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::PixelFormat:
        {
            switch (value)
            {
                case 0x1403:
                    return "GL_UNSIGNED_SHORT";
                case 0x1405:
                    return "GL_UNSIGNED_INT";
                case 0x1901:
                    return "GL_STENCIL_INDEX";
                case 0x1902:
                    return "GL_DEPTH_COMPONENT";
                case 0x1903:
                    return "GL_RED";
                case 0x1904:
                    return "GL_GREEN";
                case 0x1905:
                    return "GL_BLUE";
                case 0x1906:
                    return "GL_ALPHA";
                case 0x1907:
                    return "GL_RGB";
                case 0x1908:
                    return "GL_RGBA";
                case 0x1909:
                    return "GL_LUMINANCE";
                case 0x190a:
                    return "GL_LUMINANCE_ALPHA";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::PixelStoreParameter:
        {
            switch (value)
            {
                case 0xcf2:
                    return "GL_UNPACK_ROW_LENGTH";
                case 0xcf3:
                    return "GL_UNPACK_SKIP_ROWS";
                case 0xcf4:
                    return "GL_UNPACK_SKIP_PIXELS";
                case 0xcf5:
                    return "GL_UNPACK_ALIGNMENT";
                case 0xd02:
                    return "GL_PACK_ROW_LENGTH";
                case 0xd03:
                    return "GL_PACK_SKIP_ROWS";
                case 0xd04:
                    return "GL_PACK_SKIP_PIXELS";
                case 0xd05:
                    return "GL_PACK_ALIGNMENT";
                case 0x806d:
                    return "GL_UNPACK_SKIP_IMAGES";
                case 0x806e:
                    return "GL_UNPACK_IMAGE_HEIGHT";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::PixelTexGenMode:
        {
            switch (value)
            {
                case 0x0:
                    return "GL_NONE";
                case 0x1907:
                    return "GL_RGB";
                case 0x1908:
                    return "GL_RGBA";
                case 0x1909:
                    return "GL_LUMINANCE";
                case 0x190a:
                    return "GL_LUMINANCE_ALPHA";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::PixelType:
        {
            switch (value)
            {
                case 0x1400:
                    return "GL_BYTE";
                case 0x1401:
                    return "GL_UNSIGNED_BYTE";
                case 0x1402:
                    return "GL_SHORT";
                case 0x1403:
                    return "GL_UNSIGNED_SHORT";
                case 0x1404:
                    return "GL_INT";
                case 0x1405:
                    return "GL_UNSIGNED_INT";
                case 0x1406:
                    return "GL_FLOAT";
                case 0x8033:
                    return "GL_UNSIGNED_SHORT_4_4_4_4";
                case 0x8034:
                    return "GL_UNSIGNED_SHORT_5_5_5_1";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::PrecisionType:
        {
            switch (value)
            {
                case 0x8df0:
                    return "GL_LOW_FLOAT";
                case 0x8df1:
                    return "GL_MEDIUM_FLOAT";
                case 0x8df2:
                    return "GL_HIGH_FLOAT";
                case 0x8df3:
                    return "GL_LOW_INT";
                case 0x8df4:
                    return "GL_MEDIUM_INT";
                case 0x8df5:
                    return "GL_HIGH_INT";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::PrimitiveType:
        {
            switch (value)
            {
                case 0x0:
                    return "GL_POINTS";
                case 0x1:
                    return "GL_LINES";
                case 0x2:
                    return "GL_LINE_LOOP";
                case 0x3:
                    return "GL_LINE_STRIP";
                case 0x4:
                    return "GL_TRIANGLES";
                case 0x5:
                    return "GL_TRIANGLE_STRIP";
                case 0x6:
                    return "GL_TRIANGLE_FAN";
                case 0x7:
                    return "GL_QUADS";
                case 0xa:
                    return "GL_LINES_ADJACENCY";
                case 0xb:
                    return "GL_LINE_STRIP_ADJACENCY";
                case 0xc:
                    return "GL_TRIANGLES_ADJACENCY";
                case 0xd:
                    return "GL_TRIANGLE_STRIP_ADJACENCY";
                case 0xe:
                    return "GL_PATCHES";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::ProgramInterface:
        {
            switch (value)
            {
                case 0x8c8e:
                    return "GL_TRANSFORM_FEEDBACK_BUFFER";
                case 0x92e1:
                    return "GL_UNIFORM";
                case 0x92e2:
                    return "GL_UNIFORM_BLOCK";
                case 0x92e3:
                    return "GL_PROGRAM_INPUT";
                case 0x92e4:
                    return "GL_PROGRAM_OUTPUT";
                case 0x92e5:
                    return "GL_BUFFER_VARIABLE";
                case 0x92e6:
                    return "GL_SHADER_STORAGE_BLOCK";
                case 0x92f4:
                    return "GL_TRANSFORM_FEEDBACK_VARYING";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::ProgramInterfacePName:
        {
            switch (value)
            {
                case 0x92f5:
                    return "GL_ACTIVE_RESOURCES";
                case 0x92f6:
                    return "GL_MAX_NAME_LENGTH";
                case 0x92f7:
                    return "GL_MAX_NUM_ACTIVE_VARIABLES";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::ProgramParameterPName:
        {
            switch (value)
            {
                case 0x8257:
                    return "GL_PROGRAM_BINARY_RETRIEVABLE_HINT";
                case 0x8258:
                    return "GL_PROGRAM_SEPARABLE";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::ProgramPropertyARB:
        {
            switch (value)
            {
                case 0x8267:
                    return "GL_COMPUTE_WORK_GROUP_SIZE";
                case 0x8741:
                    return "GL_PROGRAM_BINARY_LENGTH";
                case 0x8916:
                    return "GL_GEOMETRY_VERTICES_OUT";
                case 0x8917:
                    return "GL_GEOMETRY_INPUT_TYPE";
                case 0x8918:
                    return "GL_GEOMETRY_OUTPUT_TYPE";
                case 0x8a35:
                    return "GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH";
                case 0x8a36:
                    return "GL_ACTIVE_UNIFORM_BLOCKS";
                case 0x8b80:
                    return "GL_DELETE_STATUS";
                case 0x8b82:
                    return "GL_LINK_STATUS";
                case 0x8b83:
                    return "GL_VALIDATE_STATUS";
                case 0x8b84:
                    return "GL_INFO_LOG_LENGTH";
                case 0x8b85:
                    return "GL_ATTACHED_SHADERS";
                case 0x8b86:
                    return "GL_ACTIVE_UNIFORMS";
                case 0x8b87:
                    return "GL_ACTIVE_UNIFORM_MAX_LENGTH";
                case 0x8b89:
                    return "GL_ACTIVE_ATTRIBUTES";
                case 0x8b8a:
                    return "GL_ACTIVE_ATTRIBUTE_MAX_LENGTH";
                case 0x8c76:
                    return "GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH";
                case 0x8c7f:
                    return "GL_TRANSFORM_FEEDBACK_BUFFER_MODE";
                case 0x8c83:
                    return "GL_TRANSFORM_FEEDBACK_VARYINGS";
                case 0x92d9:
                    return "GL_ACTIVE_ATOMIC_COUNTER_BUFFERS";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::QueryObjectParameterName:
        {
            switch (value)
            {
                case 0x8866:
                    return "GL_QUERY_RESULT";
                case 0x8867:
                    return "GL_QUERY_RESULT_AVAILABLE";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::QueryParameterName:
        {
            switch (value)
            {
                case 0x8865:
                    return "GL_CURRENT_QUERY";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::QueryTarget:
        {
            switch (value)
            {
                case 0x8c2f:
                    return "GL_ANY_SAMPLES_PASSED";
                case 0x8c87:
                    return "GL_PRIMITIVES_GENERATED";
                case 0x8c88:
                    return "GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN";
                case 0x8d6a:
                    return "GL_ANY_SAMPLES_PASSED_CONSERVATIVE";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::ReadBufferMode:
        {
            switch (value)
            {
                case 0x404:
                    return "GL_FRONT";
                case 0x405:
                    return "GL_BACK";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::RenderbufferParameterName:
        {
            switch (value)
            {
                case 0x8cab:
                    return "GL_RENDERBUFFER_SAMPLES";
                case 0x8d42:
                    return "GL_RENDERBUFFER_WIDTH";
                case 0x8d43:
                    return "GL_RENDERBUFFER_HEIGHT";
                case 0x8d44:
                    return "GL_RENDERBUFFER_INTERNAL_FORMAT";
                case 0x8d50:
                    return "GL_RENDERBUFFER_RED_SIZE";
                case 0x8d51:
                    return "GL_RENDERBUFFER_GREEN_SIZE";
                case 0x8d52:
                    return "GL_RENDERBUFFER_BLUE_SIZE";
                case 0x8d53:
                    return "GL_RENDERBUFFER_ALPHA_SIZE";
                case 0x8d54:
                    return "GL_RENDERBUFFER_DEPTH_SIZE";
                case 0x8d55:
                    return "GL_RENDERBUFFER_STENCIL_SIZE";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::RenderbufferTarget:
        {
            switch (value)
            {
                case 0x8d41:
                    return "GL_RENDERBUFFER";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::SamplerParameterName:
        {
            switch (value)
            {
                case 0x1004:
                    return "GL_TEXTURE_BORDER_COLOR";
                case 0x2800:
                    return "GL_TEXTURE_MAG_FILTER";
                case 0x2801:
                    return "GL_TEXTURE_MIN_FILTER";
                case 0x2802:
                    return "GL_TEXTURE_WRAP_S";
                case 0x2803:
                    return "GL_TEXTURE_WRAP_T";
                case 0x8072:
                    return "GL_TEXTURE_WRAP_R";
                case 0x813a:
                    return "GL_TEXTURE_MIN_LOD";
                case 0x813b:
                    return "GL_TEXTURE_MAX_LOD";
                case 0x884c:
                    return "GL_TEXTURE_COMPARE_MODE";
                case 0x884d:
                    return "GL_TEXTURE_COMPARE_FUNC";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::ShaderParameterName:
        {
            switch (value)
            {
                case 0x8b4f:
                    return "GL_SHADER_TYPE";
                case 0x8b80:
                    return "GL_DELETE_STATUS";
                case 0x8b81:
                    return "GL_COMPILE_STATUS";
                case 0x8b84:
                    return "GL_INFO_LOG_LENGTH";
                case 0x8b88:
                    return "GL_SHADER_SOURCE_LENGTH";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::ShaderType:
        {
            switch (value)
            {
                case 0x8b30:
                    return "GL_FRAGMENT_SHADER";
                case 0x8b31:
                    return "GL_VERTEX_SHADER";
                case 0x8dd9:
                    return "GL_GEOMETRY_SHADER";
                case 0x8e87:
                    return "GL_TESS_EVALUATION_SHADER";
                case 0x8e88:
                    return "GL_TESS_CONTROL_SHADER";
                case 0x91b9:
                    return "GL_COMPUTE_SHADER";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::StencilFaceDirection:
        {
            switch (value)
            {
                case 0x404:
                    return "GL_FRONT";
                case 0x405:
                    return "GL_BACK";
                case 0x408:
                    return "GL_FRONT_AND_BACK";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::StencilFunction:
        {
            switch (value)
            {
                case 0x200:
                    return "GL_NEVER";
                case 0x201:
                    return "GL_LESS";
                case 0x202:
                    return "GL_EQUAL";
                case 0x203:
                    return "GL_LEQUAL";
                case 0x204:
                    return "GL_GREATER";
                case 0x205:
                    return "GL_NOTEQUAL";
                case 0x206:
                    return "GL_GEQUAL";
                case 0x207:
                    return "GL_ALWAYS";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::StencilOp:
        {
            switch (value)
            {
                case 0x0:
                    return "GL_ZERO";
                case 0x150a:
                    return "GL_INVERT";
                case 0x1e00:
                    return "GL_KEEP";
                case 0x1e01:
                    return "GL_REPLACE";
                case 0x1e02:
                    return "GL_INCR";
                case 0x1e03:
                    return "GL_DECR";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::StringName:
        {
            switch (value)
            {
                case 0x1f00:
                    return "GL_VENDOR";
                case 0x1f01:
                    return "GL_RENDERER";
                case 0x1f02:
                    return "GL_VERSION";
                case 0x1f03:
                    return "GL_EXTENSIONS";
                case 0x8b8c:
                    return "GL_SHADING_LANGUAGE_VERSION";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::SubroutineParameterName:
        {
            switch (value)
            {
                case 0x8a38:
                    return "GL_UNIFORM_SIZE";
                case 0x8a39:
                    return "GL_UNIFORM_NAME_LENGTH";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::SyncCondition:
        {
            switch (value)
            {
                case 0x9117:
                    return "GL_SYNC_GPU_COMMANDS_COMPLETE";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::SyncObjectMask:
        {
            switch (value)
            {
                case 0x1:
                    return "GL_SYNC_FLUSH_COMMANDS_BIT";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::SyncParameterName:
        {
            switch (value)
            {
                case 0x9112:
                    return "GL_OBJECT_TYPE";
                case 0x9113:
                    return "GL_SYNC_CONDITION";
                case 0x9114:
                    return "GL_SYNC_STATUS";
                case 0x9115:
                    return "GL_SYNC_FLAGS";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::SyncStatus:
        {
            switch (value)
            {
                case 0x911a:
                    return "GL_ALREADY_SIGNALED";
                case 0x911b:
                    return "GL_TIMEOUT_EXPIRED";
                case 0x911c:
                    return "GL_CONDITION_SATISFIED";
                case 0x911d:
                    return "GL_WAIT_FAILED";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::TexCoordPointerType:
        {
            switch (value)
            {
                case 0x1402:
                    return "GL_SHORT";
                case 0x1404:
                    return "GL_INT";
                case 0x1406:
                    return "GL_FLOAT";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::TextureEnvMode:
        {
            switch (value)
            {
                case 0xbe2:
                    return "GL_BLEND";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::TextureLayout:
        {
            switch (value)
            {
                case 0x9530:
                    return "GL_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_EXT";
                case 0x9531:
                    return "GL_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_EXT";
                case 0x958d:
                    return "GL_LAYOUT_GENERAL_EXT";
                case 0x958e:
                    return "GL_LAYOUT_COLOR_ATTACHMENT_EXT";
                case 0x958f:
                    return "GL_LAYOUT_DEPTH_STENCIL_ATTACHMENT_EXT";
                case 0x9590:
                    return "GL_LAYOUT_DEPTH_STENCIL_READ_ONLY_EXT";
                case 0x9591:
                    return "GL_LAYOUT_SHADER_READ_ONLY_EXT";
                case 0x9592:
                    return "GL_LAYOUT_TRANSFER_SRC_EXT";
                case 0x9593:
                    return "GL_LAYOUT_TRANSFER_DST_EXT";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::TextureMagFilter:
        {
            switch (value)
            {
                case 0x2600:
                    return "GL_NEAREST";
                case 0x2601:
                    return "GL_LINEAR";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::TextureMinFilter:
        {
            switch (value)
            {
                case 0x2600:
                    return "GL_NEAREST";
                case 0x2601:
                    return "GL_LINEAR";
                case 0x2700:
                    return "GL_NEAREST_MIPMAP_NEAREST";
                case 0x2701:
                    return "GL_LINEAR_MIPMAP_NEAREST";
                case 0x2702:
                    return "GL_NEAREST_MIPMAP_LINEAR";
                case 0x2703:
                    return "GL_LINEAR_MIPMAP_LINEAR";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::TextureParameterName:
        {
            switch (value)
            {
                case 0x1000:
                    return "GL_TEXTURE_WIDTH";
                case 0x1001:
                    return "GL_TEXTURE_HEIGHT";
                case 0x1003:
                    return "GL_TEXTURE_INTERNAL_FORMAT";
                case 0x1004:
                    return "GL_TEXTURE_BORDER_COLOR";
                case 0x2800:
                    return "GL_TEXTURE_MAG_FILTER";
                case 0x2801:
                    return "GL_TEXTURE_MIN_FILTER";
                case 0x2802:
                    return "GL_TEXTURE_WRAP_S";
                case 0x2803:
                    return "GL_TEXTURE_WRAP_T";
                case 0x805c:
                    return "GL_TEXTURE_RED_SIZE";
                case 0x805d:
                    return "GL_TEXTURE_GREEN_SIZE";
                case 0x805e:
                    return "GL_TEXTURE_BLUE_SIZE";
                case 0x805f:
                    return "GL_TEXTURE_ALPHA_SIZE";
                case 0x8072:
                    return "GL_TEXTURE_WRAP_R";
                case 0x813a:
                    return "GL_TEXTURE_MIN_LOD";
                case 0x813b:
                    return "GL_TEXTURE_MAX_LOD";
                case 0x813c:
                    return "GL_TEXTURE_BASE_LEVEL";
                case 0x813d:
                    return "GL_TEXTURE_MAX_LEVEL";
                case 0x884c:
                    return "GL_TEXTURE_COMPARE_MODE";
                case 0x884d:
                    return "GL_TEXTURE_COMPARE_FUNC";
                case 0x8e42:
                    return "GL_TEXTURE_SWIZZLE_R";
                case 0x8e43:
                    return "GL_TEXTURE_SWIZZLE_G";
                case 0x8e44:
                    return "GL_TEXTURE_SWIZZLE_B";
                case 0x8e45:
                    return "GL_TEXTURE_SWIZZLE_A";
                case 0x90ea:
                    return "GL_DEPTH_STENCIL_TEXTURE_MODE";
                case 0x9580:
                    return "GL_TEXTURE_TILING_EXT";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::TextureTarget:
        {
            switch (value)
            {
                case 0xde1:
                    return "GL_TEXTURE_2D";
                case 0x806f:
                    return "GL_TEXTURE_3D";
                case 0x8513:
                    return "GL_TEXTURE_CUBE_MAP";
                case 0x8515:
                    return "GL_TEXTURE_CUBE_MAP_POSITIVE_X";
                case 0x8516:
                    return "GL_TEXTURE_CUBE_MAP_NEGATIVE_X";
                case 0x8517:
                    return "GL_TEXTURE_CUBE_MAP_POSITIVE_Y";
                case 0x8518:
                    return "GL_TEXTURE_CUBE_MAP_NEGATIVE_Y";
                case 0x8519:
                    return "GL_TEXTURE_CUBE_MAP_POSITIVE_Z";
                case 0x851a:
                    return "GL_TEXTURE_CUBE_MAP_NEGATIVE_Z";
                case 0x8c1a:
                    return "GL_TEXTURE_2D_ARRAY";
                case 0x9009:
                    return "GL_TEXTURE_CUBE_MAP_ARRAY";
                case 0x9100:
                    return "GL_TEXTURE_2D_MULTISAMPLE";
                case 0x9102:
                    return "GL_TEXTURE_2D_MULTISAMPLE_ARRAY";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::TextureUnit:
        {
            switch (value)
            {
                case 0x84c0:
                    return "GL_TEXTURE0";
                case 0x84c1:
                    return "GL_TEXTURE1";
                case 0x84c2:
                    return "GL_TEXTURE2";
                case 0x84c3:
                    return "GL_TEXTURE3";
                case 0x84c4:
                    return "GL_TEXTURE4";
                case 0x84c5:
                    return "GL_TEXTURE5";
                case 0x84c6:
                    return "GL_TEXTURE6";
                case 0x84c7:
                    return "GL_TEXTURE7";
                case 0x84c8:
                    return "GL_TEXTURE8";
                case 0x84c9:
                    return "GL_TEXTURE9";
                case 0x84ca:
                    return "GL_TEXTURE10";
                case 0x84cb:
                    return "GL_TEXTURE11";
                case 0x84cc:
                    return "GL_TEXTURE12";
                case 0x84cd:
                    return "GL_TEXTURE13";
                case 0x84ce:
                    return "GL_TEXTURE14";
                case 0x84cf:
                    return "GL_TEXTURE15";
                case 0x84d0:
                    return "GL_TEXTURE16";
                case 0x84d1:
                    return "GL_TEXTURE17";
                case 0x84d2:
                    return "GL_TEXTURE18";
                case 0x84d3:
                    return "GL_TEXTURE19";
                case 0x84d4:
                    return "GL_TEXTURE20";
                case 0x84d5:
                    return "GL_TEXTURE21";
                case 0x84d6:
                    return "GL_TEXTURE22";
                case 0x84d7:
                    return "GL_TEXTURE23";
                case 0x84d8:
                    return "GL_TEXTURE24";
                case 0x84d9:
                    return "GL_TEXTURE25";
                case 0x84da:
                    return "GL_TEXTURE26";
                case 0x84db:
                    return "GL_TEXTURE27";
                case 0x84dc:
                    return "GL_TEXTURE28";
                case 0x84dd:
                    return "GL_TEXTURE29";
                case 0x84de:
                    return "GL_TEXTURE30";
                case 0x84df:
                    return "GL_TEXTURE31";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::TextureWrapMode:
        {
            switch (value)
            {
                case 0x2901:
                    return "GL_REPEAT";
                case 0x812d:
                    return "GL_CLAMP_TO_BORDER";
                case 0x812f:
                    return "GL_CLAMP_TO_EDGE";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::TransformFeedbackPName:
        {
            switch (value)
            {
                case 0x8c84:
                    return "GL_TRANSFORM_FEEDBACK_BUFFER_START";
                case 0x8c85:
                    return "GL_TRANSFORM_FEEDBACK_BUFFER_SIZE";
                case 0x8c8f:
                    return "GL_TRANSFORM_FEEDBACK_BUFFER_BINDING";
                case 0x8e23:
                    return "GL_TRANSFORM_FEEDBACK_PAUSED";
                case 0x8e24:
                    return "GL_TRANSFORM_FEEDBACK_ACTIVE";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::UniformBlockPName:
        {
            switch (value)
            {
                case 0x8a3f:
                    return "GL_UNIFORM_BLOCK_BINDING";
                case 0x8a40:
                    return "GL_UNIFORM_BLOCK_DATA_SIZE";
                case 0x8a41:
                    return "GL_UNIFORM_BLOCK_NAME_LENGTH";
                case 0x8a42:
                    return "GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS";
                case 0x8a43:
                    return "GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES";
                case 0x8a44:
                    return "GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER";
                case 0x8a46:
                    return "GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::UniformPName:
        {
            switch (value)
            {
                case 0x8a37:
                    return "GL_UNIFORM_TYPE";
                case 0x8a38:
                    return "GL_UNIFORM_SIZE";
                case 0x8a39:
                    return "GL_UNIFORM_NAME_LENGTH";
                case 0x8a3a:
                    return "GL_UNIFORM_BLOCK_INDEX";
                case 0x8a3b:
                    return "GL_UNIFORM_OFFSET";
                case 0x8a3c:
                    return "GL_UNIFORM_ARRAY_STRIDE";
                case 0x8a3d:
                    return "GL_UNIFORM_MATRIX_STRIDE";
                case 0x8a3e:
                    return "GL_UNIFORM_IS_ROW_MAJOR";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::UseProgramStageMask:
        {
            switch (value)
            {
                case 0x1:
                    return "GL_VERTEX_SHADER_BIT";
                case 0x2:
                    return "GL_FRAGMENT_SHADER_BIT";
                case 0x4:
                    return "GL_GEOMETRY_SHADER_BIT";
                case 0x8:
                    return "GL_TESS_CONTROL_SHADER_BIT";
                case 0x10:
                    return "GL_TESS_EVALUATION_SHADER_BIT";
                case 0x20:
                    return "GL_COMPUTE_SHADER_BIT";
                case 0xffffffff:
                    return "GL_ALL_SHADER_BITS";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::VertexArrayPName:
        {
            switch (value)
            {
                case 0x82d5:
                    return "GL_VERTEX_ATTRIB_RELATIVE_OFFSET";
                case 0x8622:
                    return "GL_VERTEX_ATTRIB_ARRAY_ENABLED";
                case 0x8623:
                    return "GL_VERTEX_ATTRIB_ARRAY_SIZE";
                case 0x8624:
                    return "GL_VERTEX_ATTRIB_ARRAY_STRIDE";
                case 0x8625:
                    return "GL_VERTEX_ATTRIB_ARRAY_TYPE";
                case 0x886a:
                    return "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED";
                case 0x88fd:
                    return "GL_VERTEX_ATTRIB_ARRAY_INTEGER";
                case 0x88fe:
                    return "GL_VERTEX_ATTRIB_ARRAY_DIVISOR";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::VertexAttribEnum:
        {
            switch (value)
            {
                case 0x8622:
                    return "GL_VERTEX_ATTRIB_ARRAY_ENABLED";
                case 0x8623:
                    return "GL_VERTEX_ATTRIB_ARRAY_SIZE";
                case 0x8624:
                    return "GL_VERTEX_ATTRIB_ARRAY_STRIDE";
                case 0x8625:
                    return "GL_VERTEX_ATTRIB_ARRAY_TYPE";
                case 0x8626:
                    return "GL_CURRENT_VERTEX_ATTRIB";
                case 0x886a:
                    return "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED";
                case 0x889f:
                    return "GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING";
                case 0x88fd:
                    return "GL_VERTEX_ATTRIB_ARRAY_INTEGER";
                case 0x88fe:
                    return "GL_VERTEX_ATTRIB_ARRAY_DIVISOR";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::VertexAttribPointerType:
        {
            switch (value)
            {
                case 0x1400:
                    return "GL_BYTE";
                case 0x1401:
                    return "GL_UNSIGNED_BYTE";
                case 0x1402:
                    return "GL_SHORT";
                case 0x1403:
                    return "GL_UNSIGNED_SHORT";
                case 0x1404:
                    return "GL_INT";
                case 0x1405:
                    return "GL_UNSIGNED_INT";
                case 0x1406:
                    return "GL_FLOAT";
                case 0x140b:
                    return "GL_HALF_FLOAT";
                case 0x140c:
                    return "GL_FIXED";
                case 0x8368:
                    return "GL_UNSIGNED_INT_2_10_10_10_REV";
                case 0x8c3b:
                    return "GL_UNSIGNED_INT_10F_11F_11F_REV";
                case 0x8d9f:
                    return "GL_INT_2_10_10_10_REV";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::VertexAttribType:
        {
            switch (value)
            {
                case 0x1400:
                    return "GL_BYTE";
                case 0x1401:
                    return "GL_UNSIGNED_BYTE";
                case 0x1402:
                    return "GL_SHORT";
                case 0x1403:
                    return "GL_UNSIGNED_SHORT";
                case 0x1404:
                    return "GL_INT";
                case 0x1405:
                    return "GL_UNSIGNED_INT";
                case 0x1406:
                    return "GL_FLOAT";
                case 0x140b:
                    return "GL_HALF_FLOAT";
                case 0x140c:
                    return "GL_FIXED";
                case 0x8368:
                    return "GL_UNSIGNED_INT_2_10_10_10_REV";
                case 0x8c3b:
                    return "GL_UNSIGNED_INT_10F_11F_11F_REV";
                case 0x8d9f:
                    return "GL_INT_2_10_10_10_REV";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::VertexBufferObjectParameter:
        {
            switch (value)
            {
                case 0x8764:
                    return "GL_BUFFER_SIZE";
                case 0x8765:
                    return "GL_BUFFER_USAGE";
                case 0x88bc:
                    return "GL_BUFFER_MAPPED";
                case 0x911f:
                    return "GL_BUFFER_ACCESS_FLAGS";
                case 0x9120:
                    return "GL_BUFFER_MAP_LENGTH";
                case 0x9121:
                    return "GL_BUFFER_MAP_OFFSET";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::VertexBufferObjectUsage:
        {
            switch (value)
            {
                case 0x88e0:
                    return "GL_STREAM_DRAW";
                case 0x88e1:
                    return "GL_STREAM_READ";
                case 0x88e2:
                    return "GL_STREAM_COPY";
                case 0x88e4:
                    return "GL_STATIC_DRAW";
                case 0x88e5:
                    return "GL_STATIC_READ";
                case 0x88e6:
                    return "GL_STATIC_COPY";
                case 0x88e8:
                    return "GL_DYNAMIC_DRAW";
                case 0x88e9:
                    return "GL_DYNAMIC_READ";
                case 0x88ea:
                    return "GL_DYNAMIC_COPY";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::VertexPointerType:
        {
            switch (value)
            {
                case 0x1402:
                    return "GL_SHORT";
                case 0x1404:
                    return "GL_INT";
                case 0x1406:
                    return "GL_FLOAT";
                default:
                    return "EnumUnknown";
            }
        }

        case GLenumGroup::VertexProvokingMode:
        {
            switch (value)
            {
                case 0x8e4d:
                    return "GL_FIRST_VERTEX_CONVENTION";
                case 0x8e4e:
                    return "GL_LAST_VERTEX_CONVENTION";
                default:
                    return "EnumUnknown";
            }
        }

        default:
            UNREACHABLE();
            return "EnumUnknown";
    }
}

std::string GLbitfieldToString(GLenumGroup enumGroup, unsigned int value)
{
    std::stringstream st;

    const angle::BitSet<32> bitSet(value);
    bool first = true;
    for (const auto index : bitSet)
    {
        if (!first)
        {
            st << " | ";
        }
        first = false;

        unsigned int mask = 1u << index;
        st << GLenumToString(enumGroup, mask);
    }

    return st.str();
}

}  // namespace gl
