Edit

kc3-lang/angle/src/libANGLE/gles_extensions_autogen.h

Branch :

  • Show log

    Commit

  • Author : Jamie Madill
    Date : 2021-09-10 16:44:59
    Hash : b918b1c6
    Message : Auto-generate GLES extensions. Uses the data from registry.xml combined with gl.xml to produce the necessary header and source file with the strings map. Also updates the list of supported extensions. Several extensions were missing from the supported extensions map. ARB_sync and NV_robustness_video_memory_purge require some specific tweaks to get the generator to accept them as gles extensions. Also includes a generate markdown file that lists supported exts. Bug: angleproject:6379 Change-Id: I95bd589aa31a62b4a008de24408c7823a49023ed Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3157418 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>

  • src/libANGLE/gles_extensions_autogen.h
  • // 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 information.
    
    #ifndef LIBANGLE_GLES_EXTENSIONS_AUTOGEN_H_
    #define LIBANGLE_GLES_EXTENSIONS_AUTOGEN_H_
    
    namespace gl
    {
    class TextureCapsMap;
    
    struct Extensions
    {
        Extensions();
        Extensions(const Extensions &other);
    
        Extensions &operator=(const Extensions &other);
    
        // Generate a vector of supported extension strings
        std::vector<std::string> getStrings() const;
    
        // Set all texture related extension support based on the supported textures.
        // Determines support for:
        // GL_OES_packed_depth_stencil
        // GL_OES_rgb8_rgba8
        // GL_EXT_texture_format_BGRA8888
        // GL_EXT_color_buffer_half_float,
        // GL_OES_texture_half_float, GL_OES_texture_half_float_linear
        // GL_OES_texture_float, GL_OES_texture_float_linear
        // GL_EXT_texture_rg
        // GL_EXT_texture_type_2_10_10_10_REV
        // GL_EXT_texture_compression_dxt1, GL_ANGLE_texture_compression_dxt3,
        // GL_ANGLE_texture_compression_dxt5
        // GL_KHR_texture_compression_astc_ldr, GL_OES_texture_compression_astc.
        //     NOTE: GL_KHR_texture_compression_astc_hdr must be enabled separately. Support for the
        //           HDR profile cannot be determined from the format enums alone.
        // GL_OES_compressed_ETC1_RGB8_texture
        // GL_EXT_sRGB
        // GL_ANGLE_depth_texture, GL_OES_depth32
        // GL_EXT_color_buffer_float
        // GL_EXT_texture_norm16
        // GL_EXT_texture_compression_bptc
        // GL_EXT_texture_compression_rgtc
        void setTextureExtensionSupport(const TextureCapsMap &textureCaps);
    
        // Helper functions
        bool copyImageAny() const { return (copyImageEXT || copyImageOES); }
        bool depthTextureAny() const { return (depthTextureANGLE || depthTextureOES); }
        bool drawBuffersIndexedAny() const { return (drawBuffersIndexedEXT || drawBuffersIndexedOES); }
        bool drawElementsBaseVertexAny() const
        {
            return (drawElementsBaseVertexEXT || drawElementsBaseVertexOES);
        }
        bool framebufferBlitAny() const { return (framebufferBlitANGLE || framebufferBlitNV); }
        bool geometryShaderAny() const { return (geometryShaderEXT || geometryShaderOES); }
        bool instancedArraysAny() const { return (instancedArraysANGLE || instancedArraysEXT); }
        bool shaderIoBlocksAny() const { return (shaderIoBlocksEXT || shaderIoBlocksOES); }
        bool textureBorderClampAny() const { return (textureBorderClampEXT || textureBorderClampOES); }
        bool textureBufferAny() const { return (textureBufferEXT || textureBufferOES); }
        bool textureCubeMapArrayAny() const
        {
            return (textureCubeMapArrayEXT || textureCubeMapArrayOES);
        }
    
        // GLES 2.0+ extensions
        // --------------------
    
        // GL_KHR_blend_equation_advanced
        bool blendEquationAdvancedKHR = false;
    
        // GL_EXT_blend_func_extended
        bool blendFuncExtendedEXT = false;
    
        // GL_EXT_blend_minmax
        bool blendMinmaxEXT = false;
    
        // GL_EXT_buffer_storage
        bool bufferStorageEXT = false;
    
        // GL_EXT_clip_control
        bool clipControlEXT = false;
    
        // GL_EXT_clip_cull_distance
        bool clipCullDistanceEXT = false;
    
        // GL_APPLE_clip_distance
        bool clipDistanceAPPLE = false;
    
        // GL_EXT_color_buffer_float
        bool colorBufferFloatEXT = false;
    
        // GL_EXT_color_buffer_half_float
        bool colorBufferHalfFloatEXT = false;
    
        // GL_OES_compressed_EAC_R11_signed_texture
        bool compressedEACR11SignedTextureOES = false;
    
        // GL_OES_compressed_EAC_R11_unsigned_texture
        bool compressedEACR11UnsignedTextureOES = false;
    
        // GL_OES_compressed_EAC_RG11_signed_texture
        bool compressedEACRG11SignedTextureOES = false;
    
        // GL_OES_compressed_EAC_RG11_unsigned_texture
        bool compressedEACRG11UnsignedTextureOES = false;
    
        // GL_EXT_compressed_ETC1_RGB8_sub_texture
        bool compressedETC1RGB8SubTextureEXT = false;
    
        // GL_OES_compressed_ETC1_RGB8_texture
        bool compressedETC1RGB8TextureOES = false;
    
        // GL_OES_compressed_ETC2_punchthroughA_RGBA8_texture
        bool compressedETC2PunchthroughARGBA8TextureOES = false;
    
        // GL_OES_compressed_ETC2_punchthroughA_sRGB8_alpha_texture
        bool compressedETC2PunchthroughASRGB8AlphaTextureOES = false;
    
        // GL_OES_compressed_ETC2_RGB8_texture
        bool compressedETC2RGB8TextureOES = false;
    
        // GL_OES_compressed_ETC2_RGBA8_texture
        bool compressedETC2RGBA8TextureOES = false;
    
        // GL_OES_compressed_ETC2_sRGB8_alpha8_texture
        bool compressedETC2SRGB8Alpha8TextureOES = false;
    
        // GL_OES_compressed_ETC2_sRGB8_texture
        bool compressedETC2SRGB8TextureOES = false;
    
        // GL_EXT_copy_image
        bool copyImageEXT = false;
    
        // GL_OES_copy_image
        bool copyImageOES = false;
    
        // GL_KHR_debug
        bool debugKHR = false;
    
        // GL_EXT_debug_label
        bool debugLabelEXT = false;
    
        // GL_EXT_debug_marker
        bool debugMarkerEXT = false;
    
        // GL_OES_depth24
        bool depth24OES = false;
    
        // GL_OES_depth32
        bool depth32OES = false;
    
        // GL_NV_depth_buffer_float2
        bool depthBufferFloat2NV = false;
    
        // GL_ANGLE_depth_texture
        bool depthTextureANGLE = false;
    
        // GL_OES_depth_texture
        bool depthTextureOES = false;
    
        // GL_OES_depth_texture_cube_map
        bool depthTextureCubeMapOES = false;
    
        // GL_EXT_discard_framebuffer
        bool discardFramebufferEXT = false;
    
        // GL_EXT_disjoint_timer_query
        bool disjointTimerQueryEXT = false;
    
        // GL_EXT_draw_buffers
        bool drawBuffersEXT = false;
    
        // GL_EXT_draw_buffers_indexed
        bool drawBuffersIndexedEXT = false;
    
        // GL_OES_draw_buffers_indexed
        bool drawBuffersIndexedOES = false;
    
        // GL_EXT_draw_elements_base_vertex
        bool drawElementsBaseVertexEXT = false;
    
        // GL_OES_draw_elements_base_vertex
        bool drawElementsBaseVertexOES = false;
    
        // GL_OES_EGL_image
        bool EGLImageOES = false;
    
        // GL_EXT_EGL_image_array
        bool EGLImageArrayEXT = false;
    
        // GL_OES_EGL_image_external
        bool EGLImageExternalOES = false;
    
        // GL_OES_EGL_image_external_essl3
        bool EGLImageExternalEssl3OES = false;
    
        // GL_EXT_EGL_image_external_wrap_modes
        bool EGLImageExternalWrapModesEXT = false;
    
        // GL_EXT_EGL_image_storage
        bool EGLImageStorageEXT = false;
    
        // GL_NV_EGL_stream_consumer_external
        bool EGLStreamConsumerExternalNV = false;
    
        // GL_OES_EGL_sync
        bool EGLSyncOES = false;
    
        // GL_OES_element_index_uint
        bool elementIndexUintOES = false;
    
        // GL_EXT_external_buffer
        bool externalBufferEXT = false;
    
        // GL_OES_fbo_render_mipmap
        bool fboRenderMipmapOES = false;
    
        // GL_NV_fence
        bool fenceNV = false;
    
        // GL_EXT_float_blend
        bool floatBlendEXT = false;
    
        // GL_EXT_frag_depth
        bool fragDepthEXT = false;
    
        // GL_ANGLE_framebuffer_blit
        bool framebufferBlitANGLE = false;
    
        // GL_NV_framebuffer_blit
        bool framebufferBlitNV = false;
    
        // GL_EXT_geometry_shader
        bool geometryShaderEXT = false;
    
        // GL_OES_geometry_shader
        bool geometryShaderOES = false;
    
        // GL_OES_get_program_binary
        bool getProgramBinaryOES = false;
    
        // GL_EXT_gpu_shader5
        bool gpuShader5EXT = false;
    
        // GL_ANGLE_instanced_arrays
        bool instancedArraysANGLE = false;
    
        // GL_EXT_instanced_arrays
        bool instancedArraysEXT = false;
    
        // GL_OES_mapbuffer
        bool mapbufferOES = false;
    
        // GL_EXT_map_buffer_range
        bool mapBufferRangeEXT = false;
    
        // GL_EXT_memory_object
        bool memoryObjectEXT = false;
    
        // GL_EXT_memory_object_fd
        bool memoryObjectFdEXT = false;
    
        // GL_EXT_multisample_compatibility
        bool multisampleCompatibilityEXT = false;
    
        // GL_EXT_multisampled_render_to_texture
        bool multisampledRenderToTextureEXT = false;
    
        // GL_EXT_multisampled_render_to_texture2
        bool multisampledRenderToTexture2EXT = false;
    
        // GL_OVR_multiview
        bool multiviewOVR = false;
    
        // GL_OVR_multiview2
        bool multiview2OVR = false;
    
        // GL_KHR_no_error
        bool noErrorKHR = false;
    
        // GL_EXT_occlusion_query_boolean
        bool occlusionQueryBooleanEXT = false;
    
        // GL_OES_packed_depth_stencil
        bool packedDepthStencilOES = false;
    
        // GL_ANGLE_pack_reverse_row_order
        bool packReverseRowOrderANGLE = false;
    
        // GL_NV_pack_subimage
        bool packSubimageNV = false;
    
        // GL_KHR_parallel_shader_compile
        bool parallelShaderCompileKHR = false;
    
        // GL_NV_pixel_buffer_object
        bool pixelBufferObjectNV = false;
    
        // GL_EXT_primitive_bounding_box
        bool primitiveBoundingBoxEXT = false;
    
        // GL_EXT_protected_textures
        bool protectedTexturesEXT = false;
    
        // GL_EXT_pvrtc_sRGB
        bool pvrtcSRGBEXT = false;
    
        // GL_NV_read_depth
        bool readDepthNV = false;
    
        // GL_EXT_read_format_bgra
        bool readFormatBgraEXT = false;
    
        // GL_NV_read_stencil
        bool readStencilNV = false;
    
        // GL_OES_rgb8_rgba8
        bool rgb8Rgba8OES = false;
    
        // GL_KHR_robust_buffer_access_behavior
        bool robustBufferAccessBehaviorKHR = false;
    
        // GL_EXT_robustness
        bool robustnessEXT = false;
    
        // GL_NV_robustness_video_memory_purge
        bool robustnessVideoMemoryPurgeNV = false;
    
        // GL_OES_sample_shading
        bool sampleShadingOES = false;
    
        // GL_OES_sample_variables
        bool sampleVariablesOES = false;
    
        // GL_EXT_semaphore
        bool semaphoreEXT = false;
    
        // GL_EXT_semaphore_fd
        bool semaphoreFdEXT = false;
    
        // GL_EXT_separate_shader_objects
        bool separateShaderObjectsEXT = false;
    
        // GL_EXT_shader_framebuffer_fetch_non_coherent
        bool shaderFramebufferFetchNonCoherentEXT = false;
    
        // GL_OES_shader_image_atomic
        bool shaderImageAtomicOES = false;
    
        // GL_EXT_shader_io_blocks
        bool shaderIoBlocksEXT = false;
    
        // GL_OES_shader_io_blocks
        bool shaderIoBlocksOES = false;
    
        // GL_OES_shader_multisample_interpolation
        bool shaderMultisampleInterpolationOES = false;
    
        // GL_EXT_shader_non_constant_global_initializers
        bool shaderNonConstantGlobalInitializersEXT = false;
    
        // GL_NV_shader_noperspective_interpolation
        bool shaderNoperspectiveInterpolationNV = false;
    
        // GL_EXT_shader_texture_lod
        bool shaderTextureLodEXT = false;
    
        // GL_EXT_shadow_samplers
        bool shadowSamplersEXT = false;
    
        // GL_EXT_sRGB
        bool sRGBEXT = false;
    
        // GL_EXT_sRGB_write_control
        bool sRGBWriteControlEXT = false;
    
        // GL_OES_standard_derivatives
        bool standardDerivativesOES = false;
    
        // GL_OES_surfaceless_context
        bool surfacelessContextOES = false;
    
        // GL_ARB_sync
        bool syncARB = false;
    
        // GL_EXT_tessellation_shader
        bool tessellationShaderEXT = false;
    
        // GL_OES_texture_3D
        bool texture3DOES = false;
    
        // GL_EXT_texture_border_clamp
        bool textureBorderClampEXT = false;
    
        // GL_OES_texture_border_clamp
        bool textureBorderClampOES = false;
    
        // GL_EXT_texture_buffer
        bool textureBufferEXT = false;
    
        // GL_OES_texture_buffer
        bool textureBufferOES = false;
    
        // GL_OES_texture_compression_astc
        bool textureCompressionAstcOES = false;
    
        // GL_KHR_texture_compression_astc_hdr
        bool textureCompressionAstcHdrKHR = false;
    
        // GL_KHR_texture_compression_astc_ldr
        bool textureCompressionAstcLdrKHR = false;
    
        // GL_KHR_texture_compression_astc_sliced_3d
        bool textureCompressionAstcSliced3dKHR = false;
    
        // GL_EXT_texture_compression_bptc
        bool textureCompressionBptcEXT = false;
    
        // GL_EXT_texture_compression_dxt1
        bool textureCompressionDxt1EXT = false;
    
        // GL_IMG_texture_compression_pvrtc
        bool textureCompressionPvrtcIMG = false;
    
        // GL_IMG_texture_compression_pvrtc2
        bool textureCompressionPvrtc2IMG = false;
    
        // GL_EXT_texture_compression_rgtc
        bool textureCompressionRgtcEXT = false;
    
        // GL_EXT_texture_compression_s3tc
        bool textureCompressionS3tcEXT = false;
    
        // GL_EXT_texture_compression_s3tc_srgb
        bool textureCompressionS3tcSrgbEXT = false;
    
        // GL_EXT_texture_cube_map_array
        bool textureCubeMapArrayEXT = false;
    
        // GL_OES_texture_cube_map_array
        bool textureCubeMapArrayOES = false;
    
        // GL_EXT_texture_filter_anisotropic
        bool textureFilterAnisotropicEXT = false;
    
        // GL_OES_texture_float
        bool textureFloatOES = false;
    
        // GL_OES_texture_float_linear
        bool textureFloatLinearOES = false;
    
        // GL_EXT_texture_format_BGRA8888
        bool textureFormatBGRA8888EXT = false;
    
        // GL_EXT_texture_format_sRGB_override
        bool textureFormatSRGBOverrideEXT = false;
    
        // GL_OES_texture_half_float
        bool textureHalfFloatOES = false;
    
        // GL_OES_texture_half_float_linear
        bool textureHalfFloatLinearOES = false;
    
        // GL_EXT_texture_norm16
        bool textureNorm16EXT = false;
    
        // GL_OES_texture_npot
        bool textureNpotOES = false;
    
        // GL_EXT_texture_rg
        bool textureRgEXT = false;
    
        // GL_EXT_texture_sRGB_decode
        bool textureSRGBDecodeEXT = false;
    
        // GL_EXT_texture_sRGB_R8
        bool textureSRGBR8EXT = false;
    
        // GL_EXT_texture_sRGB_RG8
        bool textureSRGBRG8EXT = false;
    
        // GL_OES_texture_stencil8
        bool textureStencil8OES = false;
    
        // GL_EXT_texture_storage
        bool textureStorageEXT = false;
    
        // GL_OES_texture_storage_multisample_2d_array
        bool textureStorageMultisample2dArrayOES = false;
    
        // GL_EXT_texture_type_2_10_10_10_REV
        bool textureType2101010REVEXT = false;
    
        // GL_ANGLE_texture_usage
        bool textureUsageANGLE = false;
    
        // GL_ANGLE_translated_shader_source
        bool translatedShaderSourceANGLE = false;
    
        // GL_EXT_unpack_subimage
        bool unpackSubimageEXT = false;
    
        // GL_OES_vertex_array_object
        bool vertexArrayObjectOES = false;
    
        // GL_OES_vertex_half_float
        bool vertexHalfFloatOES = false;
    
        // GL_OES_vertex_type_10_10_10_2
        bool vertexType1010102OES = false;
    
        // GL_WEBGL_video_texture
        bool videoTextureWEBGL = false;
    
        // GL_EXT_YUV_target
        bool YUVTargetEXT = false;
    
        // ANGLE unofficial extensions
        // ---------------------------
    
        // GL_ANGLE_base_vertex_base_instance
        bool baseVertexBaseInstanceANGLE = false;
    
        // GL_CHROMIUM_bind_generates_resource
        bool bindGeneratesResourceCHROMIUM = false;
    
        // GL_CHROMIUM_bind_uniform_location
        bool bindUniformLocationCHROMIUM = false;
    
        // GL_ANGLE_client_arrays
        bool clientArraysANGLE = false;
    
        // GL_CHROMIUM_color_buffer_float_rgb
        bool colorBufferFloatRgbCHROMIUM = false;
    
        // GL_CHROMIUM_color_buffer_float_rgba
        bool colorBufferFloatRgbaCHROMIUM = false;
    
        // GL_ANGLE_compressed_texture_etc
        bool compressedTextureEtcANGLE = false;
    
        // GL_CHROMIUM_copy_compressed_texture
        bool copyCompressedTextureCHROMIUM = false;
    
        // GL_CHROMIUM_copy_texture
        bool copyTextureCHROMIUM = false;
    
        // GL_ANGLE_copy_texture_3d
        bool copyTexture3dANGLE = false;
    
        // GL_CHROMIUM_framebuffer_mixed_samples
        bool framebufferMixedSamplesCHROMIUM = false;
    
        // GL_ANGLE_framebuffer_multisample
        bool framebufferMultisampleANGLE = false;
    
        // GL_ANGLE_get_image
        bool getImageANGLE = false;
    
        // GL_ANGLE_get_serialized_context_string
        bool getSerializedContextStringANGLE = false;
    
        // GL_ANGLE_get_tex_level_parameter
        bool getTexLevelParameterANGLE = false;
    
        // GL_CHROMIUM_lose_context
        bool loseContextCHROMIUM = false;
    
        // GL_ANGLE_lossy_etc_decode
        bool lossyEtcDecodeANGLE = false;
    
        // GL_ANGLE_memory_object_flags
        bool memoryObjectFlagsANGLE = false;
    
        // GL_ANGLE_memory_object_fuchsia
        bool memoryObjectFuchsiaANGLE = false;
    
        // GL_ANGLE_memory_size
        bool memorySizeANGLE = false;
    
        // GL_ANGLE_multi_draw
        bool multiDrawANGLE = false;
    
        // GL_ANGLE_multiview_multisample
        bool multiviewMultisampleANGLE = false;
    
        // GL_ANGLE_program_binary
        bool programBinaryANGLE = false;
    
        // GL_ANGLE_program_cache_control
        bool programCacheControlANGLE = false;
    
        // GL_ANGLE_provoking_vertex
        bool provokingVertexANGLE = false;
    
        // GL_ANGLE_relaxed_vertex_attribute_type
        bool relaxedVertexAttributeTypeANGLE = false;
    
        // GL_ANGLE_request_extension
        bool requestExtensionANGLE = false;
    
        // GL_ANGLE_robust_client_memory
        bool robustClientMemoryANGLE = false;
    
        // GL_ANGLE_robust_resource_initialization
        bool robustResourceInitializationANGLE = false;
    
        // GL_ANGLE_semaphore_fuchsia
        bool semaphoreFuchsiaANGLE = false;
    
        // GL_CHROMIUM_sync_query
        bool syncQueryCHROMIUM = false;
    
        // GL_ANGLE_texture_compression_dxt3
        bool textureCompressionDxt3ANGLE = false;
    
        // GL_ANGLE_texture_compression_dxt5
        bool textureCompressionDxt5ANGLE = false;
    
        // GL_ANGLE_texture_external_update
        bool textureExternalUpdateANGLE = false;
    
        // GL_CHROMIUM_texture_filtering_hint
        bool textureFilteringHintCHROMIUM = false;
    
        // GL_ANGLE_texture_multisample
        bool textureMultisampleANGLE = false;
    
        // GL_ANGLE_texture_rectangle
        bool textureRectangleANGLE = false;
    
        // GL_ANGLE_webgl_compatibility
        bool webglCompatibilityANGLE = false;
    
        // GL_ANGLE_yuv_internal_format
        bool yuvInternalFormatANGLE = false;
    
        // GLES 1.0 and 1.1 extensions
        // ---------------------------
    
        // GL_OES_draw_texture
        bool drawTextureOES = false;
    
        // GL_OES_framebuffer_object
        bool framebufferObjectOES = false;
    
        // GL_OES_matrix_palette
        bool matrixPaletteOES = false;
    
        // GL_OES_point_size_array
        bool pointSizeArrayOES = false;
    
        // GL_OES_point_sprite
        bool pointSpriteOES = false;
    
        // GL_OES_query_matrix
        bool queryMatrixOES = false;
    
        // GL_OES_texture_cube_map
        bool textureCubeMapOES = false;
    };
    }  // namespace gl
    
    #endif  // LIBANGLE_GLES_EXTENSIONS_AUTOGEN_H_