Skip to content

Latest commit

 

History

History
366 lines (330 loc) · 46.8 KB

File metadata and controls

366 lines (330 loc) · 46.8 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_KHR_blend_equation_advanced_coherent
GL_EXT_blend_func_extended ✔ ✔ ✔ ✔ ✔
GL_EXT_blend_minmax ✔ ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_buffer_storage ✔ ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_clear_texture
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_EXT_compressed_ETC1_RGB8_sub_texture ✔ ✔ ✔ ✔ ✔ ✔ ✔
GL_OES_compressed_ETC1_RGB8_texture ✔ ✔ ✔ ✔ ✔ ✔ ✔
GL_OES_compressed_paletted_texture
GL_EXT_conservative_depth
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_EXT_depth_clamp
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_EXT_draw_instanced
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_EXT_EGL_image_storage_compression
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_EXT_fragment_shading_rate
GL_EXT_fragment_shading_rate_attachment
GL_EXT_fragment_shading_rate_primitive
GL_ANGLE_framebuffer_blit ✔ ✔ ✔ ✔ ✔ ✔ ✔
GL_NV_framebuffer_blit ✔ ✔ ✔ ✔ ✔ ✔ ✔
GL_MESA_framebuffer_flip_y
GL_QCOM_framebuffer_foveated
GL_EXT_geometry_shader ✔ ✔ ✔ ✔ ✔
GL_OES_geometry_shader ✔ ✔ ✔ ✔ ✔
GL_OES_get_program_binary ✔ ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_gpu_shader5 ✔ ✔ ✔ ✔ ✔ ✔
GL_OES_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_arrays
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_OVR_multiview_multisampled_render_to_texture
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_NV_polygon_mode
GL_EXT_polygon_offset_clamp ✔ ✔ ✔ ✔ ✔ ✔ ✔
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_QCOM_render_shared_exponent
GL_EXT_render_snorm
GL_OES_required_internalformat
GL_OES_rgb8_rgba8 ✔ ✔ ✔ ✔ ✔ ✔ ✔
GL_ARM_rgba8
GL_KHR_robust_buffer_access_behavior
GL_EXT_robustness ✔ ✔ ✔ ✔ ✔ ✔ ✔
GL_KHR_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_depth_stencil
GL_EXT_separate_shader_objects ✔ ✔ ✔ ✔ ✔ ✔ ✔
GL_ARM_shader_framebuffer_fetch ✔ ✔
GL_EXT_shader_framebuffer_fetch ✔ ✔
GL_ARM_shader_framebuffer_fetch_depth_stencil
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_shader_texture_samples
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_EXT_tessellation_shader ✔ ✔ ✔ ✔ ✔
GL_OES_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_EXT_texture_compression_astc_decode_mode
GL_EXT_texture_compression_astc_decode_mode_rgb9e5
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_EXT_texture_filter_minmax
GL_OES_texture_float ✔ ✔ ✔ ✔ ✔ ✔ ✔
GL_OES_texture_float_linear ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_texture_format_BGRA8888 ✔ ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_texture_format_sRGB_override ✔
GL_QCOM_texture_foveated
GL_OES_texture_half_float ✔ ✔ ✔ ✔ ✔ ✔ ✔
GL_OES_texture_half_float_linear ✔ ✔ ✔ ✔ ✔ ✔ ✔
GL_QCOM_texture_lod_bias
GL_EXT_texture_mirror_clamp_to_edge
GL_EXT_texture_norm16 ✔ ✔
GL_OES_texture_npot ✔ ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_texture_query_lod
GL_EXT_texture_rg ✔ ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_texture_shadow_lod
GL_EXT_texture_sRGB_decode ✔ ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_texture_sRGB_R8 ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_texture_sRGB_RG8 ✔ ✔ ✔
GL_OES_texture_stencil8 ✔ ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_texture_storage ✔ ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_texture_storage_compression
GL_OES_texture_storage_multisample_2d_array ✔ ✔ ✔ ✔ ✔ ✔ ✔
GL_EXT_texture_type_2_10_10_10_REV ✔ ✔ ✔ ✔ ✔ ✔ ✔
GL_ARM_texture_unnormalized_coordinates
GL_ANGLE_texture_usage ✔ ✔ ✔ ✔ ✔ ✔ ✔
GL_QCOM_tiled_rendering
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_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_blob_cache
GL_ANGLE_client_arrays ✔ ✔ ✔ ✔ ✔ ✔ ✔
GL_ANGLE_clip_cull_distance ✔ ✔ ✔ ✔ ✔ ✔
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_ANGLE_explicit_context
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_memory_object_flags ✔ ✔ ✔ ✔ ✔ ✔ ✔
GL_ANGLE_memory_object_fuchsia
GL_ANGLE_memory_size ✔ ✔ ✔ ✔ ✔ ✔ ✔
GL_ANGLE_multi_draw ✔ ✔ ✔ ✔ ✔ ✔ ✔
GL_ANGLE_multiview_multisample
GL_ANGLE_polygon_mode
GL_ANGLE_program_binary
GL_ANGLE_program_binary_readiness_query
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_renderability_validation
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_binary
GL_ANGLE_shader_pixel_local_storage
GL_ANGLE_shader_pixel_local_storage_coherent
GL_ANGLE_stencil_texturing
GL_ANGLE_texture_compression_dxt3 ✔ ✔ ✔ ✔ ✔
GL_ANGLE_texture_compression_dxt5 ✔ ✔ ✔ ✔ ✔
GL_ANGLE_texture_multisample ✔ ✔ ✔ ✔ ✔ ✔ ✔
GL_ANGLE_texture_rectangle
GL_ANGLE_trim_memory
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_blend_subtract
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_stencil8
GL_OES_texture_cube_map ✔
GL_EXT_texture_lod_bias
GL_OES_texture_mirrored_repeat

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.20572 git hash: 75901296a09f)
  • Data updated February 22, 2023

Intel 630 Win10:

  • GL_RENDERER is ANGLE (Intel, Vulkan 1.3.215 (Intel(R) UHD Graphics 630 (0x00009BC5)), Intel Corporation-101.101.)
  • GL_VENDOR is Google Inc. (Intel)
  • GL_VERSION is OpenGL ES 3.2.0 (ANGLE 2.1.20572 git hash: 75901296a09f)
  • Data updated February 22, 2023

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.20572 git hash: 75901296a09f)
  • Data updated February 22, 2023

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.20572 git hash: 75901296a09f)
  • Data updated February 22, 2023

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.20572 git hash: 75901296a09f)
  • Data updated February 22, 2023

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.20572 git hash: 75901296a09f)
  • Data updated February 22, 2023

Pixel 6 Android 13:

  • GL_RENDERER is ANGLE (ARM, Vulkan 1.1.201 (Mali-G78 (0x92020010)), Mali-G78-36.0.0)
  • GL_VENDOR is Google Inc. (ARM)
  • GL_VERSION is OpenGL ES 3.2.0 (ANGLE 2.1.20572 git hash: 75901296a09f)
  • Data updated February 22, 2023

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.