// GENERATED FILE - DO NOT EDIT.
// Generated by gen_extensions.py using data from registry_xml.py and gl.xml
//
// Copyright 2021 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.
//
// gles_extensions_autogen.h: GLES extension strings information.

#include "anglebase/no_destructor.h"
#include "libANGLE/Caps.h"

namespace gl
{
const ExtensionInfoMap &GetExtensionInfoMap()
{
    auto buildExtensionInfoMap = []() {
        auto enableableExtension = [](ExtensionBool member) {
            ExtensionInfo info;
            info.Requestable      = true;
            info.ExtensionsMember = member;
            return info;
        };

        auto esOnlyExtension = [](ExtensionBool member) {
            ExtensionInfo info;
            info.ExtensionsMember = member;
            return info;
        };

        // clang-format off
        ExtensionInfoMap map;

        // GLES 2.0 extension strings
        // --------------------------
        map["GL_EXT_base_instance"] = enableableExtension(&Extensions::baseInstanceEXT);
        map["GL_KHR_blend_equation_advanced"] = enableableExtension(&Extensions::blendEquationAdvancedKHR);
        map["GL_KHR_blend_equation_advanced_coherent"] = enableableExtension(&Extensions::blendEquationAdvancedCoherentKHR);
        map["GL_EXT_blend_func_extended"] = enableableExtension(&Extensions::blendFuncExtendedEXT);
        map["GL_EXT_blend_minmax"] = enableableExtension(&Extensions::blendMinmaxEXT);
        map["GL_EXT_buffer_storage"] = enableableExtension(&Extensions::bufferStorageEXT);
        map["GL_EXT_clear_texture"] = enableableExtension(&Extensions::clearTextureEXT);
        map["GL_EXT_clip_control"] = enableableExtension(&Extensions::clipControlEXT);
        map["GL_EXT_clip_cull_distance"] = enableableExtension(&Extensions::clipCullDistanceEXT);
        map["GL_APPLE_clip_distance"] = enableableExtension(&Extensions::clipDistanceAPPLE);
        map["GL_EXT_color_buffer_float"] = enableableExtension(&Extensions::colorBufferFloatEXT);
        map["GL_EXT_color_buffer_half_float"] = enableableExtension(&Extensions::colorBufferHalfFloatEXT);
        map["GL_EXT_compressed_ETC1_RGB8_sub_texture"] = enableableExtension(&Extensions::compressedETC1RGB8SubTextureEXT);
        map["GL_OES_compressed_ETC1_RGB8_texture"] = enableableExtension(&Extensions::compressedETC1RGB8TextureOES);
        map["GL_OES_compressed_paletted_texture"] = enableableExtension(&Extensions::compressedPalettedTextureOES);
        map["GL_EXT_conservative_depth"] = enableableExtension(&Extensions::conservativeDepthEXT);
        map["GL_EXT_copy_image"] = enableableExtension(&Extensions::copyImageEXT);
        map["GL_OES_copy_image"] = enableableExtension(&Extensions::copyImageOES);
        map["GL_KHR_debug"] = esOnlyExtension(&Extensions::debugKHR);
        map["GL_EXT_debug_label"] = esOnlyExtension(&Extensions::debugLabelEXT);
        map["GL_EXT_debug_marker"] = esOnlyExtension(&Extensions::debugMarkerEXT);
        map["GL_OES_depth24"] = esOnlyExtension(&Extensions::depth24OES);
        map["GL_OES_depth32"] = esOnlyExtension(&Extensions::depth32OES);
        map["GL_EXT_depth_clamp"] = enableableExtension(&Extensions::depthClampEXT);
        map["GL_ANGLE_depth_texture"] = esOnlyExtension(&Extensions::depthTextureANGLE);
        map["GL_OES_depth_texture"] = esOnlyExtension(&Extensions::depthTextureOES);
        map["GL_OES_depth_texture_cube_map"] = enableableExtension(&Extensions::depthTextureCubeMapOES);
        map["GL_EXT_discard_framebuffer"] = esOnlyExtension(&Extensions::discardFramebufferEXT);
        map["GL_EXT_disjoint_timer_query"] = enableableExtension(&Extensions::disjointTimerQueryEXT);
        map["GL_EXT_draw_buffers"] = enableableExtension(&Extensions::drawBuffersEXT);
        map["GL_EXT_draw_buffers_indexed"] = enableableExtension(&Extensions::drawBuffersIndexedEXT);
        map["GL_OES_draw_buffers_indexed"] = enableableExtension(&Extensions::drawBuffersIndexedOES);
        map["GL_EXT_draw_elements_base_vertex"] = enableableExtension(&Extensions::drawElementsBaseVertexEXT);
        map["GL_OES_draw_elements_base_vertex"] = enableableExtension(&Extensions::drawElementsBaseVertexOES);
        map["GL_EXT_draw_instanced"] = enableableExtension(&Extensions::drawInstancedEXT);
        map["GL_OES_EGL_image"] = enableableExtension(&Extensions::EGLImageOES);
        map["GL_EXT_EGL_image_array"] = enableableExtension(&Extensions::EGLImageArrayEXT);
        map["GL_OES_EGL_image_external"] = enableableExtension(&Extensions::EGLImageExternalOES);
        map["GL_OES_EGL_image_external_essl3"] = enableableExtension(&Extensions::EGLImageExternalEssl3OES);
        map["GL_EXT_EGL_image_external_wrap_modes"] = enableableExtension(&Extensions::EGLImageExternalWrapModesEXT);
        map["GL_EXT_EGL_image_storage"] = enableableExtension(&Extensions::EGLImageStorageEXT);
        map["GL_EXT_EGL_image_storage_compression"] = enableableExtension(&Extensions::EGLImageStorageCompressionEXT);
        map["GL_NV_EGL_stream_consumer_external"] = enableableExtension(&Extensions::EGLStreamConsumerExternalNV);
        map["GL_OES_EGL_sync"] = esOnlyExtension(&Extensions::EGLSyncOES);
        map["GL_OES_element_index_uint"] = enableableExtension(&Extensions::elementIndexUintOES);
        map["GL_ANDROID_extension_pack_es31a"] = esOnlyExtension(&Extensions::extensionPackEs31aANDROID);
        map["GL_EXT_external_buffer"] = enableableExtension(&Extensions::externalBufferEXT);
        map["GL_OES_fbo_render_mipmap"] = enableableExtension(&Extensions::fboRenderMipmapOES);
        map["GL_NV_fence"] = esOnlyExtension(&Extensions::fenceNV);
        map["GL_EXT_float_blend"] = enableableExtension(&Extensions::floatBlendEXT);
        map["GL_EXT_frag_depth"] = enableableExtension(&Extensions::fragDepthEXT);
        map["GL_EXT_fragment_shading_rate"] = enableableExtension(&Extensions::fragmentShadingRateEXT);
        map["GL_EXT_fragment_shading_rate_attachment"] = enableableExtension(&Extensions::fragmentShadingRateAttachmentEXT);
        map["GL_EXT_fragment_shading_rate_primitive"] = enableableExtension(&Extensions::fragmentShadingRatePrimitiveEXT);
        map["GL_ANGLE_framebuffer_blit"] = enableableExtension(&Extensions::framebufferBlitANGLE);
        map["GL_NV_framebuffer_blit"] = enableableExtension(&Extensions::framebufferBlitNV);
        map["GL_MESA_framebuffer_flip_y"] = enableableExtension(&Extensions::framebufferFlipYMESA);
        map["GL_QCOM_framebuffer_foveated"] = enableableExtension(&Extensions::framebufferFoveatedQCOM);
        map["GL_EXT_geometry_shader"] = enableableExtension(&Extensions::geometryShaderEXT);
        map["GL_OES_geometry_shader"] = enableableExtension(&Extensions::geometryShaderOES);
        map["GL_OES_get_program_binary"] = enableableExtension(&Extensions::getProgramBinaryOES);
        map["GL_EXT_gpu_shader5"] = enableableExtension(&Extensions::gpuShader5EXT);
        map["GL_OES_gpu_shader5"] = enableableExtension(&Extensions::gpuShader5OES);
        map["GL_ANGLE_instanced_arrays"] = enableableExtension(&Extensions::instancedArraysANGLE);
        map["GL_EXT_instanced_arrays"] = enableableExtension(&Extensions::instancedArraysEXT);
        map["GL_OES_mapbuffer"] = enableableExtension(&Extensions::mapbufferOES);
        map["GL_EXT_map_buffer_range"] = enableableExtension(&Extensions::mapBufferRangeEXT);
        map["GL_EXT_memory_object"] = enableableExtension(&Extensions::memoryObjectEXT);
        map["GL_EXT_memory_object_fd"] = enableableExtension(&Extensions::memoryObjectFdEXT);
        map["GL_EXT_multi_draw_arrays"] = enableableExtension(&Extensions::multiDrawArraysEXT);
        map["GL_EXT_multi_draw_indirect"] = enableableExtension(&Extensions::multiDrawIndirectEXT);
        map["GL_EXT_multisample_compatibility"] = esOnlyExtension(&Extensions::multisampleCompatibilityEXT);
        map["GL_EXT_multisampled_render_to_texture"] = enableableExtension(&Extensions::multisampledRenderToTextureEXT);
        map["GL_EXT_multisampled_render_to_texture2"] = enableableExtension(&Extensions::multisampledRenderToTexture2EXT);
        map["GL_OVR_multiview"] = enableableExtension(&Extensions::multiviewOVR);
        map["GL_OVR_multiview2"] = enableableExtension(&Extensions::multiview2OVR);
        map["GL_OVR_multiview_multisampled_render_to_texture"] = enableableExtension(&Extensions::multiviewMultisampledRenderToTextureOVR);
        map["GL_KHR_no_error"] = esOnlyExtension(&Extensions::noErrorKHR);
        map["GL_EXT_occlusion_query_boolean"] = enableableExtension(&Extensions::occlusionQueryBooleanEXT);
        map["GL_OES_packed_depth_stencil"] = esOnlyExtension(&Extensions::packedDepthStencilOES);
        map["GL_ANGLE_pack_reverse_row_order"] = enableableExtension(&Extensions::packReverseRowOrderANGLE);
        map["GL_NV_pack_subimage"] = enableableExtension(&Extensions::packSubimageNV);
        map["GL_KHR_parallel_shader_compile"] = enableableExtension(&Extensions::parallelShaderCompileKHR);
        map["GL_AMD_performance_monitor"] = esOnlyExtension(&Extensions::performanceMonitorAMD);
        map["GL_NV_pixel_buffer_object"] = enableableExtension(&Extensions::pixelBufferObjectNV);
        map["GL_NV_polygon_mode"] = enableableExtension(&Extensions::polygonModeNV);
        map["GL_EXT_polygon_offset_clamp"] = enableableExtension(&Extensions::polygonOffsetClampEXT);
        map["GL_EXT_primitive_bounding_box"] = enableableExtension(&Extensions::primitiveBoundingBoxEXT);
        map["GL_OES_primitive_bounding_box"] = enableableExtension(&Extensions::primitiveBoundingBoxOES);
        map["GL_EXT_protected_textures"] = enableableExtension(&Extensions::protectedTexturesEXT);
        map["GL_EXT_pvrtc_sRGB"] = enableableExtension(&Extensions::pvrtcSRGBEXT);
        map["GL_NV_read_depth"] = enableableExtension(&Extensions::readDepthNV);
        map["GL_NV_read_depth_stencil"] = enableableExtension(&Extensions::readDepthStencilNV);
        map["GL_EXT_read_format_bgra"] = enableableExtension(&Extensions::readFormatBgraEXT);
        map["GL_NV_read_stencil"] = enableableExtension(&Extensions::readStencilNV);
        map["GL_QCOM_render_shared_exponent"] = enableableExtension(&Extensions::renderSharedExponentQCOM);
        map["GL_EXT_render_snorm"] = enableableExtension(&Extensions::renderSnormEXT);
        map["GL_OES_required_internalformat"] = enableableExtension(&Extensions::requiredInternalformatOES);
        map["GL_OES_rgb8_rgba8"] = enableableExtension(&Extensions::rgb8Rgba8OES);
        map["GL_ARM_rgba8"] = enableableExtension(&Extensions::rgba8ARM);
        map["GL_KHR_robust_buffer_access_behavior"] = esOnlyExtension(&Extensions::robustBufferAccessBehaviorKHR);
        map["GL_EXT_robustness"] = esOnlyExtension(&Extensions::robustnessEXT);
        map["GL_KHR_robustness"] = esOnlyExtension(&Extensions::robustnessKHR);
        map["GL_NV_robustness_video_memory_purge"] = esOnlyExtension(&Extensions::robustnessVideoMemoryPurgeNV);
        map["GL_OES_sample_shading"] = enableableExtension(&Extensions::sampleShadingOES);
        map["GL_OES_sample_variables"] = enableableExtension(&Extensions::sampleVariablesOES);
        map["GL_EXT_semaphore"] = enableableExtension(&Extensions::semaphoreEXT);
        map["GL_EXT_semaphore_fd"] = enableableExtension(&Extensions::semaphoreFdEXT);
        map["GL_EXT_separate_depth_stencil"] = enableableExtension(&Extensions::separateDepthStencilEXT);
        map["GL_EXT_separate_shader_objects"] = enableableExtension(&Extensions::separateShaderObjectsEXT);
        map["GL_ARM_shader_framebuffer_fetch"] = enableableExtension(&Extensions::shaderFramebufferFetchARM);
        map["GL_EXT_shader_framebuffer_fetch"] = enableableExtension(&Extensions::shaderFramebufferFetchEXT);
        map["GL_ARM_shader_framebuffer_fetch_depth_stencil"] = enableableExtension(&Extensions::shaderFramebufferFetchDepthStencilARM);
        map["GL_EXT_shader_framebuffer_fetch_non_coherent"] = enableableExtension(&Extensions::shaderFramebufferFetchNonCoherentEXT);
        map["GL_OES_shader_image_atomic"] = enableableExtension(&Extensions::shaderImageAtomicOES);
        map["GL_EXT_shader_io_blocks"] = enableableExtension(&Extensions::shaderIoBlocksEXT);
        map["GL_OES_shader_io_blocks"] = enableableExtension(&Extensions::shaderIoBlocksOES);
        map["GL_OES_shader_multisample_interpolation"] = enableableExtension(&Extensions::shaderMultisampleInterpolationOES);
        map["GL_EXT_shader_non_constant_global_initializers"] = enableableExtension(&Extensions::shaderNonConstantGlobalInitializersEXT);
        map["GL_NV_shader_noperspective_interpolation"] = enableableExtension(&Extensions::shaderNoperspectiveInterpolationNV);
        map["GL_EXT_shader_texture_lod"] = enableableExtension(&Extensions::shaderTextureLodEXT);
        map["GL_EXT_shader_texture_samples"] = enableableExtension(&Extensions::shaderTextureSamplesEXT);
        map["GL_QCOM_shading_rate"] = enableableExtension(&Extensions::shadingRateQCOM);
        map["GL_EXT_shadow_samplers"] = enableableExtension(&Extensions::shadowSamplersEXT);
        map["GL_EXT_sRGB"] = enableableExtension(&Extensions::sRGBEXT);
        map["GL_EXT_sRGB_write_control"] = enableableExtension(&Extensions::sRGBWriteControlEXT);
        map["GL_OES_standard_derivatives"] = enableableExtension(&Extensions::standardDerivativesOES);
        map["GL_OES_surfaceless_context"] = esOnlyExtension(&Extensions::surfacelessContextOES);
        map["GL_EXT_tessellation_shader"] = enableableExtension(&Extensions::tessellationShaderEXT);
        map["GL_OES_tessellation_shader"] = enableableExtension(&Extensions::tessellationShaderOES);
        map["GL_OES_texture_3D"] = enableableExtension(&Extensions::texture3DOES);
        map["GL_EXT_texture_border_clamp"] = enableableExtension(&Extensions::textureBorderClampEXT);
        map["GL_OES_texture_border_clamp"] = enableableExtension(&Extensions::textureBorderClampOES);
        map["GL_EXT_texture_buffer"] = enableableExtension(&Extensions::textureBufferEXT);
        map["GL_OES_texture_buffer"] = enableableExtension(&Extensions::textureBufferOES);
        map["GL_OES_texture_compression_astc"] = enableableExtension(&Extensions::textureCompressionAstcOES);
        map["GL_EXT_texture_compression_astc_decode_mode"] = enableableExtension(&Extensions::textureCompressionAstcDecodeModeEXT);
        map["GL_EXT_texture_compression_astc_decode_mode_rgb9e5"] = enableableExtension(&Extensions::textureCompressionAstcDecodeModeRgb9e5EXT);
        map["GL_KHR_texture_compression_astc_hdr"] = enableableExtension(&Extensions::textureCompressionAstcHdrKHR);
        map["GL_KHR_texture_compression_astc_ldr"] = enableableExtension(&Extensions::textureCompressionAstcLdrKHR);
        map["GL_KHR_texture_compression_astc_sliced_3d"] = enableableExtension(&Extensions::textureCompressionAstcSliced3dKHR);
        map["GL_EXT_texture_compression_bptc"] = enableableExtension(&Extensions::textureCompressionBptcEXT);
        map["GL_EXT_texture_compression_dxt1"] = enableableExtension(&Extensions::textureCompressionDxt1EXT);
        map["GL_IMG_texture_compression_pvrtc"] = enableableExtension(&Extensions::textureCompressionPvrtcIMG);
        map["GL_IMG_texture_compression_pvrtc2"] = enableableExtension(&Extensions::textureCompressionPvrtc2IMG);
        map["GL_EXT_texture_compression_rgtc"] = enableableExtension(&Extensions::textureCompressionRgtcEXT);
        map["GL_EXT_texture_compression_s3tc"] = enableableExtension(&Extensions::textureCompressionS3tcEXT);
        map["GL_EXT_texture_compression_s3tc_srgb"] = enableableExtension(&Extensions::textureCompressionS3tcSrgbEXT);
        map["GL_EXT_texture_cube_map_array"] = enableableExtension(&Extensions::textureCubeMapArrayEXT);
        map["GL_OES_texture_cube_map_array"] = enableableExtension(&Extensions::textureCubeMapArrayOES);
        map["GL_EXT_texture_filter_anisotropic"] = enableableExtension(&Extensions::textureFilterAnisotropicEXT);
        map["GL_EXT_texture_filter_minmax"] = enableableExtension(&Extensions::textureFilterMinmaxEXT);
        map["GL_OES_texture_float"] = enableableExtension(&Extensions::textureFloatOES);
        map["GL_OES_texture_float_linear"] = enableableExtension(&Extensions::textureFloatLinearOES);
        map["GL_EXT_texture_format_BGRA8888"] = enableableExtension(&Extensions::textureFormatBGRA8888EXT);
        map["GL_EXT_texture_format_sRGB_override"] = enableableExtension(&Extensions::textureFormatSRGBOverrideEXT);
        map["GL_QCOM_texture_foveated"] = enableableExtension(&Extensions::textureFoveatedQCOM);
        map["GL_OES_texture_half_float"] = enableableExtension(&Extensions::textureHalfFloatOES);
        map["GL_OES_texture_half_float_linear"] = enableableExtension(&Extensions::textureHalfFloatLinearOES);
        map["GL_QCOM_texture_lod_bias"] = enableableExtension(&Extensions::textureLodBiasQCOM);
        map["GL_EXT_texture_mirror_clamp_to_edge"] = enableableExtension(&Extensions::textureMirrorClampToEdgeEXT);
        map["GL_EXT_texture_norm16"] = enableableExtension(&Extensions::textureNorm16EXT);
        map["GL_OES_texture_npot"] = enableableExtension(&Extensions::textureNpotOES);
        map["GL_EXT_texture_query_lod"] = enableableExtension(&Extensions::textureQueryLodEXT);
        map["GL_EXT_texture_rg"] = enableableExtension(&Extensions::textureRgEXT);
        map["GL_EXT_texture_shadow_lod"] = enableableExtension(&Extensions::textureShadowLodEXT);
        map["GL_EXT_texture_sRGB_decode"] = enableableExtension(&Extensions::textureSRGBDecodeEXT);
        map["GL_EXT_texture_sRGB_R8"] = enableableExtension(&Extensions::textureSRGBR8EXT);
        map["GL_EXT_texture_sRGB_RG8"] = enableableExtension(&Extensions::textureSRGBRG8EXT);
        map["GL_OES_texture_stencil8"] = enableableExtension(&Extensions::textureStencil8OES);
        map["GL_EXT_texture_storage"] = enableableExtension(&Extensions::textureStorageEXT);
        map["GL_EXT_texture_storage_compression"] = enableableExtension(&Extensions::textureStorageCompressionEXT);
        map["GL_OES_texture_storage_multisample_2d_array"] = enableableExtension(&Extensions::textureStorageMultisample2dArrayOES);
        map["GL_EXT_texture_type_2_10_10_10_REV"] = enableableExtension(&Extensions::textureType2101010REVEXT);
        map["GL_ARM_texture_unnormalized_coordinates"] = enableableExtension(&Extensions::textureUnnormalizedCoordinatesARM);
        map["GL_ANGLE_texture_usage"] = enableableExtension(&Extensions::textureUsageANGLE);
        map["GL_QCOM_tiled_rendering"] = enableableExtension(&Extensions::tiledRenderingQCOM);
        map["GL_ANGLE_translated_shader_source"] = esOnlyExtension(&Extensions::translatedShaderSourceANGLE);
        map["GL_EXT_unpack_subimage"] = enableableExtension(&Extensions::unpackSubimageEXT);
        map["GL_OES_vertex_array_object"] = enableableExtension(&Extensions::vertexArrayObjectOES);
        map["GL_OES_vertex_half_float"] = enableableExtension(&Extensions::vertexHalfFloatOES);
        map["GL_OES_vertex_type_10_10_10_2"] = enableableExtension(&Extensions::vertexType1010102OES);
        map["GL_EXT_YUV_target"] = enableableExtension(&Extensions::YUVTargetEXT);

        // ANGLE unofficial extension strings
        // ----------------------------------
        map["GL_ANGLE_base_vertex_base_instance"] = enableableExtension(&Extensions::baseVertexBaseInstanceANGLE);
        map["GL_ANGLE_base_vertex_base_instance_shader_builtin"] = enableableExtension(&Extensions::baseVertexBaseInstanceShaderBuiltinANGLE);
        map["GL_CHROMIUM_bind_generates_resource"] = esOnlyExtension(&Extensions::bindGeneratesResourceCHROMIUM);
        map["GL_CHROMIUM_bind_uniform_location"] = esOnlyExtension(&Extensions::bindUniformLocationCHROMIUM);
        map["GL_ANGLE_blob_cache"] = enableableExtension(&Extensions::blobCacheANGLE);
        map["GL_ANGLE_client_arrays"] = esOnlyExtension(&Extensions::clientArraysANGLE);
        map["GL_ANGLE_clip_cull_distance"] = enableableExtension(&Extensions::clipCullDistanceANGLE);
        map["GL_CHROMIUM_color_buffer_float_rgb"] = enableableExtension(&Extensions::colorBufferFloatRgbCHROMIUM);
        map["GL_CHROMIUM_color_buffer_float_rgba"] = enableableExtension(&Extensions::colorBufferFloatRgbaCHROMIUM);
        map["GL_ANGLE_compressed_texture_etc"] = enableableExtension(&Extensions::compressedTextureEtcANGLE);
        map["GL_CHROMIUM_copy_compressed_texture"] = esOnlyExtension(&Extensions::copyCompressedTextureCHROMIUM);
        map["GL_CHROMIUM_copy_texture"] = esOnlyExtension(&Extensions::copyTextureCHROMIUM);
        map["GL_ANGLE_copy_texture_3d"] = enableableExtension(&Extensions::copyTexture3dANGLE);
        map["GL_ANGLE_explicit_context"] = esOnlyExtension(&Extensions::explicitContextANGLE);
        map["GL_ANGLE_framebuffer_multisample"] = enableableExtension(&Extensions::framebufferMultisampleANGLE);
        map["GL_ANGLE_get_image"] = enableableExtension(&Extensions::getImageANGLE);
        map["GL_ANGLE_get_serialized_context_string"] = esOnlyExtension(&Extensions::getSerializedContextStringANGLE);
        map["GL_ANGLE_get_tex_level_parameter"] = enableableExtension(&Extensions::getTexLevelParameterANGLE);
        map["GL_ANGLE_logic_op"] = enableableExtension(&Extensions::logicOpANGLE);
        map["GL_CHROMIUM_lose_context"] = enableableExtension(&Extensions::loseContextCHROMIUM);
        map["GL_ANGLE_memory_object_flags"] = enableableExtension(&Extensions::memoryObjectFlagsANGLE);
        map["GL_ANGLE_memory_object_fuchsia"] = enableableExtension(&Extensions::memoryObjectFuchsiaANGLE);
        map["GL_ANGLE_memory_size"] = enableableExtension(&Extensions::memorySizeANGLE);
        map["GL_ANGLE_multi_draw"] = enableableExtension(&Extensions::multiDrawANGLE);
        map["GL_ANGLE_multiview_multisample"] = enableableExtension(&Extensions::multiviewMultisampleANGLE);
        map["GL_ANGLE_polygon_mode"] = enableableExtension(&Extensions::polygonModeANGLE);
        map["GL_ANGLE_program_binary"] = esOnlyExtension(&Extensions::programBinaryANGLE);
        map["GL_ANGLE_program_binary_readiness_query"] = esOnlyExtension(&Extensions::programBinaryReadinessQueryANGLE);
        map["GL_ANGLE_program_cache_control"] = esOnlyExtension(&Extensions::programCacheControlANGLE);
        map["GL_ANGLE_provoking_vertex"] = enableableExtension(&Extensions::provokingVertexANGLE);
        map["GL_ANGLE_read_only_depth_stencil_feedback_loops"] = enableableExtension(&Extensions::readOnlyDepthStencilFeedbackLoopsANGLE);
        map["GL_ANGLE_relaxed_vertex_attribute_type"] = esOnlyExtension(&Extensions::relaxedVertexAttributeTypeANGLE);
        map["GL_ANGLE_renderability_validation"] = enableableExtension(&Extensions::renderabilityValidationANGLE);
        map["GL_ANGLE_request_extension"] = esOnlyExtension(&Extensions::requestExtensionANGLE);
        map["GL_ANGLE_rgbx_internal_format"] = esOnlyExtension(&Extensions::rgbxInternalFormatANGLE);
        map["GL_ANGLE_robust_client_memory"] = esOnlyExtension(&Extensions::robustClientMemoryANGLE);
        map["GL_ANGLE_robust_fragment_shader_output"] = enableableExtension(&Extensions::robustFragmentShaderOutputANGLE);
        map["GL_ANGLE_robust_resource_initialization"] = esOnlyExtension(&Extensions::robustResourceInitializationANGLE);
        map["GL_ANGLE_semaphore_fuchsia"] = enableableExtension(&Extensions::semaphoreFuchsiaANGLE);
        map["GL_ANGLE_shader_binary"] = esOnlyExtension(&Extensions::shaderBinaryANGLE);
        map["GL_ANGLE_shader_pixel_local_storage"] = enableableExtension(&Extensions::shaderPixelLocalStorageANGLE);
        map["GL_ANGLE_shader_pixel_local_storage_coherent"] = enableableExtension(&Extensions::shaderPixelLocalStorageCoherentANGLE);
        map["GL_ANGLE_stencil_texturing"] = enableableExtension(&Extensions::stencilTexturingANGLE);
        map["GL_ANGLE_texture_compression_dxt3"] = enableableExtension(&Extensions::textureCompressionDxt3ANGLE);
        map["GL_ANGLE_texture_compression_dxt5"] = enableableExtension(&Extensions::textureCompressionDxt5ANGLE);
        map["GL_ANGLE_texture_multisample"] = enableableExtension(&Extensions::textureMultisampleANGLE);
        map["GL_ANGLE_texture_rectangle"] = enableableExtension(&Extensions::textureRectangleANGLE);
        map["GL_ANGLE_vulkan_image"] = enableableExtension(&Extensions::vulkanImageANGLE);
        map["GL_ANGLE_webgl_compatibility"] = esOnlyExtension(&Extensions::webglCompatibilityANGLE);
        map["GL_ANGLE_yuv_internal_format"] = enableableExtension(&Extensions::yuvInternalFormatANGLE);

        // GLES 1.0 and 1.1 extension strings
        // ----------------------------------
        map["GL_OES_blend_subtract"] = enableableExtension(&Extensions::blendSubtractOES);
        map["GL_OES_draw_texture"] = enableableExtension(&Extensions::drawTextureOES);
        map["GL_OES_framebuffer_object"] = enableableExtension(&Extensions::framebufferObjectOES);
        map["GL_OES_matrix_palette"] = enableableExtension(&Extensions::matrixPaletteOES);
        map["GL_OES_point_size_array"] = enableableExtension(&Extensions::pointSizeArrayOES);
        map["GL_OES_point_sprite"] = enableableExtension(&Extensions::pointSpriteOES);
        map["GL_OES_query_matrix"] = enableableExtension(&Extensions::queryMatrixOES);
        map["GL_OES_stencil8"] = enableableExtension(&Extensions::stencil8OES);
        map["GL_OES_texture_cube_map"] = enableableExtension(&Extensions::textureCubeMapOES);
        map["GL_EXT_texture_lod_bias"] = enableableExtension(&Extensions::textureLodBiasEXT);
        map["GL_OES_texture_mirrored_repeat"] = enableableExtension(&Extensions::textureMirroredRepeatOES);
        // clang-format on

#if defined(ANGLE_ENABLE_ASSERTS)
        // Verify all extension strings start with GL_
        for (const auto &extension : map)
        {
            ASSERT(extension.first.rfind("GL_", 0) == 0);
        }
#endif

        return map;
    };

    static const angle::base::NoDestructor<ExtensionInfoMap> extensionInfo(buildExtensionInfoMap());
    return *extensionInfo;
}
}  // namespace gl
