kc3-lang/angle/doc/ExtensionSupport.md

Download

ANGLE Supported Extensions

This is a list of all extensions currently supported by ANGLE’s front-end, and support listed for some of the tested targets for ANGLE’s Vulkan back-end. To produce a list of all supported extensions in the Vulkan back-end, run angle_end2end_tests with --gtest_filter EGLPrintEGLinfoTest.PrintGLInfo/ES*_Vulkan.

Specifications for GLES extensions can be found in the Khronos OpenGL ES API Registry

Specifications for EGL extensions can be found in the Khronos EGL API Registry

Specifications for ANGLE-specific extensions can be found in the ANGLE extension registry

This list is automatically generated by gen_extensions.py using data from registry_xml.py and gl.xml.

GLES 2.0, 3.0, 3.1 and 3.2 extension support

Note: some data is sampled from older drivers, so might not represent the latest driver support.

Extension Name NVIDIA P400 Win10 Intel 630 Win10 NVIDIA P400 Linux Intel 630 Linux SwiftShader Win10 Pixel 4 Android 11
GL_KHR_blend_equation_advanced ❌ ❌ ❌ ❌ ❌ ❌
GL_EXT_blend_func_extended ✔ ✔ ✔ ✔ ❌ ✔
GL_EXT_blend_minmax ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_buffer_storage ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_clip_control ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_clip_cull_distance ✔ ✔ ✔ ✔ ✔ ✔
GL_APPLE_clip_distance ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_color_buffer_float ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_color_buffer_half_float ✔ ✔ ✔ ✔ ✔ ✔
GL_OES_compressed_EAC_R11_signed_texture ✔ ✔ ✔ ✔ ✔ ✔
GL_OES_compressed_EAC_R11_unsigned_texture ✔ ✔ ✔ ✔ ✔ ✔
GL_OES_compressed_EAC_RG11_signed_texture ✔ ✔ ✔ ✔ ✔ ✔
GL_OES_compressed_EAC_RG11_unsigned_texture ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_compressed_ETC1_RGB8_sub_texture ✔ ✔ ✔ ✔ ✔ ✔
GL_OES_compressed_ETC1_RGB8_texture ✔ ✔ ✔ ✔ ✔ ✔
GL_OES_compressed_ETC2_punchthroughA_RGBA8_texture ✔ ✔ ✔ ✔ ✔ ✔
GL_OES_compressed_ETC2_punchthroughA_sRGB8_alpha_texture ✔ ✔ ✔ ✔ ✔ ✔
GL_OES_compressed_ETC2_RGB8_texture ✔ ✔ ✔ ✔ ✔ ✔
GL_OES_compressed_ETC2_RGBA8_texture ✔ ✔ ✔ ✔ ✔ ✔
GL_OES_compressed_ETC2_sRGB8_alpha8_texture ✔ ✔ ✔ ✔ ✔ ✔
GL_OES_compressed_ETC2_sRGB8_texture ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_copy_image ✔ ✔ ✔ ✔ ✔ ✔
GL_OES_copy_image ❌ ❌ ❌ ❌ ❌ ❌
GL_KHR_debug ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_debug_label ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_debug_marker ✔ ✔ ✔ ✔ ✔ ✔
GL_OES_depth24 ✔ ✔ ✔ ✔ ✔ ✔
GL_OES_depth32 ✔ ✔ ✔ ✔ ✔ ✔
GL_NV_depth_buffer_float2 ✔ ✔ ✔ ✔ ✔ ✔
GL_ANGLE_depth_texture ✔ ✔ ✔ ✔ ✔ ✔
GL_OES_depth_texture ✔ ✔ ✔ ✔ ✔ ✔
GL_OES_depth_texture_cube_map ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_discard_framebuffer ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_disjoint_timer_query ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_draw_buffers ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_draw_buffers_indexed ✔ ✔ ✔ ✔ ✔ ✔
GL_OES_draw_buffers_indexed ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_draw_elements_base_vertex ✔ ✔ ✔ ✔ ✔ ✔
GL_OES_draw_elements_base_vertex ✔ ✔ ✔ ✔ ✔ ✔
GL_OES_EGL_image ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_EGL_image_array ✔ ✔ ✔ ✔ ✔ ✔
GL_OES_EGL_image_external ✔ ✔ ✔ ✔ ✔ ✔
GL_OES_EGL_image_external_essl3 ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_EGL_image_external_wrap_modes ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_EGL_image_storage ❌ ❌ ❌ ❌ ❌ ❌
GL_NV_EGL_stream_consumer_external ❌ ❌ ❌ ❌ ❌ ❌
GL_OES_EGL_sync ✔ ✔ ✔ ✔ ✔ ✔
GL_OES_element_index_uint ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_external_buffer ❌ ❌ ❌ ❌ ❌ ✔
GL_OES_fbo_render_mipmap ✔ ✔ ✔ ✔ ✔ ✔
GL_NV_fence ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_float_blend ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_frag_depth ✔ ✔ ✔ ✔ ✔ ✔
GL_ANGLE_framebuffer_blit ✔ ✔ ✔ ✔ ✔ ✔
GL_NV_framebuffer_blit ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_geometry_shader ✔ ✔ ❌ ❌ ❌ ❌
GL_OES_geometry_shader ✔ ✔ ❌ ❌ ❌ ❌
GL_OES_get_program_binary ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_gpu_shader5 ✔ ✔ ✔ ✔ ❌ ✔
GL_ANGLE_instanced_arrays ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_instanced_arrays ✔ ✔ ✔ ✔ ✔ ✔
GL_OES_mapbuffer ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_map_buffer_range ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_memory_object ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_memory_object_fd ❌ ❌ ✔ ✔ ❌ ✔
GL_EXT_multisample_compatibility ❌ ❌ ❌ ❌ ❌ ❌
GL_EXT_multisampled_render_to_texture ✔ ❌ ✔ ✔ ✔ ✔
GL_EXT_multisampled_render_to_texture2 ✔ ❌ ✔ ✔ ✔ ✔
GL_OVR_multiview ✔ ✔ ❌ ❌ ✔ ✔
GL_OVR_multiview2 ✔ ✔ ❌ ❌ ✔ ✔
GL_KHR_no_error ❌ ❌ ❌ ❌ ❌ ❌
GL_EXT_occlusion_query_boolean ✔ ✔ ✔ ✔ ✔ ✔
GL_OES_packed_depth_stencil ✔ ✔ ✔ ✔ ✔ ✔
GL_ANGLE_pack_reverse_row_order ❌ ❌ ❌ ❌ ❌ ❌
GL_NV_pack_subimage ✔ ✔ ✔ ✔ ✔ ✔
GL_KHR_parallel_shader_compile ✔ ✔ ✔ ✔ ✔ ✔
GL_NV_pixel_buffer_object ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_primitive_bounding_box ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_protected_textures ❌ ❌ ❌ ❌ ❌ ✔
GL_EXT_pvrtc_sRGB ❌ ❌ ❌ ❌ ❌ ❌
GL_NV_read_depth ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_read_format_bgra ✔ ✔ ✔ ✔ ✔ ✔
GL_NV_read_stencil ✔ ✔ ✔ ✔ ✔ ✔
GL_OES_rgb8_rgba8 ✔ ✔ ✔ ✔ ✔ ✔
GL_KHR_robust_buffer_access_behavior ❌ ❌ ❌ ❌ ❌ ❌
GL_EXT_robustness ✔ ✔ ✔ ✔ ❌ ✔
GL_NV_robustness_video_memory_purge ❌ ❌ ❌ ❌ ❌ ❌
GL_OES_sample_shading ✔ ✔ ✔ ✔ ✔ ✔
GL_OES_sample_variables ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_semaphore ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_semaphore_fd ❌ ❌ ✔ ✔ ❌ ✔
GL_EXT_separate_shader_objects ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_shader_framebuffer_fetch_non_coherent ✔ ✔ ✔ ✔ ✔ ❌
GL_OES_shader_image_atomic ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_shader_io_blocks ✔ ✔ ✔ ✔ ✔ ✔
GL_OES_shader_io_blocks ✔ ✔ ✔ ✔ ✔ ✔
GL_OES_shader_multisample_interpolation ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_shader_non_constant_global_initializers ✔ ✔ ✔ ✔ ✔ ✔
GL_NV_shader_noperspective_interpolation ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_shader_texture_lod ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_shadow_samplers ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_sRGB ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_sRGB_write_control ✔ ✔ ✔ ✔ ❌ ✔
GL_OES_standard_derivatives ✔ ✔ ✔ ✔ ✔ ✔
GL_OES_surfaceless_context ✔ ✔ ✔ ✔ ✔ ✔
GL_ARB_sync ❌ ❌ ❌ ❌ ❌ ❌
GL_EXT_tessellation_shader ✔ ✔ ❌ ❌ ❌ ❌
GL_OES_texture_3D ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_texture_border_clamp ✔ ❌ ❌ ❌ ❌ ❌
GL_OES_texture_border_clamp ✔ ❌ ❌ ❌ ❌ ❌
GL_EXT_texture_buffer ✔ ❌ ✔ ✔ ✔ ✔
GL_OES_texture_buffer ✔ ❌ ✔ ✔ ✔ ✔
GL_OES_texture_compression_astc ❌ ❌ ❌ ❌ ❌ ❌
GL_KHR_texture_compression_astc_hdr ❌ ❌ ❌ ❌ ❌ ❌
GL_KHR_texture_compression_astc_ldr ❌ ✔ ❌ ✔ ✔ ✔
GL_KHR_texture_compression_astc_sliced_3d ❌ ❌ ❌ ❌ ❌ ❌
GL_EXT_texture_compression_bptc ✔ ✔ ✔ ✔ ✔ ❌
GL_EXT_texture_compression_dxt1 ✔ ✔ ✔ ✔ ✔ ❌
GL_IMG_texture_compression_pvrtc ❌ ❌ ❌ ❌ ❌ ❌
GL_IMG_texture_compression_pvrtc2 ❌ ❌ ❌ ❌ ❌ ❌
GL_EXT_texture_compression_rgtc ✔ ✔ ✔ ✔ ✔ ❌
GL_EXT_texture_compression_s3tc ❌ ❌ ❌ ❌ ❌ ❌
GL_EXT_texture_compression_s3tc_srgb ✔ ✔ ✔ ✔ ✔ ❌
GL_EXT_texture_cube_map_array ✔ ✔ ✔ ✔ ✔ ✔
GL_OES_texture_cube_map_array ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_texture_filter_anisotropic ✔ ✔ ✔ ✔ ✔ ✔
GL_OES_texture_float ✔ ✔ ✔ ✔ ✔ ✔
GL_OES_texture_float_linear ✔ ✔ ✔ ✔ ✔ ❌
GL_EXT_texture_format_BGRA8888 ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_texture_format_sRGB_override ❌ ✔ ❌ ❌ ❌ ❌
GL_OES_texture_half_float ✔ ✔ ✔ ✔ ✔ ✔
GL_OES_texture_half_float_linear ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_texture_norm16 ❌ ✔ ❌ ✔ ❌ ❌
GL_OES_texture_npot ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_texture_rg ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_texture_sRGB_decode ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_texture_sRGB_R8 ✔ ❌ ✔ ✔ ✔ ✔
GL_EXT_texture_sRGB_RG8 ❌ ❌ ❌ ❌ ✔ ✔
GL_OES_texture_stencil8 ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_texture_storage ✔ ✔ ✔ ✔ ✔ ✔
GL_OES_texture_storage_multisample_2d_array ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_texture_type_2_10_10_10_REV ✔ ✔ ✔ ✔ ✔ ✔
GL_ANGLE_texture_usage ❌ ❌ ❌ ❌ ❌ ❌
GL_ANGLE_translated_shader_source ❌ ❌ ❌ ❌ ❌ ❌
GL_EXT_unpack_subimage ✔ ✔ ✔ ✔ ✔ ✔
GL_OES_vertex_array_object ✔ ✔ ✔ ✔ ✔ ✔
GL_OES_vertex_half_float ✔ ✔ ✔ ✔ ✔ ✔
GL_OES_vertex_type_10_10_10_2 ✔ ✔ ✔ ✔ ✔ ✔
GL_WEBGL_video_texture ❌ ❌ ❌ ❌ ❌ ❌
GL_EXT_YUV_target ❌ ❌ ❌ ❌ ❌ ❌

