Skip to content

Latest commit

 

History

History
333 lines (297 loc) · 42.9 KB

ExtensionSupport.md

File metadata and controls

333 lines (297 loc) · 42.9 KB

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 1660 Win10 Intel 630 Win10 NVIDIA 1660 Linux Intel 630 Linux SwiftShader Win10 Pixel 4 Android 11 Pixel 6 Android 13
GL_EXT_base_instance
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_ANDROID_extension_pack_es31a
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_MESA_framebuffer_flip_y
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_multi_draw_indirect
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_AMD_performance_monitor
GL_NV_pixel_buffer_object
GL_EXT_primitive_bounding_box
GL_OES_primitive_bounding_box
GL_EXT_protected_textures
GL_EXT_pvrtc_sRGB
GL_NV_read_depth
GL_NV_read_depth_stencil
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
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_QCOM_shading_rate
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 1660 Win10 Intel 630 Win10 NVIDIA 1660 Linux Intel 630 Linux SwiftShader Win10 Pixel 4 Android 11 Pixel 6 Android 13
GL_ANGLE_base_vertex_base_instance
GL_ANGLE_base_vertex_base_instance_shader_builtin
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_read_only_depth_stencil_feedback_loops
GL_ANGLE_relaxed_vertex_attribute_type
GL_ANGLE_request_extension
GL_ANGLE_rgbx_internal_format
GL_ANGLE_robust_client_memory
GL_ANGLE_robust_fragment_shader_output
GL_ANGLE_robust_resource_initialization
GL_ANGLE_semaphore_fuchsia
GL_ANGLE_shader_pixel_local_storage
GL_ANGLE_shader_pixel_local_storage_coherent
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_vulkan_image
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 1660 Win10:

  • GL_RENDERER is ANGLE (NVIDIA, Vulkan 1.2.142 (NVIDIA GeForce GTX 1660 (0x00002184)), NVIDIA-456.38.0.0)
  • GL_VENDOR is Google Inc. (NVIDIA)
  • GL_VERSION is OpenGL ES 3.2.0 (ANGLE 2.1.19130 git hash: e3933465d88f)
  • Data updated July 23, 2022

Intel 630 Win10:

  • GL_RENDERER is ANGLE (Intel, Vulkan 1.2.135 (Intel(R) HD Graphics 630 (0x00005912)), Intel Corporation-100.100.)
  • GL_VENDOR is Google Inc. (Intel)
  • GL_VERSION is OpenGL ES 3.2.0 (ANGLE 2.1.18778 git hash: 4784f091deba)
  • Data updated June 1, 2022

NVIDIA 1660 Linux:

  • GL_RENDERER is ANGLE (NVIDIA, Vulkan 1.1.119 (NVIDIA GeForce GTX 1660 (0x00002184)), NVIDIA-440.100.0.0)
  • GL_VENDOR is Google Inc. (NVIDIA)
  • GL_VERSION is OpenGL ES 3.2.0 (ANGLE 2.1.19130 git hash: e3933465d88f)
  • Data updated July 23, 2022

Intel 630 Linux:

  • GL_RENDERER is ANGLE (Intel, Vulkan 1.2.131 (Intel(R) UHD Graphics 630 (CML GT2) (0x00009BC5)), Intel open-source Mesa driver-20.0.8)
  • GL_VENDOR is Google Inc. (Intel)
  • GL_VERSION is OpenGL ES 3.2.0 (ANGLE 2.1.19130 git hash: e3933465d88f)
  • Data updated July 23, 2022

SwiftShader Win10:

  • GL_RENDERER is ANGLE (Google, Vulkan 1.3.0 (SwiftShader Device (Subzero) (0x0000C0DE)), SwiftShader driver-5.0.0)
  • GL_VENDOR is Google Inc. (Google)
  • GL_VERSION is OpenGL ES 3.1.0 (ANGLE 2.1.19130 git hash: e3933465d88f)
  • Data updated July 23, 2022

Pixel 4 Android 11:

  • GL_RENDERER is ANGLE (Qualcomm, Vulkan 1.1.128 (Adreno (TM) 640 (0x06040001)), Qualcomm Technologies Inc. Adreno Vulkan Driver-512.490.0)
  • GL_VENDOR is Google Inc. (Qualcomm)
  • GL_VERSION is OpenGL ES 3.2.0 (ANGLE 2.1.19130 git hash: e3933465d88f)
  • Data updated July 24, 2022

Pixel 6 Android 13:

  • GL_RENDERER is ANGLE (ARM, Vulkan 1.1.201 (Mali-G78 (0x92020010)), Mali-G78-35.0.0)
  • GL_VENDOR is Google Inc. (ARM)
  • GL_VERSION is OpenGL ES 3.2.0 (ANGLE 2.1.19130 git hash: e3933465d88f)
  • Data updated July 24, 2022

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 or GLinfo_ES3_1_Vulkan_SwiftShader.json for SwiftShader.

All data except for GLES 1 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 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. Also update update_extension_data.py as necessary.