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