ANGLE unofficial extension support

Note: some ANGLE extensions are currently missing specifications.

Extension Name NVIDIA P400 Win10 Intel 630 Win10 NVIDIA P400 Linux Intel 630 Linux SwiftShader Win10 Pixel 4 Android 11
GL_ANGLE_base_vertex_base_instance ✔ ✔ ✔ ✔ ✔ ✔
GL_CHROMIUM_bind_generates_resource ✔ ✔ ✔ ✔ ✔ ✔
GL_CHROMIUM_bind_uniform_location ✔ ✔ ✔ ✔ ✔ ✔
GL_ANGLE_client_arrays ✔ ✔ ✔ ✔ ✔ ✔
GL_CHROMIUM_color_buffer_float_rgb ❌ ❌ ❌ ❌ ❌ ❌
GL_CHROMIUM_color_buffer_float_rgba ❌ ❌ ❌ ❌ ❌ ❌
GL_ANGLE_compressed_texture_etc ❌ ✔ ❌ ✔ ✔ ✔
GL_CHROMIUM_copy_compressed_texture ✔ ✔ ✔ ✔ ✔ ✔
GL_CHROMIUM_copy_texture ✔ ✔ ✔ ✔ ✔ ✔
GL_ANGLE_copy_texture_3d ✔ ✔ ✔ ✔ ✔ ✔
GL_CHROMIUM_framebuffer_mixed_samples ❌ ❌ ❌ ❌ ❌ ❌
GL_ANGLE_framebuffer_multisample ✔ ✔ ✔ ✔ ✔ ✔
GL_ANGLE_get_image ✔ ✔ ✔ ✔ ✔ ✔
GL_ANGLE_get_serialized_context_string ✔ ✔ ✔ ✔ ✔ ✔
GL_ANGLE_get_tex_level_parameter ✔ ✔ ✔ ✔ ✔ ✔
GL_CHROMIUM_lose_context ✔ ✔ ✔ ✔ ✔ ✔
GL_ANGLE_lossy_etc_decode ❌ ❌ ❌ ❌ ❌ ❌
GL_ANGLE_memory_object_flags ✔ ✔ ✔ ✔ ✔ ✔
GL_ANGLE_memory_object_fuchsia ❌ ❌ ❌ ❌ ❌ ❌
GL_ANGLE_memory_size ✔ ✔ ✔ ✔ ✔ ✔
GL_ANGLE_multi_draw ✔ ✔ ✔ ✔ ✔ ✔
GL_ANGLE_multiview_multisample ❌ ❌ ❌ ❌ ❌ ❌
GL_ANGLE_program_binary ❌ ❌ ❌ ❌ ❌ ❌
GL_ANGLE_program_cache_control ✔ ✔ ✔ ✔ ✔ ✔
GL_ANGLE_provoking_vertex ❌ ❌ ❌ ❌ ❌ ❌
GL_ANGLE_relaxed_vertex_attribute_type ✔ ✔ ✔ ✔ ✔ ✔
GL_ANGLE_request_extension ✔ ✔ ✔ ✔ ✔ ✔
GL_ANGLE_robust_client_memory ✔ ✔ ✔ ✔ ✔ ✔
GL_ANGLE_robust_resource_initialization ❌ ❌ ❌ ❌ ❌ ❌
GL_ANGLE_semaphore_fuchsia ❌ ❌ ❌ ❌ ❌ ❌
GL_CHROMIUM_sync_query ❌ ❌ ❌ ❌ ❌ ❌
GL_ANGLE_texture_compression_dxt3 ✔ ✔ ✔ ✔ ✔ ❌
GL_ANGLE_texture_compression_dxt5 ✔ ✔ ✔ ✔ ✔ ❌
GL_ANGLE_texture_external_update ❌ ❌ ❌ ❌ ❌ ❌
GL_CHROMIUM_texture_filtering_hint ❌ ❌ ❌ ❌ ✔ ❌
GL_ANGLE_texture_multisample ❌ ❌ ❌ ❌ ❌ ❌
GL_ANGLE_texture_rectangle ❌ ❌ ❌ ❌ ❌ ❌
GL_ANGLE_webgl_compatibility ❌ ❌ ❌ ❌ ❌ ❌
GL_ANGLE_yuv_internal_format ✔ ❌ ✔ ✔ ✔ ✔

