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. Search for “angle_end2end_tests“, then click on the “cas output” and find GLinfo_ES3_2_Vulkan.json.

The Pixel 4 and GLES 3 NVIDIA and Intel data is automatically updated using the update_extension_data.py script. To use it first authenticate to the bb and luci-go tools by running bb auth-login and ./tools/luci-go/swarming login. Then run the script and re-run code generation.

The GLES 1 and SwiftShader data is currently manually updated. Find the relevant file from the task output (see above) and overwrite the correspoding file. Re-run code generation and create a CL as per our normal process.

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


Source

Download