From b918b1c6564dfaa5eaf95fc4fc0fda7b8edbca8a Mon Sep 17 00:00:00 2001 From: Jamie Madill Date: Fri, 10 Sep 2021 16:44:59 -0400 Subject: [PATCH] Auto-generate GLES extensions. Uses the data from registry.xml combined with gl.xml to produce the necessary header and source file with the strings map. Also updates the list of supported extensions. Several extensions were missing from the supported extensions map. ARB_sync and NV_robustness_video_memory_purge require some specific tweaks to get the generator to accept them as gles extensions. Also includes a generate markdown file that lists supported exts. Bug: angleproject:6379 Change-Id: I95bd589aa31a62b4a008de24408c7823a49023ed Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3157418 Commit-Queue: Jamie Madill Reviewed-by: Cody Northrop Reviewed-by: Jonah Ryan-Davis --- doc/SupportedExtensions.md | 206 ++++++ .../Extension_files.json | 24 + .../GL_EGL_WGL_loader.json | 4 +- .../GL_EGL_entry_points.json | 22 +- .../GLenum_value_to_string_map.json | 6 +- .../OpenGL_dispatch_table.json | 4 +- .../code_generation_hashes/proc_table.json | 4 +- scripts/gl.xml | 4 +- scripts/registry_xml.py | 216 ++++-- scripts/run_code_generation.py | 2 + src/libANGLE/Caps.cpp | 233 ------ src/libANGLE/Caps.h | 652 +---------------- src/libANGLE/Context_gles_ext_autogen.h | 190 +++-- .../capture/capture_gles_ext_autogen.h | 100 +++ .../capture/gl_enum_utils_autogen.cpp | 132 +++- src/libANGLE/gen_extensions.py | 326 +++++++++ src/libANGLE/gles_extensions_autogen.cpp | 260 +++++++ src/libANGLE/gles_extensions_autogen.h | 669 ++++++++++++++++++ .../renderer/gl/DispatchTableGL_autogen.cpp | 44 +- src/libANGLE/validationESEXT_autogen.h | 100 +++ src/libGLESv2.gni | 2 + .../entry_points_gles_ext_autogen.cpp | 113 +++ src/libGLESv2/entry_points_gles_ext_autogen.h | 100 +++ src/libGLESv2/libGLESv2_autogen.cpp | 100 +++ src/libGLESv2/libGLESv2_autogen.def | 100 +++ .../libGLESv2_no_capture_autogen.def | 100 +++ .../libGLESv2_with_capture_autogen.def | 100 +++ 27 files changed, 2782 insertions(+), 1031 deletions(-) create mode 100644 doc/SupportedExtensions.md create mode 100644 scripts/code_generation_hashes/Extension_files.json create mode 100644 src/libANGLE/gen_extensions.py create mode 100644 src/libANGLE/gles_extensions_autogen.cpp create mode 100644 src/libANGLE/gles_extensions_autogen.h 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