GLES 1.0 and 1.1 extension support

Extension Name SwiftShader Win10
GL_OES_draw_texture ✔
GL_OES_framebuffer_object ✔
GL_OES_matrix_palette ❌
GL_OES_point_size_array ✔
GL_OES_point_sprite ✔
GL_OES_query_matrix ❌
GL_OES_texture_cube_map ✔

EGL extension support

Currently EGL extensions are not automatically tracked by our scripting. For a list of supported EGL extensions in ANGLE’s front-end see src/libANGLE/Caps.h.

Configuration information

NVIDIA P400 Win10:

Intel 630 Win10:

NVIDIA P400 Linux:

Intel 630 Linux:

SwiftShader Win10:

Pixel 4 Android 11:

How to update supported extension data

Supported extension data is stored in the ANGLE repo as JSON files in scripts/extension_data. The JSON data is sourced from public ANGLE test runs. Look for angle_end2end_tests in a bot run: [example link] (https://ci.chromium.org/ui/p/angle/builders/ci/win-clang-x64-rel/8183/overview). Search for “angle_end2end_tests“, then click on the “cas output” and find GLinfo_ES3_2_Vulkan.json. Copy and paste the file contents into a file in the folder above.

To update or add a new configuration, first retrieve the JSON data, modify gen_extensions.py if necessary, then run scripts/run_code_generation.py to refresh generated files.


Source

Download