diff --git a/doc/SupportedExtensions.md b/doc/SupportedExtensions.md
new file mode 100644
index 000000000..d439168a0
--- /dev/null
+++ b/doc/SupportedExtensions.md
@@ -0,0 +1,206 @@
+# ANGLE Supported Extensions
+
+This is a list of all extensions currently supported by ANGLE's front-end. Back-end support is not
+yet documented. To produce a list of all supported extensions in the Vulkan back-end, run
+`angle_end2end_tests` with `--gtest_filter EGLPrintEGLinfoTest.PrintGLInfo/ES*_Vulkan`.
+
+This list is automatically generated by gen_extensions.py using data from registry_xml.py and gl.xml.
+
+| Extension Name |
+| -------------- |
+| `GL_ANGLE_base_vertex_base_instance` |
+| `GL_ANGLE_client_arrays` |
+| `GL_ANGLE_compressed_texture_etc` |
+| `GL_ANGLE_copy_texture_3d` |
+| `GL_ANGLE_depth_texture` |
+| `GL_ANGLE_framebuffer_blit` |
+| `GL_ANGLE_framebuffer_multisample` |
+| `GL_ANGLE_get_image` |
+| `GL_ANGLE_get_serialized_context_string` |
+| `GL_ANGLE_get_tex_level_parameter` |
+| `GL_ANGLE_instanced_arrays` |
+| `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_pack_reverse_row_order` |
+| `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_ANGLE_texture_compression_dxt3` |
+| `GL_ANGLE_texture_compression_dxt5` |
+| `GL_ANGLE_texture_external_update` |
+| `GL_ANGLE_texture_multisample` |
+| `GL_ANGLE_texture_rectangle` |
+| `GL_ANGLE_texture_usage` |
+| `GL_ANGLE_translated_shader_source` |
+| `GL_ANGLE_webgl_compatibility` |
+| `GL_ANGLE_yuv_internal_format` |
+| `GL_APPLE_clip_distance` |
+| `GL_ARB_sync` |
+| `GL_CHROMIUM_bind_generates_resource` |
+| `GL_CHROMIUM_bind_uniform_location` |
+| `GL_CHROMIUM_color_buffer_float_rgb` |
+| `GL_CHROMIUM_color_buffer_float_rgba` |
+| `GL_CHROMIUM_copy_compressed_texture` |
+| `GL_CHROMIUM_copy_texture` |
+| `GL_CHROMIUM_framebuffer_mixed_samples` |
+| `GL_CHROMIUM_lose_context` |
+| `GL_CHROMIUM_sync_query` |
+| `GL_CHROMIUM_texture_filtering_hint` |
+| `GL_EXT_EGL_image_array` |
+| `GL_EXT_EGL_image_external_wrap_modes` |
+| `GL_EXT_EGL_image_storage` |
+| `GL_EXT_YUV_target` |
+| `GL_EXT_blend_func_extended` |
+| `GL_EXT_blend_minmax` |
+| `GL_EXT_buffer_storage` |
+| `GL_EXT_clip_control` |
+| `GL_EXT_clip_cull_distance` |
+| `GL_EXT_color_buffer_float` |
+| `GL_EXT_color_buffer_half_float` |
+| `GL_EXT_compressed_ETC1_RGB8_sub_texture` |
+| `GL_EXT_copy_image` |
+| `GL_EXT_debug_label` |
+| `GL_EXT_debug_marker` |
+| `GL_EXT_discard_framebuffer` |
+| `GL_EXT_disjoint_timer_query` |
+| `GL_EXT_draw_buffers` |
+| `GL_EXT_draw_buffers_indexed` |
+| `GL_EXT_draw_elements_base_vertex` |
+| `GL_EXT_external_buffer` |
+| `GL_EXT_float_blend` |
+| `GL_EXT_frag_depth` |
+| `GL_EXT_geometry_shader` |
+| `GL_EXT_gpu_shader5` |
+| `GL_EXT_instanced_arrays` |
+| `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_EXT_occlusion_query_boolean` |
+| `GL_EXT_primitive_bounding_box` |
+| `GL_EXT_protected_textures` |
+| `GL_EXT_pvrtc_sRGB` |
+| `GL_EXT_read_format_bgra` |
+| `GL_EXT_robustness` |
+| `GL_EXT_sRGB` |
+| `GL_EXT_sRGB_write_control` |
+| `GL_EXT_semaphore` |
+| `GL_EXT_semaphore_fd` |
+| `GL_EXT_separate_shader_objects` |
+| `GL_EXT_shader_framebuffer_fetch_non_coherent` |
+| `GL_EXT_shader_io_blocks` |
+| `GL_EXT_shader_non_constant_global_initializers` |
+| `GL_EXT_shader_texture_lod` |
+| `GL_EXT_shadow_samplers` |
+| `GL_EXT_tessellation_shader` |
+| `GL_EXT_texture_border_clamp` |
+| `GL_EXT_texture_buffer` |
+| `GL_EXT_texture_compression_bptc` |
+| `GL_EXT_texture_compression_dxt1` |
+| `GL_EXT_texture_compression_rgtc` |
+| `GL_EXT_texture_compression_s3tc` |
+| `GL_EXT_texture_compression_s3tc_srgb` |
+| `GL_EXT_texture_cube_map_array` |
+| `GL_EXT_texture_filter_anisotropic` |
+| `GL_EXT_texture_format_BGRA8888` |
+| `GL_EXT_texture_format_sRGB_override` |
+| `GL_EXT_texture_norm16` |
+| `GL_EXT_texture_rg` |
+| `GL_EXT_texture_sRGB_R8` |
+| `GL_EXT_texture_sRGB_RG8` |
+| `GL_EXT_texture_sRGB_decode` |
+| `GL_EXT_texture_storage` |
+| `GL_EXT_texture_type_2_10_10_10_REV` |
+| `GL_EXT_unpack_subimage` |
+| `GL_IMG_texture_compression_pvrtc` |
+| `GL_IMG_texture_compression_pvrtc2` |
+| `GL_KHR_blend_equation_advanced` |
+| `GL_KHR_debug` |
+| `GL_KHR_no_error` |
+| `GL_KHR_parallel_shader_compile` |
+| `GL_KHR_robust_buffer_access_behavior` |
+| `GL_KHR_texture_compression_astc_hdr` |
+| `GL_KHR_texture_compression_astc_ldr` |
+| `GL_KHR_texture_compression_astc_sliced_3d` |
+| `GL_NV_EGL_stream_consumer_external` |
+| `GL_NV_depth_buffer_float2` |
+| `GL_NV_fence` |
+| `GL_NV_framebuffer_blit` |
+| `GL_NV_pack_subimage` |
+| `GL_NV_pixel_buffer_object` |
+| `GL_NV_read_depth` |
+| `GL_NV_read_stencil` |
+| `GL_NV_robustness_video_memory_purge` |
+| `GL_NV_shader_noperspective_interpolation` |
+| `GL_OES_EGL_image` |
+| `GL_OES_EGL_image_external` |
+| `GL_OES_EGL_image_external_essl3` |
+| `GL_OES_EGL_sync` |
+| `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_OES_compressed_ETC1_RGB8_texture` |
+| `GL_OES_compressed_ETC2_RGB8_texture` |
+| `GL_OES_compressed_ETC2_RGBA8_texture` |
+| `GL_OES_compressed_ETC2_punchthroughA_RGBA8_texture` |
+| `GL_OES_compressed_ETC2_punchthroughA_sRGB8_alpha_texture` |
+| `GL_OES_compressed_ETC2_sRGB8_alpha8_texture` |
+| `GL_OES_compressed_ETC2_sRGB8_texture` |
+| `GL_OES_copy_image` |
+| `GL_OES_depth24` |
+| `GL_OES_depth32` |
+| `GL_OES_depth_texture` |
+| `GL_OES_depth_texture_cube_map` |
+| `GL_OES_draw_buffers_indexed` |
+| `GL_OES_draw_elements_base_vertex` |
+| `GL_OES_draw_texture` |
+| `GL_OES_element_index_uint` |
+| `GL_OES_fbo_render_mipmap` |
+| `GL_OES_framebuffer_object` |
+| `GL_OES_geometry_shader` |
+| `GL_OES_get_program_binary` |
+| `GL_OES_mapbuffer` |
+| `GL_OES_matrix_palette` |
+| `GL_OES_packed_depth_stencil` |
+| `GL_OES_point_size_array` |
+| `GL_OES_point_sprite` |
+| `GL_OES_query_matrix` |
+| `GL_OES_rgb8_rgba8` |
+| `GL_OES_sample_shading` |
+| `GL_OES_sample_variables` |
+| `GL_OES_shader_image_atomic` |
+| `GL_OES_shader_io_blocks` |
+| `GL_OES_shader_multisample_interpolation` |
+| `GL_OES_standard_derivatives` |
+| `GL_OES_surfaceless_context` |
+| `GL_OES_texture_3D` |
+| `GL_OES_texture_border_clamp` |
+| `GL_OES_texture_buffer` |
+| `GL_OES_texture_compression_astc` |
+| `GL_OES_texture_cube_map` |
+| `GL_OES_texture_cube_map_array` |
+| `GL_OES_texture_float` |
+| `GL_OES_texture_float_linear` |
+| `GL_OES_texture_half_float` |
+| `GL_OES_texture_half_float_linear` |
+| `GL_OES_texture_npot` |
+| `GL_OES_texture_stencil8` |
+| `GL_OES_texture_storage_multisample_2d_array` |
+| `GL_OES_vertex_array_object` |
+| `GL_OES_vertex_half_float` |
+| `GL_OES_vertex_type_10_10_10_2` |
+| `GL_OVR_multiview` |
+| `GL_OVR_multiview2` |
+| `GL_WEBGL_video_texture` |
diff --git a/scripts/code_generation_hashes/Extension_files.json b/scripts/code_generation_hashes/Extension_files.json
new file mode 100644
index 000000000..8ceab8fd0
--- /dev/null
+++ b/scripts/code_generation_hashes/Extension_files.json
@@ -0,0 +1,24 @@
+{
+ "doc/SupportedExtensions.md":
+ "4e06f9a617d379fe869ac6fa515b1bb2",
+ "scripts/cl.xml":
+ "f923201d4ea3e1130763b19fa7faa7a2",
+ "scripts/egl.xml":
+ "013c552e6c523abdcf268268ea47e9fe",
+ "scripts/egl_angle_ext.xml":
+ "5bcc01462b355d933cf3ada15198fb68",
+ "scripts/gl.xml":
+ "a442a7aeff3a2f0a1fba52ee08089500",
+ "scripts/gl_angle_ext.xml":
+ "08f74b35d908b7c02b45fdf45572c434",
+ "scripts/registry_xml.py":
+ "7e9a66850b966c79f2f4d5036a5bd8b0",
+ "scripts/wgl.xml":
+ "c36001431919e1c435f1215a85f7e1db",
+ "src/libANGLE/gen_extensions.py":
+ "09abdc7e386601ea3b259cd30ec08ea0",
+ "src/libANGLE/gles_extensions_autogen.cpp":
+ "039e36b4e6f02839e380b07fc9cb2855",
+ "src/libANGLE/gles_extensions_autogen.h":
+ "a88430deae68c3fcd045bd22d00033e8"
+}
\ No newline at end of file
diff --git a/scripts/code_generation_hashes/GL_EGL_WGL_loader.json b/scripts/code_generation_hashes/GL_EGL_WGL_loader.json
index e6547fa5d..dab708632 100644
--- a/scripts/code_generation_hashes/GL_EGL_WGL_loader.json
+++ b/scripts/code_generation_hashes/GL_EGL_WGL_loader.json
@@ -8,11 +8,11 @@
"scripts/generate_loader.py":
"b95f0518351e08bf17240279b2681a6c",
"scripts/gl.xml":
- "e99461f683ac14cbb1eac57ad73db0e8",
+ "a442a7aeff3a2f0a1fba52ee08089500",
"scripts/gl_angle_ext.xml":
"08f74b35d908b7c02b45fdf45572c434",
"scripts/registry_xml.py":
- "9dafea2a646826c757d1d32711231e74",
+ "7e9a66850b966c79f2f4d5036a5bd8b0",
"scripts/wgl.xml":
"c36001431919e1c435f1215a85f7e1db",
"src/libEGL/egl_loader_autogen.cpp":
diff --git a/scripts/code_generation_hashes/GL_EGL_entry_points.json b/scripts/code_generation_hashes/GL_EGL_entry_points.json
index 91dca6022..9da4b4040 100644
--- a/scripts/code_generation_hashes/GL_EGL_entry_points.json
+++ b/scripts/code_generation_hashes/GL_EGL_entry_points.json
@@ -12,11 +12,11 @@
"scripts/generate_entry_points.py":
"b215414751c7c1b976482edc1a7ffc77",
"scripts/gl.xml":
- "e99461f683ac14cbb1eac57ad73db0e8",
+ "a442a7aeff3a2f0a1fba52ee08089500",
"scripts/gl_angle_ext.xml":
"08f74b35d908b7c02b45fdf45572c434",
"scripts/registry_xml.py":
- "9dafea2a646826c757d1d32711231e74",
+ "7e9a66850b966c79f2f4d5036a5bd8b0",
"scripts/wgl.xml":
"c36001431919e1c435f1215a85f7e1db",
"src/common/entry_points_enum_autogen.cpp":
@@ -42,7 +42,7 @@
"src/libANGLE/Context_gles_3_2_autogen.h":
"48567dca16fd881dfe6d61fee0e3106f",
"src/libANGLE/Context_gles_ext_autogen.h":
- "eda3bb2e26a59f76eb3e897ea89b4999",
+ "9ed6f6011b545d72fc8352848999b51d",
"src/libANGLE/capture/capture_gles_1_0_autogen.cpp":
"7ec7ef8f779b809a45d74b97502c419b",
"src/libANGLE/capture/capture_gles_1_0_autogen.h":
@@ -66,7 +66,7 @@
"src/libANGLE/capture/capture_gles_ext_autogen.cpp":
"da3c5ba77334da863d267350091b13dd",
"src/libANGLE/capture/capture_gles_ext_autogen.h":
- "c668434d3c0f909e48bdcabfebd0b1a7",
+ "ffb7afa0f3a5971c42e37a31bbd39125",
"src/libANGLE/capture/frame_capture_replay_autogen.cpp":
"e0a3c284b986e2a712589b6f3523d79c",
"src/libANGLE/capture/frame_capture_utils_autogen.cpp":
@@ -88,7 +88,7 @@
"src/libANGLE/validationES3_autogen.h":
"7435b9caddf8787b937c71a54dda96e1",
"src/libANGLE/validationESEXT_autogen.h":
- "bc9f45eeb628722bd20ca826c96814eb",
+ "859ef99e38808a39fd89dfc728468dd5",
"src/libANGLE/validationGL1_autogen.h":
"439f8ea26dc37ee6608100f4c6f9205c",
"src/libANGLE/validationGL2_autogen.h":
@@ -162,17 +162,17 @@
"src/libGLESv2/entry_points_gles_3_2_autogen.h":
"647f932a299cdb4726b60bbba059f0d2",
"src/libGLESv2/entry_points_gles_ext_autogen.cpp":
- "3baf7f6a6470248452230083a53ed016",
+ "595369698a6deda1c53900dfb0e288b9",
"src/libGLESv2/entry_points_gles_ext_autogen.h":
- "132b52b10e3076b6ea183a480709a154",
+ "d9f1298ae5622c2b9d342d11b1808c74",
"src/libGLESv2/libGLESv2_autogen.cpp":
- "a63c3a32a98f1826a6a0e8c3c3dfcc8b",
+ "78f4797308ea7b304e1427aeca812a1c",
"src/libGLESv2/libGLESv2_autogen.def":
- "fcac3c9129aa5a41546fbab3920ab419",
+ "af8a1948f5b828ae847bd8b00c10fffe",
"src/libGLESv2/libGLESv2_no_capture_autogen.def":
- "10406245739cb06a538e75eb8ffe905c",
+ "7a9fc0f3e95b53fbb1bcb5516c4ae0c2",
"src/libGLESv2/libGLESv2_with_capture_autogen.def":
- "a173df42f6845695c19873ffb470f58b",
+ "2e0ccc0fc63e300c3248a1c3c6ac7aca",
"src/libOpenCL/libOpenCL_autogen.cpp":
"10849978c910dc1af5dd4f0c815d1581"
}
\ No newline at end of file
diff --git a/scripts/code_generation_hashes/GLenum_value_to_string_map.json b/scripts/code_generation_hashes/GLenum_value_to_string_map.json
index af47e9798..54355cadc 100644
--- a/scripts/code_generation_hashes/GLenum_value_to_string_map.json
+++ b/scripts/code_generation_hashes/GLenum_value_to_string_map.json
@@ -2,13 +2,13 @@
"scripts/gen_gl_enum_utils.py":
"332cfb6f04242d18966445f70f0039b3",
"scripts/gl.xml":
- "e99461f683ac14cbb1eac57ad73db0e8",
+ "a442a7aeff3a2f0a1fba52ee08089500",
"scripts/gl_angle_ext.xml":
"08f74b35d908b7c02b45fdf45572c434",
"scripts/registry_xml.py":
- "9dafea2a646826c757d1d32711231e74",
+ "7e9a66850b966c79f2f4d5036a5bd8b0",
"src/libANGLE/capture/gl_enum_utils_autogen.cpp":
- "96cc2400631cc3e7ab7aba104b8f23e9",
+ "2ea097051161668c1cef088043707735",
"src/libANGLE/capture/gl_enum_utils_autogen.h":
"fb0bb7f506f6082ea3b2c3fa384d2739"
}
\ No newline at end of file
diff --git a/scripts/code_generation_hashes/OpenGL_dispatch_table.json b/scripts/code_generation_hashes/OpenGL_dispatch_table.json
index 89701314b..461877f06 100644
--- a/scripts/code_generation_hashes/OpenGL_dispatch_table.json
+++ b/scripts/code_generation_hashes/OpenGL_dispatch_table.json
@@ -1,10 +1,10 @@
{
"scripts/gl.xml":
- "e99461f683ac14cbb1eac57ad73db0e8",
+ "a442a7aeff3a2f0a1fba52ee08089500",
"src/libANGLE/renderer/angle_format.py":
"74d6c9842128293118ccf128aeae896a",
"src/libANGLE/renderer/gl/DispatchTableGL_autogen.cpp":
- "06399dbfa161982f60b0af04e3cf9ffb",
+ "f0d5c792843c9d7d9c06fd7b9b20724c",
"src/libANGLE/renderer/gl/DispatchTableGL_autogen.h":
"3115c293d6612d10498a1063b8cebe1a",
"src/libANGLE/renderer/gl/generate_gl_dispatch_table.py":
diff --git a/scripts/code_generation_hashes/proc_table.json b/scripts/code_generation_hashes/proc_table.json
index ed7dfacee..a8f46e5fc 100644
--- a/scripts/code_generation_hashes/proc_table.json
+++ b/scripts/code_generation_hashes/proc_table.json
@@ -8,11 +8,11 @@
"scripts/gen_proc_table.py":
"8336449da7e36f45dd6d70c44add2ebf",
"scripts/gl.xml":
- "e99461f683ac14cbb1eac57ad73db0e8",
+ "a442a7aeff3a2f0a1fba52ee08089500",
"scripts/gl_angle_ext.xml":
"08f74b35d908b7c02b45fdf45572c434",
"scripts/registry_xml.py":
- "9dafea2a646826c757d1d32711231e74",
+ "7e9a66850b966c79f2f4d5036a5bd8b0",
"scripts/wgl.xml":
"c36001431919e1c435f1215a85f7e1db",
"src/libGL/proc_table_wgl_autogen.cpp":
diff --git a/scripts/gl.xml b/scripts/gl.xml
index 1e5359c40..659c10c9e 100644
--- a/scripts/gl.xml
+++ b/scripts/gl.xml
@@ -41347,7 +41347,7 @@ typedef unsigned int GLhandleARB;
-
+
@@ -47256,7 +47256,7 @@ typedef unsigned int GLhandleARB;
-
+
diff --git a/scripts/registry_xml.py b/scripts/registry_xml.py
index 7831648c9..aa703f2c8 100644
--- a/scripts/registry_xml.py
+++ b/scripts/registry_xml.py
@@ -10,6 +10,7 @@
# List of supported extensions. Add to this list to enable new extensions
# available in gl.xml.
+import difflib
import os
import sys
import xml.etree.ElementTree as etree
@@ -26,63 +27,72 @@ xml_inputs = [
'registry_xml.py',
]
-angle_extensions = [
- # ANGLE extensions
- "GL_CHROMIUM_bind_uniform_location",
- "GL_CHROMIUM_framebuffer_mixed_samples",
- "GL_CHROMIUM_path_rendering",
- "GL_CHROMIUM_copy_texture",
- "GL_CHROMIUM_copy_compressed_texture",
- "GL_CHROMIUM_lose_context",
- "GL_ANGLE_copy_texture_3d",
- "GL_ANGLE_get_image",
- "GL_ANGLE_get_serialized_context_string",
- "GL_ANGLE_get_tex_level_parameter",
- "GL_ANGLE_program_binary",
- "GL_ANGLE_request_extension",
- "GL_ANGLE_robust_client_memory",
- "GL_ANGLE_texture_external_update",
+# Notes on categories of extensions:
+# 'Requestable' extensions are extensions that can be enabled with ANGLE_request_extension
+# 'ES-Only' extensions are always implicitly enabled.
+# 'Toggleable' extensions are like 'Requestable' except they can be also disabled.
+# 'ANGLE' extensions are extensions that are not yet officially upstreamed to Khronos.
+# We document those extensions in gl_angle_ext.xml instead of the canonical gl.xml.
+
+angle_toggleable_extensions = [
+ "GL_ANGLE_texture_rectangle",
]
-gles1_extensions = [
- # ES1 (Possibly the min set of extensions needed by Android)
- "GL_OES_draw_texture",
- "GL_OES_framebuffer_object",
- "GL_OES_matrix_palette",
- "GL_OES_point_size_array",
- "GL_OES_query_matrix",
- "GL_OES_texture_cube_map",
-]
-
-gles_extensions = [
- # ES2+
+angle_requestable_extensions = [
"GL_ANGLE_base_vertex_base_instance",
- "GL_ANGLE_framebuffer_blit",
+ "GL_ANGLE_compressed_texture_etc",
+ "GL_ANGLE_copy_texture_3d",
"GL_ANGLE_framebuffer_multisample",
- "GL_ANGLE_instanced_arrays",
+ "GL_ANGLE_get_image",
+ "GL_ANGLE_get_tex_level_parameter",
+ "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_provoking_vertex",
"GL_ANGLE_semaphore_fuchsia",
+ "GL_ANGLE_texture_compression_dxt3",
+ "GL_ANGLE_texture_compression_dxt5",
+ "GL_ANGLE_texture_external_update",
"GL_ANGLE_texture_multisample",
- "GL_ANGLE_translated_shader_source",
- "GL_KHR_blend_equation_advanced",
+ "GL_ANGLE_yuv_internal_format",
+ "GL_CHROMIUM_color_buffer_float_rgb",
+ "GL_CHROMIUM_color_buffer_float_rgba",
+ "GL_CHROMIUM_lose_context",
+ "GL_CHROMIUM_sync_query",
+ "GL_CHROMIUM_texture_filtering_hint",
+]
+
+gles_requestable_extensions = [
+ "GL_ANGLE_framebuffer_blit",
+ "GL_ANGLE_instanced_arrays",
+ "GL_ANGLE_pack_reverse_row_order",
+ "GL_ANGLE_texture_usage",
+ "GL_APPLE_clip_distance",
+ "GL_ARB_sync",
"GL_EXT_blend_func_extended",
+ "GL_EXT_blend_minmax",
"GL_EXT_buffer_storage",
- "GL_EXT_copy_image",
"GL_EXT_clip_control",
- "GL_EXT_debug_label",
- "GL_EXT_debug_marker",
- "GL_EXT_discard_framebuffer",
+ "GL_EXT_clip_cull_distance",
+ "GL_EXT_color_buffer_float",
+ "GL_EXT_color_buffer_half_float",
+ "GL_EXT_compressed_ETC1_RGB8_sub_texture",
+ "GL_EXT_copy_image",
"GL_EXT_disjoint_timer_query",
"GL_EXT_draw_buffers",
"GL_EXT_draw_buffers_indexed",
"GL_EXT_draw_elements_base_vertex",
"GL_EXT_EGL_image_array",
+ "GL_EXT_EGL_image_external_wrap_modes",
"GL_EXT_EGL_image_storage",
"GL_EXT_external_buffer",
+ "GL_EXT_float_blend",
+ "GL_EXT_frag_depth",
"GL_EXT_geometry_shader",
+ "GL_EXT_gpu_shader5",
"GL_EXT_instanced_arrays",
"GL_EXT_map_buffer_range",
"GL_EXT_memory_object",
@@ -90,18 +100,18 @@ gles_extensions = [
"GL_EXT_multisampled_render_to_texture",
"GL_EXT_multisampled_render_to_texture2",
"GL_EXT_occlusion_query_boolean",
- "GL_EXT_primitive_bounding_box",
"GL_EXT_protected_textures",
"GL_EXT_pvrtc_sRGB",
"GL_EXT_read_format_bgra",
- "GL_EXT_robustness",
"GL_EXT_semaphore",
"GL_EXT_semaphore_fd",
"GL_EXT_separate_shader_objects",
"GL_EXT_shader_framebuffer_fetch_non_coherent",
"GL_EXT_shader_io_blocks",
+ "GL_EXT_shader_non_constant_global_initializers",
+ "GL_EXT_shader_texture_lod",
+ "GL_EXT_shadow_samplers",
"GL_EXT_sRGB",
- "GL_EXT_sRGB_write_control",
"GL_EXT_tessellation_shader",
"GL_EXT_texture_border_clamp",
"GL_EXT_texture_buffer",
@@ -113,45 +123,151 @@ gles_extensions = [
"GL_EXT_texture_cube_map_array",
"GL_EXT_texture_filter_anisotropic",
"GL_EXT_texture_format_BGRA8888",
- "GL_EXT_texture_storage",
+ "GL_EXT_texture_norm16",
+ "GL_EXT_texture_rg",
"GL_EXT_texture_sRGB_R8",
"GL_EXT_texture_sRGB_RG8",
+ "GL_EXT_texture_storage",
+ "GL_EXT_texture_type_2_10_10_10_REV",
+ "GL_EXT_unpack_subimage",
"GL_EXT_YUV_target",
"GL_IMG_texture_compression_pvrtc",
"GL_IMG_texture_compression_pvrtc2",
- "GL_KHR_debug",
"GL_KHR_parallel_shader_compile",
- "GL_KHR_texture_compression_astc_ldr",
"GL_KHR_texture_compression_astc_hdr",
+ "GL_KHR_texture_compression_astc_ldr",
"GL_KHR_texture_compression_astc_sliced_3d",
- "GL_NV_fence",
+ "GL_NV_depth_buffer_float2",
+ "GL_NV_EGL_stream_consumer_external",
"GL_NV_framebuffer_blit",
+ "GL_NV_pack_subimage",
+ "GL_NV_pixel_buffer_object",
+ "GL_NV_read_depth",
+ "GL_NV_read_stencil",
+ "GL_NV_shader_noperspective_interpolation",
+ "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_OES_compressed_ETC1_RGB8_texture",
- "GL_EXT_compressed_ETC1_RGB8_sub_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_copy_image",
- "GL_OES_depth32",
+ "GL_OES_depth_texture_cube_map",
"GL_OES_draw_buffers_indexed",
"GL_OES_draw_elements_base_vertex",
"GL_OES_EGL_image",
+ "GL_OES_EGL_image_external",
+ "GL_OES_EGL_image_external_essl3",
+ "GL_OES_element_index_uint",
+ "GL_OES_fbo_render_mipmap",
"GL_OES_geometry_shader",
"GL_OES_get_program_binary",
"GL_OES_mapbuffer",
+ "GL_OES_rgb8_rgba8",
"GL_OES_sample_shading",
+ "GL_OES_sample_variables",
+ "GL_OES_shader_image_atomic",
"GL_OES_shader_io_blocks",
+ "GL_OES_shader_multisample_interpolation",
+ "GL_OES_standard_derivatives",
"GL_OES_texture_3D",
"GL_OES_texture_border_clamp",
"GL_OES_texture_buffer",
+ "GL_OES_texture_compression_astc",
"GL_OES_texture_cube_map_array",
+ "GL_OES_texture_float",
+ "GL_OES_texture_float_linear",
"GL_OES_texture_half_float",
+ "GL_OES_texture_half_float_linear",
+ "GL_OES_texture_npot",
"GL_OES_texture_stencil8",
"GL_OES_texture_storage_multisample_2d_array",
"GL_OES_vertex_array_object",
+ "GL_OES_vertex_half_float",
+ "GL_OES_vertex_type_10_10_10_2",
"GL_OVR_multiview",
"GL_OVR_multiview2",
+ "GL_WEBGL_video_texture",
]
+angle_es_only_extensions = [
+ "GL_ANGLE_client_arrays",
+ "GL_ANGLE_get_serialized_context_string",
+ "GL_ANGLE_program_binary",
+ "GL_ANGLE_program_cache_control",
+ "GL_ANGLE_relaxed_vertex_attribute_type",
+ "GL_ANGLE_request_extension",
+ "GL_ANGLE_robust_client_memory",
+ "GL_ANGLE_robust_resource_initialization",
+ "GL_ANGLE_webgl_compatibility",
+ "GL_CHROMIUM_bind_generates_resource",
+ "GL_CHROMIUM_bind_uniform_location",
+ "GL_CHROMIUM_copy_compressed_texture",
+ "GL_CHROMIUM_copy_texture",
+ "GL_CHROMIUM_framebuffer_mixed_samples",
+]
+
+gles_es_only_extensions = [
+ "GL_ANGLE_depth_texture",
+ "GL_ANGLE_translated_shader_source",
+ "GL_EXT_debug_label",
+ "GL_EXT_debug_marker",
+ "GL_EXT_discard_framebuffer",
+ "GL_EXT_multisample_compatibility",
+ "GL_EXT_primitive_bounding_box",
+ "GL_EXT_robustness",
+ "GL_EXT_sRGB_write_control",
+ "GL_EXT_texture_format_sRGB_override",
+ "GL_EXT_texture_sRGB_decode",
+ "GL_KHR_blend_equation_advanced",
+ "GL_KHR_debug",
+ "GL_KHR_no_error",
+ "GL_KHR_robust_buffer_access_behavior",
+ "GL_NV_fence",
+ "GL_NV_robustness_video_memory_purge",
+ "GL_OES_depth24",
+ "GL_OES_depth32",
+ "GL_OES_depth_texture",
+ "GL_OES_EGL_sync",
+ "GL_OES_packed_depth_stencil",
+ "GL_OES_surfaceless_context",
+]
+
+# ES1 (Possibly the min set of extensions needed by Android)
+gles1_extensions = [
+ "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",
+]
+
+
+def check_sorted(name, l):
+ unidiff = difflib.unified_diff(l, sorted(l, key=str.casefold), 'unsorted', 'sorted')
+ diff_lines = list(unidiff)
+ assert not diff_lines, '\n\nPlease sort "%s":\n%s' % (name, '\n'.join(diff_lines))
+
+
+angle_extensions = angle_requestable_extensions + angle_es_only_extensions + angle_toggleable_extensions
+gles_extensions = gles_requestable_extensions + gles_es_only_extensions
supported_extensions = sorted(angle_extensions + gles1_extensions + gles_extensions)
+assert len(supported_extensions) == len(set(supported_extensions)), 'Duplicates in extension list'
+check_sorted('angle_requestable_extensions', angle_requestable_extensions)
+check_sorted('angle_es_only_extensions', angle_es_only_extensions)
+check_sorted('angle_toggleable_extensions', angle_toggleable_extensions)
+check_sorted('gles_requestable_extensions', gles_requestable_extensions)
+check_sorted('gles_es_only_extensions', gles_es_only_extensions)
+check_sorted('gles_extensions', gles1_extensions)
+
supported_egl_extensions = [
"EGL_ANDROID_blob_cache",
"EGL_ANDROID_create_native_client_buffer",
@@ -206,6 +322,8 @@ supported_egl_extensions = [
"EGL_NV_stream_consumer_gltexture_yuv",
]
+check_sorted('supported_egl_extensions', supported_egl_extensions)
+
supported_cl_extensions = [
# Since OpenCL 1.1
"cl_khr_byte_addressable_store",
@@ -352,7 +470,8 @@ class RegistryXML:
self.all_cmd_names.add_commands(annotation, commands)
self.commands[annotation] = commands
- def _ClassifySupport(self, supported):
+ def _ClassifySupport(self, extension):
+ supported = extension.attrib['supported']
if 'gles2' in supported:
return 'gl2ext'
elif 'gles1' in supported:
@@ -364,7 +483,8 @@ class RegistryXML:
elif 'cl' in supported:
return 'clext'
else:
- assert False
+ assert False, 'Cannot classify support for %s: %s' % (extension.attrib['name'],
+ supported)
return 'unknown'
def AddExtensionCommands(self, supported_extensions, apis):
@@ -379,7 +499,7 @@ class RegistryXML:
if not extension_name in supported_extensions:
continue
- ext_annotations[extension_name] = self._ClassifySupport(extension.attrib['supported'])
+ ext_annotations[extension_name] = self._ClassifySupport(extension)
ext_cmd_names = []
diff --git a/scripts/run_code_generation.py b/scripts/run_code_generation.py
index c7c2bfd70..9710b2ef3 100755
--- a/scripts/run_code_generation.py
+++ b/scripts/run_code_generation.py
@@ -99,6 +99,8 @@ generators = {
'src/libANGLE/renderer/gen_dxgi_support_tables.py',
'Emulated HLSL functions':
'src/compiler/translator/gen_emulated_builtin_function_tables.py',
+ 'Extension files':
+ 'src/libANGLE/gen_extensions.py',
'GL copy conversion table':
'src/libANGLE/gen_copy_conversion_table.py',
'GL CTS (dEQP) build files':
diff --git a/src/libANGLE/Caps.cpp b/src/libANGLE/Caps.cpp
index 624aadcf2..0925b7fcd 100644
--- a/src/libANGLE/Caps.cpp
+++ b/src/libANGLE/Caps.cpp
@@ -6,7 +6,6 @@
#include "libANGLE/Caps.h"
-#include "anglebase/no_destructor.h"
#include "common/angleutils.h"
#include "common/debug.h"
@@ -899,238 +898,6 @@ void Extensions::setTextureExtensionSupport(const TextureCapsMap &textureCaps)
textureStencil8OES = DetermineStencilIndex8Support(textureCaps);
}
-const ExtensionInfoMap &GetExtensionInfoMap()
-{
- auto buildExtensionInfoMap = []() {
- auto enableableExtension = [](ExtensionBool member) {
- ExtensionInfo info;
- info.Requestable = true;
- info.ExtensionsMember = member;
- return info;
- };
-
- auto enableableDisablableExtension = [&](ExtensionBool member) {
- ExtensionInfo info = enableableExtension(member);
- info.Disablable = true;
- return info;
- };
-
- auto esOnlyExtension = [](ExtensionBool member) {
- ExtensionInfo info;
- info.ExtensionsMember = member;
- return info;
- };
-
- // clang-format off
- ExtensionInfoMap map;
- map["GL_OES_element_index_uint"] = enableableExtension(&Extensions::elementIndexUintOES);
- map["GL_OES_packed_depth_stencil"] = esOnlyExtension(&Extensions::packedDepthStencilOES);
- map["GL_OES_get_program_binary"] = enableableExtension(&Extensions::getProgramBinaryOES);
- map["GL_OES_rgb8_rgba8"] = enableableExtension(&Extensions::rgb8Rgba8OES);
- map["GL_NV_read_depth"] = enableableExtension(&Extensions::readDepthNV);
- map["GL_NV_read_stencil"] = enableableExtension(&Extensions::readStencilNV);
- map["GL_NV_depth_buffer_float2"] = enableableExtension(&Extensions::depthBufferFloat2NV);
- map["GL_EXT_texture_format_BGRA8888"] = enableableExtension(&Extensions::textureFormatBGRA8888EXT);
- map["GL_EXT_texture_type_2_10_10_10_REV"] = enableableExtension(&Extensions::textureType2101010REVEXT);
- map["GL_EXT_read_format_bgra"] = enableableExtension(&Extensions::readFormatBgraEXT);
- map["GL_NV_pixel_buffer_object"] = enableableExtension(&Extensions::pixelBufferObjectNV);
- map["GL_ARB_sync"] = enableableExtension(&Extensions::syncARB);
- map["GL_OES_mapbuffer"] = enableableExtension(&Extensions::mapbufferOES);
- map["GL_EXT_map_buffer_range"] = enableableExtension(&Extensions::mapBufferRangeEXT);
- map["GL_EXT_color_buffer_half_float"] = enableableExtension(&Extensions::colorBufferHalfFloatEXT);
- map["GL_OES_texture_half_float"] = enableableExtension(&Extensions::textureHalfFloatOES);
- map["GL_OES_texture_half_float_linear"] = enableableExtension(&Extensions::textureHalfFloatLinearOES);
- map["GL_OES_texture_float"] = enableableExtension(&Extensions::textureFloatOES);
- map["GL_OES_texture_float_linear"] = enableableExtension(&Extensions::textureFloatLinearOES);
- map["GL_EXT_texture_rg"] = enableableExtension(&Extensions::textureRgEXT);
- map["GL_EXT_texture_compression_dxt1"] = enableableExtension(&Extensions::textureCompressionDxt1EXT);
- map["GL_ANGLE_texture_compression_dxt3"] = enableableExtension(&Extensions::textureCompressionDxt3ANGLE);
- map["GL_ANGLE_texture_compression_dxt5"] = enableableExtension(&Extensions::textureCompressionDxt5ANGLE);
- map["GL_EXT_texture_compression_s3tc_srgb"] = enableableExtension(&Extensions::textureCompressionS3tcSrgbEXT);
- map["GL_KHR_texture_compression_astc_ldr"] = enableableExtension(&Extensions::textureCompressionAstcLdrKHR);
- map["GL_KHR_texture_compression_astc_hdr"] = enableableExtension(&Extensions::textureCompressionAstcHdrKHR);
- map["GL_KHR_texture_compression_astc_sliced_3d"] = enableableExtension(&Extensions::textureCompressionAstcSliced3dKHR);
- map["GL_OES_texture_compression_astc"] = enableableExtension(&Extensions::textureCompressionAstcOES);
- map["GL_EXT_texture_compression_bptc"] = enableableExtension(&Extensions::textureCompressionBptcEXT);
- map["GL_EXT_texture_compression_rgtc"] = enableableExtension(&Extensions::textureCompressionRgtcEXT);
- map["GL_OES_compressed_ETC1_RGB8_texture"] = enableableExtension(&Extensions::compressedETC1RGB8TextureOES);
- map["GL_EXT_compressed_ETC1_RGB8_sub_texture"] = enableableExtension(&Extensions::compressedETC1RGB8SubTextureEXT);
- map["GL_OES_compressed_ETC2_RGB8_texture"] = enableableExtension(&Extensions::compressedETC2RGB8TextureOES);
- map["GL_OES_compressed_ETC2_sRGB8_texture"] = enableableExtension(&Extensions::compressedETC2SRGB8TextureOES);
- map["GL_OES_compressed_ETC2_punchthroughA_RGBA8_texture"] = enableableExtension(&Extensions::compressedETC2PunchthroughARGBA8TextureOES);
- map["GL_OES_compressed_ETC2_punchthroughA_sRGB8_alpha_texture"] = enableableExtension(&Extensions::compressedETC2PunchthroughASRGB8AlphaTextureOES);
- map["GL_OES_compressed_ETC2_RGBA8_texture"] = enableableExtension(&Extensions::compressedETC2RGBA8TextureOES);
- map["GL_OES_compressed_ETC2_sRGB8_alpha8_texture"] = enableableExtension(&Extensions::compressedETC2SRGB8Alpha8TextureOES);
- map["GL_OES_compressed_EAC_R11_unsigned_texture"] = enableableExtension(&Extensions::compressedEACR11UnsignedTextureOES);
- map["GL_OES_compressed_EAC_R11_signed_texture"] = enableableExtension(&Extensions::compressedEACR11SignedTextureOES);
- map["GL_OES_compressed_EAC_RG11_unsigned_texture"] = enableableExtension(&Extensions::compressedEACRG11UnsignedTextureOES);
- map["GL_OES_compressed_EAC_RG11_signed_texture"] = enableableExtension(&Extensions::compressedEACRG11SignedTextureOES);
- map["GL_ANGLE_compressed_texture_etc"] = enableableExtension(&Extensions::compressedTextureEtcANGLE);
- map["GL_IMG_texture_compression_pvrtc"] = enableableExtension(&Extensions::textureCompressionPvrtcIMG);
- map["GL_EXT_pvrtc_sRGB"] = enableableExtension(&Extensions::pvrtcSRGBEXT);
- map["GL_EXT_sRGB"] = enableableExtension(&Extensions::sRGBEXT);
- map["GL_EXT_texture_sRGB_R8"] = enableableExtension(&Extensions::textureSRGBR8EXT);
- map["GL_EXT_texture_sRGB_RG8"] = enableableExtension(&Extensions::textureSRGBRG8EXT);
- map["GL_ANGLE_depth_texture"] = esOnlyExtension(&Extensions::depthTextureANGLE);
- map["GL_OES_depth_texture"] = esOnlyExtension(&Extensions::depthTextureOES);
- map["GL_OES_depth_texture_cube_map"] = enableableExtension(&Extensions::depthTextureCubeMapOES);
- map["GL_OES_depth24"] = esOnlyExtension(&Extensions::depth24OES);
- map["GL_OES_depth32"] = esOnlyExtension(&Extensions::depth32OES);
- map["GL_OES_texture_3D"] = enableableExtension(&Extensions::texture3DOES);
- map["GL_EXT_texture_storage"] = enableableExtension(&Extensions::textureStorageEXT);
- map["GL_OES_texture_npot"] = enableableExtension(&Extensions::textureNpotOES);
- map["GL_EXT_draw_buffers"] = enableableExtension(&Extensions::drawBuffersEXT);
- map["GL_EXT_draw_buffers_indexed"] = enableableExtension(&Extensions::drawBuffersIndexedEXT);
- map["GL_OES_draw_buffers_indexed"] = enableableExtension(&Extensions::drawBuffersIndexedOES);
- map["GL_EXT_texture_filter_anisotropic"] = enableableExtension(&Extensions::textureFilterAnisotropicEXT);
- map["GL_EXT_occlusion_query_boolean"] = enableableExtension(&Extensions::occlusionQueryBooleanEXT);
- map["GL_NV_fence"] = esOnlyExtension(&Extensions::fenceNV);
- map["GL_EXT_disjoint_timer_query"] = enableableExtension(&Extensions::disjointTimerQueryEXT);
- map["GL_EXT_robustness"] = esOnlyExtension(&Extensions::robustnessEXT);
- map["GL_KHR_robust_buffer_access_behavior"] = esOnlyExtension(&Extensions::robustBufferAccessBehaviorKHR);
- map["GL_EXT_blend_minmax"] = enableableExtension(&Extensions::blendMinmaxEXT);
- map["GL_ANGLE_framebuffer_blit"] = enableableExtension(&Extensions::framebufferBlitANGLE);
- map["GL_NV_framebuffer_blit"] = enableableExtension(&Extensions::framebufferBlitNV);
- map["GL_ANGLE_framebuffer_multisample"] = enableableExtension(&Extensions::framebufferMultisampleANGLE);
- map["GL_EXT_multisampled_render_to_texture"] = enableableExtension(&Extensions::multisampledRenderToTextureEXT);
- map["GL_EXT_multisampled_render_to_texture2"] = enableableExtension(&Extensions::multisampledRenderToTexture2EXT);
- map["GL_ANGLE_instanced_arrays"] = enableableExtension(&Extensions::instancedArraysANGLE);
- map["GL_EXT_instanced_arrays"] = enableableExtension(&Extensions::instancedArraysEXT);
- map["GL_ANGLE_pack_reverse_row_order"] = enableableExtension(&Extensions::packReverseRowOrderANGLE);
- map["GL_OES_standard_derivatives"] = enableableExtension(&Extensions::standardDerivativesOES);
- map["GL_EXT_shader_texture_lod"] = enableableExtension(&Extensions::shaderTextureLodEXT);
- map["GL_EXT_frag_depth"] = enableableExtension(&Extensions::fragDepthEXT);
- map["GL_OVR_multiview"] = enableableExtension(&Extensions::multiviewOVR);
- map["GL_OVR_multiview2"] = enableableExtension(&Extensions::multiview2OVR);
- map["GL_ANGLE_texture_usage"] = enableableExtension(&Extensions::textureUsageANGLE);
- map["GL_ANGLE_translated_shader_source"] = esOnlyExtension(&Extensions::translatedShaderSourceANGLE);
- map["GL_OES_fbo_render_mipmap"] = enableableExtension(&Extensions::fboRenderMipmapOES);
- map["GL_EXT_discard_framebuffer"] = esOnlyExtension(&Extensions::discardFramebufferEXT);
- map["GL_EXT_debug_label"] = esOnlyExtension(&Extensions::debugLabelEXT);
- map["GL_EXT_debug_marker"] = esOnlyExtension(&Extensions::debugMarkerEXT);
- map["GL_OES_EGL_image"] = enableableExtension(&Extensions::EGLImageOES);
- map["GL_OES_EGL_image_external"] = enableableExtension(&Extensions::EGLImageExternalOES);
- map["GL_OES_EGL_image_external_essl3"] = enableableExtension(&Extensions::EGLImageExternalEssl3OES);
- map["GL_EXT_EGL_image_external_wrap_modes"] = enableableExtension(&Extensions::EGLImageExternalWrapModesEXT);
- map["GL_OES_EGL_sync"] = esOnlyExtension(&Extensions::EGLSyncOES);
- map["GL_EXT_memory_object"] = enableableExtension(&Extensions::memoryObjectEXT);
- map["GL_EXT_memory_object_fd"] = enableableExtension(&Extensions::memoryObjectFdEXT);
- map["GL_ANGLE_memory_object_flags"] = enableableExtension(&Extensions::memoryObjectFlagsANGLE);
- map["GL_ANGLE_memory_object_fuchsia"] = enableableExtension(&Extensions::memoryObjectFuchsiaANGLE);
- map["GL_EXT_semaphore"] = enableableExtension(&Extensions::semaphoreEXT);
- map["GL_EXT_semaphore_fd"] = enableableExtension(&Extensions::semaphoreFdEXT);
- map["GL_NV_EGL_stream_consumer_external"] = enableableExtension(&Extensions::EGLStreamConsumerExternalNV);
- map["GL_NV_shader_noperspective_interpolation"] = enableableExtension(&Extensions::shaderNoperspectiveInterpolationNV);
- map["GL_ANGLE_semaphore_fuchsia"] = enableableExtension(&Extensions::semaphoreFuchsiaANGLE);
- map["GL_EXT_unpack_subimage"] = enableableExtension(&Extensions::unpackSubimageEXT);
- map["GL_NV_pack_subimage"] = enableableExtension(&Extensions::packSubimageNV);
- map["GL_EXT_color_buffer_float"] = enableableExtension(&Extensions::colorBufferFloatEXT);
- map["GL_OES_vertex_half_float"] = enableableExtension(&Extensions::vertexHalfFloatOES);
- map["GL_OES_vertex_array_object"] = enableableExtension(&Extensions::vertexArrayObjectOES);
- map["GL_OES_vertex_type_10_10_10_2"] = enableableExtension(&Extensions::vertexType1010102OES);
- map["GL_KHR_debug"] = esOnlyExtension(&Extensions::debugKHR);
- map["GL_OES_texture_border_clamp"] = enableableExtension(&Extensions::textureBorderClampOES);
- map["GL_EXT_texture_border_clamp"] = enableableExtension(&Extensions::textureBorderClampEXT);
- map["GL_KHR_no_error"] = esOnlyExtension(&Extensions::noErrorKHR);
- map["GL_ANGLE_lossy_etc_decode"] = enableableExtension(&Extensions::lossyEtcDecodeANGLE);
- map["GL_CHROMIUM_bind_uniform_location"] = esOnlyExtension(&Extensions::bindUniformLocationCHROMIUM);
- map["GL_CHROMIUM_sync_query"] = enableableExtension(&Extensions::syncQueryCHROMIUM);
- map["GL_CHROMIUM_copy_texture"] = esOnlyExtension(&Extensions::copyTextureCHROMIUM);
- map["GL_CHROMIUM_copy_compressed_texture"] = esOnlyExtension(&Extensions::copyCompressedTextureCHROMIUM);
- map["GL_ANGLE_copy_texture_3d"] = enableableExtension(&Extensions::copyTexture3dANGLE);
- map["GL_ANGLE_webgl_compatibility"] = esOnlyExtension(&Extensions::webglCompatibilityANGLE);
- map["GL_ANGLE_request_extension"] = esOnlyExtension(&Extensions::requestExtensionANGLE);
- map["GL_CHROMIUM_bind_generates_resource"] = esOnlyExtension(&Extensions::bindGeneratesResourceCHROMIUM);
- map["GL_ANGLE_robust_client_memory"] = esOnlyExtension(&Extensions::robustClientMemoryANGLE);
- map["GL_EXT_texture_sRGB_decode"] = esOnlyExtension(&Extensions::textureSRGBDecodeEXT);
- map["GL_EXT_texture_format_sRGB_override"] = esOnlyExtension(&Extensions::textureFormatSRGBOverrideEXT);
- map["GL_EXT_sRGB_write_control"] = esOnlyExtension(&Extensions::sRGBWriteControlEXT);
- map["GL_CHROMIUM_color_buffer_float_rgb"] = enableableExtension(&Extensions::colorBufferFloatRgbCHROMIUM);
- map["GL_CHROMIUM_color_buffer_float_rgba"] = enableableExtension(&Extensions::colorBufferFloatRgbaCHROMIUM);
- map["GL_EXT_multisample_compatibility"] = esOnlyExtension(&Extensions::multisampleCompatibilityEXT);
- map["GL_CHROMIUM_framebuffer_mixed_samples"] = esOnlyExtension(&Extensions::framebufferMixedSamplesCHROMIUM);
- map["GL_EXT_texture_norm16"] = enableableExtension(&Extensions::textureNorm16EXT);
- map["GL_OES_surfaceless_context"] = esOnlyExtension(&Extensions::surfacelessContextOES);
- map["GL_ANGLE_client_arrays"] = esOnlyExtension(&Extensions::clientArraysANGLE);
- map["GL_ANGLE_robust_resource_initialization"] = esOnlyExtension(&Extensions::robustResourceInitializationANGLE);
- map["GL_ANGLE_program_cache_control"] = esOnlyExtension(&Extensions::programCacheControlANGLE);
- map["GL_ANGLE_texture_rectangle"] = enableableDisablableExtension(&Extensions::textureRectangleANGLE);
- map["GL_EXT_geometry_shader"] = enableableExtension(&Extensions::geometryShaderEXT);
- map["GL_OES_geometry_shader"] = enableableExtension(&Extensions::geometryShaderOES);
- map["GL_KHR_parallel_shader_compile"] = enableableExtension(&Extensions::parallelShaderCompileKHR);
- map["GL_EXT_separate_shader_objects"] = enableableExtension(&Extensions::separateShaderObjectsEXT);
- map["GL_OES_texture_storage_multisample_2d_array"] = enableableExtension(&Extensions::textureStorageMultisample2dArrayOES);
- map["GL_ANGLE_multiview_multisample"] = enableableExtension(&Extensions::multiviewMultisampleANGLE);
- map["GL_KHR_blend_equation_advanced"] = esOnlyExtension(&Extensions::blendEquationAdvancedKHR);
- map["GL_EXT_blend_func_extended"] = enableableExtension(&Extensions::blendFuncExtendedEXT);
- map["GL_EXT_float_blend"] = enableableExtension(&Extensions::floatBlendEXT);
- map["GL_ANGLE_texture_multisample"] = enableableExtension(&Extensions::textureMultisampleANGLE);
- map["GL_ANGLE_multi_draw"] = enableableExtension(&Extensions::multiDrawANGLE);
- map["GL_ANGLE_provoking_vertex"] = enableableExtension(&Extensions::provokingVertexANGLE);
- map["GL_CHROMIUM_texture_filtering_hint"] = enableableExtension(&Extensions::textureFilteringHintCHROMIUM);
- map["GL_CHROMIUM_lose_context"] = enableableExtension(&Extensions::loseContextCHROMIUM);
- map["GL_ANGLE_texture_external_update"] = enableableExtension(&Extensions::textureExternalUpdateANGLE);
- map["GL_ANGLE_base_vertex_base_instance"] = enableableExtension(&Extensions::baseVertexBaseInstanceANGLE);
- map["GL_ANGLE_get_image"] = enableableExtension(&Extensions::getImageANGLE);
- map["GL_OES_draw_elements_base_vertex"] = enableableExtension(&Extensions::drawElementsBaseVertexOES);
- map["GL_EXT_draw_elements_base_vertex"] = enableableExtension(&Extensions::drawElementsBaseVertexEXT);
- map["GL_EXT_gpu_shader5"] = enableableExtension(&Extensions::gpuShader5EXT);
- map["GL_APPLE_clip_distance"] = enableableExtension(&Extensions::clipDistanceAPPLE);
- map["GL_EXT_clip_control"] = enableableExtension(&Extensions::clipControlEXT);
- map["GL_EXT_EGL_image_array"] = enableableExtension(&Extensions::EGLImageArrayEXT);
- map["GL_EXT_EGL_image_storage"] = enableableExtension(&Extensions::EGLImageStorageEXT);
- map["GL_EXT_buffer_storage"] = enableableExtension(&Extensions::bufferStorageEXT);
- map["GL_EXT_external_buffer"] = enableableExtension(&Extensions::externalBufferEXT);
- map["GL_OES_texture_stencil8"] = enableableExtension(&Extensions::textureStencil8OES);
- map["GL_OES_sample_shading"] = enableableExtension(&Extensions::sampleShadingOES);
- map["GL_OES_shader_multisample_interpolation"] = enableableExtension(&Extensions::shaderMultisampleInterpolationOES);
- map["GL_OES_shader_image_atomic"] = enableableExtension(&Extensions::shaderImageAtomicOES);
- map["GL_OES_sample_variables"] = enableableExtension(&Extensions::sampleVariablesOES);
- map["GL_EXT_shader_framebuffer_fetch_non_coherent"] = enableableExtension(&Extensions::shaderFramebufferFetchNonCoherentEXT);
- map["GL_NV_robustness_video_memory_purge"] = esOnlyExtension(&Extensions::robustnessVideoMemoryPurgeNV);
- map["GL_ANGLE_get_tex_level_parameter"] = enableableExtension(&Extensions::getTexLevelParameterANGLE);
- map["GL_EXT_copy_image"] = enableableExtension(&Extensions::copyImageEXT);
- map["GL_OES_texture_buffer"] = enableableExtension(&Extensions::textureBufferOES);
- map["GL_EXT_texture_buffer"] = enableableExtension(&Extensions::textureBufferEXT);
- map["GL_EXT_YUV_target"] = enableableExtension(&Extensions::YUVTargetEXT);
- map["GL_OES_shader_io_blocks"] = enableableExtension(&Extensions::shaderIoBlocksOES);
- map["GL_EXT_shader_io_blocks"] = enableableExtension(&Extensions::shaderIoBlocksEXT);
- map["GL_EXT_clip_cull_distance"] = enableableExtension(&Extensions::clipCullDistanceEXT);
- map["GL_ANGLE_get_serialized_context_string"] = esOnlyExtension(&Extensions::getSerializedContextStringANGLE);
- map["GL_EXT_primitive_bounding_box"] = esOnlyExtension(&Extensions::primitiveBoundingBoxEXT);
- map["GL_ANGLE_relaxed_vertex_attribute_type"] = esOnlyExtension(&Extensions::relaxedVertexAttributeTypeANGLE);
- map["GL_ANGLE_yuv_internal_format"] = enableableExtension(&Extensions::yuvInternalFormatANGLE);
- map["GL_EXT_protected_textures"] = enableableExtension(&Extensions::protectedTexturesEXT);
- // GLES1 extensions
- map["GL_OES_point_size_array"] = enableableExtension(&Extensions::pointSizeArrayOES);
- map["GL_OES_texture_cube_map"] = enableableExtension(&Extensions::textureCubeMapOES);
- map["GL_OES_point_sprite"] = enableableExtension(&Extensions::pointSpriteOES);
- map["GL_OES_draw_texture"] = enableableExtension(&Extensions::drawTextureOES);
- map["GL_OES_framebuffer_object"] = enableableExtension(&Extensions::framebufferObjectOES);
- map["GL_ANGLE_memory_size"] = enableableExtension(&Extensions::memorySizeANGLE);
- map["GL_EXT_shader_non_constant_global_initializers"] = enableableExtension(&Extensions::shaderNonConstantGlobalInitializersEXT);
- map["GL_WEBGL_video_texture"] = enableableExtension(&Extensions::videoTextureWEBGL);
- map["GL_OES_texture_cube_map_array"] = enableableExtension(&Extensions::textureCubeMapArrayOES);
- map["GL_EXT_texture_cube_map_array"] = enableableExtension(&Extensions::textureCubeMapArrayEXT);
- map["GL_EXT_shadow_samplers"] = enableableExtension(&Extensions::shadowSamplersEXT);
- map["GL_EXT_tessellation_shader"] = enableableExtension(&Extensions::tessellationShaderEXT);
- // clang-format on
-
-#if defined(ANGLE_ENABLE_ASSERTS)
- // Verify all extension strings start with GL_
- for (const auto &extension : map)
- {
- ASSERT(extension.first.rfind("GL_", 0) == 0);
- }
-#endif
-
- return map;
- };
-
- static const angle::base::NoDestructor extensionInfo(buildExtensionInfoMap());
- return *extensionInfo;
-}
-
TypePrecision::TypePrecision() = default;
TypePrecision::TypePrecision(const TypePrecision &other) = default;
diff --git a/src/libANGLE/Caps.h b/src/libANGLE/Caps.h
index f3ba17147..094415fb7 100644
--- a/src/libANGLE/Caps.h
+++ b/src/libANGLE/Caps.h
@@ -10,6 +10,7 @@
#include "angle_gl.h"
#include "libANGLE/Version.h"
#include "libANGLE/angletypes.h"
+#include "libANGLE/gles_extensions_autogen.h"
#include "libANGLE/renderer/Format.h"
#include
@@ -20,9 +21,6 @@
namespace gl
{
-
-struct Extensions;
-
struct TextureCaps
{
TextureCaps();
@@ -92,654 +90,6 @@ void InitMinimumTextureCapsMap(const Version &clientVersion,
// present. Does not determine if they are natively supported without decompression.
bool DetermineCompressedTextureETCSupport(const TextureCapsMap &textureCaps);
-struct Extensions
-{
- Extensions();
- Extensions(const Extensions &other);
-
- Extensions &operator=(const Extensions &other);
-
- // Generate a vector of supported extension strings
- std::vector getStrings() const;
-
- // Set all texture related extension support based on the supported textures.
- // Determines support for:
- // GL_OES_packed_depth_stencil
- // GL_OES_rgb8_rgba8
- // GL_EXT_texture_format_BGRA8888
- // GL_EXT_color_buffer_half_float,
- // GL_OES_texture_half_float, GL_OES_texture_half_float_linear
- // GL_OES_texture_float, GL_OES_texture_float_linear
- // GL_EXT_texture_rg
- // GL_EXT_texture_type_2_10_10_10_REV
- // GL_EXT_texture_compression_dxt1, GL_ANGLE_texture_compression_dxt3,
- // GL_ANGLE_texture_compression_dxt5
- // GL_KHR_texture_compression_astc_ldr, GL_OES_texture_compression_astc.
- // NOTE: GL_KHR_texture_compression_astc_hdr must be enabled separately. Support for the
- // HDR profile cannot be determined from the format enums alone.
- // GL_OES_compressed_ETC1_RGB8_texture
- // GL_EXT_sRGB
- // GL_ANGLE_depth_texture, GL_OES_depth32
- // GL_EXT_color_buffer_float
- // GL_EXT_texture_norm16
- // GL_EXT_texture_compression_bptc
- // GL_EXT_texture_compression_rgtc
- void setTextureExtensionSupport(const TextureCapsMap &textureCaps);
-
- // indicate if any depth texture extension is available
- bool depthTextureAny() const { return (depthTextureANGLE || depthTextureOES); }
-
- // ES2 Extension support
-
- // GL_OES_element_index_uint
- bool elementIndexUintOES = false;
-
- // GL_OES_packed_depth_stencil
- bool packedDepthStencilOES = false;
-
- // GL_NV_read_depth
- bool readDepthNV = false;
-
- // GL_NV_read_stencil
- bool readStencilNV = false;
-
- // GL_NV_depth_buffer_float2
- bool depthBufferFloat2NV = false;
-
- // GL_OES_get_program_binary
- bool getProgramBinaryOES = false;
-
- // GL_OES_rgb8_rgba8
- // Implies that TextureCaps for GL_RGB8 and GL_RGBA8 exist
- bool rgb8Rgba8OES = false;
-
- // GL_EXT_texture_format_BGRA8888
- // Implies that TextureCaps for GL_BGRA8 exist
- bool textureFormatBGRA8888EXT = false;
-
- // GL_EXT_read_format_bgra
- bool readFormatBgraEXT = false;
-
- // GL_NV_pixel_buffer_object
- bool pixelBufferObjectNV = false;
-
- // GL_ARB_sync
- bool syncARB = false;
-
- // GL_OES_mapbuffer and GL_EXT_map_buffer_range
- bool mapbufferOES = false;
- bool mapBufferRangeEXT = false;
-
- // GL_EXT_color_buffer_half_float
- // Together with GL_OES_texture_half_float in a GLES 2.0 context, implies that half-float
- // textures are renderable.
- bool colorBufferHalfFloatEXT = false;
-
- // GL_OES_texture_half_float and GL_OES_texture_half_float_linear
- // Implies that TextureCaps for GL_RGB16F, GL_RGBA16F, GL_ALPHA32F_EXT, GL_LUMINANCE32F_EXT and
- // GL_LUMINANCE_ALPHA32F_EXT exist
- bool textureHalfFloatOES = false;
- bool textureHalfFloatLinearOES = false;
-
- // GL_OES_texture_float and GL_OES_texture_float_linear
- // Implies that TextureCaps for GL_RGB32F, GL_RGBA32F, GL_ALPHA16F_EXT, GL_LUMINANCE16F_EXT and
- // GL_LUMINANCE_ALPHA16F_EXT exist
- bool textureFloatOES = false;
- bool textureFloatLinearOES = false;
-
- // GL_EXT_texture_rg
- // Implies that TextureCaps for GL_R8, GL_RG8 (and floating point R/RG texture formats if
- // floating point extensions are also present) exist
- bool textureRgEXT = false;
-
- // GL_EXT_texture_type_2_10_10_10_REV
- bool textureType2101010REVEXT = false;
-
- // GL_EXT_texture_compression_dxt1, GL_ANGLE_texture_compression_dxt3 and
- // GL_ANGLE_texture_compression_dxt5 Implies that TextureCaps exist for
- // GL_COMPRESSED_RGB_S3TC_DXT1_EXT, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT
- // GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE and GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE
- bool textureCompressionDxt1EXT = false;
- bool textureCompressionDxt3ANGLE = false;
- bool textureCompressionDxt5ANGLE = false;
-
- // GL_EXT_texture_compression_s3tc_srgb
- // Implies that TextureCaps exist for GL_COMPRESSED_SRGB_S3TC_DXT1_EXT,
- // GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT, GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT, and
- // GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT
- bool textureCompressionS3tcSrgbEXT = false;
-
- // GL_KHR_texture_compression_astc_ldr
- bool textureCompressionAstcLdrKHR = false;
-
- // GL_KHR_texture_compression_astc_hdr
- bool textureCompressionAstcHdrKHR = false;
-
- // GL_OES_texture_compression_astc
- bool textureCompressionAstcOES = false;
-
- // GL_KHR_texture_compression_astc_sliced_3d
- bool textureCompressionAstcSliced3dKHR = false;
-
- // GL_EXT_texture_compression_bptc
- bool textureCompressionBptcEXT = false;
-
- // GL_EXT_texture_compression_rgtc
- bool textureCompressionRgtcEXT = false;
-
- // GL_OES_compressed_ETC1_RGB8_texture
- // Implies that TextureCaps for GL_ETC1_RGB8_OES exist
- bool compressedETC1RGB8TextureOES = false;
-
- // GL_EXT_compressed_ETC1_RGB8_sub_texture
- bool compressedETC1RGB8SubTextureEXT = false;
-
- // OES_compressed_ETC2_RGB8_texture
- bool compressedETC2RGB8TextureOES = false;
-
- // OES_compressed_ETC2_sRGB8_texture
- bool compressedETC2SRGB8TextureOES = false;
-
- // OES_compressed_ETC2_punchthroughA_RGBA8_texture
- bool compressedETC2PunchthroughARGBA8TextureOES = false;
-
- // OES_compressed_ETC2_punchthroughA_sRGB8_alpha_texture
- bool compressedETC2PunchthroughASRGB8AlphaTextureOES = false;
-
- // OES_compressed_ETC2_RGBA8_texture
- bool compressedETC2RGBA8TextureOES = false;
-
- // OES_compressed_ETC2_sRGB8_alpha8_texture
- bool compressedETC2SRGB8Alpha8TextureOES = false;
-
- // OES_compressed_EAC_R11_unsigned_texture
- bool compressedEACR11UnsignedTextureOES = false;
-
- // OES_compressed_EAC_R11_signed_texture
- bool compressedEACR11SignedTextureOES = false;
-
- // OES_compressed_EAC_RG11_unsigned_texture
- bool compressedEACRG11UnsignedTextureOES = false;
-
- // OES_compressed_EAC_RG11_signed_texture
- bool compressedEACRG11SignedTextureOES = false;
-
- // ANGLE_compressed_texture_etc
- // ONLY exposed if ETC texture formats are natively supported without decompression
- // Backends should enable this extension explicitly. It is not enabled with
- // setTextureExtensionSupport, use DetermineCompressedTextureETCSupport to check if all of the
- // individual formats required to support this extension are available.
- bool compressedTextureEtcANGLE = false;
-
- // GL_IMG_texture_compression_pvrtc
- bool textureCompressionPvrtcIMG = false;
-
- // GL_EXT_pvrtc_sRGB
- bool pvrtcSRGBEXT = false;
-
- // GL_EXT_sRGB
- // Implies that TextureCaps for GL_SRGB8_ALPHA8 and GL_SRGB8 exist
- // TODO: Don't advertise this extension in ES3
- bool sRGBEXT = false;
-
- // GL_EXT_texture_sRGB_R8
- bool textureSRGBR8EXT = false;
-
- // GL_EXT_texture_sRGB_RG8
- bool textureSRGBRG8EXT = false;
-
- // GL_ANGLE_depth_texture
- bool depthTextureANGLE = false;
-
- // OES_depth_texture
- bool depthTextureOES = false;
-
- // GL_OES_depth_texture_cube_map
- bool depthTextureCubeMapOES = false;
-
- // GL_OES_depth24
- // Allows DEPTH_COMPONENT24_OES as a valid Renderbuffer format.
- bool depth24OES = false;
-
- // GL_OES_depth32
- // Allows DEPTH_COMPONENT32_OES as a valid Renderbuffer format.
- bool depth32OES = false;
-
- // GL_OES_texture_3D
- bool texture3DOES = false;
-
- // GL_EXT_texture_storage
- bool textureStorageEXT = false;
-
- // GL_OES_texture_npot
- bool textureNpotOES = false;
-
- // GL_EXT_draw_buffers
- bool drawBuffersEXT = false;
-
- // GL_EXT_draw_buffers_indexed
- bool drawBuffersIndexedEXT = false;
-
- // GL_OES_draw_buffers_indexed
- bool drawBuffersIndexedOES = false;
-
- // Any version of the draw_buffers_indexed
- bool drawBuffersIndexedAny() const { return (drawBuffersIndexedEXT || drawBuffersIndexedOES); }
-
- // GL_EXT_texture_filter_anisotropic
- bool textureFilterAnisotropicEXT = false;
-
- // GL_EXT_occlusion_query_boolean
- bool occlusionQueryBooleanEXT = false;
-
- // GL_NV_fence
- bool fenceNV = false;
-
- // GL_EXT_disjoint_timer_query
- bool disjointTimerQueryEXT = false;
-
- // GL_EXT_robustness
- bool robustnessEXT = false;
-
- // GL_KHR_robust_buffer_access_behavior
- bool robustBufferAccessBehaviorKHR = false;
-
- // GL_EXT_blend_minmax
- bool blendMinmaxEXT = false;
-
- // GL_ANGLE_framebuffer_blit
- bool framebufferBlitANGLE = false;
- // GL_NV_framebuffer_blit
- bool framebufferBlitNV = false;
- // Any version of the framebuffer_blit extension
- bool framebufferBlitAny() const { return (framebufferBlitANGLE || framebufferBlitNV); }
-
- // GL_ANGLE_framebuffer_multisample
- bool framebufferMultisampleANGLE = false;
-
- // GL_EXT_multisampled_render_to_texture
- bool multisampledRenderToTextureEXT = false;
-
- // GL_EXT_multisampled_render_to_texture2
- bool multisampledRenderToTexture2EXT = false;
-
- // GL_ANGLE_instanced_arrays
- bool instancedArraysANGLE = false;
- // GL_EXT_instanced_arrays
- bool instancedArraysEXT = false;
- // Any version of the instanced arrays extension
- bool instancedArraysAny() const { return (instancedArraysANGLE || instancedArraysEXT); }
-
- // GL_ANGLE_pack_reverse_row_order
- bool packReverseRowOrderANGLE = false;
-
- // GL_OES_standard_derivatives
- bool standardDerivativesOES = false;
-
- // GL_EXT_shader_texture_lod
- bool shaderTextureLodEXT = false;
-
- // GL_EXT_shader_framebuffer_fetch_non_coherent
- bool shaderFramebufferFetchNonCoherentEXT = false;
-
- // GL_EXT_frag_depth
- bool fragDepthEXT = false;
-
- // OVR_multiview
- bool multiviewOVR = false;
-
- // OVR_multiview2
- bool multiview2OVR = false;
-
- // GL_ANGLE_texture_usage
- bool textureUsageANGLE = false;
-
- // GL_ANGLE_translated_shader_source
- bool translatedShaderSourceANGLE = false;
-
- // GL_OES_fbo_render_mipmap
- bool fboRenderMipmapOES = false;
-
- // GL_EXT_discard_framebuffer
- bool discardFramebufferEXT = false;
-
- // EXT_debug_marker
- bool debugMarkerEXT = false;
-
- // EXT_debug_label
- bool debugLabelEXT = false;
-
- // GL_OES_EGL_image
- bool EGLImageOES = false;
-
- // GL_OES_EGL_image_external
- bool EGLImageExternalOES = false;
-
- // GL_OES_EGL_image_external_essl3
- bool EGLImageExternalEssl3OES = false;
-
- // GL_EXT_EGL_image_external_wrap_modes
- bool EGLImageExternalWrapModesEXT = false;
-
- // GL_OES_EGL_sync
- bool EGLSyncOES = false;
-
- // GL_EXT_memory_object
- bool memoryObjectEXT = false;
-
- // GL_EXT_memory_object_fd
- bool memoryObjectFdEXT = false;
-
- // GL_ANGLE_memory_object_flags
- bool memoryObjectFlagsANGLE = false;
-
- // GL_ANGLE_memory_object_fuchsia
- bool memoryObjectFuchsiaANGLE = false;
-
- // GL_EXT_semaphore
- bool semaphoreEXT = false;
-
- // GL_EXT_semaphore_fd
- bool semaphoreFdEXT = false;
-
- // GL_ANGLE_semaphore_fuchsia
- bool semaphoreFuchsiaANGLE = false;
-
- // NV_EGL_stream_consumer_external
- bool EGLStreamConsumerExternalNV = false;
-
- // EXT_unpack_subimage
- bool unpackSubimageEXT = false;
-
- // NV_pack_subimage
- bool packSubimageNV = false;
-
- // GL_NV_shader_noperspective_interpolation
- bool shaderNoperspectiveInterpolationNV = false;
-
- // GL_OES_vertex_half_float
- bool vertexHalfFloatOES = false;
-
- // GL_OES_vertex_array_object
- bool vertexArrayObjectOES = false;
-
- // GL_OES_vertex_type_10_10_10_2
- bool vertexType1010102OES = false;
-
- // GL_KHR_debug
- bool debugKHR = false;
-
- // KHR_no_error
- bool noErrorKHR = false;
-
- // GL_ANGLE_lossy_etc_decode
- bool lossyEtcDecodeANGLE = false;
-
- // GL_CHROMIUM_bind_uniform_location
- bool bindUniformLocationCHROMIUM = false;
-
- // GL_CHROMIUM_sync_query
- bool syncQueryCHROMIUM = false;
-
- // GL_CHROMIUM_copy_texture
- bool copyTextureCHROMIUM = false;
-
- // GL_CHROMIUM_copy_compressed_texture
- bool copyCompressedTextureCHROMIUM = false;
-
- // GL_ANGLE_copy_texture_3d
- bool copyTexture3dANGLE = false;
-
- // GL_ANGLE_webgl_compatibility
- bool webglCompatibilityANGLE = false;
-
- // GL_ANGLE_request_extension
- bool requestExtensionANGLE = false;
-
- // GL_CHROMIUM_bind_generates_resource
- bool bindGeneratesResourceCHROMIUM = false;
-
- // GL_ANGLE_robust_client_memory
- bool robustClientMemoryANGLE = false;
-
- // GL_OES_texture_border_clamp
- bool textureBorderClampOES = false;
-
- // GL_EXT_texture_border_clamp
- bool textureBorderClampEXT = false;
-
- // Any version of the texture border clamp extension
- bool textureBorderClampAny() const { return (textureBorderClampOES || textureBorderClampEXT); }
-
- // GL_EXT_texture_sRGB_decode
- bool textureSRGBDecodeEXT = false;
-
- // GL_EXT_texture_format_sRGB_override
- bool textureFormatSRGBOverrideEXT = false;
-
- // GL_EXT_sRGB_write_control
- bool sRGBWriteControlEXT = false;
-
- // GL_CHROMIUM_color_buffer_float_rgb
- bool colorBufferFloatRgbCHROMIUM = false;
-
- // GL_CHROMIUM_color_buffer_float_rgba
- bool colorBufferFloatRgbaCHROMIUM = false;
-
- // GL_EXT_EGL_image_array
- bool EGLImageArrayEXT = false;
-
- // ES3 Extension support
-
- // GL_EXT_color_buffer_float
- bool colorBufferFloatEXT = false;
-
- // GL_EXT_multisample_compatibility.
- // written against ES 3.1 but can apply to earlier versions.
- bool multisampleCompatibilityEXT = false;
-
- // GL_CHROMIUM_framebuffer_mixed_samples
- bool framebufferMixedSamplesCHROMIUM = false;
-
- // GL_EXT_texture_norm16
- // written against ES 3.1 but can apply to ES 3.0 as well.
- bool textureNorm16EXT = false;
-
- // GL_OES_surfaceless_context
- bool surfacelessContextOES = false;
-
- // GL_ANGLE_client_arrays
- bool clientArraysANGLE = false;
-
- // GL_ANGLE_robust_resource_initialization
- bool robustResourceInitializationANGLE = false;
-
- // GL_ANGLE_program_cache_control
- bool programCacheControlANGLE = false;
-
- // GL_ANGLE_texture_rectangle
- bool textureRectangleANGLE = false;
-
- // GL_EXT_geometry_shader
- bool geometryShaderEXT = false;
- // GL_OES_geometry_shader
- bool geometryShaderOES = false;
- // Any version of the geometry shader extension
- bool geometryShaderAny() const { return (geometryShaderEXT || geometryShaderOES); }
-
- // GLES1 emulation: GLES1 extensions
- // GL_OES_point_size_array
- bool pointSizeArrayOES = false;
-
- // GL_OES_texture_cube_map
- bool textureCubeMapOES = false;
-
- // GL_OES_point_sprite
- bool pointSpriteOES = false;
-
- // GL_OES_draw_texture
- bool drawTextureOES = false;
-
- // GL_OES_framebuffer_object
- bool framebufferObjectOES = false;
-
- // GL_KHR_parallel_shader_compile
- bool parallelShaderCompileKHR = false;
-
- // GL_EXT_separate_shader_objects
- bool separateShaderObjectsEXT = false;
-
- // GL_OES_texture_storage_multisample_2d_array
- bool textureStorageMultisample2dArrayOES = false;
-
- // GL_ANGLE_multiview_multisample
- bool multiviewMultisampleANGLE = false;
-
- // GL_KHR_blend_equation_advanced
- bool blendEquationAdvancedKHR = false;
-
- // GL_EXT_blend_func_extended
- bool blendFuncExtendedEXT = false;
-
- // GL_EXT_float_blend
- bool floatBlendEXT = false;
-
- // GL_ANGLE_memory_size
- bool memorySizeANGLE = false;
-
- // GL_ANGLE_texture_multisample
- bool textureMultisampleANGLE = false;
-
- // GL_ANGLE_multi_draw
- bool multiDrawANGLE = false;
-
- // GL_ANGLE_provoking_vertex
- bool provokingVertexANGLE = false;
-
- // GL_CHROMIUM_texture_filtering_hint
- bool textureFilteringHintCHROMIUM = false;
-
- // GL_CHROMIUM_lose_context
- bool loseContextCHROMIUM = false;
-
- // GL_ANGLE_texture_external_update
- bool textureExternalUpdateANGLE = false;
-
- // GL_ANGLE_base_vertex_base_instance
- bool baseVertexBaseInstanceANGLE = false;
-
- // GL_ANGLE_get_image
- bool getImageANGLE = false;
-
- // GL_OES_draw_elements_base_vertex
- bool drawElementsBaseVertexOES = false;
- // GL_EXT_draw_elements_base_vertex
- bool drawElementsBaseVertexEXT = false;
- // Any version of the base vertex extension
- bool drawElementsBaseVertexAny() const
- {
- return (drawElementsBaseVertexOES || drawElementsBaseVertexEXT);
- }
-
- // GL_EXT_shader_non_constant_global_initializers
- bool shaderNonConstantGlobalInitializersEXT = false;
-
- // GL_OES_shader_io_blocks
- bool shaderIoBlocksOES = false;
- // GL_EXT_shader_io_blocks
- bool shaderIoBlocksEXT = false;
- // Any version of shader io block extension
- bool shaderIoBlocksAny() const { return (shaderIoBlocksOES || shaderIoBlocksEXT); }
-
- // GL_EXT_gpu_shader5
- bool gpuShader5EXT = false;
- // WEBGL_video_texture
- bool videoTextureWEBGL = false;
-
- // GL_APPLE_clip_distance
- bool clipDistanceAPPLE = false;
-
- // GL_EXT_clip_control
- bool clipControlEXT = false;
-
- // GL_OES_texture_cube_map_array
- bool textureCubeMapArrayOES = false;
- // GL_EXT_texture_cube_map_array
- bool textureCubeMapArrayEXT = false;
- // Any version of the texture cube map array extension
- bool textureCubeMapArrayAny() const
- {
- return (textureCubeMapArrayOES || textureCubeMapArrayEXT);
- }
-
- // GL_EXT_shadow_samplers
- bool shadowSamplersEXT = false;
-
- // GL_EXT_buffer_storage
- bool bufferStorageEXT = false;
-
- // GL_EXT_external_buffer
- bool externalBufferEXT = false;
-
- // GL_OES_texture_stencil8
- bool textureStencil8OES = false;
-
- // GL_OES_sample_shading
- bool sampleShadingOES = false;
-
- // OES_shader_multisample_interpolation
- bool shaderMultisampleInterpolationOES = false;
-
- // GL_OES_shader_image_atomic
- bool shaderImageAtomicOES = false;
-
- // GL_OES_sample_variables
- bool sampleVariablesOES = false;
-
- // GL_NV_robustness_video_memory_purge
- bool robustnessVideoMemoryPurgeNV = false;
-
- // GL_ANGLE_get_tex_level_parameter
- bool getTexLevelParameterANGLE = false;
-
- // GL_EXT_tessellation_shader
- bool tessellationShaderEXT = false;
-
- // GL_EXT_copy_image
- bool copyImageEXT = false;
-
- // GL_OES_texture_buffer
- bool textureBufferOES = false;
- // GL_EXT_texture_buffer
- bool textureBufferEXT = false;
- // Any version of the texture buffer extension
- bool textureBufferAny() const { return (textureBufferOES || textureBufferEXT); }
-
- // GL_EXT_YUV_target
- bool YUVTargetEXT = false;
-
- // GL_EXT_clip_cull_distance
- bool clipCullDistanceEXT = false;
-
- // GL_ANGLE_get_serialized_context_string
- bool getSerializedContextStringANGLE = false;
-
- // GL_EXT_primitive_bounding_box
- bool primitiveBoundingBoxEXT = false;
-
- // GL_ANGLE_relaxed_vertex_attribute_type
- bool relaxedVertexAttributeTypeANGLE = false;
-
- // GL_ANGLE_yuv_internal_format
- bool yuvInternalFormatANGLE = false;
-
- // GL_EXT_protected_textures
- bool protectedTexturesEXT = false;
-
- // GL_EXT_EGL_image_storage
- bool EGLImageStorageEXT = false;
-};
-
// Pointer to a boolean member of the Extensions struct
using ExtensionBool = bool Extensions::*;
diff --git a/src/libANGLE/Context_gles_ext_autogen.h b/src/libANGLE/Context_gles_ext_autogen.h
index cfc90203c..96241e452 100644
--- a/src/libANGLE/Context_gles_ext_autogen.h
+++ b/src/libANGLE/Context_gles_ext_autogen.h
@@ -31,6 +31,7 @@
void weightPointer(GLint size, GLenum type, GLsizei stride, const void *pointer); \
/* GL_OES_point_size_array */ \
void pointSizePointer(VertexAttribType typePacked, GLsizei stride, const void *pointer); \
+ /* GL_OES_point_sprite */ \
/* GL_OES_query_matrix */ \
GLbitfield queryMatrixx(GLfixed *mantissa, GLint *exponent); \
/* GL_OES_texture_cube_map */ \
@@ -46,64 +47,18 @@
\
/* GLES2+ Extensions */ \
\
- /* GL_ANGLE_base_vertex_base_instance */ \
- void drawArraysInstancedBaseInstance(PrimitiveMode modePacked, GLint first, GLsizei count, \
- GLsizei instanceCount, GLuint baseInstance); \
- void drawElementsInstancedBaseVertexBaseInstance( \
- PrimitiveMode modePacked, GLsizei count, DrawElementsType typePacked, \
- const GLvoid *indices, GLsizei instanceCounts, GLint baseVertex, GLuint baseInstance); \
- void multiDrawArraysInstancedBaseInstance( \
- PrimitiveMode modePacked, const GLint *firsts, const GLsizei *counts, \
- const GLsizei *instanceCounts, const GLuint *baseInstances, GLsizei drawcount); \
- void multiDrawElementsInstancedBaseVertexBaseInstance( \
- PrimitiveMode modePacked, const GLsizei *counts, DrawElementsType typePacked, \
- const GLvoid *const *indices, const GLsizei *instanceCounts, const GLint *baseVertices, \
- const GLuint *baseInstances, GLsizei drawcount); \
+ /* GL_ANGLE_depth_texture */ \
/* GL_ANGLE_framebuffer_blit */ \
- /* GL_ANGLE_framebuffer_multisample */ \
/* GL_ANGLE_instanced_arrays */ \
- /* GL_ANGLE_memory_object_flags */ \
- void texStorageMemFlags2D(TextureType targetPacked, GLsizei levels, GLenum internalFormat, \
- GLsizei width, GLsizei height, MemoryObjectID memoryPacked, \
- GLuint64 offset, GLbitfield createFlags, GLbitfield usageFlags); \
- void texStorageMemFlags2DMultisample( \
- TextureType targetPacked, GLsizei samples, GLenum internalFormat, GLsizei width, \
- GLsizei height, GLboolean fixedSampleLocations, MemoryObjectID memoryPacked, \
- GLuint64 offset, GLbitfield createFlags, GLbitfield usageFlags); \
- void texStorageMemFlags3D(TextureType targetPacked, GLsizei levels, GLenum internalFormat, \
- GLsizei width, GLsizei height, GLsizei depth, \
- MemoryObjectID memoryPacked, GLuint64 offset, \
- GLbitfield createFlags, GLbitfield usageFlags); \
- void texStorageMemFlags3DMultisample(TextureType targetPacked, GLsizei samples, \
- GLenum internalFormat, GLsizei width, GLsizei height, \
- GLsizei depth, GLboolean fixedSampleLocations, \
- MemoryObjectID memoryPacked, GLuint64 offset, \
- GLbitfield createFlags, GLbitfield usageFlags); \
- /* GL_ANGLE_memory_object_fuchsia */ \
- void importMemoryZirconHandle(MemoryObjectID memoryPacked, GLuint64 size, \
- HandleType handleTypePacked, GLuint handle); \
- /* GL_ANGLE_multi_draw */ \
- void multiDrawArrays(PrimitiveMode modePacked, const GLint *firsts, const GLsizei *counts, \
- GLsizei drawcount); \
- void multiDrawArraysInstanced(PrimitiveMode modePacked, const GLint *firsts, \
- const GLsizei *counts, const GLsizei *instanceCounts, \
- GLsizei drawcount); \
- void multiDrawElements(PrimitiveMode modePacked, const GLsizei *counts, \
- DrawElementsType typePacked, const GLvoid *const *indices, \
- GLsizei drawcount); \
- void multiDrawElementsInstanced(PrimitiveMode modePacked, const GLsizei *counts, \
- DrawElementsType typePacked, const GLvoid *const *indices, \
- const GLsizei *instanceCounts, GLsizei drawcount); \
- /* GL_ANGLE_provoking_vertex */ \
- void provokingVertex(ProvokingVertexConvention modePacked); \
- /* GL_ANGLE_semaphore_fuchsia */ \
- void importSemaphoreZirconHandle(SemaphoreID semaphorePacked, HandleType handleTypePacked, \
- GLuint handle); \
- /* GL_ANGLE_texture_multisample */ \
+ /* GL_ANGLE_pack_reverse_row_order */ \
+ /* GL_ANGLE_texture_usage */ \
/* GL_ANGLE_translated_shader_source */ \
void getTranslatedShaderSource(ShaderProgramID shaderPacked, GLsizei bufsize, GLsizei *length, \
GLchar *source); \
+ /* GL_APPLE_clip_distance */ \
+ /* GL_ARB_sync */ \
/* GL_EXT_EGL_image_array */ \
+ /* GL_EXT_EGL_image_external_wrap_modes */ \
/* GL_EXT_EGL_image_storage */ \
void eGLImageTargetTexStorage(GLenum target, GLeglImageOES image, const GLint *attrib_list); \
void eGLImageTargetTextureStorage(GLuint texture, GLeglImageOES image, \
@@ -116,11 +71,15 @@
GLint getFragDataIndex(ShaderProgramID programPacked, const GLchar *name); \
GLint getProgramResourceLocationIndex(ShaderProgramID programPacked, GLenum programInterface, \
const GLchar *name); \
+ /* GL_EXT_blend_minmax */ \
/* GL_EXT_buffer_storage */ \
void bufferStorage(BufferBinding targetPacked, GLsizeiptr size, const void *data, \
GLbitfield flags); \
/* GL_EXT_clip_control */ \
void clipControl(GLenum origin, GLenum depth); \
+ /* GL_EXT_clip_cull_distance */ \
+ /* GL_EXT_color_buffer_float */ \
+ /* GL_EXT_color_buffer_half_float */ \
/* GL_EXT_compressed_ETC1_RGB8_sub_texture */ \
/* GL_EXT_copy_image */ \
/* GL_EXT_debug_label */ \
@@ -147,7 +106,10 @@
GLeglClientBufferEXT clientBuffer, GLbitfield flags); \
void namedBufferStorageExternal(GLuint buffer, GLintptr offset, GLsizeiptr size, \
GLeglClientBufferEXT clientBuffer, GLbitfield flags); \
+ /* GL_EXT_float_blend */ \
+ /* GL_EXT_frag_depth */ \
/* GL_EXT_geometry_shader */ \
+ /* GL_EXT_gpu_shader5 */ \
/* GL_EXT_instanced_arrays */ \
/* GL_EXT_map_buffer_range */ \
/* GL_EXT_memory_object */ \
@@ -179,6 +141,7 @@
/* GL_EXT_memory_object_fd */ \
void importMemoryFd(MemoryObjectID memoryPacked, GLuint64 size, HandleType handleTypePacked, \
GLint fd); \
+ /* GL_EXT_multisample_compatibility */ \
/* GL_EXT_multisampled_render_to_texture */ \
void framebufferTexture2DMultisample(GLenum target, GLenum attachment, \
TextureTarget textargetPacked, TextureID texturePacked, \
@@ -213,6 +176,9 @@
/* GL_EXT_shader_framebuffer_fetch_non_coherent */ \
void framebufferFetchBarrier(); \
/* GL_EXT_shader_io_blocks */ \
+ /* GL_EXT_shader_non_constant_global_initializers */ \
+ /* GL_EXT_shader_texture_lod */ \
+ /* GL_EXT_shadow_samplers */ \
/* GL_EXT_tessellation_shader */ \
/* GL_EXT_texture_border_clamp */ \
/* GL_EXT_texture_buffer */ \
@@ -224,19 +190,29 @@
/* GL_EXT_texture_cube_map_array */ \
/* GL_EXT_texture_filter_anisotropic */ \
/* GL_EXT_texture_format_BGRA8888 */ \
+ /* GL_EXT_texture_format_sRGB_override */ \
+ /* GL_EXT_texture_norm16 */ \
+ /* GL_EXT_texture_rg */ \
/* GL_EXT_texture_sRGB_R8 */ \
/* GL_EXT_texture_sRGB_RG8 */ \
+ /* GL_EXT_texture_sRGB_decode */ \
/* GL_EXT_texture_storage */ \
void texStorage1D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); \
+ /* GL_EXT_texture_type_2_10_10_10_REV */ \
+ /* GL_EXT_unpack_subimage */ \
/* GL_IMG_texture_compression_pvrtc */ \
/* GL_IMG_texture_compression_pvrtc2 */ \
/* GL_KHR_blend_equation_advanced */ \
/* GL_KHR_debug */ \
+ /* GL_KHR_no_error */ \
/* GL_KHR_parallel_shader_compile */ \
void maxShaderCompilerThreads(GLuint count); \
+ /* GL_KHR_robust_buffer_access_behavior */ \
/* GL_KHR_texture_compression_astc_hdr */ \
/* GL_KHR_texture_compression_astc_ldr */ \
/* GL_KHR_texture_compression_astc_sliced_3d */ \
+ /* GL_NV_EGL_stream_consumer_external */ \
+ /* GL_NV_depth_buffer_float2 */ \
/* GL_NV_fence */ \
void deleteFencesNV(GLsizei n, const FenceNVID *fencesPacked); \
void finishFenceNV(FenceNVID fencePacked); \
@@ -248,37 +224,91 @@
/* GL_NV_framebuffer_blit */ \
void blitFramebufferNV(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, \
GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); \
+ /* GL_NV_pack_subimage */ \
+ /* GL_NV_pixel_buffer_object */ \
+ /* GL_NV_read_depth */ \
+ /* GL_NV_read_stencil */ \
+ /* GL_NV_robustness_video_memory_purge */ \
+ /* GL_NV_shader_noperspective_interpolation */ \
/* GL_OES_EGL_image */ \
void eGLImageTargetRenderbufferStorage(GLenum target, GLeglImageOES image); \
void eGLImageTargetTexture2D(TextureType targetPacked, GLeglImageOES image); \
+ /* GL_OES_EGL_image_external */ \
+ /* GL_OES_EGL_image_external_essl3 */ \
+ /* GL_OES_EGL_sync */ \
+ /* 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_OES_compressed_ETC1_RGB8_texture */ \
+ /* GL_OES_compressed_ETC2_RGB8_texture */ \
+ /* GL_OES_compressed_ETC2_RGBA8_texture */ \
+ /* GL_OES_compressed_ETC2_punchthroughA_RGBA8_texture */ \
+ /* GL_OES_compressed_ETC2_punchthroughA_sRGB8_alpha_texture */ \
+ /* GL_OES_compressed_ETC2_sRGB8_alpha8_texture */ \
+ /* GL_OES_compressed_ETC2_sRGB8_texture */ \
/* GL_OES_copy_image */ \
+ /* GL_OES_depth24 */ \
/* GL_OES_depth32 */ \
+ /* GL_OES_depth_texture */ \
+ /* GL_OES_depth_texture_cube_map */ \
/* GL_OES_draw_buffers_indexed */ \
/* GL_OES_draw_elements_base_vertex */ \
+ /* GL_OES_element_index_uint */ \
+ /* GL_OES_fbo_render_mipmap */ \
/* GL_OES_geometry_shader */ \
/* GL_OES_get_program_binary */ \
/* GL_OES_mapbuffer */ \
void *mapBuffer(BufferBinding targetPacked, GLenum access); \
+ /* GL_OES_packed_depth_stencil */ \
+ /* GL_OES_rgb8_rgba8 */ \
/* GL_OES_sample_shading */ \
+ /* GL_OES_sample_variables */ \
+ /* GL_OES_shader_image_atomic */ \
/* GL_OES_shader_io_blocks */ \
+ /* GL_OES_shader_multisample_interpolation */ \
+ /* GL_OES_standard_derivatives */ \
+ /* GL_OES_surfaceless_context */ \
/* GL_OES_texture_3D */ \
void framebufferTexture3D(GLenum target, GLenum attachment, TextureTarget textargetPacked, \
TextureID texturePacked, GLint level, GLint zoffset); \
/* GL_OES_texture_border_clamp */ \
/* GL_OES_texture_buffer */ \
+ /* GL_OES_texture_compression_astc */ \
/* GL_OES_texture_cube_map_array */ \
+ /* GL_OES_texture_float */ \
+ /* GL_OES_texture_float_linear */ \
/* GL_OES_texture_half_float */ \
+ /* GL_OES_texture_half_float_linear */ \
+ /* GL_OES_texture_npot */ \
/* GL_OES_texture_stencil8 */ \
/* GL_OES_texture_storage_multisample_2d_array */ \
/* GL_OES_vertex_array_object */ \
+ /* GL_OES_vertex_half_float */ \
+ /* GL_OES_vertex_type_10_10_10_2 */ \
/* GL_OVR_multiview */ \
void framebufferTextureMultiview(GLenum target, GLenum attachment, TextureID texturePacked, \
GLint level, GLint baseViewIndex, GLsizei numViews); \
/* GL_OVR_multiview2 */ \
+ /* GL_WEBGL_video_texture */ \
\
/* ANGLE Extensions */ \
\
+ /* GL_ANGLE_base_vertex_base_instance */ \
+ void drawArraysInstancedBaseInstance(PrimitiveMode modePacked, GLint first, GLsizei count, \
+ GLsizei instanceCount, GLuint baseInstance); \
+ void drawElementsInstancedBaseVertexBaseInstance( \
+ PrimitiveMode modePacked, GLsizei count, DrawElementsType typePacked, \
+ const GLvoid *indices, GLsizei instanceCounts, GLint baseVertex, GLuint baseInstance); \
+ void multiDrawArraysInstancedBaseInstance( \
+ PrimitiveMode modePacked, const GLint *firsts, const GLsizei *counts, \
+ const GLsizei *instanceCounts, const GLuint *baseInstances, GLsizei drawcount); \
+ void multiDrawElementsInstancedBaseVertexBaseInstance( \
+ PrimitiveMode modePacked, const GLsizei *counts, DrawElementsType typePacked, \
+ const GLvoid *const *indices, const GLsizei *instanceCounts, const GLint *baseVertices, \
+ const GLuint *baseInstances, GLsizei drawcount); \
+ /* GL_ANGLE_client_arrays */ \
+ /* GL_ANGLE_compressed_texture_etc */ \
/* GL_ANGLE_copy_texture_3d */ \
void copyTexture3D(TextureID sourceIdPacked, GLint sourceLevel, \
TextureTarget destTargetPacked, TextureID destIdPacked, GLint destLevel, \
@@ -289,13 +319,53 @@
GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLint z, \
GLint width, GLint height, GLint depth, GLboolean unpackFlipY, \
GLboolean unpackPremultiplyAlpha, GLboolean unpackUnmultiplyAlpha); \
+ /* GL_ANGLE_framebuffer_multisample */ \
/* GL_ANGLE_get_image */ \
void getTexImage(TextureTarget targetPacked, GLint level, GLenum format, GLenum type, \
void *pixels); \
void getRenderbufferImage(GLenum target, GLenum format, GLenum type, void *pixels); \
/* GL_ANGLE_get_serialized_context_string */ \
/* GL_ANGLE_get_tex_level_parameter */ \
+ /* GL_ANGLE_lossy_etc_decode */ \
+ /* GL_ANGLE_memory_object_flags */ \
+ void texStorageMemFlags2D(TextureType targetPacked, GLsizei levels, GLenum internalFormat, \
+ GLsizei width, GLsizei height, MemoryObjectID memoryPacked, \
+ GLuint64 offset, GLbitfield createFlags, GLbitfield usageFlags); \
+ void texStorageMemFlags2DMultisample( \
+ TextureType targetPacked, GLsizei samples, GLenum internalFormat, GLsizei width, \
+ GLsizei height, GLboolean fixedSampleLocations, MemoryObjectID memoryPacked, \
+ GLuint64 offset, GLbitfield createFlags, GLbitfield usageFlags); \
+ void texStorageMemFlags3D(TextureType targetPacked, GLsizei levels, GLenum internalFormat, \
+ GLsizei width, GLsizei height, GLsizei depth, \
+ MemoryObjectID memoryPacked, GLuint64 offset, \
+ GLbitfield createFlags, GLbitfield usageFlags); \
+ void texStorageMemFlags3DMultisample(TextureType targetPacked, GLsizei samples, \
+ GLenum internalFormat, GLsizei width, GLsizei height, \
+ GLsizei depth, GLboolean fixedSampleLocations, \
+ MemoryObjectID memoryPacked, GLuint64 offset, \
+ GLbitfield createFlags, GLbitfield usageFlags); \
+ /* GL_ANGLE_memory_object_fuchsia */ \
+ void importMemoryZirconHandle(MemoryObjectID memoryPacked, GLuint64 size, \
+ HandleType handleTypePacked, GLuint handle); \
+ /* GL_ANGLE_memory_size */ \
+ /* GL_ANGLE_multi_draw */ \
+ void multiDrawArrays(PrimitiveMode modePacked, const GLint *firsts, const GLsizei *counts, \
+ GLsizei drawcount); \
+ void multiDrawArraysInstanced(PrimitiveMode modePacked, const GLint *firsts, \
+ const GLsizei *counts, const GLsizei *instanceCounts, \
+ GLsizei drawcount); \
+ void multiDrawElements(PrimitiveMode modePacked, const GLsizei *counts, \
+ DrawElementsType typePacked, const GLvoid *const *indices, \
+ GLsizei drawcount); \
+ void multiDrawElementsInstanced(PrimitiveMode modePacked, const GLsizei *counts, \
+ DrawElementsType typePacked, const GLvoid *const *indices, \
+ const GLsizei *instanceCounts, GLsizei drawcount); \
+ /* GL_ANGLE_multiview_multisample */ \
/* GL_ANGLE_program_binary */ \
+ /* GL_ANGLE_program_cache_control */ \
+ /* GL_ANGLE_provoking_vertex */ \
+ void provokingVertex(ProvokingVertexConvention modePacked); \
+ /* GL_ANGLE_relaxed_vertex_attribute_type */ \
/* GL_ANGLE_request_extension */ \
void requestExtension(const GLchar *name); \
void disableExtension(const GLchar *name); \
@@ -440,14 +510,27 @@
GLsizei *length, GLint64 *params); \
void getQueryObjectui64vRobust(QueryID idPacked, GLenum pname, GLsizei bufSize, \
GLsizei *length, GLuint64 *params); \
+ /* GL_ANGLE_robust_resource_initialization */ \
+ /* GL_ANGLE_semaphore_fuchsia */ \
+ void importSemaphoreZirconHandle(SemaphoreID semaphorePacked, HandleType handleTypePacked, \
+ GLuint handle); \
+ /* GL_ANGLE_texture_compression_dxt3 */ \
+ /* GL_ANGLE_texture_compression_dxt5 */ \
/* GL_ANGLE_texture_external_update */ \
void texImage2DExternal(TextureTarget targetPacked, GLint level, GLint internalformat, \
GLsizei width, GLsizei height, GLint border, GLenum format, \
GLenum type); \
void invalidateTexture(TextureType targetPacked); \
+ /* GL_ANGLE_texture_multisample */ \
+ /* GL_ANGLE_texture_rectangle */ \
+ /* GL_ANGLE_webgl_compatibility */ \
+ /* GL_ANGLE_yuv_internal_format */ \
+ /* GL_CHROMIUM_bind_generates_resource */ \
/* GL_CHROMIUM_bind_uniform_location */ \
void bindUniformLocation(ShaderProgramID programPacked, UniformLocation locationPacked, \
const GLchar *name); \
+ /* GL_CHROMIUM_color_buffer_float_rgb */ \
+ /* GL_CHROMIUM_color_buffer_float_rgba */ \
/* GL_CHROMIUM_copy_compressed_texture */ \
void compressedCopyTexture(TextureID sourceIdPacked, TextureID destIdPacked); \
/* GL_CHROMIUM_copy_texture */ \
@@ -464,6 +547,7 @@
void coverageModulation(GLenum components); \
/* GL_CHROMIUM_lose_context */ \
void loseContext(GraphicsResetStatus currentPacked, GraphicsResetStatus otherPacked); \
- /* GL_CHROMIUM_path_rendering */
+ /* GL_CHROMIUM_sync_query */ \
+ /* GL_CHROMIUM_texture_filtering_hint */
#endif // ANGLE_CONTEXT_API_EXT_AUTOGEN_H_
diff --git a/src/libANGLE/capture/capture_gles_ext_autogen.h b/src/libANGLE/capture/capture_gles_ext_autogen.h
index 858aabd60..1dfd578fc 100644
--- a/src/libANGLE/capture/capture_gles_ext_autogen.h
+++ b/src/libANGLE/capture/capture_gles_ext_autogen.h
@@ -90,6 +90,8 @@ angle::CallCapture CaptureCopySubTexture3DANGLE(const State &glState,
GLboolean unpackPremultiplyAlpha,
GLboolean unpackUnmultiplyAlpha);
+// GL_ANGLE_depth_texture
+
// GL_ANGLE_framebuffer_blit
angle::CallCapture CaptureBlitFramebufferANGLE(const State &glState,
bool isCallValid,
@@ -249,6 +251,8 @@ angle::CallCapture CaptureMultiDrawElementsInstancedANGLE(const State &glState,
const GLsizei *instanceCounts,
GLsizei drawcount);
+// GL_ANGLE_pack_reverse_row_order
+
// GL_ANGLE_program_binary
// GL_ANGLE_provoking_vertex
@@ -771,6 +775,10 @@ angle::CallCapture CaptureImportSemaphoreZirconHandleANGLE(const State &glState,
HandleType handleTypePacked,
GLuint handle);
+// GL_ANGLE_texture_compression_dxt3
+
+// GL_ANGLE_texture_compression_dxt5
+
// GL_ANGLE_texture_external_update
angle::CallCapture CaptureTexImage2DExternalANGLE(const State &glState,
bool isCallValid,
@@ -805,6 +813,8 @@ angle::CallCapture CaptureSampleMaskiANGLE(const State &glState,
GLuint maskNumber,
GLbitfield mask);
+// GL_ANGLE_texture_usage
+
// GL_ANGLE_translated_shader_source
angle::CallCapture CaptureGetTranslatedShaderSourceANGLE(const State &glState,
bool isCallValid,
@@ -813,6 +823,10 @@ angle::CallCapture CaptureGetTranslatedShaderSourceANGLE(const State &glState,
GLsizei *length,
GLchar *source);
+// GL_APPLE_clip_distance
+
+// GL_ARB_sync
+
// GL_CHROMIUM_bind_uniform_location
angle::CallCapture CaptureBindUniformLocationCHROMIUM(const State &glState,
bool isCallValid,
@@ -907,6 +921,8 @@ angle::CallCapture CaptureGetProgramResourceLocationIndexEXT(const State &glStat
const GLchar *name,
GLint returnValue);
+// GL_EXT_blend_minmax
+
// GL_EXT_buffer_storage
angle::CallCapture CaptureBufferStorageEXT(const State &glState,
bool isCallValid,
@@ -921,6 +937,12 @@ angle::CallCapture CaptureClipControlEXT(const State &glState,
GLenum origin,
GLenum depth);
+// GL_EXT_clip_cull_distance
+
+// GL_EXT_color_buffer_float
+
+// GL_EXT_color_buffer_half_float
+
// GL_EXT_copy_image
angle::CallCapture CaptureCopyImageSubDataEXT(const State &glState,
bool isCallValid,
@@ -1126,6 +1148,8 @@ angle::CallCapture CaptureNamedBufferStorageExternalEXT(const State &glState,
GLeglClientBufferEXT clientBuffer,
GLbitfield flags);
+// GL_EXT_float_blend
+
// GL_EXT_geometry_shader
angle::CallCapture CaptureFramebufferTextureEXT(const State &glState,
bool isCallValid,
@@ -1134,6 +1158,8 @@ angle::CallCapture CaptureFramebufferTextureEXT(const State &glState,
TextureID texturePacked,
GLint level);
+// GL_EXT_gpu_shader5
+
// GL_EXT_instanced_arrays
angle::CallCapture CaptureDrawArraysInstancedEXT(const State &glState,
bool isCallValid,
@@ -1638,6 +1664,12 @@ angle::CallCapture CaptureFramebufferFetchBarrierEXT(const State &glState, bool
// GL_EXT_shader_io_blocks
+// GL_EXT_shader_non_constant_global_initializers
+
+// GL_EXT_shader_texture_lod
+
+// GL_EXT_shadow_samplers
+
// GL_EXT_tessellation_shader
angle::CallCapture CapturePatchParameteriEXT(const State &glState,
bool isCallValid,
@@ -1716,10 +1748,18 @@ angle::CallCapture CaptureTexBufferRangeEXT(const State &glState,
// GL_EXT_texture_format_BGRA8888
+// GL_EXT_texture_format_sRGB_override
+
+// GL_EXT_texture_norm16
+
+// GL_EXT_texture_rg
+
// GL_EXT_texture_sRGB_R8
// GL_EXT_texture_sRGB_RG8
+// GL_EXT_texture_sRGB_decode
+
// GL_EXT_texture_storage
angle::CallCapture CaptureTexStorage1DEXT(const State &glState,
bool isCallValid,
@@ -1743,6 +1783,10 @@ angle::CallCapture CaptureTexStorage3DEXT(const State &glState,
GLsizei height,
GLsizei depth);
+// GL_EXT_texture_type_2_10_10_10_REV
+
+// GL_EXT_unpack_subimage
+
// GL_IMG_texture_compression_pvrtc
// GL_IMG_texture_compression_pvrtc2
@@ -1818,11 +1862,15 @@ angle::CallCapture CapturePushDebugGroupKHR(const State &glState,
GLsizei length,
const GLchar *message);
+// GL_KHR_no_error
+
// GL_KHR_parallel_shader_compile
angle::CallCapture CaptureMaxShaderCompilerThreadsKHR(const State &glState,
bool isCallValid,
GLuint count);
+// GL_KHR_robust_buffer_access_behavior
+
// GL_KHR_texture_compression_astc_hdr
// GL_KHR_texture_compression_astc_ldr
@@ -1873,6 +1921,16 @@ angle::CallCapture CaptureBlitFramebufferNV(const State &glState,
GLbitfield mask,
GLenum filter);
+// GL_NV_pixel_buffer_object
+
+// GL_NV_read_depth
+
+// GL_NV_read_stencil
+
+// GL_NV_robustness_video_memory_purge
+
+// GL_NV_shader_noperspective_interpolation
+
// GL_OES_EGL_image
angle::CallCapture CaptureEGLImageTargetRenderbufferStorageOES(const State &glState,
bool isCallValid,
@@ -1883,6 +1941,10 @@ angle::CallCapture CaptureEGLImageTargetTexture2DOES(const State &glState,
TextureType targetPacked,
GLeglImageOES image);
+// GL_OES_EGL_image_external
+
+// GL_OES_EGL_image_external_essl3
+
// GL_OES_compressed_ETC1_RGB8_texture
// GL_OES_copy_image
@@ -1904,8 +1966,12 @@ angle::CallCapture CaptureCopyImageSubDataOES(const State &glState,
GLsizei srcHeight,
GLsizei srcDepth);
+// GL_OES_depth24
+
// GL_OES_depth32
+// GL_OES_depth_texture
+
// GL_OES_draw_buffers_indexed
angle::CallCapture CaptureBlendEquationSeparateiOES(const State &glState,
bool isCallValid,
@@ -2015,6 +2081,10 @@ angle::CallCapture CaptureDrawTexxvOES(const State &glState,
bool isCallValid,
const GLfixed *coords);
+// GL_OES_element_index_uint
+
+// GL_OES_fbo_render_mipmap
+
// GL_OES_framebuffer_object
angle::CallCapture CaptureBindFramebufferOES(const State &glState,
bool isCallValid,
@@ -2143,6 +2213,8 @@ angle::CallCapture CaptureWeightPointerOES(const State &glState,
GLsizei stride,
const void *pointer);
+// GL_OES_packed_depth_stencil
+
// GL_OES_point_size_array
angle::CallCapture CapturePointSizePointerOES(const State &glState,
bool isCallValid,
@@ -2150,6 +2222,8 @@ angle::CallCapture CapturePointSizePointerOES(const State &glState,
GLsizei stride,
const void *pointer);
+// GL_OES_point_sprite
+
// GL_OES_query_matrix
angle::CallCapture CaptureQueryMatrixxOES(const State &glState,
bool isCallValid,
@@ -2157,13 +2231,25 @@ angle::CallCapture CaptureQueryMatrixxOES(const State &glState,
GLint *exponent,
GLbitfield returnValue);
+// GL_OES_rgb8_rgba8
+
// GL_OES_sample_shading
angle::CallCapture CaptureMinSampleShadingOES(const State &glState,
bool isCallValid,
GLfloat value);
+// GL_OES_sample_variables
+
+// GL_OES_shader_image_atomic
+
// GL_OES_shader_io_blocks
+// GL_OES_shader_multisample_interpolation
+
+// GL_OES_standard_derivatives
+
+// GL_OES_surfaceless_context
+
// GL_OES_texture_3D
angle::CallCapture CaptureCompressedTexImage3DOES(const State &glState,
bool isCallValid,
@@ -2290,6 +2376,8 @@ angle::CallCapture CaptureTexBufferRangeOES(const State &glState,
GLintptr offset,
GLsizeiptr size);
+// GL_OES_texture_compression_astc
+
// GL_OES_texture_cube_map
angle::CallCapture CaptureGetTexGenfvOES(const State &glState,
bool isCallValid,
@@ -2339,8 +2427,16 @@ angle::CallCapture CaptureTexGenxvOES(const State &glState,
// GL_OES_texture_cube_map_array
+// GL_OES_texture_float
+
+// GL_OES_texture_float_linear
+
// GL_OES_texture_half_float
+// GL_OES_texture_half_float_linear
+
+// GL_OES_texture_npot
+
// GL_OES_texture_stencil8
// GL_OES_texture_storage_multisample_2d_array
@@ -2371,6 +2467,10 @@ angle::CallCapture CaptureIsVertexArrayOES(const State &glState,
VertexArrayID arrayPacked,
GLboolean returnValue);
+// GL_OES_vertex_half_float
+
+// GL_OES_vertex_type_10_10_10_2
+
// GL_OVR_multiview
angle::CallCapture CaptureFramebufferTextureMultiviewOVR(const State &glState,
bool isCallValid,
diff --git a/src/libANGLE/capture/gl_enum_utils_autogen.cpp b/src/libANGLE/capture/gl_enum_utils_autogen.cpp
index 633905e62..4d3a81345 100644
--- a/src/libANGLE/capture/gl_enum_utils_autogen.cpp
+++ b/src/libANGLE/capture/gl_enum_utils_autogen.cpp
@@ -152,6 +152,10 @@ const char *GLenumToString(GLenumGroup enumGroup, unsigned int value)
{
case 0x8006:
return "GL_FUNC_ADD";
+ case 0x8007:
+ return "GL_MIN_EXT";
+ case 0x8008:
+ return "GL_MAX_EXT";
case 0x800A:
return "GL_FUNC_SUBTRACT";
case 0x800B:
@@ -535,6 +539,8 @@ const char *GLenumToString(GLenumGroup enumGroup, unsigned int value)
return "GL_CONTEXT_FLAG_DEBUG_BIT";
case 0x4:
return "GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT";
+ case 0x8:
+ return "GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR";
case 0x10:
return "GL_CONTEXT_FLAG_PROTECTED_CONTENT_BIT_EXT";
default:
@@ -707,6 +713,8 @@ const char *GLenumToString(GLenumGroup enumGroup, unsigned int value)
return "GL_CONTEXT_LOST";
case 0x800:
return "GL_CREATE_PROTECTED_BIT_ANGLE";
+ case 0xD32:
+ return "GL_MAX_CLIP_DISTANCES_APPLE";
case 0x1000:
return "GL_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_ANGLE";
case 0x1004:
@@ -717,6 +725,22 @@ const char *GLenumToString(GLenumGroup enumGroup, unsigned int value)
return "GL_CREATE_CORNER_SAMPLED_BIT_ANGLE";
case 0x2500:
return "GL_TEXTURE_GEN_MODE_OES";
+ case 0x3000:
+ return "GL_CLIP_DISTANCE0_APPLE";
+ case 0x3001:
+ return "GL_CLIP_DISTANCE1_APPLE";
+ case 0x3002:
+ return "GL_CLIP_DISTANCE2_APPLE";
+ case 0x3003:
+ return "GL_CLIP_DISTANCE3_APPLE";
+ case 0x3004:
+ return "GL_CLIP_DISTANCE4_APPLE";
+ case 0x3005:
+ return "GL_CLIP_DISTANCE5_APPLE";
+ case 0x3006:
+ return "GL_CLIP_DISTANCE6_APPLE";
+ case 0x3007:
+ return "GL_CLIP_DISTANCE7_APPLE";
case 0x4000:
return "GL_CREATE_SUBSAMPLED_BIT_ANGLE";
case 0x8005:
@@ -767,8 +791,12 @@ const char *GLenumToString(GLenumGroup enumGroup, unsigned int value)
return "GL_DEPTH_COMPONENT24";
case 0x8210:
return "GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT";
+ case 0x8211:
+ return "GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT";
case 0x8218:
return "GL_FRAMEBUFFER_DEFAULT";
+ case 0x8219:
+ return "GL_FRAMEBUFFER_UNDEFINED_OES";
case 0x821A:
return "GL_DEPTH_STENCIL_ATTACHMENT";
case 0x821B:
@@ -785,6 +813,8 @@ const char *GLenumToString(GLenumGroup enumGroup, unsigned int value)
return "GL_BUFFER_STORAGE_FLAGS_EXT";
case 0x8221:
return "GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED";
+ case 0x8227:
+ return "GL_RG_EXT";
case 0x8228:
return "GL_RG_INTEGER";
case 0x8242:
@@ -895,6 +925,10 @@ const char *GLenumToString(GLenumGroup enumGroup, unsigned int value)
return "GL_DISPLAY_LIST";
case 0x82E8:
return "GL_MAX_LABEL_LENGTH";
+ case 0x82F9:
+ return "GL_MAX_CULL_DISTANCES_EXT";
+ case 0x82FA:
+ return "GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES_EXT";
case 0x8363:
return "GL_UNSIGNED_SHORT_5_6_5";
case 0x8370:
@@ -1047,8 +1081,16 @@ const char *GLenumToString(GLenumGroup enumGroup, unsigned int value)
return "GL_MATRIX_INDEX_ARRAY_POINTER_OES";
case 0x884A:
return "GL_TEXTURE_DEPTH_SIZE";
+ case 0x884C:
+ return "GL_TEXTURE_COMPARE_MODE_EXT";
+ case 0x884D:
+ return "GL_TEXTURE_COMPARE_FUNC_EXT";
case 0x884E:
return "GL_COMPARE_REF_TO_TEXTURE";
+ case 0x8861:
+ return "GL_POINT_SPRITE_OES";
+ case 0x8862:
+ return "GL_COORD_REPLACE_OES";
case 0x8864:
return "GL_QUERY_COUNTER_BITS_EXT";
case 0x8865:
@@ -1083,6 +1125,10 @@ const char *GLenumToString(GLenumGroup enumGroup, unsigned int value)
return "GL_BUFFER_MAP_POINTER";
case 0x88BF:
return "GL_TIME_ELAPSED_EXT";
+ case 0x88EB:
+ return "GL_PIXEL_PACK_BUFFER_NV";
+ case 0x88EC:
+ return "GL_PIXEL_UNPACK_BUFFER_NV";
case 0x88ED:
return "GL_PIXEL_PACK_BUFFER_BINDING";
case 0x88EF:
@@ -1145,6 +1191,12 @@ const char *GLenumToString(GLenumGroup enumGroup, unsigned int value)
return "GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS";
case 0x8A34:
return "GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT";
+ case 0x8A48:
+ return "GL_TEXTURE_SRGB_DECODE_EXT";
+ case 0x8A49:
+ return "GL_DECODE_EXT";
+ case 0x8A4A:
+ return "GL_SKIP_DECODE_EXT";
case 0x8A4F:
return "GL_PROGRAM_PIPELINE_OBJECT_EXT";
case 0x8A52:
@@ -1305,6 +1357,8 @@ const char *GLenumToString(GLenumGroup enumGroup, unsigned int value)
return "GL_RGB565";
case 0x8D65:
return "GL_TEXTURE_EXTERNAL_OES";
+ case 0x8D66:
+ return "GL_SAMPLER_EXTERNAL_OES";
case 0x8D67:
return "GL_TEXTURE_BINDING_EXTERNAL_OES";
case 0x8D68:
@@ -1371,6 +1425,10 @@ const char *GLenumToString(GLenumGroup enumGroup, unsigned int value)
return "GL_MAX_GEOMETRY_OUTPUT_VERTICES";
case 0x8DE1:
return "GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS";
+ case 0x8DF6:
+ return "GL_UNSIGNED_INT_10_10_10_2_OES";
+ case 0x8DF7:
+ return "GL_INT_10_10_10_2_OES";
case 0x8DF8:
return "GL_SHADER_BINARY_FORMATS";
case 0x8DF9:
@@ -1493,6 +1551,8 @@ const char *GLenumToString(GLenumGroup enumGroup, unsigned int value)
return "GL_SR8_EXT";
case 0x8FBE:
return "GL_SRG8_EXT";
+ case 0x8FBF:
+ return "GL_TEXTURE_FORMAT_SRGB_OVERRIDE_EXT";
case 0x900A:
return "GL_TEXTURE_BINDING_CUBE_MAP_ARRAY";
case 0x900C:
@@ -1703,6 +1763,8 @@ const char *GLenumToString(GLenumGroup enumGroup, unsigned int value)
return "GL_HSL_COLOR";
case 0x92B0:
return "GL_HSL_LUMINOSITY";
+ case 0x92BB:
+ return "GL_PURGED_CONTEXT_RESET_NV";
case 0x92BE:
return "GL_PRIMITIVE_BOUNDING_BOX";
case 0x92C2:
@@ -1815,6 +1877,12 @@ const char *GLenumToString(GLenumGroup enumGroup, unsigned int value)
return "GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE";
case 0x93A1:
return "GL_BGRA8_EXT";
+ case 0x93A2:
+ return "GL_TEXTURE_USAGE_ANGLE";
+ case 0x93A3:
+ return "GL_FRAMEBUFFER_ATTACHMENT_ANGLE";
+ case 0x93A4:
+ return "GL_PACK_REVERSE_ROW_ORDER_ANGLE";
case 0x93A6:
return "GL_PROGRAM_BINARY_ANGLE";
case 0x93AE:
@@ -2365,6 +2433,8 @@ const char *GLenumToString(GLenumGroup enumGroup, unsigned int value)
return "GL_TEXTURE_2D";
case 0x2A00:
return "GL_POLYGON_OFFSET_UNITS";
+ case 0x8009:
+ return "GL_BLEND_EQUATION_EXT";
case 0x8037:
return "GL_POLYGON_OFFSET_FILL";
case 0x8038:
@@ -2520,6 +2590,8 @@ const char *GLenumToString(GLenumGroup enumGroup, unsigned int value)
return "GL_RGB8";
case 0x8052:
return "GL_RGB10_EXT";
+ case 0x8054:
+ return "GL_RGB16_EXT";
case 0x8056:
return "GL_RGBA4";
case 0x8057:
@@ -2528,18 +2600,26 @@ const char *GLenumToString(GLenumGroup enumGroup, unsigned int value)
return "GL_RGBA8";
case 0x8059:
return "GL_RGB10_A2";
+ case 0x805B:
+ return "GL_RGBA16_EXT";
case 0x80E1:
return "GL_BGRA_EXT";
case 0x81A5:
return "GL_DEPTH_COMPONENT16";
+ case 0x81A6:
+ return "GL_DEPTH_COMPONENT24_OES";
case 0x81A7:
return "GL_DEPTH_COMPONENT32_OES";
case 0x8227:
return "GL_RG";
case 0x8229:
return "GL_R8";
+ case 0x822A:
+ return "GL_R16_EXT";
case 0x822B:
return "GL_RG8";
+ case 0x822C:
+ return "GL_RG16_EXT";
case 0x822D:
return "GL_R16F";
case 0x822E:
@@ -2577,9 +2657,9 @@ const char *GLenumToString(GLenumGroup enumGroup, unsigned int value)
case 0x83F1:
return "GL_COMPRESSED_RGBA_S3TC_DXT1_EXT";
case 0x83F2:
- return "GL_COMPRESSED_RGBA_S3TC_DXT3_EXT";
+ return "GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE";
case 0x83F3:
- return "GL_COMPRESSED_RGBA_S3TC_DXT5_EXT";
+ return "GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE";
case 0x84F9:
return "GL_DEPTH_STENCIL";
case 0x8814:
@@ -2680,6 +2760,14 @@ const char *GLenumToString(GLenumGroup enumGroup, unsigned int value)
return "GL_RGB8_SNORM";
case 0x8F97:
return "GL_RGBA8_SNORM";
+ case 0x8F98:
+ return "GL_R16_SNORM_EXT";
+ case 0x8F99:
+ return "GL_RG16_SNORM_EXT";
+ case 0x8F9A:
+ return "GL_RGB16_SNORM_EXT";
+ case 0x8F9B:
+ return "GL_RGBA16_SNORM_EXT";
case 0x906F:
return "GL_RGB10_A2UI";
case 0x9137:
@@ -2734,6 +2822,26 @@ const char *GLenumToString(GLenumGroup enumGroup, unsigned int value)
return "GL_COMPRESSED_RGBA_ASTC_12x10_KHR";
case 0x93BD:
return "GL_COMPRESSED_RGBA_ASTC_12x12_KHR";
+ case 0x93C0:
+ return "GL_COMPRESSED_RGBA_ASTC_3x3x3_OES";
+ case 0x93C1:
+ return "GL_COMPRESSED_RGBA_ASTC_4x3x3_OES";
+ case 0x93C2:
+ return "GL_COMPRESSED_RGBA_ASTC_4x4x3_OES";
+ case 0x93C3:
+ return "GL_COMPRESSED_RGBA_ASTC_4x4x4_OES";
+ case 0x93C4:
+ return "GL_COMPRESSED_RGBA_ASTC_5x4x4_OES";
+ case 0x93C5:
+ return "GL_COMPRESSED_RGBA_ASTC_5x5x4_OES";
+ case 0x93C6:
+ return "GL_COMPRESSED_RGBA_ASTC_5x5x5_OES";
+ case 0x93C7:
+ return "GL_COMPRESSED_RGBA_ASTC_6x5x5_OES";
+ case 0x93C8:
+ return "GL_COMPRESSED_RGBA_ASTC_6x6x5_OES";
+ case 0x93C9:
+ return "GL_COMPRESSED_RGBA_ASTC_6x6x6_OES";
case 0x93D0:
return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR";
case 0x93D1:
@@ -2762,6 +2870,26 @@ const char *GLenumToString(GLenumGroup enumGroup, unsigned int value)
return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR";
case 0x93DD:
return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR";
+ case 0x93E0:
+ return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES";
+ case 0x93E1:
+ return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES";
+ case 0x93E2:
+ return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES";
+ case 0x93E3:
+ return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES";
+ case 0x93E4:
+ return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES";
+ case 0x93E5:
+ return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES";
+ case 0x93E6:
+ return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES";
+ case 0x93E7:
+ return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES";
+ case 0x93E8:
+ return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES";
+ case 0x93E9:
+ return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES";
case 0x93F0:
return "GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG";
case 0x93F1:
diff --git a/src/libANGLE/gen_extensions.py b/src/libANGLE/gen_extensions.py
new file mode 100644
index 000000000..412e9a560
--- /dev/null
+++ b/src/libANGLE/gen_extensions.py
@@ -0,0 +1,326 @@
+#!/usr/bin/python3
+#
+# Copyright 2021 The ANGLE Project Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+#
+# gen_extensions.py:
+# Generates files from supported extensions data.
+# NOTE: don't run this script directly. Run scripts/run_code_generation.py.
+
+import re
+import sys
+import os
+
+d = os.path.dirname
+THIS_DIR = d(os.path.abspath(__file__))
+ANGLE_SRC_DIR = d(d(THIS_DIR))
+SCRIPTS_DIR = os.path.join(ANGLE_SRC_DIR, 'scripts')
+sys.path.insert(0, SCRIPTS_DIR)
+
+import registry_xml
+
+_GLES_EXTENSIONS_TEMPLATE = """\
+// GENERATED FILE - DO NOT EDIT.
+// Generated by {script_name} using data from {data_source_name}
+//
+// Copyright 2021 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// {filename}: GLES extension information.
+
+#ifndef LIBANGLE_GLES_EXTENSIONS_AUTOGEN_H_
+#define LIBANGLE_GLES_EXTENSIONS_AUTOGEN_H_
+
+namespace gl
+{{
+class TextureCapsMap;
+
+struct Extensions
+{{
+ Extensions();
+ Extensions(const Extensions &other);
+
+ Extensions &operator=(const Extensions &other);
+
+ // Generate a vector of supported extension strings
+ std::vector getStrings() const;
+
+ // Set all texture related extension support based on the supported textures.
+ // Determines support for:
+ // GL_OES_packed_depth_stencil
+ // GL_OES_rgb8_rgba8
+ // GL_EXT_texture_format_BGRA8888
+ // GL_EXT_color_buffer_half_float,
+ // GL_OES_texture_half_float, GL_OES_texture_half_float_linear
+ // GL_OES_texture_float, GL_OES_texture_float_linear
+ // GL_EXT_texture_rg
+ // GL_EXT_texture_type_2_10_10_10_REV
+ // GL_EXT_texture_compression_dxt1, GL_ANGLE_texture_compression_dxt3,
+ // GL_ANGLE_texture_compression_dxt5
+ // GL_KHR_texture_compression_astc_ldr, GL_OES_texture_compression_astc.
+ // NOTE: GL_KHR_texture_compression_astc_hdr must be enabled separately. Support for the
+ // HDR profile cannot be determined from the format enums alone.
+ // GL_OES_compressed_ETC1_RGB8_texture
+ // GL_EXT_sRGB
+ // GL_ANGLE_depth_texture, GL_OES_depth32
+ // GL_EXT_color_buffer_float
+ // GL_EXT_texture_norm16
+ // GL_EXT_texture_compression_bptc
+ // GL_EXT_texture_compression_rgtc
+ void setTextureExtensionSupport(const TextureCapsMap &textureCaps);
+
+ // Helper functions
+{helper_functions}
+
+ // GLES 2.0+ extensions
+ // --------------------
+
+{gles_extensions}
+ // ANGLE unofficial extensions
+ // ---------------------------
+
+{angle_extensions}
+ // GLES 1.0 and 1.1 extensions
+ // ---------------------------
+
+{gles1_extensions}}};
+}} // namespace gl
+
+#endif // LIBANGLE_GLES_EXTENSIONS_AUTOGEN_H_
+"""
+
+_EXT_MEMBER_TEMPLATE = """\
+ // {full_name}
+ bool {name_camel_case}{vendor} = false;
+"""
+
+_HELPER_TEMPLATE = """ bool {ext_name}Any() const {{ return ({expression}); }}"""
+
+_GLES_EXT_STRINGS_TEMPLATE = """\
+// GENERATED FILE - DO NOT EDIT.
+// Generated by {script_name} using data from {data_source_name}
+//
+// Copyright 2021 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// {filename}: GLES extension strings information.
+
+#include "anglebase/no_destructor.h"
+#include "libANGLE/Caps.h"
+
+namespace gl
+{{
+const ExtensionInfoMap &GetExtensionInfoMap()
+{{
+ auto buildExtensionInfoMap = []() {{
+ auto enableableExtension = [](ExtensionBool member) {{
+ ExtensionInfo info;
+ info.Requestable = true;
+ info.ExtensionsMember = member;
+ return info;
+ }};
+
+ auto enableableDisablableExtension = [&](ExtensionBool member) {{
+ ExtensionInfo info = enableableExtension(member);
+ info.Disablable = true;
+ return info;
+ }};
+
+ auto esOnlyExtension = [](ExtensionBool member) {{
+ ExtensionInfo info;
+ info.ExtensionsMember = member;
+ return info;
+ }};
+
+ // clang-format off
+ ExtensionInfoMap map;
+
+ // GLES 2.0 extension strings
+ // --------------------------
+{gles_strings}
+
+ // ANGLE unofficial extension strings
+ // ----------------------------------
+{angle_strings}
+
+ // GLES 1.0 and 1.1 extension strings
+ // ----------------------------------
+{gles1_strings}
+ // clang-format on
+
+#if defined(ANGLE_ENABLE_ASSERTS)
+ // Verify all extension strings start with GL_
+ for (const auto &extension : map)
+ {{
+ ASSERT(extension.first.rfind("GL_", 0) == 0);
+ }}
+#endif
+
+ return map;
+ }};
+
+ static const angle::base::NoDestructor extensionInfo(buildExtensionInfoMap());
+ return *extensionInfo;
+}}
+}} // namespace gl
+"""
+
+_EXT_STRING_TEMPLATE = """\
+ map["{full_name}"] = {mode}Extension(&Extensions::{name_camel_case}{vendor});"""
+
+ESONLY = 'esOnly'
+REQUESTABLE = 'enableable'
+TOGGLEABLE = 'enableableDisablable'
+
+_MARKDOWN_TEMPLATE = """\
+# ANGLE Supported Extensions
+
+This is a list of all extensions currently supported by ANGLE's front-end. Back-end support is not
+yet documented. To produce a list of all supported extensions in the Vulkan back-end, run
+`angle_end2end_tests` with `--gtest_filter EGLPrintEGLinfoTest.PrintGLInfo/ES*_Vulkan`.
+
+This list is automatically generated by {script_name} using data from {data_source_name}.
+
+| Extension Name |
+| -------------- |
+{md_exts}
+"""
+
+
+def get_camel_case(name_with_underscores):
+ """ To follow ANGLE naming for member variables, we convert the canonical extension:
+ 0. Delete the API and vendor prefix.
+ 1. Capitalize letters after underscores.
+ 2. Delete underscores.
+ 3. Add back the vendor prefix to the end. """
+ words = name_with_underscores.split('_')
+ words = [words[0]] + [(word[0].upper() + word[1:]) for word in words[1:]]
+ return ''.join(words)
+
+
+def break_down_ext(ext, expr, mode):
+ """ This splits an extension name like GL_EXT_buffer_storage into string components. """
+ m = expr.match(ext)
+ return {
+ 'full_name': ext,
+ 'api_prefix': m.group(1),
+ 'vendor': m.group(2),
+ 'name_with_underscores': m.group(3),
+ 'name_camel_case': get_camel_case(m.group(3)),
+ 'mode': mode,
+ }
+
+
+def break_down_exts(exts, expr, mode):
+ return [break_down_ext(ext, expr, mode) for ext in exts]
+
+
+def format_exts(ext_infos):
+ return '\n'.join([_EXT_MEMBER_TEMPLATE.format(**ext_info) for ext_info in ext_infos])
+
+
+def format_helper_function(ext_name, vendors):
+ return _HELPER_TEMPLATE.format(
+ ext_name=ext_name,
+ expression=' || '.join(['%s%s' % (ext_name, vendor) for vendor in vendors]),
+ )
+
+
+def format_ext_strings(ext_infos):
+ return '\n'.join([_EXT_STRING_TEMPLATE.format(**ext_info) for ext_info in ext_infos])
+
+
+def write_file(fname, template, format_args):
+ with open(fname, 'w') as f:
+ formatted = template.format(**format_args)
+ f.write(formatted)
+ f.close()
+
+
+def sort_by_ext_name(ext_infos):
+ return sorted(ext_infos, key=lambda e: e['name_camel_case'].lower())
+
+
+def main():
+ # auto_script parameters.
+ data_source_name = 'registry_xml.py and gl.xml'
+ gles_h_output_name = 'gles_extensions_autogen.h'
+ gles_cpp_output_name = 'gles_extensions_autogen.cpp'
+ md_output_name = '../../doc/SupportedExtensions.md'
+ if len(sys.argv) > 1:
+ inputs = ['../../scripts/%s' % xml_input for xml_input in registry_xml.xml_inputs]
+ outputs = [gles_h_output_name, gles_cpp_output_name, md_output_name]
+ if sys.argv[1] == 'inputs':
+ print(','.join(inputs))
+ elif sys.argv[1] == 'outputs':
+ print(','.join(outputs))
+ else:
+ print('Invalid script parameters.')
+ return 1
+ return 0
+
+ expr = re.compile(r'^([A-Z]+)_([A-Z]+)_(\w+)$')
+
+ angle_ext_infos = (
+ break_down_exts(registry_xml.angle_requestable_extensions, expr, REQUESTABLE) +
+ break_down_exts(registry_xml.angle_es_only_extensions, expr, ESONLY) +
+ break_down_exts(registry_xml.angle_toggleable_extensions, expr, TOGGLEABLE))
+
+ angle_ext_infos = sort_by_ext_name(angle_ext_infos)
+
+ gles_ext_infos = (
+ break_down_exts(registry_xml.gles_requestable_extensions, expr, REQUESTABLE) +
+ break_down_exts(registry_xml.gles_es_only_extensions, expr, ESONLY))
+
+ gles_ext_infos = sort_by_ext_name(gles_ext_infos)
+
+ gles1_ext_infos = break_down_exts(registry_xml.gles1_extensions, expr, REQUESTABLE)
+
+ gles1_ext_infos = sort_by_ext_name(gles1_ext_infos)
+
+ ext_infos = angle_ext_infos + gles_ext_infos + gles1_ext_infos
+
+ ext_name_to_vendors = {}
+ for info in ext_infos:
+ ext_name = info['name_camel_case']
+ if ext_name in ext_name_to_vendors:
+ ext_name_to_vendors[ext_name] += [info['vendor']]
+ else:
+ ext_name_to_vendors[ext_name] = [info['vendor']]
+
+ helper_function_data = []
+ for (ext_name, vendors) in sorted(ext_name_to_vendors.items()):
+ if len(vendors) > 1:
+ helper_function_data += [format_helper_function(ext_name, vendors)]
+
+ helper_functions = '\n'.join(helper_function_data)
+
+ sorted_names = sorted([ext_info['full_name'] for ext_info in ext_infos])
+ md_exts = '\n'.join(['| `%s` |' % full_name for full_name in sorted_names])
+
+ format_args = {
+ 'script_name': os.path.basename(__file__),
+ 'data_source_name': os.path.basename(data_source_name),
+ 'filename': gles_h_output_name,
+ 'gles_extensions': format_exts(gles_ext_infos),
+ 'angle_extensions': format_exts(angle_ext_infos),
+ 'gles1_extensions': format_exts(gles1_ext_infos),
+ 'helper_functions': helper_functions,
+ 'angle_strings': format_ext_strings(angle_ext_infos),
+ 'gles_strings': format_ext_strings(gles_ext_infos),
+ 'gles1_strings': format_ext_strings(gles1_ext_infos),
+ 'md_exts': md_exts,
+ }
+
+ write_file(gles_h_output_name, _GLES_EXTENSIONS_TEMPLATE, format_args)
+ write_file(gles_cpp_output_name, _GLES_EXT_STRINGS_TEMPLATE, format_args)
+ write_file(md_output_name, _MARKDOWN_TEMPLATE, format_args)
+
+ return 0
+
+
+if __name__ == '__main__':
+ sys.exit(main())
diff --git a/src/libANGLE/gles_extensions_autogen.cpp b/src/libANGLE/gles_extensions_autogen.cpp
new file mode 100644
index 000000000..e0fb6e75b
--- /dev/null
+++ b/src/libANGLE/gles_extensions_autogen.cpp
@@ -0,0 +1,260 @@
+// GENERATED FILE - DO NOT EDIT.
+// Generated by gen_extensions.py using data from registry_xml.py and gl.xml
+//
+// Copyright 2021 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// gles_extensions_autogen.h: GLES extension strings information.
+
+#include "anglebase/no_destructor.h"
+#include "libANGLE/Caps.h"
+
+namespace gl
+{
+const ExtensionInfoMap &GetExtensionInfoMap()
+{
+ auto buildExtensionInfoMap = []() {
+ auto enableableExtension = [](ExtensionBool member) {
+ ExtensionInfo info;
+ info.Requestable = true;
+ info.ExtensionsMember = member;
+ return info;
+ };
+
+ auto enableableDisablableExtension = [&](ExtensionBool member) {
+ ExtensionInfo info = enableableExtension(member);
+ info.Disablable = true;
+ return info;
+ };
+
+ auto esOnlyExtension = [](ExtensionBool member) {
+ ExtensionInfo info;
+ info.ExtensionsMember = member;
+ return info;
+ };
+
+ // clang-format off
+ ExtensionInfoMap map;
+
+ // GLES 2.0 extension strings
+ // --------------------------
+ map["GL_KHR_blend_equation_advanced"] = esOnlyExtension(&Extensions::blendEquationAdvancedKHR);
+ map["GL_EXT_blend_func_extended"] = enableableExtension(&Extensions::blendFuncExtendedEXT);
+ map["GL_EXT_blend_minmax"] = enableableExtension(&Extensions::blendMinmaxEXT);
+ map["GL_EXT_buffer_storage"] = enableableExtension(&Extensions::bufferStorageEXT);
+ map["GL_EXT_clip_control"] = enableableExtension(&Extensions::clipControlEXT);
+ map["GL_EXT_clip_cull_distance"] = enableableExtension(&Extensions::clipCullDistanceEXT);
+ map["GL_APPLE_clip_distance"] = enableableExtension(&Extensions::clipDistanceAPPLE);
+ map["GL_EXT_color_buffer_float"] = enableableExtension(&Extensions::colorBufferFloatEXT);
+ map["GL_EXT_color_buffer_half_float"] = enableableExtension(&Extensions::colorBufferHalfFloatEXT);
+ map["GL_OES_compressed_EAC_R11_signed_texture"] = enableableExtension(&Extensions::compressedEACR11SignedTextureOES);
+ map["GL_OES_compressed_EAC_R11_unsigned_texture"] = enableableExtension(&Extensions::compressedEACR11UnsignedTextureOES);
+ map["GL_OES_compressed_EAC_RG11_signed_texture"] = enableableExtension(&Extensions::compressedEACRG11SignedTextureOES);
+ map["GL_OES_compressed_EAC_RG11_unsigned_texture"] = enableableExtension(&Extensions::compressedEACRG11UnsignedTextureOES);
+ map["GL_EXT_compressed_ETC1_RGB8_sub_texture"] = enableableExtension(&Extensions::compressedETC1RGB8SubTextureEXT);
+ map["GL_OES_compressed_ETC1_RGB8_texture"] = enableableExtension(&Extensions::compressedETC1RGB8TextureOES);
+ map["GL_OES_compressed_ETC2_punchthroughA_RGBA8_texture"] = enableableExtension(&Extensions::compressedETC2PunchthroughARGBA8TextureOES);
+ map["GL_OES_compressed_ETC2_punchthroughA_sRGB8_alpha_texture"] = enableableExtension(&Extensions::compressedETC2PunchthroughASRGB8AlphaTextureOES);
+ map["GL_OES_compressed_ETC2_RGB8_texture"] = enableableExtension(&Extensions::compressedETC2RGB8TextureOES);
+ map["GL_OES_compressed_ETC2_RGBA8_texture"] = enableableExtension(&Extensions::compressedETC2RGBA8TextureOES);
+ map["GL_OES_compressed_ETC2_sRGB8_alpha8_texture"] = enableableExtension(&Extensions::compressedETC2SRGB8Alpha8TextureOES);
+ map["GL_OES_compressed_ETC2_sRGB8_texture"] = enableableExtension(&Extensions::compressedETC2SRGB8TextureOES);
+ map["GL_EXT_copy_image"] = enableableExtension(&Extensions::copyImageEXT);
+ map["GL_OES_copy_image"] = enableableExtension(&Extensions::copyImageOES);
+ map["GL_KHR_debug"] = esOnlyExtension(&Extensions::debugKHR);
+ map["GL_EXT_debug_label"] = esOnlyExtension(&Extensions::debugLabelEXT);
+ map["GL_EXT_debug_marker"] = esOnlyExtension(&Extensions::debugMarkerEXT);
+ map["GL_OES_depth24"] = esOnlyExtension(&Extensions::depth24OES);
+ map["GL_OES_depth32"] = esOnlyExtension(&Extensions::depth32OES);
+ map["GL_NV_depth_buffer_float2"] = enableableExtension(&Extensions::depthBufferFloat2NV);
+ map["GL_ANGLE_depth_texture"] = esOnlyExtension(&Extensions::depthTextureANGLE);
+ map["GL_OES_depth_texture"] = esOnlyExtension(&Extensions::depthTextureOES);
+ map["GL_OES_depth_texture_cube_map"] = enableableExtension(&Extensions::depthTextureCubeMapOES);
+ map["GL_EXT_discard_framebuffer"] = esOnlyExtension(&Extensions::discardFramebufferEXT);
+ map["GL_EXT_disjoint_timer_query"] = enableableExtension(&Extensions::disjointTimerQueryEXT);
+ map["GL_EXT_draw_buffers"] = enableableExtension(&Extensions::drawBuffersEXT);
+ map["GL_EXT_draw_buffers_indexed"] = enableableExtension(&Extensions::drawBuffersIndexedEXT);
+ map["GL_OES_draw_buffers_indexed"] = enableableExtension(&Extensions::drawBuffersIndexedOES);
+ map["GL_EXT_draw_elements_base_vertex"] = enableableExtension(&Extensions::drawElementsBaseVertexEXT);
+ map["GL_OES_draw_elements_base_vertex"] = enableableExtension(&Extensions::drawElementsBaseVertexOES);
+ map["GL_OES_EGL_image"] = enableableExtension(&Extensions::EGLImageOES);
+ map["GL_EXT_EGL_image_array"] = enableableExtension(&Extensions::EGLImageArrayEXT);
+ map["GL_OES_EGL_image_external"] = enableableExtension(&Extensions::EGLImageExternalOES);
+ map["GL_OES_EGL_image_external_essl3"] = enableableExtension(&Extensions::EGLImageExternalEssl3OES);
+ map["GL_EXT_EGL_image_external_wrap_modes"] = enableableExtension(&Extensions::EGLImageExternalWrapModesEXT);
+ map["GL_EXT_EGL_image_storage"] = enableableExtension(&Extensions::EGLImageStorageEXT);
+ map["GL_NV_EGL_stream_consumer_external"] = enableableExtension(&Extensions::EGLStreamConsumerExternalNV);
+ map["GL_OES_EGL_sync"] = esOnlyExtension(&Extensions::EGLSyncOES);
+ map["GL_OES_element_index_uint"] = enableableExtension(&Extensions::elementIndexUintOES);
+ map["GL_EXT_external_buffer"] = enableableExtension(&Extensions::externalBufferEXT);
+ map["GL_OES_fbo_render_mipmap"] = enableableExtension(&Extensions::fboRenderMipmapOES);
+ map["GL_NV_fence"] = esOnlyExtension(&Extensions::fenceNV);
+ map["GL_EXT_float_blend"] = enableableExtension(&Extensions::floatBlendEXT);
+ map["GL_EXT_frag_depth"] = enableableExtension(&Extensions::fragDepthEXT);
+ map["GL_ANGLE_framebuffer_blit"] = enableableExtension(&Extensions::framebufferBlitANGLE);
+ map["GL_NV_framebuffer_blit"] = enableableExtension(&Extensions::framebufferBlitNV);
+ map["GL_EXT_geometry_shader"] = enableableExtension(&Extensions::geometryShaderEXT);
+ map["GL_OES_geometry_shader"] = enableableExtension(&Extensions::geometryShaderOES);
+ map["GL_OES_get_program_binary"] = enableableExtension(&Extensions::getProgramBinaryOES);
+ map["GL_EXT_gpu_shader5"] = enableableExtension(&Extensions::gpuShader5EXT);
+ map["GL_ANGLE_instanced_arrays"] = enableableExtension(&Extensions::instancedArraysANGLE);
+ map["GL_EXT_instanced_arrays"] = enableableExtension(&Extensions::instancedArraysEXT);
+ map["GL_OES_mapbuffer"] = enableableExtension(&Extensions::mapbufferOES);
+ map["GL_EXT_map_buffer_range"] = enableableExtension(&Extensions::mapBufferRangeEXT);
+ map["GL_EXT_memory_object"] = enableableExtension(&Extensions::memoryObjectEXT);
+ map["GL_EXT_memory_object_fd"] = enableableExtension(&Extensions::memoryObjectFdEXT);
+ map["GL_EXT_multisample_compatibility"] = esOnlyExtension(&Extensions::multisampleCompatibilityEXT);
+ map["GL_EXT_multisampled_render_to_texture"] = enableableExtension(&Extensions::multisampledRenderToTextureEXT);
+ map["GL_EXT_multisampled_render_to_texture2"] = enableableExtension(&Extensions::multisampledRenderToTexture2EXT);
+ map["GL_OVR_multiview"] = enableableExtension(&Extensions::multiviewOVR);
+ map["GL_OVR_multiview2"] = enableableExtension(&Extensions::multiview2OVR);
+ map["GL_KHR_no_error"] = esOnlyExtension(&Extensions::noErrorKHR);
+ map["GL_EXT_occlusion_query_boolean"] = enableableExtension(&Extensions::occlusionQueryBooleanEXT);
+ map["GL_OES_packed_depth_stencil"] = esOnlyExtension(&Extensions::packedDepthStencilOES);
+ map["GL_ANGLE_pack_reverse_row_order"] = enableableExtension(&Extensions::packReverseRowOrderANGLE);
+ map["GL_NV_pack_subimage"] = enableableExtension(&Extensions::packSubimageNV);
+ map["GL_KHR_parallel_shader_compile"] = enableableExtension(&Extensions::parallelShaderCompileKHR);
+ map["GL_NV_pixel_buffer_object"] = enableableExtension(&Extensions::pixelBufferObjectNV);
+ map["GL_EXT_primitive_bounding_box"] = esOnlyExtension(&Extensions::primitiveBoundingBoxEXT);
+ map["GL_EXT_protected_textures"] = enableableExtension(&Extensions::protectedTexturesEXT);
+ map["GL_EXT_pvrtc_sRGB"] = enableableExtension(&Extensions::pvrtcSRGBEXT);
+ map["GL_NV_read_depth"] = enableableExtension(&Extensions::readDepthNV);
+ map["GL_EXT_read_format_bgra"] = enableableExtension(&Extensions::readFormatBgraEXT);
+ map["GL_NV_read_stencil"] = enableableExtension(&Extensions::readStencilNV);
+ map["GL_OES_rgb8_rgba8"] = enableableExtension(&Extensions::rgb8Rgba8OES);
+ map["GL_KHR_robust_buffer_access_behavior"] = esOnlyExtension(&Extensions::robustBufferAccessBehaviorKHR);
+ map["GL_EXT_robustness"] = esOnlyExtension(&Extensions::robustnessEXT);
+ map["GL_NV_robustness_video_memory_purge"] = esOnlyExtension(&Extensions::robustnessVideoMemoryPurgeNV);
+ map["GL_OES_sample_shading"] = enableableExtension(&Extensions::sampleShadingOES);
+ map["GL_OES_sample_variables"] = enableableExtension(&Extensions::sampleVariablesOES);
+ map["GL_EXT_semaphore"] = enableableExtension(&Extensions::semaphoreEXT);
+ map["GL_EXT_semaphore_fd"] = enableableExtension(&Extensions::semaphoreFdEXT);
+ map["GL_EXT_separate_shader_objects"] = enableableExtension(&Extensions::separateShaderObjectsEXT);
+ map["GL_EXT_shader_framebuffer_fetch_non_coherent"] = enableableExtension(&Extensions::shaderFramebufferFetchNonCoherentEXT);
+ map["GL_OES_shader_image_atomic"] = enableableExtension(&Extensions::shaderImageAtomicOES);
+ map["GL_EXT_shader_io_blocks"] = enableableExtension(&Extensions::shaderIoBlocksEXT);
+ map["GL_OES_shader_io_blocks"] = enableableExtension(&Extensions::shaderIoBlocksOES);
+ map["GL_OES_shader_multisample_interpolation"] = enableableExtension(&Extensions::shaderMultisampleInterpolationOES);
+ map["GL_EXT_shader_non_constant_global_initializers"] = enableableExtension(&Extensions::shaderNonConstantGlobalInitializersEXT);
+ map["GL_NV_shader_noperspective_interpolation"] = enableableExtension(&Extensions::shaderNoperspectiveInterpolationNV);
+ map["GL_EXT_shader_texture_lod"] = enableableExtension(&Extensions::shaderTextureLodEXT);
+ map["GL_EXT_shadow_samplers"] = enableableExtension(&Extensions::shadowSamplersEXT);
+ map["GL_EXT_sRGB"] = enableableExtension(&Extensions::sRGBEXT);
+ map["GL_EXT_sRGB_write_control"] = esOnlyExtension(&Extensions::sRGBWriteControlEXT);
+ map["GL_OES_standard_derivatives"] = enableableExtension(&Extensions::standardDerivativesOES);
+ map["GL_OES_surfaceless_context"] = esOnlyExtension(&Extensions::surfacelessContextOES);
+ map["GL_ARB_sync"] = enableableExtension(&Extensions::syncARB);
+ map["GL_EXT_tessellation_shader"] = enableableExtension(&Extensions::tessellationShaderEXT);
+ map["GL_OES_texture_3D"] = enableableExtension(&Extensions::texture3DOES);
+ map["GL_EXT_texture_border_clamp"] = enableableExtension(&Extensions::textureBorderClampEXT);
+ map["GL_OES_texture_border_clamp"] = enableableExtension(&Extensions::textureBorderClampOES);
+ map["GL_EXT_texture_buffer"] = enableableExtension(&Extensions::textureBufferEXT);
+ map["GL_OES_texture_buffer"] = enableableExtension(&Extensions::textureBufferOES);
+ map["GL_OES_texture_compression_astc"] = enableableExtension(&Extensions::textureCompressionAstcOES);
+ map["GL_KHR_texture_compression_astc_hdr"] = enableableExtension(&Extensions::textureCompressionAstcHdrKHR);
+ map["GL_KHR_texture_compression_astc_ldr"] = enableableExtension(&Extensions::textureCompressionAstcLdrKHR);
+ map["GL_KHR_texture_compression_astc_sliced_3d"] = enableableExtension(&Extensions::textureCompressionAstcSliced3dKHR);
+ map["GL_EXT_texture_compression_bptc"] = enableableExtension(&Extensions::textureCompressionBptcEXT);
+ map["GL_EXT_texture_compression_dxt1"] = enableableExtension(&Extensions::textureCompressionDxt1EXT);
+ map["GL_IMG_texture_compression_pvrtc"] = enableableExtension(&Extensions::textureCompressionPvrtcIMG);
+ map["GL_IMG_texture_compression_pvrtc2"] = enableableExtension(&Extensions::textureCompressionPvrtc2IMG);
+ map["GL_EXT_texture_compression_rgtc"] = enableableExtension(&Extensions::textureCompressionRgtcEXT);
+ map["GL_EXT_texture_compression_s3tc"] = enableableExtension(&Extensions::textureCompressionS3tcEXT);
+ map["GL_EXT_texture_compression_s3tc_srgb"] = enableableExtension(&Extensions::textureCompressionS3tcSrgbEXT);
+ map["GL_EXT_texture_cube_map_array"] = enableableExtension(&Extensions::textureCubeMapArrayEXT);
+ map["GL_OES_texture_cube_map_array"] = enableableExtension(&Extensions::textureCubeMapArrayOES);
+ map["GL_EXT_texture_filter_anisotropic"] = enableableExtension(&Extensions::textureFilterAnisotropicEXT);
+ map["GL_OES_texture_float"] = enableableExtension(&Extensions::textureFloatOES);
+ map["GL_OES_texture_float_linear"] = enableableExtension(&Extensions::textureFloatLinearOES);
+ map["GL_EXT_texture_format_BGRA8888"] = enableableExtension(&Extensions::textureFormatBGRA8888EXT);
+ map["GL_EXT_texture_format_sRGB_override"] = esOnlyExtension(&Extensions::textureFormatSRGBOverrideEXT);
+ map["GL_OES_texture_half_float"] = enableableExtension(&Extensions::textureHalfFloatOES);
+ map["GL_OES_texture_half_float_linear"] = enableableExtension(&Extensions::textureHalfFloatLinearOES);
+ map["GL_EXT_texture_norm16"] = enableableExtension(&Extensions::textureNorm16EXT);
+ map["GL_OES_texture_npot"] = enableableExtension(&Extensions::textureNpotOES);
+ map["GL_EXT_texture_rg"] = enableableExtension(&Extensions::textureRgEXT);
+ map["GL_EXT_texture_sRGB_decode"] = esOnlyExtension(&Extensions::textureSRGBDecodeEXT);
+ map["GL_EXT_texture_sRGB_R8"] = enableableExtension(&Extensions::textureSRGBR8EXT);
+ map["GL_EXT_texture_sRGB_RG8"] = enableableExtension(&Extensions::textureSRGBRG8EXT);
+ map["GL_OES_texture_stencil8"] = enableableExtension(&Extensions::textureStencil8OES);
+ map["GL_EXT_texture_storage"] = enableableExtension(&Extensions::textureStorageEXT);
+ map["GL_OES_texture_storage_multisample_2d_array"] = enableableExtension(&Extensions::textureStorageMultisample2dArrayOES);
+ map["GL_EXT_texture_type_2_10_10_10_REV"] = enableableExtension(&Extensions::textureType2101010REVEXT);
+ map["GL_ANGLE_texture_usage"] = enableableExtension(&Extensions::textureUsageANGLE);
+ map["GL_ANGLE_translated_shader_source"] = esOnlyExtension(&Extensions::translatedShaderSourceANGLE);
+ map["GL_EXT_unpack_subimage"] = enableableExtension(&Extensions::unpackSubimageEXT);
+ map["GL_OES_vertex_array_object"] = enableableExtension(&Extensions::vertexArrayObjectOES);
+ map["GL_OES_vertex_half_float"] = enableableExtension(&Extensions::vertexHalfFloatOES);
+ map["GL_OES_vertex_type_10_10_10_2"] = enableableExtension(&Extensions::vertexType1010102OES);
+ map["GL_WEBGL_video_texture"] = enableableExtension(&Extensions::videoTextureWEBGL);
+ map["GL_EXT_YUV_target"] = enableableExtension(&Extensions::YUVTargetEXT);
+
+ // ANGLE unofficial extension strings
+ // ----------------------------------
+ map["GL_ANGLE_base_vertex_base_instance"] = enableableExtension(&Extensions::baseVertexBaseInstanceANGLE);
+ map["GL_CHROMIUM_bind_generates_resource"] = esOnlyExtension(&Extensions::bindGeneratesResourceCHROMIUM);
+ map["GL_CHROMIUM_bind_uniform_location"] = esOnlyExtension(&Extensions::bindUniformLocationCHROMIUM);
+ map["GL_ANGLE_client_arrays"] = esOnlyExtension(&Extensions::clientArraysANGLE);
+ map["GL_CHROMIUM_color_buffer_float_rgb"] = enableableExtension(&Extensions::colorBufferFloatRgbCHROMIUM);
+ map["GL_CHROMIUM_color_buffer_float_rgba"] = enableableExtension(&Extensions::colorBufferFloatRgbaCHROMIUM);
+ map["GL_ANGLE_compressed_texture_etc"] = enableableExtension(&Extensions::compressedTextureEtcANGLE);
+ map["GL_CHROMIUM_copy_compressed_texture"] = esOnlyExtension(&Extensions::copyCompressedTextureCHROMIUM);
+ map["GL_CHROMIUM_copy_texture"] = esOnlyExtension(&Extensions::copyTextureCHROMIUM);
+ map["GL_ANGLE_copy_texture_3d"] = enableableExtension(&Extensions::copyTexture3dANGLE);
+ map["GL_CHROMIUM_framebuffer_mixed_samples"] = esOnlyExtension(&Extensions::framebufferMixedSamplesCHROMIUM);
+ map["GL_ANGLE_framebuffer_multisample"] = enableableExtension(&Extensions::framebufferMultisampleANGLE);
+ map["GL_ANGLE_get_image"] = enableableExtension(&Extensions::getImageANGLE);
+ map["GL_ANGLE_get_serialized_context_string"] = esOnlyExtension(&Extensions::getSerializedContextStringANGLE);
+ map["GL_ANGLE_get_tex_level_parameter"] = enableableExtension(&Extensions::getTexLevelParameterANGLE);
+ map["GL_CHROMIUM_lose_context"] = enableableExtension(&Extensions::loseContextCHROMIUM);
+ map["GL_ANGLE_lossy_etc_decode"] = enableableExtension(&Extensions::lossyEtcDecodeANGLE);
+ map["GL_ANGLE_memory_object_flags"] = enableableExtension(&Extensions::memoryObjectFlagsANGLE);
+ map["GL_ANGLE_memory_object_fuchsia"] = enableableExtension(&Extensions::memoryObjectFuchsiaANGLE);
+ map["GL_ANGLE_memory_size"] = enableableExtension(&Extensions::memorySizeANGLE);
+ map["GL_ANGLE_multi_draw"] = enableableExtension(&Extensions::multiDrawANGLE);
+ map["GL_ANGLE_multiview_multisample"] = enableableExtension(&Extensions::multiviewMultisampleANGLE);
+ map["GL_ANGLE_program_binary"] = esOnlyExtension(&Extensions::programBinaryANGLE);
+ map["GL_ANGLE_program_cache_control"] = esOnlyExtension(&Extensions::programCacheControlANGLE);
+ map["GL_ANGLE_provoking_vertex"] = enableableExtension(&Extensions::provokingVertexANGLE);
+ map["GL_ANGLE_relaxed_vertex_attribute_type"] = esOnlyExtension(&Extensions::relaxedVertexAttributeTypeANGLE);
+ map["GL_ANGLE_request_extension"] = esOnlyExtension(&Extensions::requestExtensionANGLE);
+ map["GL_ANGLE_robust_client_memory"] = esOnlyExtension(&Extensions::robustClientMemoryANGLE);
+ map["GL_ANGLE_robust_resource_initialization"] = esOnlyExtension(&Extensions::robustResourceInitializationANGLE);
+ map["GL_ANGLE_semaphore_fuchsia"] = enableableExtension(&Extensions::semaphoreFuchsiaANGLE);
+ map["GL_CHROMIUM_sync_query"] = enableableExtension(&Extensions::syncQueryCHROMIUM);
+ map["GL_ANGLE_texture_compression_dxt3"] = enableableExtension(&Extensions::textureCompressionDxt3ANGLE);
+ map["GL_ANGLE_texture_compression_dxt5"] = enableableExtension(&Extensions::textureCompressionDxt5ANGLE);
+ map["GL_ANGLE_texture_external_update"] = enableableExtension(&Extensions::textureExternalUpdateANGLE);
+ map["GL_CHROMIUM_texture_filtering_hint"] = enableableExtension(&Extensions::textureFilteringHintCHROMIUM);
+ map["GL_ANGLE_texture_multisample"] = enableableExtension(&Extensions::textureMultisampleANGLE);
+ map["GL_ANGLE_texture_rectangle"] = enableableDisablableExtension(&Extensions::textureRectangleANGLE);
+ map["GL_ANGLE_webgl_compatibility"] = esOnlyExtension(&Extensions::webglCompatibilityANGLE);
+ map["GL_ANGLE_yuv_internal_format"] = enableableExtension(&Extensions::yuvInternalFormatANGLE);
+
+ // GLES 1.0 and 1.1 extension strings
+ // ----------------------------------
+ map["GL_OES_draw_texture"] = enableableExtension(&Extensions::drawTextureOES);
+ map["GL_OES_framebuffer_object"] = enableableExtension(&Extensions::framebufferObjectOES);
+ map["GL_OES_matrix_palette"] = enableableExtension(&Extensions::matrixPaletteOES);
+ map["GL_OES_point_size_array"] = enableableExtension(&Extensions::pointSizeArrayOES);
+ map["GL_OES_point_sprite"] = enableableExtension(&Extensions::pointSpriteOES);
+ map["GL_OES_query_matrix"] = enableableExtension(&Extensions::queryMatrixOES);
+ map["GL_OES_texture_cube_map"] = enableableExtension(&Extensions::textureCubeMapOES);
+ // clang-format on
+
+#if defined(ANGLE_ENABLE_ASSERTS)
+ // Verify all extension strings start with GL_
+ for (const auto &extension : map)
+ {
+ ASSERT(extension.first.rfind("GL_", 0) == 0);
+ }
+#endif
+
+ return map;
+ };
+
+ static const angle::base::NoDestructor extensionInfo(buildExtensionInfoMap());
+ return *extensionInfo;
+}
+} // namespace gl
diff --git a/src/libANGLE/gles_extensions_autogen.h b/src/libANGLE/gles_extensions_autogen.h
new file mode 100644
index 000000000..c55e1264f
--- /dev/null
+++ b/src/libANGLE/gles_extensions_autogen.h
@@ -0,0 +1,669 @@
+// GENERATED FILE - DO NOT EDIT.
+// Generated by gen_extensions.py using data from registry_xml.py and gl.xml
+//
+// Copyright 2021 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// gles_extensions_autogen.h: GLES extension information.
+
+#ifndef LIBANGLE_GLES_EXTENSIONS_AUTOGEN_H_
+#define LIBANGLE_GLES_EXTENSIONS_AUTOGEN_H_
+
+namespace gl
+{
+class TextureCapsMap;
+
+struct Extensions
+{
+ Extensions();
+ Extensions(const Extensions &other);
+
+ Extensions &operator=(const Extensions &other);
+
+ // Generate a vector of supported extension strings
+ std::vector getStrings() const;
+
+ // Set all texture related extension support based on the supported textures.
+ // Determines support for:
+ // GL_OES_packed_depth_stencil
+ // GL_OES_rgb8_rgba8
+ // GL_EXT_texture_format_BGRA8888
+ // GL_EXT_color_buffer_half_float,
+ // GL_OES_texture_half_float, GL_OES_texture_half_float_linear
+ // GL_OES_texture_float, GL_OES_texture_float_linear
+ // GL_EXT_texture_rg
+ // GL_EXT_texture_type_2_10_10_10_REV
+ // GL_EXT_texture_compression_dxt1, GL_ANGLE_texture_compression_dxt3,
+ // GL_ANGLE_texture_compression_dxt5
+ // GL_KHR_texture_compression_astc_ldr, GL_OES_texture_compression_astc.
+ // NOTE: GL_KHR_texture_compression_astc_hdr must be enabled separately. Support for the
+ // HDR profile cannot be determined from the format enums alone.
+ // GL_OES_compressed_ETC1_RGB8_texture
+ // GL_EXT_sRGB
+ // GL_ANGLE_depth_texture, GL_OES_depth32
+ // GL_EXT_color_buffer_float
+ // GL_EXT_texture_norm16
+ // GL_EXT_texture_compression_bptc
+ // GL_EXT_texture_compression_rgtc
+ void setTextureExtensionSupport(const TextureCapsMap &textureCaps);
+
+ // Helper functions
+ bool copyImageAny() const { return (copyImageEXT || copyImageOES); }
+ bool depthTextureAny() const { return (depthTextureANGLE || depthTextureOES); }
+ bool drawBuffersIndexedAny() const { return (drawBuffersIndexedEXT || drawBuffersIndexedOES); }
+ bool drawElementsBaseVertexAny() const
+ {
+ return (drawElementsBaseVertexEXT || drawElementsBaseVertexOES);
+ }
+ bool framebufferBlitAny() const { return (framebufferBlitANGLE || framebufferBlitNV); }
+ bool geometryShaderAny() const { return (geometryShaderEXT || geometryShaderOES); }
+ bool instancedArraysAny() const { return (instancedArraysANGLE || instancedArraysEXT); }
+ bool shaderIoBlocksAny() const { return (shaderIoBlocksEXT || shaderIoBlocksOES); }
+ bool textureBorderClampAny() const { return (textureBorderClampEXT || textureBorderClampOES); }
+ bool textureBufferAny() const { return (textureBufferEXT || textureBufferOES); }
+ bool textureCubeMapArrayAny() const
+ {
+ return (textureCubeMapArrayEXT || textureCubeMapArrayOES);
+ }
+
+ // GLES 2.0+ extensions
+ // --------------------
+
+ // GL_KHR_blend_equation_advanced
+ bool blendEquationAdvancedKHR = false;
+
+ // GL_EXT_blend_func_extended
+ bool blendFuncExtendedEXT = false;
+
+ // GL_EXT_blend_minmax
+ bool blendMinmaxEXT = false;
+
+ // GL_EXT_buffer_storage
+ bool bufferStorageEXT = false;
+
+ // GL_EXT_clip_control
+ bool clipControlEXT = false;
+
+ // GL_EXT_clip_cull_distance
+ bool clipCullDistanceEXT = false;
+
+ // GL_APPLE_clip_distance
+ bool clipDistanceAPPLE = false;
+
+ // GL_EXT_color_buffer_float
+ bool colorBufferFloatEXT = false;
+
+ // GL_EXT_color_buffer_half_float
+ bool colorBufferHalfFloatEXT = false;
+
+ // GL_OES_compressed_EAC_R11_signed_texture
+ bool compressedEACR11SignedTextureOES = false;
+
+ // GL_OES_compressed_EAC_R11_unsigned_texture
+ bool compressedEACR11UnsignedTextureOES = false;
+
+ // GL_OES_compressed_EAC_RG11_signed_texture
+ bool compressedEACRG11SignedTextureOES = false;
+
+ // GL_OES_compressed_EAC_RG11_unsigned_texture
+ bool compressedEACRG11UnsignedTextureOES = false;
+
+ // GL_EXT_compressed_ETC1_RGB8_sub_texture
+ bool compressedETC1RGB8SubTextureEXT = false;
+
+ // GL_OES_compressed_ETC1_RGB8_texture
+ bool compressedETC1RGB8TextureOES = false;
+
+ // GL_OES_compressed_ETC2_punchthroughA_RGBA8_texture
+ bool compressedETC2PunchthroughARGBA8TextureOES = false;
+
+ // GL_OES_compressed_ETC2_punchthroughA_sRGB8_alpha_texture
+ bool compressedETC2PunchthroughASRGB8AlphaTextureOES = false;
+
+ // GL_OES_compressed_ETC2_RGB8_texture
+ bool compressedETC2RGB8TextureOES = false;
+
+ // GL_OES_compressed_ETC2_RGBA8_texture
+ bool compressedETC2RGBA8TextureOES = false;
+
+ // GL_OES_compressed_ETC2_sRGB8_alpha8_texture
+ bool compressedETC2SRGB8Alpha8TextureOES = false;
+
+ // GL_OES_compressed_ETC2_sRGB8_texture
+ bool compressedETC2SRGB8TextureOES = false;
+
+ // GL_EXT_copy_image
+ bool copyImageEXT = false;
+
+ // GL_OES_copy_image
+ bool copyImageOES = false;
+
+ // GL_KHR_debug
+ bool debugKHR = false;
+
+ // GL_EXT_debug_label
+ bool debugLabelEXT = false;
+
+ // GL_EXT_debug_marker
+ bool debugMarkerEXT = false;
+
+ // GL_OES_depth24
+ bool depth24OES = false;
+
+ // GL_OES_depth32
+ bool depth32OES = false;
+
+ // GL_NV_depth_buffer_float2
+ bool depthBufferFloat2NV = false;
+
+ // GL_ANGLE_depth_texture
+ bool depthTextureANGLE = false;
+
+ // GL_OES_depth_texture
+ bool depthTextureOES = false;
+
+ // GL_OES_depth_texture_cube_map
+ bool depthTextureCubeMapOES = false;
+
+ // GL_EXT_discard_framebuffer
+ bool discardFramebufferEXT = false;
+
+ // GL_EXT_disjoint_timer_query
+ bool disjointTimerQueryEXT = false;
+
+ // GL_EXT_draw_buffers
+ bool drawBuffersEXT = false;
+
+ // GL_EXT_draw_buffers_indexed
+ bool drawBuffersIndexedEXT = false;
+
+ // GL_OES_draw_buffers_indexed
+ bool drawBuffersIndexedOES = false;
+
+ // GL_EXT_draw_elements_base_vertex
+ bool drawElementsBaseVertexEXT = false;
+
+ // GL_OES_draw_elements_base_vertex
+ bool drawElementsBaseVertexOES = false;
+
+ // GL_OES_EGL_image
+ bool EGLImageOES = false;
+
+ // GL_EXT_EGL_image_array
+ bool EGLImageArrayEXT = false;
+
+ // GL_OES_EGL_image_external
+ bool EGLImageExternalOES = false;
+
+ // GL_OES_EGL_image_external_essl3
+ bool EGLImageExternalEssl3OES = false;
+
+ // GL_EXT_EGL_image_external_wrap_modes
+ bool EGLImageExternalWrapModesEXT = false;
+
+ // GL_EXT_EGL_image_storage
+ bool EGLImageStorageEXT = false;
+
+ // GL_NV_EGL_stream_consumer_external
+ bool EGLStreamConsumerExternalNV = false;
+
+ // GL_OES_EGL_sync
+ bool EGLSyncOES = false;
+
+ // GL_OES_element_index_uint
+ bool elementIndexUintOES = false;
+
+ // GL_EXT_external_buffer
+ bool externalBufferEXT = false;
+
+ // GL_OES_fbo_render_mipmap
+ bool fboRenderMipmapOES = false;
+
+ // GL_NV_fence
+ bool fenceNV = false;
+
+ // GL_EXT_float_blend
+ bool floatBlendEXT = false;
+
+ // GL_EXT_frag_depth
+ bool fragDepthEXT = false;
+
+ // GL_ANGLE_framebuffer_blit
+ bool framebufferBlitANGLE = false;
+
+ // GL_NV_framebuffer_blit
+ bool framebufferBlitNV = false;
+
+ // GL_EXT_geometry_shader
+ bool geometryShaderEXT = false;
+
+ // GL_OES_geometry_shader
+ bool geometryShaderOES = false;
+
+ // GL_OES_get_program_binary
+ bool getProgramBinaryOES = false;
+
+ // GL_EXT_gpu_shader5
+ bool gpuShader5EXT = false;
+
+ // GL_ANGLE_instanced_arrays
+ bool instancedArraysANGLE = false;
+
+ // GL_EXT_instanced_arrays
+ bool instancedArraysEXT = false;
+
+ // GL_OES_mapbuffer
+ bool mapbufferOES = false;
+
+ // GL_EXT_map_buffer_range
+ bool mapBufferRangeEXT = false;
+
+ // GL_EXT_memory_object
+ bool memoryObjectEXT = false;
+
+ // GL_EXT_memory_object_fd
+ bool memoryObjectFdEXT = false;
+
+ // GL_EXT_multisample_compatibility
+ bool multisampleCompatibilityEXT = false;
+
+ // GL_EXT_multisampled_render_to_texture
+ bool multisampledRenderToTextureEXT = false;
+
+ // GL_EXT_multisampled_render_to_texture2
+ bool multisampledRenderToTexture2EXT = false;
+
+ // GL_OVR_multiview
+ bool multiviewOVR = false;
+
+ // GL_OVR_multiview2
+ bool multiview2OVR = false;
+
+ // GL_KHR_no_error
+ bool noErrorKHR = false;
+
+ // GL_EXT_occlusion_query_boolean
+ bool occlusionQueryBooleanEXT = false;
+
+ // GL_OES_packed_depth_stencil
+ bool packedDepthStencilOES = false;
+
+ // GL_ANGLE_pack_reverse_row_order
+ bool packReverseRowOrderANGLE = false;
+
+ // GL_NV_pack_subimage
+ bool packSubimageNV = false;
+
+ // GL_KHR_parallel_shader_compile
+ bool parallelShaderCompileKHR = false;
+
+ // GL_NV_pixel_buffer_object
+ bool pixelBufferObjectNV = false;
+
+ // GL_EXT_primitive_bounding_box
+ bool primitiveBoundingBoxEXT = false;
+
+ // GL_EXT_protected_textures
+ bool protectedTexturesEXT = false;
+
+ // GL_EXT_pvrtc_sRGB
+ bool pvrtcSRGBEXT = false;
+
+ // GL_NV_read_depth
+ bool readDepthNV = false;
+
+ // GL_EXT_read_format_bgra
+ bool readFormatBgraEXT = false;
+
+ // GL_NV_read_stencil
+ bool readStencilNV = false;
+
+ // GL_OES_rgb8_rgba8
+ bool rgb8Rgba8OES = false;
+
+ // GL_KHR_robust_buffer_access_behavior
+ bool robustBufferAccessBehaviorKHR = false;
+
+ // GL_EXT_robustness
+ bool robustnessEXT = false;
+
+ // GL_NV_robustness_video_memory_purge
+ bool robustnessVideoMemoryPurgeNV = false;
+
+ // GL_OES_sample_shading
+ bool sampleShadingOES = false;
+
+ // GL_OES_sample_variables
+ bool sampleVariablesOES = false;
+
+ // GL_EXT_semaphore
+ bool semaphoreEXT = false;
+
+ // GL_EXT_semaphore_fd
+ bool semaphoreFdEXT = false;
+
+ // GL_EXT_separate_shader_objects
+ bool separateShaderObjectsEXT = false;
+
+ // GL_EXT_shader_framebuffer_fetch_non_coherent
+ bool shaderFramebufferFetchNonCoherentEXT = false;
+
+ // GL_OES_shader_image_atomic
+ bool shaderImageAtomicOES = false;
+
+ // GL_EXT_shader_io_blocks
+ bool shaderIoBlocksEXT = false;
+
+ // GL_OES_shader_io_blocks
+ bool shaderIoBlocksOES = false;
+
+ // GL_OES_shader_multisample_interpolation
+ bool shaderMultisampleInterpolationOES = false;
+
+ // GL_EXT_shader_non_constant_global_initializers
+ bool shaderNonConstantGlobalInitializersEXT = false;
+
+ // GL_NV_shader_noperspective_interpolation
+ bool shaderNoperspectiveInterpolationNV = false;
+
+ // GL_EXT_shader_texture_lod
+ bool shaderTextureLodEXT = false;
+
+ // GL_EXT_shadow_samplers
+ bool shadowSamplersEXT = false;
+
+ // GL_EXT_sRGB
+ bool sRGBEXT = false;
+
+ // GL_EXT_sRGB_write_control
+ bool sRGBWriteControlEXT = false;
+
+ // GL_OES_standard_derivatives
+ bool standardDerivativesOES = false;
+
+ // GL_OES_surfaceless_context
+ bool surfacelessContextOES = false;
+
+ // GL_ARB_sync
+ bool syncARB = false;
+
+ // GL_EXT_tessellation_shader
+ bool tessellationShaderEXT = false;
+
+ // GL_OES_texture_3D
+ bool texture3DOES = false;
+
+ // GL_EXT_texture_border_clamp
+ bool textureBorderClampEXT = false;
+
+ // GL_OES_texture_border_clamp
+ bool textureBorderClampOES = false;
+
+ // GL_EXT_texture_buffer
+ bool textureBufferEXT = false;
+
+ // GL_OES_texture_buffer
+ bool textureBufferOES = false;
+
+ // GL_OES_texture_compression_astc
+ bool textureCompressionAstcOES = false;
+
+ // GL_KHR_texture_compression_astc_hdr
+ bool textureCompressionAstcHdrKHR = false;
+
+ // GL_KHR_texture_compression_astc_ldr
+ bool textureCompressionAstcLdrKHR = false;
+
+ // GL_KHR_texture_compression_astc_sliced_3d
+ bool textureCompressionAstcSliced3dKHR = false;
+
+ // GL_EXT_texture_compression_bptc
+ bool textureCompressionBptcEXT = false;
+
+ // GL_EXT_texture_compression_dxt1
+ bool textureCompressionDxt1EXT = false;
+
+ // GL_IMG_texture_compression_pvrtc
+ bool textureCompressionPvrtcIMG = false;
+
+ // GL_IMG_texture_compression_pvrtc2
+ bool textureCompressionPvrtc2IMG = false;
+
+ // GL_EXT_texture_compression_rgtc
+ bool textureCompressionRgtcEXT = false;
+
+ // GL_EXT_texture_compression_s3tc
+ bool textureCompressionS3tcEXT = false;
+
+ // GL_EXT_texture_compression_s3tc_srgb
+ bool textureCompressionS3tcSrgbEXT = false;
+
+ // GL_EXT_texture_cube_map_array
+ bool textureCubeMapArrayEXT = false;
+
+ // GL_OES_texture_cube_map_array
+ bool textureCubeMapArrayOES = false;
+
+ // GL_EXT_texture_filter_anisotropic
+ bool textureFilterAnisotropicEXT = false;
+
+ // GL_OES_texture_float
+ bool textureFloatOES = false;
+
+ // GL_OES_texture_float_linear
+ bool textureFloatLinearOES = false;
+
+ // GL_EXT_texture_format_BGRA8888
+ bool textureFormatBGRA8888EXT = false;
+
+ // GL_EXT_texture_format_sRGB_override
+ bool textureFormatSRGBOverrideEXT = false;
+
+ // GL_OES_texture_half_float
+ bool textureHalfFloatOES = false;
+
+ // GL_OES_texture_half_float_linear
+ bool textureHalfFloatLinearOES = false;
+
+ // GL_EXT_texture_norm16
+ bool textureNorm16EXT = false;
+
+ // GL_OES_texture_npot
+ bool textureNpotOES = false;
+
+ // GL_EXT_texture_rg
+ bool textureRgEXT = false;
+
+ // GL_EXT_texture_sRGB_decode
+ bool textureSRGBDecodeEXT = false;
+
+ // GL_EXT_texture_sRGB_R8
+ bool textureSRGBR8EXT = false;
+
+ // GL_EXT_texture_sRGB_RG8
+ bool textureSRGBRG8EXT = false;
+
+ // GL_OES_texture_stencil8
+ bool textureStencil8OES = false;
+
+ // GL_EXT_texture_storage
+ bool textureStorageEXT = false;
+
+ // GL_OES_texture_storage_multisample_2d_array
+ bool textureStorageMultisample2dArrayOES = false;
+
+ // GL_EXT_texture_type_2_10_10_10_REV
+ bool textureType2101010REVEXT = false;
+
+ // GL_ANGLE_texture_usage
+ bool textureUsageANGLE = false;
+
+ // GL_ANGLE_translated_shader_source
+ bool translatedShaderSourceANGLE = false;
+
+ // GL_EXT_unpack_subimage
+ bool unpackSubimageEXT = false;
+
+ // GL_OES_vertex_array_object
+ bool vertexArrayObjectOES = false;
+
+ // GL_OES_vertex_half_float
+ bool vertexHalfFloatOES = false;
+
+ // GL_OES_vertex_type_10_10_10_2
+ bool vertexType1010102OES = false;
+
+ // GL_WEBGL_video_texture
+ bool videoTextureWEBGL = false;
+
+ // GL_EXT_YUV_target
+ bool YUVTargetEXT = false;
+
+ // ANGLE unofficial extensions
+ // ---------------------------
+
+ // GL_ANGLE_base_vertex_base_instance
+ bool baseVertexBaseInstanceANGLE = false;
+
+ // GL_CHROMIUM_bind_generates_resource
+ bool bindGeneratesResourceCHROMIUM = false;
+
+ // GL_CHROMIUM_bind_uniform_location
+ bool bindUniformLocationCHROMIUM = false;
+
+ // GL_ANGLE_client_arrays
+ bool clientArraysANGLE = false;
+
+ // GL_CHROMIUM_color_buffer_float_rgb
+ bool colorBufferFloatRgbCHROMIUM = false;
+
+ // GL_CHROMIUM_color_buffer_float_rgba
+ bool colorBufferFloatRgbaCHROMIUM = false;
+
+ // GL_ANGLE_compressed_texture_etc
+ bool compressedTextureEtcANGLE = false;
+
+ // GL_CHROMIUM_copy_compressed_texture
+ bool copyCompressedTextureCHROMIUM = false;
+
+ // GL_CHROMIUM_copy_texture
+ bool copyTextureCHROMIUM = false;
+
+ // GL_ANGLE_copy_texture_3d
+ bool copyTexture3dANGLE = false;
+
+ // GL_CHROMIUM_framebuffer_mixed_samples
+ bool framebufferMixedSamplesCHROMIUM = false;
+
+ // GL_ANGLE_framebuffer_multisample
+ bool framebufferMultisampleANGLE = false;
+
+ // GL_ANGLE_get_image
+ bool getImageANGLE = false;
+
+ // GL_ANGLE_get_serialized_context_string
+ bool getSerializedContextStringANGLE = false;
+
+ // GL_ANGLE_get_tex_level_parameter
+ bool getTexLevelParameterANGLE = false;
+
+ // GL_CHROMIUM_lose_context
+ bool loseContextCHROMIUM = false;
+
+ // GL_ANGLE_lossy_etc_decode
+ bool lossyEtcDecodeANGLE = false;
+
+ // GL_ANGLE_memory_object_flags
+ bool memoryObjectFlagsANGLE = false;
+
+ // GL_ANGLE_memory_object_fuchsia
+ bool memoryObjectFuchsiaANGLE = false;
+
+ // GL_ANGLE_memory_size
+ bool memorySizeANGLE = false;
+
+ // GL_ANGLE_multi_draw
+ bool multiDrawANGLE = false;
+
+ // GL_ANGLE_multiview_multisample
+ bool multiviewMultisampleANGLE = false;
+
+ // GL_ANGLE_program_binary
+ bool programBinaryANGLE = false;
+
+ // GL_ANGLE_program_cache_control
+ bool programCacheControlANGLE = false;
+
+ // GL_ANGLE_provoking_vertex
+ bool provokingVertexANGLE = false;
+
+ // GL_ANGLE_relaxed_vertex_attribute_type
+ bool relaxedVertexAttributeTypeANGLE = false;
+
+ // GL_ANGLE_request_extension
+ bool requestExtensionANGLE = false;
+
+ // GL_ANGLE_robust_client_memory
+ bool robustClientMemoryANGLE = false;
+
+ // GL_ANGLE_robust_resource_initialization
+ bool robustResourceInitializationANGLE = false;
+
+ // GL_ANGLE_semaphore_fuchsia
+ bool semaphoreFuchsiaANGLE = false;
+
+ // GL_CHROMIUM_sync_query
+ bool syncQueryCHROMIUM = false;
+
+ // GL_ANGLE_texture_compression_dxt3
+ bool textureCompressionDxt3ANGLE = false;
+
+ // GL_ANGLE_texture_compression_dxt5
+ bool textureCompressionDxt5ANGLE = false;
+
+ // GL_ANGLE_texture_external_update
+ bool textureExternalUpdateANGLE = false;
+
+ // GL_CHROMIUM_texture_filtering_hint
+ bool textureFilteringHintCHROMIUM = false;
+
+ // GL_ANGLE_texture_multisample
+ bool textureMultisampleANGLE = false;
+
+ // GL_ANGLE_texture_rectangle
+ bool textureRectangleANGLE = false;
+
+ // GL_ANGLE_webgl_compatibility
+ bool webglCompatibilityANGLE = false;
+
+ // GL_ANGLE_yuv_internal_format
+ bool yuvInternalFormatANGLE = false;
+
+ // GLES 1.0 and 1.1 extensions
+ // ---------------------------
+
+ // GL_OES_draw_texture
+ bool drawTextureOES = false;
+
+ // GL_OES_framebuffer_object
+ bool framebufferObjectOES = false;
+
+ // GL_OES_matrix_palette
+ bool matrixPaletteOES = false;
+
+ // GL_OES_point_size_array
+ bool pointSizeArrayOES = false;
+
+ // GL_OES_point_sprite
+ bool pointSpriteOES = false;
+
+ // GL_OES_query_matrix
+ bool queryMatrixOES = false;
+
+ // GL_OES_texture_cube_map
+ bool textureCubeMapOES = false;
+};
+} // namespace gl
+
+#endif // LIBANGLE_GLES_EXTENSIONS_AUTOGEN_H_
diff --git a/src/libANGLE/renderer/gl/DispatchTableGL_autogen.cpp b/src/libANGLE/renderer/gl/DispatchTableGL_autogen.cpp
index 4cb668424..f6cd2d6ee 100644
--- a/src/libANGLE/renderer/gl/DispatchTableGL_autogen.cpp
+++ b/src/libANGLE/renderer/gl/DispatchTableGL_autogen.cpp
@@ -589,17 +589,6 @@ void DispatchTableGL::initProcsDesktopGL(const gl::Version &version,
ASSIGN("glUniformSubroutinesuiv", uniformSubroutinesuiv);
}
- if (extensions.count("GL_ARB_sync") != 0)
- {
- ASSIGN("glClientWaitSync", clientWaitSync);
- ASSIGN("glDeleteSync", deleteSync);
- ASSIGN("glFenceSync", fenceSync);
- ASSIGN("glGetInteger64v", getInteger64v);
- ASSIGN("glGetSynciv", getSynciv);
- ASSIGN("glIsSync", isSync);
- ASSIGN("glWaitSync", waitSync);
- }
-
if (extensions.count("GL_ARB_tessellation_shader") != 0)
{
ASSIGN("glPatchParameterfv", patchParameterfv);
@@ -2650,6 +2639,17 @@ void DispatchTableGL::initProcsGLES(const gl::Version &version,
void DispatchTableGL::initProcsSharedExtensions(const std::set &extensions)
{
+ if (extensions.count("GL_ARB_sync") != 0)
+ {
+ ASSIGN("glClientWaitSync", clientWaitSync);
+ ASSIGN("glDeleteSync", deleteSync);
+ ASSIGN("glFenceSync", fenceSync);
+ ASSIGN("glGetInteger64v", getInteger64v);
+ ASSIGN("glGetSynciv", getSynciv);
+ ASSIGN("glIsSync", isSync);
+ ASSIGN("glWaitSync", waitSync);
+ }
+
if (extensions.count("GL_EXT_blend_minmax") != 0)
{
ASSIGN("glBlendEquationEXT", blendEquation);
@@ -3377,17 +3377,6 @@ void DispatchTableGL::initProcsDesktopGLNULL(const gl::Version &version,
uniformSubroutinesuiv = &glUniformSubroutinesuivNULL;
}
- if (extensions.count("GL_ARB_sync") != 0)
- {
- clientWaitSync = &glClientWaitSyncNULL;
- deleteSync = &glDeleteSyncNULL;
- fenceSync = &glFenceSyncNULL;
- getInteger64v = &glGetInteger64vNULL;
- getSynciv = &glGetSyncivNULL;
- isSync = &glIsSyncNULL;
- waitSync = &glWaitSyncNULL;
- }
-
if (extensions.count("GL_ARB_tessellation_shader") != 0)
{
patchParameterfv = &glPatchParameterfvNULL;
@@ -5436,6 +5425,17 @@ void DispatchTableGL::initProcsGLESNULL(const gl::Version &version,
void DispatchTableGL::initProcsSharedExtensionsNULL(const std::set &extensions)
{
+ if (extensions.count("GL_ARB_sync") != 0)
+ {
+ clientWaitSync = &glClientWaitSyncNULL;
+ deleteSync = &glDeleteSyncNULL;
+ fenceSync = &glFenceSyncNULL;
+ getInteger64v = &glGetInteger64vNULL;
+ getSynciv = &glGetSyncivNULL;
+ isSync = &glIsSyncNULL;
+ waitSync = &glWaitSyncNULL;
+ }
+
if (extensions.count("GL_EXT_blend_minmax") != 0)
{
blendEquation = &glBlendEquationNULL;
diff --git a/src/libANGLE/validationESEXT_autogen.h b/src/libANGLE/validationESEXT_autogen.h
index 892e83b05..e3babfe9b 100644
--- a/src/libANGLE/validationESEXT_autogen.h
+++ b/src/libANGLE/validationESEXT_autogen.h
@@ -80,6 +80,8 @@ bool ValidateCopySubTexture3DANGLE(const Context *context,
GLboolean unpackPremultiplyAlpha,
GLboolean unpackUnmultiplyAlpha);
+// GL_ANGLE_depth_texture
+
// GL_ANGLE_framebuffer_blit
bool ValidateBlitFramebufferANGLE(const Context *context,
GLint srcX0,
@@ -219,6 +221,8 @@ bool ValidateMultiDrawElementsInstancedANGLE(const Context *context,
const GLsizei *instanceCounts,
GLsizei drawcount);
+// GL_ANGLE_pack_reverse_row_order
+
// GL_ANGLE_program_binary
// GL_ANGLE_provoking_vertex
@@ -669,6 +673,10 @@ bool ValidateImportSemaphoreZirconHandleANGLE(const Context *context,
HandleType handleTypePacked,
GLuint handle);
+// GL_ANGLE_texture_compression_dxt3
+
+// GL_ANGLE_texture_compression_dxt5
+
// GL_ANGLE_texture_external_update
bool ValidateTexImage2DExternalANGLE(const Context *context,
TextureTarget targetPacked,
@@ -695,6 +703,8 @@ bool ValidateGetMultisamplefvANGLE(const Context *context,
const GLfloat *val);
bool ValidateSampleMaskiANGLE(const Context *context, GLuint maskNumber, GLbitfield mask);
+// GL_ANGLE_texture_usage
+
// GL_ANGLE_translated_shader_source
bool ValidateGetTranslatedShaderSourceANGLE(const Context *context,
ShaderProgramID shaderPacked,
@@ -702,6 +712,10 @@ bool ValidateGetTranslatedShaderSourceANGLE(const Context *context,
const GLsizei *length,
const GLchar *source);
+// GL_APPLE_clip_distance
+
+// GL_ARB_sync
+
// GL_CHROMIUM_bind_uniform_location
bool ValidateBindUniformLocationCHROMIUM(const Context *context,
ShaderProgramID programPacked,
@@ -781,6 +795,8 @@ bool ValidateGetProgramResourceLocationIndexEXT(const Context *context,
GLenum programInterface,
const GLchar *name);
+// GL_EXT_blend_minmax
+
// GL_EXT_buffer_storage
bool ValidateBufferStorageEXT(const Context *context,
BufferBinding targetPacked,
@@ -791,6 +807,12 @@ bool ValidateBufferStorageEXT(const Context *context,
// GL_EXT_clip_control
bool ValidateClipControlEXT(const Context *context, GLenum origin, GLenum depth);
+// GL_EXT_clip_cull_distance
+
+// GL_EXT_color_buffer_float
+
+// GL_EXT_color_buffer_half_float
+
// GL_EXT_copy_image
bool ValidateCopyImageSubDataEXT(const Context *context,
GLuint srcName,
@@ -932,6 +954,8 @@ bool ValidateNamedBufferStorageExternalEXT(const Context *context,
GLeglClientBufferEXT clientBuffer,
GLbitfield flags);
+// GL_EXT_float_blend
+
// GL_EXT_geometry_shader
bool ValidateFramebufferTextureEXT(const Context *context,
GLenum target,
@@ -939,6 +963,8 @@ bool ValidateFramebufferTextureEXT(const Context *context,
TextureID texturePacked,
GLint level);
+// GL_EXT_gpu_shader5
+
// GL_EXT_instanced_arrays
bool ValidateDrawArraysInstancedEXT(const Context *context,
PrimitiveMode modePacked,
@@ -1351,6 +1377,12 @@ bool ValidateFramebufferFetchBarrierEXT(const Context *context);
// GL_EXT_shader_io_blocks
+// GL_EXT_shader_non_constant_global_initializers
+
+// GL_EXT_shader_texture_lod
+
+// GL_EXT_shadow_samplers
+
// GL_EXT_tessellation_shader
bool ValidatePatchParameteriEXT(const Context *context, GLenum pname, GLint value);
@@ -1416,10 +1448,18 @@ bool ValidateTexBufferRangeEXT(const Context *context,
// GL_EXT_texture_format_BGRA8888
+// GL_EXT_texture_format_sRGB_override
+
+// GL_EXT_texture_norm16
+
+// GL_EXT_texture_rg
+
// GL_EXT_texture_sRGB_R8
// GL_EXT_texture_sRGB_RG8
+// GL_EXT_texture_sRGB_decode
+
// GL_EXT_texture_storage
bool ValidateTexStorage1DEXT(const Context *context,
GLenum target,
@@ -1440,6 +1480,10 @@ bool ValidateTexStorage3DEXT(const Context *context,
GLsizei height,
GLsizei depth);
+// GL_EXT_texture_type_2_10_10_10_REV
+
+// GL_EXT_unpack_subimage
+
// GL_IMG_texture_compression_pvrtc
// GL_IMG_texture_compression_pvrtc2
@@ -1502,9 +1546,13 @@ bool ValidatePushDebugGroupKHR(const Context *context,
GLsizei length,
const GLchar *message);
+// GL_KHR_no_error
+
// GL_KHR_parallel_shader_compile
bool ValidateMaxShaderCompilerThreadsKHR(const Context *context, GLuint count);
+// GL_KHR_robust_buffer_access_behavior
+
// GL_KHR_texture_compression_astc_hdr
// GL_KHR_texture_compression_astc_ldr
@@ -1536,6 +1584,16 @@ bool ValidateBlitFramebufferNV(const Context *context,
GLbitfield mask,
GLenum filter);
+// GL_NV_pixel_buffer_object
+
+// GL_NV_read_depth
+
+// GL_NV_read_stencil
+
+// GL_NV_robustness_video_memory_purge
+
+// GL_NV_shader_noperspective_interpolation
+
// GL_OES_EGL_image
bool ValidateEGLImageTargetRenderbufferStorageOES(const Context *context,
GLenum target,
@@ -1544,6 +1602,10 @@ bool ValidateEGLImageTargetTexture2DOES(const Context *context,
TextureType targetPacked,
GLeglImageOES image);
+// GL_OES_EGL_image_external
+
+// GL_OES_EGL_image_external_essl3
+
// GL_OES_compressed_ETC1_RGB8_texture
// GL_OES_copy_image
@@ -1564,8 +1626,12 @@ bool ValidateCopyImageSubDataOES(const Context *context,
GLsizei srcHeight,
GLsizei srcDepth);
+// GL_OES_depth24
+
// GL_OES_depth32
+// GL_OES_depth_texture
+
// GL_OES_draw_buffers_indexed
bool ValidateBlendEquationSeparateiOES(const Context *context,
GLuint buf,
@@ -1642,6 +1708,10 @@ bool ValidateDrawTexxOES(const Context *context,
GLfixed height);
bool ValidateDrawTexxvOES(const Context *context, const GLfixed *coords);
+// GL_OES_element_index_uint
+
+// GL_OES_fbo_render_mipmap
+
// GL_OES_framebuffer_object
bool ValidateBindFramebufferOES(const Context *context,
GLenum target,
@@ -1733,22 +1803,38 @@ bool ValidateWeightPointerOES(const Context *context,
GLsizei stride,
const void *pointer);
+// GL_OES_packed_depth_stencil
+
// GL_OES_point_size_array
bool ValidatePointSizePointerOES(const Context *context,
VertexAttribType typePacked,
GLsizei stride,
const void *pointer);
+// GL_OES_point_sprite
+
// GL_OES_query_matrix
bool ValidateQueryMatrixxOES(const Context *context,
const GLfixed *mantissa,
const GLint *exponent);
+// GL_OES_rgb8_rgba8
+
// GL_OES_sample_shading
bool ValidateMinSampleShadingOES(const Context *context, GLfloat value);
+// GL_OES_sample_variables
+
+// GL_OES_shader_image_atomic
+
// GL_OES_shader_io_blocks
+// GL_OES_shader_multisample_interpolation
+
+// GL_OES_standard_derivatives
+
+// GL_OES_surfaceless_context
+
// GL_OES_texture_3D
bool ValidateCompressedTexImage3DOES(const Context *context,
TextureTarget targetPacked,
@@ -1859,6 +1945,8 @@ bool ValidateTexBufferRangeOES(const Context *context,
GLintptr offset,
GLsizeiptr size);
+// GL_OES_texture_compression_astc
+
// GL_OES_texture_cube_map
bool ValidateGetTexGenfvOES(const Context *context,
GLenum coord,
@@ -1881,8 +1969,16 @@ bool ValidateTexGenxvOES(const Context *context, GLenum coord, GLenum pname, con
// GL_OES_texture_cube_map_array
+// GL_OES_texture_float
+
+// GL_OES_texture_float_linear
+
// GL_OES_texture_half_float
+// GL_OES_texture_half_float_linear
+
+// GL_OES_texture_npot
+
// GL_OES_texture_stencil8
// GL_OES_texture_storage_multisample_2d_array
@@ -1905,6 +2001,10 @@ bool ValidateGenVertexArraysOES(const Context *context,
const VertexArrayID *arraysPacked);
bool ValidateIsVertexArrayOES(const Context *context, VertexArrayID arrayPacked);
+// GL_OES_vertex_half_float
+
+// GL_OES_vertex_type_10_10_10_2
+
// GL_OVR_multiview
bool ValidateFramebufferTextureMultiviewOVR(const Context *context,
GLenum target,
diff --git a/src/libGLESv2.gni b/src/libGLESv2.gni
index e6a668ed6..b2ae92287 100644
--- a/src/libGLESv2.gni
+++ b/src/libGLESv2.gni
@@ -276,6 +276,7 @@ libangle_headers = [
"src/libANGLE/entry_points_utils.h",
"src/libANGLE/features.h",
"src/libANGLE/formatutils.h",
+ "src/libANGLE/gles_extensions_autogen.h",
"src/libANGLE/histogram_macros.h",
"src/libANGLE/queryconversions.h",
"src/libANGLE/queryutils.h",
@@ -400,6 +401,7 @@ libangle_sources = [
"src/libANGLE/format_map_autogen.cpp",
"src/libANGLE/format_map_desktop.cpp",
"src/libANGLE/formatutils.cpp",
+ "src/libANGLE/gles_extensions_autogen.cpp",
"src/libANGLE/queryconversions.cpp",
"src/libANGLE/queryutils.cpp",
"src/libANGLE/renderer/BufferImpl.cpp",
diff --git a/src/libGLESv2/entry_points_gles_ext_autogen.cpp b/src/libGLESv2/entry_points_gles_ext_autogen.cpp
index 8bdc458c9..e55f66290 100644
--- a/src/libGLESv2/entry_points_gles_ext_autogen.cpp
+++ b/src/libGLESv2/entry_points_gles_ext_autogen.cpp
@@ -298,6 +298,8 @@ void GL_APIENTRY GL_CopySubTexture3DANGLE(GLuint sourceId,
}
}
+// GL_ANGLE_depth_texture
+
// GL_ANGLE_framebuffer_blit
void GL_APIENTRY GL_BlitFramebufferANGLE(GLint srcX0,
GLint srcY0,
@@ -942,6 +944,8 @@ void GL_APIENTRY GL_MultiDrawElementsInstancedANGLE(GLenum mode,
}
}
+// GL_ANGLE_pack_reverse_row_order
+
// GL_ANGLE_program_binary
// GL_ANGLE_provoking_vertex
@@ -3231,6 +3235,10 @@ void GL_APIENTRY GL_ImportSemaphoreZirconHandleANGLE(GLuint semaphore,
}
}
+// GL_ANGLE_texture_compression_dxt3
+
+// GL_ANGLE_texture_compression_dxt5
+
// GL_ANGLE_texture_external_update
void GL_APIENTRY GL_TexImage2DExternalANGLE(GLenum target,
GLint level,
@@ -3384,6 +3392,8 @@ void GL_APIENTRY GL_SampleMaskiANGLE(GLuint maskNumber, GLbitfield mask)
// GetTexLevelParameterivANGLE is already defined.
+// GL_ANGLE_texture_usage
+
// GL_ANGLE_translated_shader_source
void GL_APIENTRY GL_GetTranslatedShaderSourceANGLE(GLuint shader,
GLsizei bufsize,
@@ -3416,6 +3426,23 @@ void GL_APIENTRY GL_GetTranslatedShaderSourceANGLE(GLuint shader,
}
}
+// GL_APPLE_clip_distance
+
+// GL_ARB_sync
+// ClientWaitSync is already defined.
+
+// DeleteSync is already defined.
+
+// FenceSync is already defined.
+
+// GetInteger64v is already defined.
+
+// GetSynciv is already defined.
+
+// IsSync is already defined.
+
+// WaitSync is already defined.
+
// GL_CHROMIUM_bind_uniform_location
void GL_APIENTRY GL_BindUniformLocationCHROMIUM(GLuint program, GLint location, const GLchar *name)
{
@@ -3813,6 +3840,8 @@ GLint GL_APIENTRY GL_GetProgramResourceLocationIndexEXT(GLuint program,
return returnValue;
}
+// GL_EXT_blend_minmax
+
// GL_EXT_buffer_storage
void GL_APIENTRY GL_BufferStorageEXT(GLenum target,
GLsizeiptr size,
@@ -3869,6 +3898,12 @@ void GL_APIENTRY GL_ClipControlEXT(GLenum origin, GLenum depth)
}
}
+// GL_EXT_clip_cull_distance
+
+// GL_EXT_color_buffer_float
+
+// GL_EXT_color_buffer_half_float
+
// GL_EXT_copy_image
void GL_APIENTRY GL_CopyImageSubDataEXT(GLuint srcName,
GLenum srcTarget,
@@ -4817,6 +4852,8 @@ void GL_APIENTRY GL_NamedBufferStorageExternalEXT(GLuint buffer,
}
}
+// GL_EXT_float_blend
+
// GL_EXT_geometry_shader
void GL_APIENTRY GL_FramebufferTextureEXT(GLenum target,
GLenum attachment,
@@ -4849,6 +4886,8 @@ void GL_APIENTRY GL_FramebufferTextureEXT(GLenum target,
}
}
+// GL_EXT_gpu_shader5
+
// GL_EXT_instanced_arrays
void GL_APIENTRY GL_DrawArraysInstancedEXT(GLenum mode,
GLint start,
@@ -7258,6 +7297,12 @@ void GL_APIENTRY GL_FramebufferFetchBarrierEXT()
// GL_EXT_shader_io_blocks
+// GL_EXT_shader_non_constant_global_initializers
+
+// GL_EXT_shader_texture_lod
+
+// GL_EXT_shadow_samplers
+
// GL_EXT_tessellation_shader
void GL_APIENTRY GL_PatchParameteriEXT(GLenum pname, GLint value)
{
@@ -7570,10 +7615,18 @@ void GL_APIENTRY GL_TexBufferRangeEXT(GLenum target,
// GL_EXT_texture_format_BGRA8888
+// GL_EXT_texture_format_sRGB_override
+
+// GL_EXT_texture_norm16
+
+// GL_EXT_texture_rg
+
// GL_EXT_texture_sRGB_R8
// GL_EXT_texture_sRGB_RG8
+// GL_EXT_texture_sRGB_decode
+
// GL_EXT_texture_storage
void GL_APIENTRY GL_TexStorage1DEXT(GLenum target,
GLsizei levels,
@@ -7670,6 +7723,10 @@ void GL_APIENTRY GL_TexStorage3DEXT(GLenum target,
}
}
+// GL_EXT_texture_type_2_10_10_10_REV
+
+// GL_EXT_unpack_subimage
+
// GL_IMG_texture_compression_pvrtc
// GL_IMG_texture_compression_pvrtc2
@@ -8019,6 +8076,8 @@ void GL_APIENTRY GL_PushDebugGroupKHR(GLenum source,
}
}
+// GL_KHR_no_error
+
// GL_KHR_parallel_shader_compile
void GL_APIENTRY GL_MaxShaderCompilerThreadsKHR(GLuint count)
{
@@ -8042,6 +8101,8 @@ void GL_APIENTRY GL_MaxShaderCompilerThreadsKHR(GLuint count)
}
}
+// GL_KHR_robust_buffer_access_behavior
+
// GL_KHR_texture_compression_astc_hdr
// GL_KHR_texture_compression_astc_ldr
@@ -8267,6 +8328,16 @@ void GL_APIENTRY GL_BlitFramebufferNV(GLint srcX0,
}
}
+// GL_NV_pixel_buffer_object
+
+// GL_NV_read_depth
+
+// GL_NV_read_stencil
+
+// GL_NV_robustness_video_memory_purge
+
+// GL_NV_shader_noperspective_interpolation
+
// GL_OES_EGL_image
void GL_APIENTRY GL_EGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image)
{
@@ -8317,6 +8388,10 @@ void GL_APIENTRY GL_EGLImageTargetTexture2DOES(GLenum target, GLeglImageOES imag
}
}
+// GL_OES_EGL_image_external
+
+// GL_OES_EGL_image_external_essl3
+
// GL_OES_compressed_ETC1_RGB8_texture
// GL_OES_copy_image
@@ -8370,8 +8445,12 @@ void GL_APIENTRY GL_CopyImageSubDataOES(GLuint srcName,
}
}
+// GL_OES_depth24
+
// GL_OES_depth32
+// GL_OES_depth_texture
+
// GL_OES_draw_buffers_indexed
void GL_APIENTRY GL_BlendEquationSeparateiOES(GLuint buf, GLenum modeRGB, GLenum modeAlpha)
{
@@ -8868,6 +8947,10 @@ void GL_APIENTRY GL_DrawTexxvOES(const GLfixed *coords)
}
}
+// GL_OES_element_index_uint
+
+// GL_OES_fbo_render_mipmap
+
// GL_OES_framebuffer_object
void GL_APIENTRY GL_BindFramebufferOES(GLenum target, GLuint framebuffer)
{
@@ -9576,6 +9659,8 @@ void GL_APIENTRY GL_WeightPointerOES(GLint size, GLenum type, GLsizei stride, co
}
}
+// GL_OES_packed_depth_stencil
+
// GL_OES_point_size_array
void GL_APIENTRY GL_PointSizePointerOES(GLenum type, GLsizei stride, const void *pointer)
{
@@ -9602,6 +9687,8 @@ void GL_APIENTRY GL_PointSizePointerOES(GLenum type, GLsizei stride, const void
}
}
+// GL_OES_point_sprite
+
// GL_OES_query_matrix
GLbitfield GL_APIENTRY GL_QueryMatrixxOES(GLfixed *mantissa, GLint *exponent)
{
@@ -9634,6 +9721,8 @@ GLbitfield GL_APIENTRY GL_QueryMatrixxOES(GLfixed *mantissa, GLint *exponent)
return returnValue;
}
+// GL_OES_rgb8_rgba8
+
// GL_OES_sample_shading
void GL_APIENTRY GL_MinSampleShadingOES(GLfloat value)
{
@@ -9657,8 +9746,18 @@ void GL_APIENTRY GL_MinSampleShadingOES(GLfloat value)
}
}
+// GL_OES_sample_variables
+
+// GL_OES_shader_image_atomic
+
// GL_OES_shader_io_blocks
+// GL_OES_shader_multisample_interpolation
+
+// GL_OES_standard_derivatives
+
+// GL_OES_surfaceless_context
+
// GL_OES_texture_3D
void GL_APIENTRY GL_CompressedTexImage3DOES(GLenum target,
GLint level,
@@ -10174,6 +10273,8 @@ void GL_APIENTRY GL_TexBufferRangeOES(GLenum target,
}
}
+// GL_OES_texture_compression_astc
+
// GL_OES_texture_cube_map
void GL_APIENTRY GL_GetTexGenfvOES(GLenum coord, GLenum pname, GLfloat *params)
{
@@ -10399,8 +10500,16 @@ void GL_APIENTRY GL_TexGenxvOES(GLenum coord, GLenum pname, const GLfixed *param
// GL_OES_texture_cube_map_array
+// GL_OES_texture_float
+
+// GL_OES_texture_float_linear
+
// GL_OES_texture_half_float
+// GL_OES_texture_half_float_linear
+
+// GL_OES_texture_npot
+
// GL_OES_texture_stencil8
// GL_OES_texture_storage_multisample_2d_array
@@ -10544,6 +10653,10 @@ GLboolean GL_APIENTRY GL_IsVertexArrayOES(GLuint array)
return returnValue;
}
+// GL_OES_vertex_half_float
+
+// GL_OES_vertex_type_10_10_10_2
+
// GL_OVR_multiview
void GL_APIENTRY GL_FramebufferTextureMultiviewOVR(GLenum target,
GLenum attachment,
diff --git a/src/libGLESv2/entry_points_gles_ext_autogen.h b/src/libGLESv2/entry_points_gles_ext_autogen.h
index 60b352c6d..15f90e0fa 100644
--- a/src/libGLESv2/entry_points_gles_ext_autogen.h
+++ b/src/libGLESv2/entry_points_gles_ext_autogen.h
@@ -80,6 +80,8 @@ ANGLE_EXPORT void GL_APIENTRY GL_CopySubTexture3DANGLE(GLuint sourceId,
GLboolean unpackPremultiplyAlpha,
GLboolean unpackUnmultiplyAlpha);
+// GL_ANGLE_depth_texture
+
// GL_ANGLE_framebuffer_blit
ANGLE_EXPORT void GL_APIENTRY GL_BlitFramebufferANGLE(GLint srcX0,
GLint srcY0,
@@ -201,6 +203,8 @@ ANGLE_EXPORT void GL_APIENTRY GL_MultiDrawElementsInstancedANGLE(GLenum mode,
const GLsizei *instanceCounts,
GLsizei drawcount);
+// GL_ANGLE_pack_reverse_row_order
+
// GL_ANGLE_program_binary
// GL_ANGLE_provoking_vertex
@@ -586,6 +590,10 @@ ANGLE_EXPORT void GL_APIENTRY GL_ImportSemaphoreZirconHandleANGLE(GLuint semapho
GLenum handleType,
GLuint handle);
+// GL_ANGLE_texture_compression_dxt3
+
+// GL_ANGLE_texture_compression_dxt5
+
// GL_ANGLE_texture_external_update
ANGLE_EXPORT void GL_APIENTRY GL_TexImage2DExternalANGLE(GLenum target,
GLint level,
@@ -607,12 +615,18 @@ ANGLE_EXPORT void GL_APIENTRY GL_TexStorage2DMultisampleANGLE(GLenum target,
ANGLE_EXPORT void GL_APIENTRY GL_GetMultisamplefvANGLE(GLenum pname, GLuint index, GLfloat *val);
ANGLE_EXPORT void GL_APIENTRY GL_SampleMaskiANGLE(GLuint maskNumber, GLbitfield mask);
+// GL_ANGLE_texture_usage
+
// GL_ANGLE_translated_shader_source
ANGLE_EXPORT void GL_APIENTRY GL_GetTranslatedShaderSourceANGLE(GLuint shader,
GLsizei bufsize,
GLsizei *length,
GLchar *source);
+// GL_APPLE_clip_distance
+
+// GL_ARB_sync
+
// GL_CHROMIUM_bind_uniform_location
ANGLE_EXPORT void GL_APIENTRY GL_BindUniformLocationCHROMIUM(GLuint program,
GLint location,
@@ -678,6 +692,8 @@ ANGLE_EXPORT GLint GL_APIENTRY GL_GetProgramResourceLocationIndexEXT(GLuint prog
GLenum programInterface,
const GLchar *name);
+// GL_EXT_blend_minmax
+
// GL_EXT_buffer_storage
ANGLE_EXPORT void GL_APIENTRY GL_BufferStorageEXT(GLenum target,
GLsizeiptr size,
@@ -687,6 +703,12 @@ ANGLE_EXPORT void GL_APIENTRY GL_BufferStorageEXT(GLenum target,
// GL_EXT_clip_control
ANGLE_EXPORT void GL_APIENTRY GL_ClipControlEXT(GLenum origin, GLenum depth);
+// GL_EXT_clip_cull_distance
+
+// GL_EXT_color_buffer_float
+
+// GL_EXT_color_buffer_half_float
+
// GL_EXT_copy_image
ANGLE_EXPORT void GL_APIENTRY GL_CopyImageSubDataEXT(GLuint srcName,
GLenum srcTarget,
@@ -794,12 +816,16 @@ ANGLE_EXPORT void GL_APIENTRY GL_NamedBufferStorageExternalEXT(GLuint buffer,
GLeglClientBufferEXT clientBuffer,
GLbitfield flags);
+// GL_EXT_float_blend
+
// GL_EXT_geometry_shader
ANGLE_EXPORT void GL_APIENTRY GL_FramebufferTextureEXT(GLenum target,
GLenum attachment,
GLuint texture,
GLint level);
+// GL_EXT_gpu_shader5
+
// GL_EXT_instanced_arrays
ANGLE_EXPORT void GL_APIENTRY GL_DrawArraysInstancedEXT(GLenum mode,
GLint start,
@@ -1109,6 +1135,12 @@ ANGLE_EXPORT void GL_APIENTRY GL_FramebufferFetchBarrierEXT();
// GL_EXT_shader_io_blocks
+// GL_EXT_shader_non_constant_global_initializers
+
+// GL_EXT_shader_texture_lod
+
+// GL_EXT_shadow_samplers
+
// GL_EXT_tessellation_shader
ANGLE_EXPORT void GL_APIENTRY GL_PatchParameteriEXT(GLenum pname, GLint value);
@@ -1160,10 +1192,18 @@ ANGLE_EXPORT void GL_APIENTRY GL_TexBufferRangeEXT(GLenum target,
// GL_EXT_texture_format_BGRA8888
+// GL_EXT_texture_format_sRGB_override
+
+// GL_EXT_texture_norm16
+
+// GL_EXT_texture_rg
+
// GL_EXT_texture_sRGB_R8
// GL_EXT_texture_sRGB_RG8
+// GL_EXT_texture_sRGB_decode
+
// GL_EXT_texture_storage
ANGLE_EXPORT void GL_APIENTRY GL_TexStorage1DEXT(GLenum target,
GLsizei levels,
@@ -1181,6 +1221,10 @@ ANGLE_EXPORT void GL_APIENTRY GL_TexStorage3DEXT(GLenum target,
GLsizei height,
GLsizei depth);
+// GL_EXT_texture_type_2_10_10_10_REV
+
+// GL_EXT_unpack_subimage
+
// GL_IMG_texture_compression_pvrtc
// GL_IMG_texture_compression_pvrtc2
@@ -1234,9 +1278,13 @@ ANGLE_EXPORT void GL_APIENTRY GL_PushDebugGroupKHR(GLenum source,
GLsizei length,
const GLchar *message);
+// GL_KHR_no_error
+
// GL_KHR_parallel_shader_compile
ANGLE_EXPORT void GL_APIENTRY GL_MaxShaderCompilerThreadsKHR(GLuint count);
+// GL_KHR_robust_buffer_access_behavior
+
// GL_KHR_texture_compression_astc_hdr
// GL_KHR_texture_compression_astc_ldr
@@ -1264,11 +1312,25 @@ ANGLE_EXPORT void GL_APIENTRY GL_BlitFramebufferNV(GLint srcX0,
GLbitfield mask,
GLenum filter);
+// GL_NV_pixel_buffer_object
+
+// GL_NV_read_depth
+
+// GL_NV_read_stencil
+
+// GL_NV_robustness_video_memory_purge
+
+// GL_NV_shader_noperspective_interpolation
+
// GL_OES_EGL_image
ANGLE_EXPORT void GL_APIENTRY GL_EGLImageTargetRenderbufferStorageOES(GLenum target,
GLeglImageOES image);
ANGLE_EXPORT void GL_APIENTRY GL_EGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image);
+// GL_OES_EGL_image_external
+
+// GL_OES_EGL_image_external_essl3
+
// GL_OES_compressed_ETC1_RGB8_texture
// GL_OES_copy_image
@@ -1288,8 +1350,12 @@ ANGLE_EXPORT void GL_APIENTRY GL_CopyImageSubDataOES(GLuint srcName,
GLsizei srcHeight,
GLsizei srcDepth);
+// GL_OES_depth24
+
// GL_OES_depth32
+// GL_OES_depth_texture
+
// GL_OES_draw_buffers_indexed
ANGLE_EXPORT void GL_APIENTRY GL_BlendEquationSeparateiOES(GLuint buf,
GLenum modeRGB,
@@ -1340,6 +1406,10 @@ ANGLE_EXPORT void GL_APIENTRY
GL_DrawTexxOES(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height);
ANGLE_EXPORT void GL_APIENTRY GL_DrawTexxvOES(const GLfixed *coords);
+// GL_OES_element_index_uint
+
+// GL_OES_fbo_render_mipmap
+
// GL_OES_framebuffer_object
ANGLE_EXPORT void GL_APIENTRY GL_BindFramebufferOES(GLenum target, GLuint framebuffer);
ANGLE_EXPORT void GL_APIENTRY GL_BindRenderbufferOES(GLenum target, GLuint renderbuffer);
@@ -1406,19 +1476,35 @@ ANGLE_EXPORT void GL_APIENTRY GL_WeightPointerOES(GLint size,
GLsizei stride,
const void *pointer);
+// GL_OES_packed_depth_stencil
+
// GL_OES_point_size_array
ANGLE_EXPORT void GL_APIENTRY GL_PointSizePointerOES(GLenum type,
GLsizei stride,
const void *pointer);
+// GL_OES_point_sprite
+
// GL_OES_query_matrix
ANGLE_EXPORT GLbitfield GL_APIENTRY GL_QueryMatrixxOES(GLfixed *mantissa, GLint *exponent);
+// GL_OES_rgb8_rgba8
+
// GL_OES_sample_shading
ANGLE_EXPORT void GL_APIENTRY GL_MinSampleShadingOES(GLfloat value);
+// GL_OES_sample_variables
+
+// GL_OES_shader_image_atomic
+
// GL_OES_shader_io_blocks
+// GL_OES_shader_multisample_interpolation
+
+// GL_OES_standard_derivatives
+
+// GL_OES_surfaceless_context
+
// GL_OES_texture_3D
ANGLE_EXPORT void GL_APIENTRY GL_CompressedTexImage3DOES(GLenum target,
GLint level,
@@ -1509,6 +1595,8 @@ ANGLE_EXPORT void GL_APIENTRY GL_TexBufferRangeOES(GLenum target,
GLintptr offset,
GLsizeiptr size);
+// GL_OES_texture_compression_astc
+
// GL_OES_texture_cube_map
ANGLE_EXPORT void GL_APIENTRY GL_GetTexGenfvOES(GLenum coord, GLenum pname, GLfloat *params);
ANGLE_EXPORT void GL_APIENTRY GL_GetTexGenivOES(GLenum coord, GLenum pname, GLint *params);
@@ -1522,8 +1610,16 @@ ANGLE_EXPORT void GL_APIENTRY GL_TexGenxvOES(GLenum coord, GLenum pname, const G
// GL_OES_texture_cube_map_array
+// GL_OES_texture_float
+
+// GL_OES_texture_float_linear
+
// GL_OES_texture_half_float
+// GL_OES_texture_half_float_linear
+
+// GL_OES_texture_npot
+
// GL_OES_texture_stencil8
// GL_OES_texture_storage_multisample_2d_array
@@ -1541,6 +1637,10 @@ ANGLE_EXPORT void GL_APIENTRY GL_DeleteVertexArraysOES(GLsizei n, const GLuint *
ANGLE_EXPORT void GL_APIENTRY GL_GenVertexArraysOES(GLsizei n, GLuint *arrays);
ANGLE_EXPORT GLboolean GL_APIENTRY GL_IsVertexArrayOES(GLuint array);
+// GL_OES_vertex_half_float
+
+// GL_OES_vertex_type_10_10_10_2
+
// GL_OVR_multiview
ANGLE_EXPORT void GL_APIENTRY GL_FramebufferTextureMultiviewOVR(GLenum target,
GLenum attachment,
diff --git a/src/libGLESv2/libGLESv2_autogen.cpp b/src/libGLESv2/libGLESv2_autogen.cpp
index a0c77ee29..c7d22d959 100644
--- a/src/libGLESv2/libGLESv2_autogen.cpp
+++ b/src/libGLESv2/libGLESv2_autogen.cpp
@@ -2800,6 +2800,8 @@ void GL_APIENTRY glCopySubTexture3DANGLE(GLuint sourceId,
unpackPremultiplyAlpha, unpackUnmultiplyAlpha);
}
+// GL_ANGLE_depth_texture
+
// GL_ANGLE_framebuffer_blit
void GL_APIENTRY glBlitFramebufferANGLE(GLint srcX0,
GLint srcY0,
@@ -2991,6 +2993,8 @@ void GL_APIENTRY glMultiDrawElementsInstancedANGLE(GLenum mode,
drawcount);
}
+// GL_ANGLE_pack_reverse_row_order
+
// GL_ANGLE_program_binary
// GL_ANGLE_provoking_vertex
@@ -3658,6 +3662,10 @@ void GL_APIENTRY glImportSemaphoreZirconHandleANGLE(GLuint semaphore,
return GL_ImportSemaphoreZirconHandleANGLE(semaphore, handleType, handle);
}
+// GL_ANGLE_texture_compression_dxt3
+
+// GL_ANGLE_texture_compression_dxt5
+
// GL_ANGLE_texture_external_update
void GL_APIENTRY glTexImage2DExternalANGLE(GLenum target,
GLint level,
@@ -3699,6 +3707,8 @@ void GL_APIENTRY glSampleMaskiANGLE(GLuint maskNumber, GLbitfield mask)
return GL_SampleMaskiANGLE(maskNumber, mask);
}
+// GL_ANGLE_texture_usage
+
// GL_ANGLE_translated_shader_source
void GL_APIENTRY glGetTranslatedShaderSourceANGLE(GLuint shader,
GLsizei bufsize,
@@ -3708,6 +3718,10 @@ void GL_APIENTRY glGetTranslatedShaderSourceANGLE(GLuint shader,
return GL_GetTranslatedShaderSourceANGLE(shader, bufsize, length, source);
}
+// GL_APPLE_clip_distance
+
+// GL_ARB_sync
+
// GL_CHROMIUM_bind_uniform_location
void GL_APIENTRY glBindUniformLocationCHROMIUM(GLuint program, GLint location, const GLchar *name)
{
@@ -3814,6 +3828,8 @@ GLint GL_APIENTRY glGetProgramResourceLocationIndexEXT(GLuint program,
return GL_GetProgramResourceLocationIndexEXT(program, programInterface, name);
}
+// GL_EXT_blend_minmax
+
// GL_EXT_buffer_storage
void GL_APIENTRY glBufferStorageEXT(GLenum target,
GLsizeiptr size,
@@ -3829,6 +3845,12 @@ void GL_APIENTRY glClipControlEXT(GLenum origin, GLenum depth)
return GL_ClipControlEXT(origin, depth);
}
+// GL_EXT_clip_cull_distance
+
+// GL_EXT_color_buffer_float
+
+// GL_EXT_color_buffer_half_float
+
// GL_EXT_copy_image
void GL_APIENTRY glCopyImageSubDataEXT(GLuint srcName,
GLenum srcTarget,
@@ -4057,6 +4079,8 @@ void GL_APIENTRY glNamedBufferStorageExternalEXT(GLuint buffer,
return GL_NamedBufferStorageExternalEXT(buffer, offset, size, clientBuffer, flags);
}
+// GL_EXT_float_blend
+
// GL_EXT_geometry_shader
void GL_APIENTRY glFramebufferTextureEXT(GLenum target,
GLenum attachment,
@@ -4066,6 +4090,8 @@ void GL_APIENTRY glFramebufferTextureEXT(GLenum target,
return GL_FramebufferTextureEXT(target, attachment, texture, level);
}
+// GL_EXT_gpu_shader5
+
// GL_EXT_instanced_arrays
void GL_APIENTRY glDrawArraysInstancedEXT(GLenum mode,
GLint start,
@@ -4652,6 +4678,12 @@ void GL_APIENTRY glFramebufferFetchBarrierEXT()
// GL_EXT_shader_io_blocks
+// GL_EXT_shader_non_constant_global_initializers
+
+// GL_EXT_shader_texture_lod
+
+// GL_EXT_shadow_samplers
+
// GL_EXT_tessellation_shader
void GL_APIENTRY glPatchParameteriEXT(GLenum pname, GLint value)
{
@@ -4730,10 +4762,18 @@ void GL_APIENTRY glTexBufferRangeEXT(GLenum target,
// GL_EXT_texture_format_BGRA8888
+// GL_EXT_texture_format_sRGB_override
+
+// GL_EXT_texture_norm16
+
+// GL_EXT_texture_rg
+
// GL_EXT_texture_sRGB_R8
// GL_EXT_texture_sRGB_RG8
+// GL_EXT_texture_sRGB_decode
+
// GL_EXT_texture_storage
void GL_APIENTRY glTexStorage1DEXT(GLenum target,
GLsizei levels,
@@ -4762,6 +4802,10 @@ void GL_APIENTRY glTexStorage3DEXT(GLenum target,
return GL_TexStorage3DEXT(target, levels, internalformat, width, height, depth);
}
+// GL_EXT_texture_type_2_10_10_10_REV
+
+// GL_EXT_unpack_subimage
+
// GL_IMG_texture_compression_pvrtc
// GL_IMG_texture_compression_pvrtc2
@@ -4856,12 +4900,16 @@ void GL_APIENTRY glPushDebugGroupKHR(GLenum source,
return GL_PushDebugGroupKHR(source, id, length, message);
}
+// GL_KHR_no_error
+
// GL_KHR_parallel_shader_compile
void GL_APIENTRY glMaxShaderCompilerThreadsKHR(GLuint count)
{
return GL_MaxShaderCompilerThreadsKHR(count);
}
+// GL_KHR_robust_buffer_access_behavior
+
// GL_KHR_texture_compression_astc_hdr
// GL_KHR_texture_compression_astc_ldr
@@ -4920,6 +4968,16 @@ void GL_APIENTRY glBlitFramebufferNV(GLint srcX0,
filter);
}
+// GL_NV_pixel_buffer_object
+
+// GL_NV_read_depth
+
+// GL_NV_read_stencil
+
+// GL_NV_robustness_video_memory_purge
+
+// GL_NV_shader_noperspective_interpolation
+
// GL_OES_EGL_image
void GL_APIENTRY glEGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image)
{
@@ -4931,6 +4989,10 @@ void GL_APIENTRY glEGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image
return GL_EGLImageTargetTexture2DOES(target, image);
}
+// GL_OES_EGL_image_external
+
+// GL_OES_EGL_image_external_essl3
+
// GL_OES_compressed_ETC1_RGB8_texture
// GL_OES_copy_image
@@ -4955,8 +5017,12 @@ void GL_APIENTRY glCopyImageSubDataOES(GLuint srcName,
srcDepth);
}
+// GL_OES_depth24
+
// GL_OES_depth32
+// GL_OES_depth_texture
+
// GL_OES_draw_buffers_indexed
void GL_APIENTRY glBlendEquationSeparateiOES(GLuint buf, GLenum modeRGB, GLenum modeAlpha)
{
@@ -5072,6 +5138,10 @@ void GL_APIENTRY glDrawTexxvOES(const GLfixed *coords)
return GL_DrawTexxvOES(coords);
}
+// GL_OES_element_index_uint
+
+// GL_OES_fbo_render_mipmap
+
// GL_OES_framebuffer_object
void GL_APIENTRY glBindFramebufferOES(GLenum target, GLuint framebuffer)
{
@@ -5228,26 +5298,42 @@ void GL_APIENTRY glWeightPointerOES(GLint size, GLenum type, GLsizei stride, con
return GL_WeightPointerOES(size, type, stride, pointer);
}
+// GL_OES_packed_depth_stencil
+
// GL_OES_point_size_array
void GL_APIENTRY glPointSizePointerOES(GLenum type, GLsizei stride, const void *pointer)
{
return GL_PointSizePointerOES(type, stride, pointer);
}
+// GL_OES_point_sprite
+
// GL_OES_query_matrix
GLbitfield GL_APIENTRY glQueryMatrixxOES(GLfixed *mantissa, GLint *exponent)
{
return GL_QueryMatrixxOES(mantissa, exponent);
}
+// GL_OES_rgb8_rgba8
+
// GL_OES_sample_shading
void GL_APIENTRY glMinSampleShadingOES(GLfloat value)
{
return GL_MinSampleShadingOES(value);
}
+// GL_OES_sample_variables
+
+// GL_OES_shader_image_atomic
+
// GL_OES_shader_io_blocks
+// GL_OES_shader_multisample_interpolation
+
+// GL_OES_standard_derivatives
+
+// GL_OES_surfaceless_context
+
// GL_OES_texture_3D
void GL_APIENTRY glCompressedTexImage3DOES(GLenum target,
GLint level,
@@ -5389,6 +5475,8 @@ void GL_APIENTRY glTexBufferRangeOES(GLenum target,
return GL_TexBufferRangeOES(target, internalformat, buffer, offset, size);
}
+// GL_OES_texture_compression_astc
+
// GL_OES_texture_cube_map
void GL_APIENTRY glGetTexGenfvOES(GLenum coord, GLenum pname, GLfloat *params)
{
@@ -5437,8 +5525,16 @@ void GL_APIENTRY glTexGenxvOES(GLenum coord, GLenum pname, const GLfixed *params
// GL_OES_texture_cube_map_array
+// GL_OES_texture_float
+
+// GL_OES_texture_float_linear
+
// GL_OES_texture_half_float
+// GL_OES_texture_half_float_linear
+
+// GL_OES_texture_npot
+
// GL_OES_texture_stencil8
// GL_OES_texture_storage_multisample_2d_array
@@ -5475,6 +5571,10 @@ GLboolean GL_APIENTRY glIsVertexArrayOES(GLuint array)
return GL_IsVertexArrayOES(array);
}
+// GL_OES_vertex_half_float
+
+// GL_OES_vertex_type_10_10_10_2
+
// GL_OVR_multiview
void GL_APIENTRY glFramebufferTextureMultiviewOVR(GLenum target,
GLenum attachment,
diff --git a/src/libGLESv2/libGLESv2_autogen.def b/src/libGLESv2/libGLESv2_autogen.def
index a52399447..21eba6d21 100644
--- a/src/libGLESv2/libGLESv2_autogen.def
+++ b/src/libGLESv2/libGLESv2_autogen.def
@@ -470,6 +470,8 @@ EXPORTS
glCopySubTexture3DANGLE
glCopyTexture3DANGLE
+ ; GL_ANGLE_depth_texture
+
; GL_ANGLE_framebuffer_blit
glBlitFramebufferANGLE
@@ -504,6 +506,8 @@ EXPORTS
glMultiDrawElementsANGLE
glMultiDrawElementsInstancedANGLE
+ ; GL_ANGLE_pack_reverse_row_order
+
; GL_ANGLE_program_binary
; GL_ANGLE_provoking_vertex
@@ -582,6 +586,10 @@ EXPORTS
; GL_ANGLE_semaphore_fuchsia
glImportSemaphoreZirconHandleANGLE
+ ; GL_ANGLE_texture_compression_dxt3
+
+ ; GL_ANGLE_texture_compression_dxt5
+
; GL_ANGLE_texture_external_update
glInvalidateTextureANGLE
glTexImage2DExternalANGLE
@@ -591,9 +599,15 @@ EXPORTS
glSampleMaskiANGLE
glTexStorage2DMultisampleANGLE
+ ; GL_ANGLE_texture_usage
+
; GL_ANGLE_translated_shader_source
glGetTranslatedShaderSourceANGLE
+ ; GL_APPLE_clip_distance
+
+ ; GL_ARB_sync
+
; GL_CHROMIUM_bind_uniform_location
glBindUniformLocationCHROMIUM
@@ -624,12 +638,20 @@ EXPORTS
glGetFragDataIndexEXT
glGetProgramResourceLocationIndexEXT
+ ; GL_EXT_blend_minmax
+
; GL_EXT_buffer_storage
glBufferStorageEXT
; GL_EXT_clip_control
glClipControlEXT
+ ; GL_EXT_clip_cull_distance
+
+ ; GL_EXT_color_buffer_float
+
+ ; GL_EXT_color_buffer_half_float
+
; GL_EXT_copy_image
glCopyImageSubDataEXT
@@ -682,9 +704,13 @@ EXPORTS
glBufferStorageExternalEXT
glNamedBufferStorageExternalEXT
+ ; GL_EXT_float_blend
+
; GL_EXT_geometry_shader
glFramebufferTextureEXT
+ ; GL_EXT_gpu_shader5
+
; GL_EXT_instanced_arrays
glDrawArraysInstancedEXT
glDrawElementsInstancedEXT
@@ -799,6 +825,12 @@ EXPORTS
; GL_EXT_shader_io_blocks
+ ; GL_EXT_shader_non_constant_global_initializers
+
+ ; GL_EXT_shader_texture_lod
+
+ ; GL_EXT_shadow_samplers
+
; GL_EXT_tessellation_shader
glPatchParameteriEXT
@@ -832,15 +864,27 @@ EXPORTS
; GL_EXT_texture_format_BGRA8888
+ ; GL_EXT_texture_format_sRGB_override
+
+ ; GL_EXT_texture_norm16
+
+ ; GL_EXT_texture_rg
+
; GL_EXT_texture_sRGB_R8
; GL_EXT_texture_sRGB_RG8
+ ; GL_EXT_texture_sRGB_decode
+
; GL_EXT_texture_storage
glTexStorage1DEXT
glTexStorage2DEXT
glTexStorage3DEXT
+ ; GL_EXT_texture_type_2_10_10_10_REV
+
+ ; GL_EXT_unpack_subimage
+
; GL_IMG_texture_compression_pvrtc
; GL_IMG_texture_compression_pvrtc2
@@ -861,9 +905,13 @@ EXPORTS
glPopDebugGroupKHR
glPushDebugGroupKHR
+ ; GL_KHR_no_error
+
; GL_KHR_parallel_shader_compile
glMaxShaderCompilerThreadsKHR
+ ; GL_KHR_robust_buffer_access_behavior
+
; GL_KHR_texture_compression_astc_hdr
; GL_KHR_texture_compression_astc_ldr
@@ -882,17 +930,35 @@ EXPORTS
; GL_NV_framebuffer_blit
glBlitFramebufferNV
+ ; GL_NV_pixel_buffer_object
+
+ ; GL_NV_read_depth
+
+ ; GL_NV_read_stencil
+
+ ; GL_NV_robustness_video_memory_purge
+
+ ; GL_NV_shader_noperspective_interpolation
+
; GL_OES_EGL_image
glEGLImageTargetRenderbufferStorageOES
glEGLImageTargetTexture2DOES
+ ; GL_OES_EGL_image_external
+
+ ; GL_OES_EGL_image_external_essl3
+
; GL_OES_compressed_ETC1_RGB8_texture
; GL_OES_copy_image
glCopyImageSubDataOES
+ ; GL_OES_depth24
+
; GL_OES_depth32
+ ; GL_OES_depth_texture
+
; GL_OES_draw_buffers_indexed
glBlendEquationSeparateiOES
glBlendEquationiOES
@@ -918,6 +984,10 @@ EXPORTS
glDrawTexxOES
glDrawTexxvOES
+ ; GL_OES_element_index_uint
+
+ ; GL_OES_fbo_render_mipmap
+
; GL_OES_framebuffer_object
glBindFramebufferOES
glBindRenderbufferOES
@@ -953,17 +1023,33 @@ EXPORTS
glMatrixIndexPointerOES
glWeightPointerOES
+ ; GL_OES_packed_depth_stencil
+
; GL_OES_point_size_array
glPointSizePointerOES
+ ; GL_OES_point_sprite
+
; GL_OES_query_matrix
glQueryMatrixxOES
+ ; GL_OES_rgb8_rgba8
+
; GL_OES_sample_shading
glMinSampleShadingOES
+ ; GL_OES_sample_variables
+
+ ; GL_OES_shader_image_atomic
+
; GL_OES_shader_io_blocks
+ ; GL_OES_shader_multisample_interpolation
+
+ ; GL_OES_standard_derivatives
+
+ ; GL_OES_surfaceless_context
+
; GL_OES_texture_3D
glCompressedTexImage3DOES
glCompressedTexSubImage3DOES
@@ -986,6 +1072,8 @@ EXPORTS
glTexBufferOES
glTexBufferRangeOES
+ ; GL_OES_texture_compression_astc
+
; GL_OES_texture_cube_map
glGetTexGenfvOES
glGetTexGenivOES
@@ -999,8 +1087,16 @@ EXPORTS
; GL_OES_texture_cube_map_array
+ ; GL_OES_texture_float
+
+ ; GL_OES_texture_float_linear
+
; GL_OES_texture_half_float
+ ; GL_OES_texture_half_float_linear
+
+ ; GL_OES_texture_npot
+
; GL_OES_texture_stencil8
; GL_OES_texture_storage_multisample_2d_array
@@ -1012,6 +1108,10 @@ EXPORTS
glGenVertexArraysOES
glIsVertexArrayOES
+ ; GL_OES_vertex_half_float
+
+ ; GL_OES_vertex_type_10_10_10_2
+
; GL_OVR_multiview
glFramebufferTextureMultiviewOVR
diff --git a/src/libGLESv2/libGLESv2_no_capture_autogen.def b/src/libGLESv2/libGLESv2_no_capture_autogen.def
index 5073ecb54..548e3d250 100644
--- a/src/libGLESv2/libGLESv2_no_capture_autogen.def
+++ b/src/libGLESv2/libGLESv2_no_capture_autogen.def
@@ -470,6 +470,8 @@ EXPORTS
glCopySubTexture3DANGLE
glCopyTexture3DANGLE
+ ; GL_ANGLE_depth_texture
+
; GL_ANGLE_framebuffer_blit
glBlitFramebufferANGLE
@@ -504,6 +506,8 @@ EXPORTS
glMultiDrawElementsANGLE
glMultiDrawElementsInstancedANGLE
+ ; GL_ANGLE_pack_reverse_row_order
+
; GL_ANGLE_program_binary
; GL_ANGLE_provoking_vertex
@@ -582,6 +586,10 @@ EXPORTS
; GL_ANGLE_semaphore_fuchsia
glImportSemaphoreZirconHandleANGLE
+ ; GL_ANGLE_texture_compression_dxt3
+
+ ; GL_ANGLE_texture_compression_dxt5
+
; GL_ANGLE_texture_external_update
glInvalidateTextureANGLE
glTexImage2DExternalANGLE
@@ -591,9 +599,15 @@ EXPORTS
glSampleMaskiANGLE
glTexStorage2DMultisampleANGLE
+ ; GL_ANGLE_texture_usage
+
; GL_ANGLE_translated_shader_source
glGetTranslatedShaderSourceANGLE
+ ; GL_APPLE_clip_distance
+
+ ; GL_ARB_sync
+
; GL_CHROMIUM_bind_uniform_location
glBindUniformLocationCHROMIUM
@@ -624,12 +638,20 @@ EXPORTS
glGetFragDataIndexEXT
glGetProgramResourceLocationIndexEXT
+ ; GL_EXT_blend_minmax
+
; GL_EXT_buffer_storage
glBufferStorageEXT
; GL_EXT_clip_control
glClipControlEXT
+ ; GL_EXT_clip_cull_distance
+
+ ; GL_EXT_color_buffer_float
+
+ ; GL_EXT_color_buffer_half_float
+
; GL_EXT_copy_image
glCopyImageSubDataEXT
@@ -682,9 +704,13 @@ EXPORTS
glBufferStorageExternalEXT
glNamedBufferStorageExternalEXT
+ ; GL_EXT_float_blend
+
; GL_EXT_geometry_shader
glFramebufferTextureEXT
+ ; GL_EXT_gpu_shader5
+
; GL_EXT_instanced_arrays
glDrawArraysInstancedEXT
glDrawElementsInstancedEXT
@@ -799,6 +825,12 @@ EXPORTS
; GL_EXT_shader_io_blocks
+ ; GL_EXT_shader_non_constant_global_initializers
+
+ ; GL_EXT_shader_texture_lod
+
+ ; GL_EXT_shadow_samplers
+
; GL_EXT_tessellation_shader
glPatchParameteriEXT
@@ -832,15 +864,27 @@ EXPORTS
; GL_EXT_texture_format_BGRA8888
+ ; GL_EXT_texture_format_sRGB_override
+
+ ; GL_EXT_texture_norm16
+
+ ; GL_EXT_texture_rg
+
; GL_EXT_texture_sRGB_R8
; GL_EXT_texture_sRGB_RG8
+ ; GL_EXT_texture_sRGB_decode
+
; GL_EXT_texture_storage
glTexStorage1DEXT
glTexStorage2DEXT
glTexStorage3DEXT
+ ; GL_EXT_texture_type_2_10_10_10_REV
+
+ ; GL_EXT_unpack_subimage
+
; GL_IMG_texture_compression_pvrtc
; GL_IMG_texture_compression_pvrtc2
@@ -861,9 +905,13 @@ EXPORTS
glPopDebugGroupKHR
glPushDebugGroupKHR
+ ; GL_KHR_no_error
+
; GL_KHR_parallel_shader_compile
glMaxShaderCompilerThreadsKHR
+ ; GL_KHR_robust_buffer_access_behavior
+
; GL_KHR_texture_compression_astc_hdr
; GL_KHR_texture_compression_astc_ldr
@@ -882,17 +930,35 @@ EXPORTS
; GL_NV_framebuffer_blit
glBlitFramebufferNV
+ ; GL_NV_pixel_buffer_object
+
+ ; GL_NV_read_depth
+
+ ; GL_NV_read_stencil
+
+ ; GL_NV_robustness_video_memory_purge
+
+ ; GL_NV_shader_noperspective_interpolation
+
; GL_OES_EGL_image
glEGLImageTargetRenderbufferStorageOES
glEGLImageTargetTexture2DOES
+ ; GL_OES_EGL_image_external
+
+ ; GL_OES_EGL_image_external_essl3
+
; GL_OES_compressed_ETC1_RGB8_texture
; GL_OES_copy_image
glCopyImageSubDataOES
+ ; GL_OES_depth24
+
; GL_OES_depth32
+ ; GL_OES_depth_texture
+
; GL_OES_draw_buffers_indexed
glBlendEquationSeparateiOES
glBlendEquationiOES
@@ -918,6 +984,10 @@ EXPORTS
glDrawTexxOES
glDrawTexxvOES
+ ; GL_OES_element_index_uint
+
+ ; GL_OES_fbo_render_mipmap
+
; GL_OES_framebuffer_object
glBindFramebufferOES
glBindRenderbufferOES
@@ -953,17 +1023,33 @@ EXPORTS
glMatrixIndexPointerOES
glWeightPointerOES
+ ; GL_OES_packed_depth_stencil
+
; GL_OES_point_size_array
glPointSizePointerOES
+ ; GL_OES_point_sprite
+
; GL_OES_query_matrix
glQueryMatrixxOES
+ ; GL_OES_rgb8_rgba8
+
; GL_OES_sample_shading
glMinSampleShadingOES
+ ; GL_OES_sample_variables
+
+ ; GL_OES_shader_image_atomic
+
; GL_OES_shader_io_blocks
+ ; GL_OES_shader_multisample_interpolation
+
+ ; GL_OES_standard_derivatives
+
+ ; GL_OES_surfaceless_context
+
; GL_OES_texture_3D
glCompressedTexImage3DOES
glCompressedTexSubImage3DOES
@@ -986,6 +1072,8 @@ EXPORTS
glTexBufferOES
glTexBufferRangeOES
+ ; GL_OES_texture_compression_astc
+
; GL_OES_texture_cube_map
glGetTexGenfvOES
glGetTexGenivOES
@@ -999,8 +1087,16 @@ EXPORTS
; GL_OES_texture_cube_map_array
+ ; GL_OES_texture_float
+
+ ; GL_OES_texture_float_linear
+
; GL_OES_texture_half_float
+ ; GL_OES_texture_half_float_linear
+
+ ; GL_OES_texture_npot
+
; GL_OES_texture_stencil8
; GL_OES_texture_storage_multisample_2d_array
@@ -1012,6 +1108,10 @@ EXPORTS
glGenVertexArraysOES
glIsVertexArrayOES
+ ; GL_OES_vertex_half_float
+
+ ; GL_OES_vertex_type_10_10_10_2
+
; GL_OVR_multiview
glFramebufferTextureMultiviewOVR
diff --git a/src/libGLESv2/libGLESv2_with_capture_autogen.def b/src/libGLESv2/libGLESv2_with_capture_autogen.def
index 1d66219eb..5b5963bf7 100644
--- a/src/libGLESv2/libGLESv2_with_capture_autogen.def
+++ b/src/libGLESv2/libGLESv2_with_capture_autogen.def
@@ -470,6 +470,8 @@ EXPORTS
glCopySubTexture3DANGLE
glCopyTexture3DANGLE
+ ; GL_ANGLE_depth_texture
+
; GL_ANGLE_framebuffer_blit
glBlitFramebufferANGLE
@@ -504,6 +506,8 @@ EXPORTS
glMultiDrawElementsANGLE
glMultiDrawElementsInstancedANGLE
+ ; GL_ANGLE_pack_reverse_row_order
+
; GL_ANGLE_program_binary
; GL_ANGLE_provoking_vertex
@@ -582,6 +586,10 @@ EXPORTS
; GL_ANGLE_semaphore_fuchsia
glImportSemaphoreZirconHandleANGLE
+ ; GL_ANGLE_texture_compression_dxt3
+
+ ; GL_ANGLE_texture_compression_dxt5
+
; GL_ANGLE_texture_external_update
glInvalidateTextureANGLE
glTexImage2DExternalANGLE
@@ -591,9 +599,15 @@ EXPORTS
glSampleMaskiANGLE
glTexStorage2DMultisampleANGLE
+ ; GL_ANGLE_texture_usage
+
; GL_ANGLE_translated_shader_source
glGetTranslatedShaderSourceANGLE
+ ; GL_APPLE_clip_distance
+
+ ; GL_ARB_sync
+
; GL_CHROMIUM_bind_uniform_location
glBindUniformLocationCHROMIUM
@@ -624,12 +638,20 @@ EXPORTS
glGetFragDataIndexEXT
glGetProgramResourceLocationIndexEXT
+ ; GL_EXT_blend_minmax
+
; GL_EXT_buffer_storage
glBufferStorageEXT
; GL_EXT_clip_control
glClipControlEXT
+ ; GL_EXT_clip_cull_distance
+
+ ; GL_EXT_color_buffer_float
+
+ ; GL_EXT_color_buffer_half_float
+
; GL_EXT_copy_image
glCopyImageSubDataEXT
@@ -682,9 +704,13 @@ EXPORTS
glBufferStorageExternalEXT
glNamedBufferStorageExternalEXT
+ ; GL_EXT_float_blend
+
; GL_EXT_geometry_shader
glFramebufferTextureEXT
+ ; GL_EXT_gpu_shader5
+
; GL_EXT_instanced_arrays
glDrawArraysInstancedEXT
glDrawElementsInstancedEXT
@@ -799,6 +825,12 @@ EXPORTS
; GL_EXT_shader_io_blocks
+ ; GL_EXT_shader_non_constant_global_initializers
+
+ ; GL_EXT_shader_texture_lod
+
+ ; GL_EXT_shadow_samplers
+
; GL_EXT_tessellation_shader
glPatchParameteriEXT
@@ -832,15 +864,27 @@ EXPORTS
; GL_EXT_texture_format_BGRA8888
+ ; GL_EXT_texture_format_sRGB_override
+
+ ; GL_EXT_texture_norm16
+
+ ; GL_EXT_texture_rg
+
; GL_EXT_texture_sRGB_R8
; GL_EXT_texture_sRGB_RG8
+ ; GL_EXT_texture_sRGB_decode
+
; GL_EXT_texture_storage
glTexStorage1DEXT
glTexStorage2DEXT
glTexStorage3DEXT
+ ; GL_EXT_texture_type_2_10_10_10_REV
+
+ ; GL_EXT_unpack_subimage
+
; GL_IMG_texture_compression_pvrtc
; GL_IMG_texture_compression_pvrtc2
@@ -861,9 +905,13 @@ EXPORTS
glPopDebugGroupKHR
glPushDebugGroupKHR
+ ; GL_KHR_no_error
+
; GL_KHR_parallel_shader_compile
glMaxShaderCompilerThreadsKHR
+ ; GL_KHR_robust_buffer_access_behavior
+
; GL_KHR_texture_compression_astc_hdr
; GL_KHR_texture_compression_astc_ldr
@@ -882,17 +930,35 @@ EXPORTS
; GL_NV_framebuffer_blit
glBlitFramebufferNV
+ ; GL_NV_pixel_buffer_object
+
+ ; GL_NV_read_depth
+
+ ; GL_NV_read_stencil
+
+ ; GL_NV_robustness_video_memory_purge
+
+ ; GL_NV_shader_noperspective_interpolation
+
; GL_OES_EGL_image
glEGLImageTargetRenderbufferStorageOES
glEGLImageTargetTexture2DOES
+ ; GL_OES_EGL_image_external
+
+ ; GL_OES_EGL_image_external_essl3
+
; GL_OES_compressed_ETC1_RGB8_texture
; GL_OES_copy_image
glCopyImageSubDataOES
+ ; GL_OES_depth24
+
; GL_OES_depth32
+ ; GL_OES_depth_texture
+
; GL_OES_draw_buffers_indexed
glBlendEquationSeparateiOES
glBlendEquationiOES
@@ -918,6 +984,10 @@ EXPORTS
glDrawTexxOES
glDrawTexxvOES
+ ; GL_OES_element_index_uint
+
+ ; GL_OES_fbo_render_mipmap
+
; GL_OES_framebuffer_object
glBindFramebufferOES
glBindRenderbufferOES
@@ -953,17 +1023,33 @@ EXPORTS
glMatrixIndexPointerOES
glWeightPointerOES
+ ; GL_OES_packed_depth_stencil
+
; GL_OES_point_size_array
glPointSizePointerOES
+ ; GL_OES_point_sprite
+
; GL_OES_query_matrix
glQueryMatrixxOES
+ ; GL_OES_rgb8_rgba8
+
; GL_OES_sample_shading
glMinSampleShadingOES
+ ; GL_OES_sample_variables
+
+ ; GL_OES_shader_image_atomic
+
; GL_OES_shader_io_blocks
+ ; GL_OES_shader_multisample_interpolation
+
+ ; GL_OES_standard_derivatives
+
+ ; GL_OES_surfaceless_context
+
; GL_OES_texture_3D
glCompressedTexImage3DOES
glCompressedTexSubImage3DOES
@@ -986,6 +1072,8 @@ EXPORTS
glTexBufferOES
glTexBufferRangeOES
+ ; GL_OES_texture_compression_astc
+
; GL_OES_texture_cube_map
glGetTexGenfvOES
glGetTexGenivOES
@@ -999,8 +1087,16 @@ EXPORTS
; GL_OES_texture_cube_map_array
+ ; GL_OES_texture_float
+
+ ; GL_OES_texture_float_linear
+
; GL_OES_texture_half_float
+ ; GL_OES_texture_half_float_linear
+
+ ; GL_OES_texture_npot
+
; GL_OES_texture_stencil8
; GL_OES_texture_storage_multisample_2d_array
@@ -1012,6 +1108,10 @@ EXPORTS
glGenVertexArraysOES
glIsVertexArrayOES
+ ; GL_OES_vertex_half_float
+
+ ; GL_OES_vertex_type_10_10_10_2
+
; GL_OVR_multiview
glFramebufferTextureMultiviewOVR