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 NameNVIDIA 1660 Win10Intel 630 Win10NVIDIA 1660 LinuxIntel 630 LinuxSwiftShader Win10Pixel 4 Android 11Pixel 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_OES_compressed_paletted_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 NameNVIDIA 1660 Win10Intel 630 Win10NVIDIA 1660 LinuxIntel 630 LinuxSwiftShader Win10Pixel 4 Android 11Pixel 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_ANGLE_logic_op
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 NameSwiftShader 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.