Merge vk-gl-cts/aosp-deqp-dev into vk-gl-cts/master
Change-Id: I2144843957db34a4d7e90f33d08740ecea0ee3ec
diff --git a/android/cts/master/egl-master.txt b/android/cts/master/egl-master.txt
index 3d71c30..2b13d90 100644
--- a/android/cts/master/egl-master.txt
+++ b/android/cts/master/egl-master.txt
@@ -2491,6 +2491,7 @@
dEQP-EGL.functional.get_proc_address.extension.gl_khr_blend_equation_advanced
dEQP-EGL.functional.get_proc_address.extension.gl_khr_debug
dEQP-EGL.functional.get_proc_address.extension.gl_khr_robustness
+dEQP-EGL.functional.get_proc_address.extension.gl_khr_parallel_shader_compile
dEQP-EGL.functional.get_proc_address.extension.gl_nv_bindless_texture
dEQP-EGL.functional.get_proc_address.extension.gl_nv_blend_equation_advanced
dEQP-EGL.functional.get_proc_address.extension.gl_nv_conditional_render
diff --git a/android/cts/master/vk-master.txt b/android/cts/master/vk-master.txt
index 09ffbe3..25280df 100644
--- a/android/cts/master/vk-master.txt
+++ b/android/cts/master/vk-master.txt
@@ -192609,6 +192609,10 @@
dEQP-VK.ssbo.layout.multi_basic_types.per_block_buffer.std430_comp_access
dEQP-VK.ssbo.layout.multi_basic_types.per_block_buffer.std430_instance_array
dEQP-VK.ssbo.layout.multi_basic_types.per_block_buffer.std430_instance_array_comp_access
+dEQP-VK.ssbo.layout.multi_basic_types.per_block_buffer.relaxed_block
+dEQP-VK.ssbo.layout.multi_basic_types.per_block_buffer.relaxed_block_comp_access
+dEQP-VK.ssbo.layout.multi_basic_types.per_block_buffer.relaxed_block_instance_array
+dEQP-VK.ssbo.layout.multi_basic_types.per_block_buffer.relaxed_block_instance_array_comp_access
dEQP-VK.ssbo.layout.multi_basic_types.single_buffer.std140
dEQP-VK.ssbo.layout.multi_basic_types.single_buffer.std140_comp_access
dEQP-VK.ssbo.layout.multi_basic_types.single_buffer.std140_instance_array
@@ -192617,6 +192621,10 @@
dEQP-VK.ssbo.layout.multi_basic_types.single_buffer.std430_comp_access
dEQP-VK.ssbo.layout.multi_basic_types.single_buffer.std430_instance_array
dEQP-VK.ssbo.layout.multi_basic_types.single_buffer.std430_instance_array_comp_access
+dEQP-VK.ssbo.layout.multi_basic_types.single_buffer.relaxed_block
+dEQP-VK.ssbo.layout.multi_basic_types.single_buffer.relaxed_block_comp_access
+dEQP-VK.ssbo.layout.multi_basic_types.single_buffer.relaxed_block_instance_array
+dEQP-VK.ssbo.layout.multi_basic_types.single_buffer.relaxed_block_instance_array_comp_access
dEQP-VK.ssbo.layout.multi_nested_struct.per_block_buffer.std140
dEQP-VK.ssbo.layout.multi_nested_struct.per_block_buffer.std140_comp_access
dEQP-VK.ssbo.layout.multi_nested_struct.per_block_buffer.std140_instance_array
@@ -193008,6 +193016,106 @@
dEQP-VK.ssbo.layout.random.all_shared_buffer.47
dEQP-VK.ssbo.layout.random.all_shared_buffer.48
dEQP-VK.ssbo.layout.random.all_shared_buffer.49
+dEQP-VK.ssbo.layout.random.relaxed.0
+dEQP-VK.ssbo.layout.random.relaxed.1
+dEQP-VK.ssbo.layout.random.relaxed.2
+dEQP-VK.ssbo.layout.random.relaxed.3
+dEQP-VK.ssbo.layout.random.relaxed.4
+dEQP-VK.ssbo.layout.random.relaxed.5
+dEQP-VK.ssbo.layout.random.relaxed.6
+dEQP-VK.ssbo.layout.random.relaxed.7
+dEQP-VK.ssbo.layout.random.relaxed.8
+dEQP-VK.ssbo.layout.random.relaxed.9
+dEQP-VK.ssbo.layout.random.relaxed.10
+dEQP-VK.ssbo.layout.random.relaxed.11
+dEQP-VK.ssbo.layout.random.relaxed.12
+dEQP-VK.ssbo.layout.random.relaxed.13
+dEQP-VK.ssbo.layout.random.relaxed.14
+dEQP-VK.ssbo.layout.random.relaxed.15
+dEQP-VK.ssbo.layout.random.relaxed.16
+dEQP-VK.ssbo.layout.random.relaxed.17
+dEQP-VK.ssbo.layout.random.relaxed.18
+dEQP-VK.ssbo.layout.random.relaxed.19
+dEQP-VK.ssbo.layout.random.relaxed.20
+dEQP-VK.ssbo.layout.random.relaxed.21
+dEQP-VK.ssbo.layout.random.relaxed.22
+dEQP-VK.ssbo.layout.random.relaxed.23
+dEQP-VK.ssbo.layout.random.relaxed.24
+dEQP-VK.ssbo.layout.random.relaxed.25
+dEQP-VK.ssbo.layout.random.relaxed.26
+dEQP-VK.ssbo.layout.random.relaxed.27
+dEQP-VK.ssbo.layout.random.relaxed.28
+dEQP-VK.ssbo.layout.random.relaxed.29
+dEQP-VK.ssbo.layout.random.relaxed.30
+dEQP-VK.ssbo.layout.random.relaxed.31
+dEQP-VK.ssbo.layout.random.relaxed.32
+dEQP-VK.ssbo.layout.random.relaxed.33
+dEQP-VK.ssbo.layout.random.relaxed.34
+dEQP-VK.ssbo.layout.random.relaxed.35
+dEQP-VK.ssbo.layout.random.relaxed.36
+dEQP-VK.ssbo.layout.random.relaxed.37
+dEQP-VK.ssbo.layout.random.relaxed.38
+dEQP-VK.ssbo.layout.random.relaxed.39
+dEQP-VK.ssbo.layout.random.relaxed.40
+dEQP-VK.ssbo.layout.random.relaxed.41
+dEQP-VK.ssbo.layout.random.relaxed.42
+dEQP-VK.ssbo.layout.random.relaxed.43
+dEQP-VK.ssbo.layout.random.relaxed.44
+dEQP-VK.ssbo.layout.random.relaxed.45
+dEQP-VK.ssbo.layout.random.relaxed.46
+dEQP-VK.ssbo.layout.random.relaxed.47
+dEQP-VK.ssbo.layout.random.relaxed.48
+dEQP-VK.ssbo.layout.random.relaxed.49
+dEQP-VK.ssbo.layout.random.relaxed.50
+dEQP-VK.ssbo.layout.random.relaxed.51
+dEQP-VK.ssbo.layout.random.relaxed.52
+dEQP-VK.ssbo.layout.random.relaxed.53
+dEQP-VK.ssbo.layout.random.relaxed.54
+dEQP-VK.ssbo.layout.random.relaxed.55
+dEQP-VK.ssbo.layout.random.relaxed.56
+dEQP-VK.ssbo.layout.random.relaxed.57
+dEQP-VK.ssbo.layout.random.relaxed.58
+dEQP-VK.ssbo.layout.random.relaxed.59
+dEQP-VK.ssbo.layout.random.relaxed.60
+dEQP-VK.ssbo.layout.random.relaxed.61
+dEQP-VK.ssbo.layout.random.relaxed.62
+dEQP-VK.ssbo.layout.random.relaxed.63
+dEQP-VK.ssbo.layout.random.relaxed.64
+dEQP-VK.ssbo.layout.random.relaxed.65
+dEQP-VK.ssbo.layout.random.relaxed.66
+dEQP-VK.ssbo.layout.random.relaxed.67
+dEQP-VK.ssbo.layout.random.relaxed.68
+dEQP-VK.ssbo.layout.random.relaxed.69
+dEQP-VK.ssbo.layout.random.relaxed.70
+dEQP-VK.ssbo.layout.random.relaxed.71
+dEQP-VK.ssbo.layout.random.relaxed.72
+dEQP-VK.ssbo.layout.random.relaxed.73
+dEQP-VK.ssbo.layout.random.relaxed.74
+dEQP-VK.ssbo.layout.random.relaxed.75
+dEQP-VK.ssbo.layout.random.relaxed.76
+dEQP-VK.ssbo.layout.random.relaxed.77
+dEQP-VK.ssbo.layout.random.relaxed.78
+dEQP-VK.ssbo.layout.random.relaxed.79
+dEQP-VK.ssbo.layout.random.relaxed.80
+dEQP-VK.ssbo.layout.random.relaxed.81
+dEQP-VK.ssbo.layout.random.relaxed.82
+dEQP-VK.ssbo.layout.random.relaxed.83
+dEQP-VK.ssbo.layout.random.relaxed.84
+dEQP-VK.ssbo.layout.random.relaxed.85
+dEQP-VK.ssbo.layout.random.relaxed.86
+dEQP-VK.ssbo.layout.random.relaxed.87
+dEQP-VK.ssbo.layout.random.relaxed.88
+dEQP-VK.ssbo.layout.random.relaxed.89
+dEQP-VK.ssbo.layout.random.relaxed.90
+dEQP-VK.ssbo.layout.random.relaxed.91
+dEQP-VK.ssbo.layout.random.relaxed.92
+dEQP-VK.ssbo.layout.random.relaxed.93
+dEQP-VK.ssbo.layout.random.relaxed.94
+dEQP-VK.ssbo.layout.random.relaxed.95
+dEQP-VK.ssbo.layout.random.relaxed.96
+dEQP-VK.ssbo.layout.random.relaxed.97
+dEQP-VK.ssbo.layout.random.relaxed.98
+dEQP-VK.ssbo.layout.random.relaxed.99
dEQP-VK.ssbo.unsized_array_length.float_no_offset_explicit_size
dEQP-VK.ssbo.unsized_array_length.float_no_offset_whole_size
dEQP-VK.ssbo.unsized_array_length.float_offset_explicit_size
diff --git a/external/fetch_kc_cts.py b/external/fetch_kc_cts.py
index 0218bea..dc5bb0f 100644
--- a/external/fetch_kc_cts.py
+++ b/external/fetch_kc_cts.py
@@ -32,7 +32,7 @@
from build.common import *
EXTERNAL_DIR = os.path.realpath(os.path.normpath(os.path.dirname(__file__)))
-SHA1 = "43bc1bcf60a77b265d7be13d354be01aaa91f939"
+SHA1 = "2cdb19e34748b7febf7c1a900958bf88ab6b0485"
PACKAGES = [
GitRepo(
diff --git a/external/openglcts/data/mustpass/egl/aosp_mustpass/3.2.4.x/egl-master.txt b/external/openglcts/data/mustpass/egl/aosp_mustpass/3.2.4.x/egl-master.txt
index 1a38232..9f414de 100644
--- a/external/openglcts/data/mustpass/egl/aosp_mustpass/3.2.4.x/egl-master.txt
+++ b/external/openglcts/data/mustpass/egl/aosp_mustpass/3.2.4.x/egl-master.txt
@@ -2383,6 +2383,7 @@
dEQP-EGL.functional.get_proc_address.extension.egl_hi_clientpixmap
dEQP-EGL.functional.get_proc_address.extension.egl_khr_cl_event2
dEQP-EGL.functional.get_proc_address.extension.egl_khr_debug
+dEQP-EGL.functional.get_proc_address.extension.egl_khr_display_reference
dEQP-EGL.functional.get_proc_address.extension.egl_khr_fence_sync
dEQP-EGL.functional.get_proc_address.extension.egl_khr_image
dEQP-EGL.functional.get_proc_address.extension.egl_khr_image_base
@@ -2410,6 +2411,7 @@
dEQP-EGL.functional.get_proc_address.extension.egl_nv_stream_sync
dEQP-EGL.functional.get_proc_address.extension.egl_nv_sync
dEQP-EGL.functional.get_proc_address.extension.egl_nv_system_time
+dEQP-EGL.functional.get_proc_address.extension.egl_ext_compositor
dEQP-EGL.functional.get_proc_address.extension.gl_apple_copy_texture_levels
dEQP-EGL.functional.get_proc_address.extension.gl_apple_framebuffer_multisample
dEQP-EGL.functional.get_proc_address.extension.gl_apple_sync
@@ -2490,6 +2492,7 @@
dEQP-EGL.functional.get_proc_address.extension.gl_khr_blend_equation_advanced
dEQP-EGL.functional.get_proc_address.extension.gl_khr_debug
dEQP-EGL.functional.get_proc_address.extension.gl_khr_robustness
+dEQP-EGL.functional.get_proc_address.extension.gl_khr_parallel_shader_compile
dEQP-EGL.functional.get_proc_address.extension.gl_nv_bindless_texture
dEQP-EGL.functional.get_proc_address.extension.gl_nv_blend_equation_advanced
dEQP-EGL.functional.get_proc_address.extension.gl_nv_conditional_render
@@ -3651,3 +3654,27 @@
dEQP-EGL.functional.robustness.negative_context.invalid_robust_context_creation
dEQP-EGL.functional.robustness.negative_context.invalid_robust_shared_context_creation
dEQP-EGL.functional.robustness.negative_context.invalid_notification_strategy_enum
+dEQP-EGL.functional.wide_color.fp16
+dEQP-EGL.functional.wide_color.1010102
+dEQP-EGL.functional.wide_color.window_fp16_default_colorspace
+dEQP-EGL.functional.wide_color.window_fp16_colorspace_srgb
+dEQP-EGL.functional.wide_color.window_fp16_colorspace_p3
+dEQP-EGL.functional.wide_color.window_fp16_colorspace_scrgb
+dEQP-EGL.functional.wide_color.window_fp16_colorspace_scrgb_linear
+dEQP-EGL.functional.wide_color.pbuffer_fp16_default_colorspace
+dEQP-EGL.functional.wide_color.pbuffer_fp16_colorspace_srgb
+dEQP-EGL.functional.wide_color.pbuffer_fp16_colorspace_p3
+dEQP-EGL.functional.wide_color.pbuffer_fp16_colorspace_scrgb
+dEQP-EGL.functional.wide_color.pbuffer_fp16_colorspace_scrgb_linear
+dEQP-EGL.functional.wide_color.window_1010102_colorspace_default
+dEQP-EGL.functional.wide_color.window_1010102_colorspace_srgb
+dEQP-EGL.functional.wide_color.window_1010102_colorspace_p3
+dEQP-EGL.functional.wide_color.pbuffer_1010102_colorspace_default
+dEQP-EGL.functional.wide_color.pbuffer_1010102_colorspace_srgb
+dEQP-EGL.functional.wide_color.pbuffer_1010102_colorspace_p3
+dEQP-EGL.functional.wide_color.window_8888_colorspace_default
+dEQP-EGL.functional.wide_color.window_8888_colorspace_srgb
+dEQP-EGL.functional.wide_color.window_8888_colorspace_p3
+dEQP-EGL.functional.wide_color.pbuffer_8888_colorspace_default
+dEQP-EGL.functional.wide_color.pbuffer_8888_colorspace_srgb
+dEQP-EGL.functional.wide_color.pbuffer_8888_colorspace_p3
diff --git a/external/openglcts/data/mustpass/egl/aosp_mustpass/master/egl-master.txt b/external/openglcts/data/mustpass/egl/aosp_mustpass/master/egl-master.txt
index ba5f211..dc9f592 100644
--- a/external/openglcts/data/mustpass/egl/aosp_mustpass/master/egl-master.txt
+++ b/external/openglcts/data/mustpass/egl/aosp_mustpass/master/egl-master.txt
@@ -2383,6 +2383,7 @@
dEQP-EGL.functional.get_proc_address.extension.egl_hi_clientpixmap
dEQP-EGL.functional.get_proc_address.extension.egl_khr_cl_event2
dEQP-EGL.functional.get_proc_address.extension.egl_khr_debug
+dEQP-EGL.functional.get_proc_address.extension.egl_khr_display_reference
dEQP-EGL.functional.get_proc_address.extension.egl_khr_fence_sync
dEQP-EGL.functional.get_proc_address.extension.egl_khr_image
dEQP-EGL.functional.get_proc_address.extension.egl_khr_image_base
@@ -2410,6 +2411,7 @@
dEQP-EGL.functional.get_proc_address.extension.egl_nv_stream_sync
dEQP-EGL.functional.get_proc_address.extension.egl_nv_sync
dEQP-EGL.functional.get_proc_address.extension.egl_nv_system_time
+dEQP-EGL.functional.get_proc_address.extension.egl_ext_compositor
dEQP-EGL.functional.get_proc_address.extension.gl_apple_copy_texture_levels
dEQP-EGL.functional.get_proc_address.extension.gl_apple_framebuffer_multisample
dEQP-EGL.functional.get_proc_address.extension.gl_apple_sync
@@ -2490,6 +2492,7 @@
dEQP-EGL.functional.get_proc_address.extension.gl_khr_blend_equation_advanced
dEQP-EGL.functional.get_proc_address.extension.gl_khr_debug
dEQP-EGL.functional.get_proc_address.extension.gl_khr_robustness
+dEQP-EGL.functional.get_proc_address.extension.gl_khr_parallel_shader_compile
dEQP-EGL.functional.get_proc_address.extension.gl_nv_bindless_texture
dEQP-EGL.functional.get_proc_address.extension.gl_nv_blend_equation_advanced
dEQP-EGL.functional.get_proc_address.extension.gl_nv_conditional_render
@@ -3671,3 +3674,27 @@
dEQP-EGL.functional.robustness.negative_context.invalid_robust_context_creation
dEQP-EGL.functional.robustness.negative_context.invalid_robust_shared_context_creation
dEQP-EGL.functional.robustness.negative_context.invalid_notification_strategy_enum
+dEQP-EGL.functional.wide_color.fp16
+dEQP-EGL.functional.wide_color.1010102
+dEQP-EGL.functional.wide_color.window_fp16_default_colorspace
+dEQP-EGL.functional.wide_color.window_fp16_colorspace_srgb
+dEQP-EGL.functional.wide_color.window_fp16_colorspace_p3
+dEQP-EGL.functional.wide_color.window_fp16_colorspace_scrgb
+dEQP-EGL.functional.wide_color.window_fp16_colorspace_scrgb_linear
+dEQP-EGL.functional.wide_color.pbuffer_fp16_default_colorspace
+dEQP-EGL.functional.wide_color.pbuffer_fp16_colorspace_srgb
+dEQP-EGL.functional.wide_color.pbuffer_fp16_colorspace_p3
+dEQP-EGL.functional.wide_color.pbuffer_fp16_colorspace_scrgb
+dEQP-EGL.functional.wide_color.pbuffer_fp16_colorspace_scrgb_linear
+dEQP-EGL.functional.wide_color.window_1010102_colorspace_default
+dEQP-EGL.functional.wide_color.window_1010102_colorspace_srgb
+dEQP-EGL.functional.wide_color.window_1010102_colorspace_p3
+dEQP-EGL.functional.wide_color.pbuffer_1010102_colorspace_default
+dEQP-EGL.functional.wide_color.pbuffer_1010102_colorspace_srgb
+dEQP-EGL.functional.wide_color.pbuffer_1010102_colorspace_p3
+dEQP-EGL.functional.wide_color.window_8888_colorspace_default
+dEQP-EGL.functional.wide_color.window_8888_colorspace_srgb
+dEQP-EGL.functional.wide_color.window_8888_colorspace_p3
+dEQP-EGL.functional.wide_color.pbuffer_8888_colorspace_default
+dEQP-EGL.functional.wide_color.pbuffer_8888_colorspace_srgb
+dEQP-EGL.functional.wide_color.pbuffer_8888_colorspace_p3
diff --git a/external/openglcts/data/mustpass/gl/khronos_mustpass/4.5.5.x/gl40-master.txt b/external/openglcts/data/mustpass/gl/khronos_mustpass/4.5.5.x/gl40-master.txt
index 179e671..58e0e8f 100644
--- a/external/openglcts/data/mustpass/gl/khronos_mustpass/4.5.5.x/gl40-master.txt
+++ b/external/openglcts/data/mustpass/gl/khronos_mustpass/4.5.5.x/gl40-master.txt
@@ -2798,7 +2798,6 @@
KHR-GL40.shader_subroutine.subroutine_uniform_reset
KHR-GL40.shader_subroutine.same_subroutine_and_subroutine_uniform_but_different_type_used_in_all_stages
KHR-GL40.shader_subroutine.control_flow_and_returned_subroutine_values_used_as_subroutine_input
-KHR-GL40.shader_subroutine.multiple_contexts
KHR-GL40.shader_subroutine.subroutine_errors
KHR-GL40.shader_subroutine.subroutine_uniform_scope
KHR-GL40.shader_subroutine.missing_subroutine_keyword
diff --git a/external/openglcts/data/mustpass/gl/khronos_mustpass/4.5.5.x/gl41-master.txt b/external/openglcts/data/mustpass/gl/khronos_mustpass/4.5.5.x/gl41-master.txt
index 51408a9..91c7f07 100644
--- a/external/openglcts/data/mustpass/gl/khronos_mustpass/4.5.5.x/gl41-master.txt
+++ b/external/openglcts/data/mustpass/gl/khronos_mustpass/4.5.5.x/gl41-master.txt
@@ -2798,7 +2798,6 @@
KHR-GL41.shader_subroutine.subroutine_uniform_reset
KHR-GL41.shader_subroutine.same_subroutine_and_subroutine_uniform_but_different_type_used_in_all_stages
KHR-GL41.shader_subroutine.control_flow_and_returned_subroutine_values_used_as_subroutine_input
-KHR-GL41.shader_subroutine.multiple_contexts
KHR-GL41.shader_subroutine.subroutine_errors
KHR-GL41.shader_subroutine.subroutine_uniform_scope
KHR-GL41.shader_subroutine.missing_subroutine_keyword
diff --git a/external/openglcts/data/mustpass/gl/khronos_mustpass/4.5.5.x/gl42-master.txt b/external/openglcts/data/mustpass/gl/khronos_mustpass/4.5.5.x/gl42-master.txt
index bd0dc05..299cb0f 100644
--- a/external/openglcts/data/mustpass/gl/khronos_mustpass/4.5.5.x/gl42-master.txt
+++ b/external/openglcts/data/mustpass/gl/khronos_mustpass/4.5.5.x/gl42-master.txt
@@ -2798,7 +2798,6 @@
KHR-GL42.shader_subroutine.subroutine_uniform_reset
KHR-GL42.shader_subroutine.same_subroutine_and_subroutine_uniform_but_different_type_used_in_all_stages
KHR-GL42.shader_subroutine.control_flow_and_returned_subroutine_values_used_as_subroutine_input
-KHR-GL42.shader_subroutine.multiple_contexts
KHR-GL42.shader_subroutine.subroutine_errors
KHR-GL42.shader_subroutine.subroutine_uniform_scope
KHR-GL42.shader_subroutine.missing_subroutine_keyword
diff --git a/external/openglcts/data/mustpass/gl/khronos_mustpass/4.5.5.x/gl43-master.txt b/external/openglcts/data/mustpass/gl/khronos_mustpass/4.5.5.x/gl43-master.txt
index 5b18233..622c288 100644
--- a/external/openglcts/data/mustpass/gl/khronos_mustpass/4.5.5.x/gl43-master.txt
+++ b/external/openglcts/data/mustpass/gl/khronos_mustpass/4.5.5.x/gl43-master.txt
@@ -2798,7 +2798,6 @@
KHR-GL43.shader_subroutine.subroutine_uniform_reset
KHR-GL43.shader_subroutine.same_subroutine_and_subroutine_uniform_but_different_type_used_in_all_stages
KHR-GL43.shader_subroutine.control_flow_and_returned_subroutine_values_used_as_subroutine_input
-KHR-GL43.shader_subroutine.multiple_contexts
KHR-GL43.shader_subroutine.subroutine_errors
KHR-GL43.shader_subroutine.subroutine_uniform_scope
KHR-GL43.shader_subroutine.missing_subroutine_keyword
@@ -3861,3 +3860,1395 @@
KHR-GL43.shader_ballot_tests.ShaderBallotBitmasks
KHR-GL43.shader_ballot_tests.ShaderBallotFunctionBallot
KHR-GL43.shader_ballot_tests.ShaderBallotFunctionRead
+KHR-GL43.constant_expressions.basic_radians_float_vertex
+KHR-GL43.constant_expressions.basic_radians_float_fragment
+KHR-GL43.constant_expressions.basic_radians_float_compute
+KHR-GL43.constant_expressions.basic_radians_float_geometry
+KHR-GL43.constant_expressions.basic_radians_float_tess_control
+KHR-GL43.constant_expressions.basic_radians_float_tess_eval
+KHR-GL43.constant_expressions.basic_radians_vec2_vertex
+KHR-GL43.constant_expressions.basic_radians_vec2_fragment
+KHR-GL43.constant_expressions.basic_radians_vec2_compute
+KHR-GL43.constant_expressions.basic_radians_vec2_geometry
+KHR-GL43.constant_expressions.basic_radians_vec2_tess_control
+KHR-GL43.constant_expressions.basic_radians_vec2_tess_eval
+KHR-GL43.constant_expressions.basic_radians_vec3_vertex
+KHR-GL43.constant_expressions.basic_radians_vec3_fragment
+KHR-GL43.constant_expressions.basic_radians_vec3_compute
+KHR-GL43.constant_expressions.basic_radians_vec3_geometry
+KHR-GL43.constant_expressions.basic_radians_vec3_tess_control
+KHR-GL43.constant_expressions.basic_radians_vec3_tess_eval
+KHR-GL43.constant_expressions.basic_radians_vec4_vertex
+KHR-GL43.constant_expressions.basic_radians_vec4_fragment
+KHR-GL43.constant_expressions.basic_radians_vec4_compute
+KHR-GL43.constant_expressions.basic_radians_vec4_geometry
+KHR-GL43.constant_expressions.basic_radians_vec4_tess_control
+KHR-GL43.constant_expressions.basic_radians_vec4_tess_eval
+KHR-GL43.constant_expressions.basic_degrees_float_vertex
+KHR-GL43.constant_expressions.basic_degrees_float_fragment
+KHR-GL43.constant_expressions.basic_degrees_float_compute
+KHR-GL43.constant_expressions.basic_degrees_float_geometry
+KHR-GL43.constant_expressions.basic_degrees_float_tess_control
+KHR-GL43.constant_expressions.basic_degrees_float_tess_eval
+KHR-GL43.constant_expressions.basic_degrees_vec2_vertex
+KHR-GL43.constant_expressions.basic_degrees_vec2_fragment
+KHR-GL43.constant_expressions.basic_degrees_vec2_compute
+KHR-GL43.constant_expressions.basic_degrees_vec2_geometry
+KHR-GL43.constant_expressions.basic_degrees_vec2_tess_control
+KHR-GL43.constant_expressions.basic_degrees_vec2_tess_eval
+KHR-GL43.constant_expressions.basic_degrees_vec3_vertex
+KHR-GL43.constant_expressions.basic_degrees_vec3_fragment
+KHR-GL43.constant_expressions.basic_degrees_vec3_compute
+KHR-GL43.constant_expressions.basic_degrees_vec3_geometry
+KHR-GL43.constant_expressions.basic_degrees_vec3_tess_control
+KHR-GL43.constant_expressions.basic_degrees_vec3_tess_eval
+KHR-GL43.constant_expressions.basic_degrees_vec4_vertex
+KHR-GL43.constant_expressions.basic_degrees_vec4_fragment
+KHR-GL43.constant_expressions.basic_degrees_vec4_compute
+KHR-GL43.constant_expressions.basic_degrees_vec4_geometry
+KHR-GL43.constant_expressions.basic_degrees_vec4_tess_control
+KHR-GL43.constant_expressions.basic_degrees_vec4_tess_eval
+KHR-GL43.constant_expressions.basic_sin_float_vertex
+KHR-GL43.constant_expressions.basic_sin_float_fragment
+KHR-GL43.constant_expressions.basic_sin_float_compute
+KHR-GL43.constant_expressions.basic_sin_float_geometry
+KHR-GL43.constant_expressions.basic_sin_float_tess_control
+KHR-GL43.constant_expressions.basic_sin_float_tess_eval
+KHR-GL43.constant_expressions.basic_sin_vec2_vertex
+KHR-GL43.constant_expressions.basic_sin_vec2_fragment
+KHR-GL43.constant_expressions.basic_sin_vec2_compute
+KHR-GL43.constant_expressions.basic_sin_vec2_geometry
+KHR-GL43.constant_expressions.basic_sin_vec2_tess_control
+KHR-GL43.constant_expressions.basic_sin_vec2_tess_eval
+KHR-GL43.constant_expressions.basic_sin_vec3_vertex
+KHR-GL43.constant_expressions.basic_sin_vec3_fragment
+KHR-GL43.constant_expressions.basic_sin_vec3_compute
+KHR-GL43.constant_expressions.basic_sin_vec3_geometry
+KHR-GL43.constant_expressions.basic_sin_vec3_tess_control
+KHR-GL43.constant_expressions.basic_sin_vec3_tess_eval
+KHR-GL43.constant_expressions.basic_sin_vec4_vertex
+KHR-GL43.constant_expressions.basic_sin_vec4_fragment
+KHR-GL43.constant_expressions.basic_sin_vec4_compute
+KHR-GL43.constant_expressions.basic_sin_vec4_geometry
+KHR-GL43.constant_expressions.basic_sin_vec4_tess_control
+KHR-GL43.constant_expressions.basic_sin_vec4_tess_eval
+KHR-GL43.constant_expressions.basic_cos_float_vertex
+KHR-GL43.constant_expressions.basic_cos_float_fragment
+KHR-GL43.constant_expressions.basic_cos_float_compute
+KHR-GL43.constant_expressions.basic_cos_float_geometry
+KHR-GL43.constant_expressions.basic_cos_float_tess_control
+KHR-GL43.constant_expressions.basic_cos_float_tess_eval
+KHR-GL43.constant_expressions.basic_cos_vec2_vertex
+KHR-GL43.constant_expressions.basic_cos_vec2_fragment
+KHR-GL43.constant_expressions.basic_cos_vec2_compute
+KHR-GL43.constant_expressions.basic_cos_vec2_geometry
+KHR-GL43.constant_expressions.basic_cos_vec2_tess_control
+KHR-GL43.constant_expressions.basic_cos_vec2_tess_eval
+KHR-GL43.constant_expressions.basic_cos_vec3_vertex
+KHR-GL43.constant_expressions.basic_cos_vec3_fragment
+KHR-GL43.constant_expressions.basic_cos_vec3_compute
+KHR-GL43.constant_expressions.basic_cos_vec3_geometry
+KHR-GL43.constant_expressions.basic_cos_vec3_tess_control
+KHR-GL43.constant_expressions.basic_cos_vec3_tess_eval
+KHR-GL43.constant_expressions.basic_cos_vec4_vertex
+KHR-GL43.constant_expressions.basic_cos_vec4_fragment
+KHR-GL43.constant_expressions.basic_cos_vec4_compute
+KHR-GL43.constant_expressions.basic_cos_vec4_geometry
+KHR-GL43.constant_expressions.basic_cos_vec4_tess_control
+KHR-GL43.constant_expressions.basic_cos_vec4_tess_eval
+KHR-GL43.constant_expressions.basic_asin_float_vertex
+KHR-GL43.constant_expressions.basic_asin_float_fragment
+KHR-GL43.constant_expressions.basic_asin_float_compute
+KHR-GL43.constant_expressions.basic_asin_float_geometry
+KHR-GL43.constant_expressions.basic_asin_float_tess_control
+KHR-GL43.constant_expressions.basic_asin_float_tess_eval
+KHR-GL43.constant_expressions.basic_asin_vec2_vertex
+KHR-GL43.constant_expressions.basic_asin_vec2_fragment
+KHR-GL43.constant_expressions.basic_asin_vec2_compute
+KHR-GL43.constant_expressions.basic_asin_vec2_geometry
+KHR-GL43.constant_expressions.basic_asin_vec2_tess_control
+KHR-GL43.constant_expressions.basic_asin_vec2_tess_eval
+KHR-GL43.constant_expressions.basic_asin_vec3_vertex
+KHR-GL43.constant_expressions.basic_asin_vec3_fragment
+KHR-GL43.constant_expressions.basic_asin_vec3_compute
+KHR-GL43.constant_expressions.basic_asin_vec3_geometry
+KHR-GL43.constant_expressions.basic_asin_vec3_tess_control
+KHR-GL43.constant_expressions.basic_asin_vec3_tess_eval
+KHR-GL43.constant_expressions.basic_asin_vec4_vertex
+KHR-GL43.constant_expressions.basic_asin_vec4_fragment
+KHR-GL43.constant_expressions.basic_asin_vec4_compute
+KHR-GL43.constant_expressions.basic_asin_vec4_geometry
+KHR-GL43.constant_expressions.basic_asin_vec4_tess_control
+KHR-GL43.constant_expressions.basic_asin_vec4_tess_eval
+KHR-GL43.constant_expressions.basic_acos_float_vertex
+KHR-GL43.constant_expressions.basic_acos_float_fragment
+KHR-GL43.constant_expressions.basic_acos_float_compute
+KHR-GL43.constant_expressions.basic_acos_float_geometry
+KHR-GL43.constant_expressions.basic_acos_float_tess_control
+KHR-GL43.constant_expressions.basic_acos_float_tess_eval
+KHR-GL43.constant_expressions.basic_acos_vec2_vertex
+KHR-GL43.constant_expressions.basic_acos_vec2_fragment
+KHR-GL43.constant_expressions.basic_acos_vec2_compute
+KHR-GL43.constant_expressions.basic_acos_vec2_geometry
+KHR-GL43.constant_expressions.basic_acos_vec2_tess_control
+KHR-GL43.constant_expressions.basic_acos_vec2_tess_eval
+KHR-GL43.constant_expressions.basic_acos_vec3_vertex
+KHR-GL43.constant_expressions.basic_acos_vec3_fragment
+KHR-GL43.constant_expressions.basic_acos_vec3_compute
+KHR-GL43.constant_expressions.basic_acos_vec3_geometry
+KHR-GL43.constant_expressions.basic_acos_vec3_tess_control
+KHR-GL43.constant_expressions.basic_acos_vec3_tess_eval
+KHR-GL43.constant_expressions.basic_acos_vec4_vertex
+KHR-GL43.constant_expressions.basic_acos_vec4_fragment
+KHR-GL43.constant_expressions.basic_acos_vec4_compute
+KHR-GL43.constant_expressions.basic_acos_vec4_geometry
+KHR-GL43.constant_expressions.basic_acos_vec4_tess_control
+KHR-GL43.constant_expressions.basic_acos_vec4_tess_eval
+KHR-GL43.constant_expressions.basic_pow_float_vertex
+KHR-GL43.constant_expressions.basic_pow_float_fragment
+KHR-GL43.constant_expressions.basic_pow_float_compute
+KHR-GL43.constant_expressions.basic_pow_float_geometry
+KHR-GL43.constant_expressions.basic_pow_float_tess_control
+KHR-GL43.constant_expressions.basic_pow_float_tess_eval
+KHR-GL43.constant_expressions.basic_pow_vec2_vertex
+KHR-GL43.constant_expressions.basic_pow_vec2_fragment
+KHR-GL43.constant_expressions.basic_pow_vec2_compute
+KHR-GL43.constant_expressions.basic_pow_vec2_geometry
+KHR-GL43.constant_expressions.basic_pow_vec2_tess_control
+KHR-GL43.constant_expressions.basic_pow_vec2_tess_eval
+KHR-GL43.constant_expressions.basic_pow_vec3_vertex
+KHR-GL43.constant_expressions.basic_pow_vec3_fragment
+KHR-GL43.constant_expressions.basic_pow_vec3_compute
+KHR-GL43.constant_expressions.basic_pow_vec3_geometry
+KHR-GL43.constant_expressions.basic_pow_vec3_tess_control
+KHR-GL43.constant_expressions.basic_pow_vec3_tess_eval
+KHR-GL43.constant_expressions.basic_pow_vec4_vertex
+KHR-GL43.constant_expressions.basic_pow_vec4_fragment
+KHR-GL43.constant_expressions.basic_pow_vec4_compute
+KHR-GL43.constant_expressions.basic_pow_vec4_geometry
+KHR-GL43.constant_expressions.basic_pow_vec4_tess_control
+KHR-GL43.constant_expressions.basic_pow_vec4_tess_eval
+KHR-GL43.constant_expressions.basic_exp_float_vertex
+KHR-GL43.constant_expressions.basic_exp_float_fragment
+KHR-GL43.constant_expressions.basic_exp_float_compute
+KHR-GL43.constant_expressions.basic_exp_float_geometry
+KHR-GL43.constant_expressions.basic_exp_float_tess_control
+KHR-GL43.constant_expressions.basic_exp_float_tess_eval
+KHR-GL43.constant_expressions.basic_exp_vec2_vertex
+KHR-GL43.constant_expressions.basic_exp_vec2_fragment
+KHR-GL43.constant_expressions.basic_exp_vec2_compute
+KHR-GL43.constant_expressions.basic_exp_vec2_geometry
+KHR-GL43.constant_expressions.basic_exp_vec2_tess_control
+KHR-GL43.constant_expressions.basic_exp_vec2_tess_eval
+KHR-GL43.constant_expressions.basic_exp_vec3_vertex
+KHR-GL43.constant_expressions.basic_exp_vec3_fragment
+KHR-GL43.constant_expressions.basic_exp_vec3_compute
+KHR-GL43.constant_expressions.basic_exp_vec3_geometry
+KHR-GL43.constant_expressions.basic_exp_vec3_tess_control
+KHR-GL43.constant_expressions.basic_exp_vec3_tess_eval
+KHR-GL43.constant_expressions.basic_exp_vec4_vertex
+KHR-GL43.constant_expressions.basic_exp_vec4_fragment
+KHR-GL43.constant_expressions.basic_exp_vec4_compute
+KHR-GL43.constant_expressions.basic_exp_vec4_geometry
+KHR-GL43.constant_expressions.basic_exp_vec4_tess_control
+KHR-GL43.constant_expressions.basic_exp_vec4_tess_eval
+KHR-GL43.constant_expressions.basic_log_float_vertex
+KHR-GL43.constant_expressions.basic_log_float_fragment
+KHR-GL43.constant_expressions.basic_log_float_compute
+KHR-GL43.constant_expressions.basic_log_float_geometry
+KHR-GL43.constant_expressions.basic_log_float_tess_control
+KHR-GL43.constant_expressions.basic_log_float_tess_eval
+KHR-GL43.constant_expressions.basic_log_vec2_vertex
+KHR-GL43.constant_expressions.basic_log_vec2_fragment
+KHR-GL43.constant_expressions.basic_log_vec2_compute
+KHR-GL43.constant_expressions.basic_log_vec2_geometry
+KHR-GL43.constant_expressions.basic_log_vec2_tess_control
+KHR-GL43.constant_expressions.basic_log_vec2_tess_eval
+KHR-GL43.constant_expressions.basic_log_vec3_vertex
+KHR-GL43.constant_expressions.basic_log_vec3_fragment
+KHR-GL43.constant_expressions.basic_log_vec3_compute
+KHR-GL43.constant_expressions.basic_log_vec3_geometry
+KHR-GL43.constant_expressions.basic_log_vec3_tess_control
+KHR-GL43.constant_expressions.basic_log_vec3_tess_eval
+KHR-GL43.constant_expressions.basic_log_vec4_vertex
+KHR-GL43.constant_expressions.basic_log_vec4_fragment
+KHR-GL43.constant_expressions.basic_log_vec4_compute
+KHR-GL43.constant_expressions.basic_log_vec4_geometry
+KHR-GL43.constant_expressions.basic_log_vec4_tess_control
+KHR-GL43.constant_expressions.basic_log_vec4_tess_eval
+KHR-GL43.constant_expressions.basic_exp2_float_vertex
+KHR-GL43.constant_expressions.basic_exp2_float_fragment
+KHR-GL43.constant_expressions.basic_exp2_float_compute
+KHR-GL43.constant_expressions.basic_exp2_float_geometry
+KHR-GL43.constant_expressions.basic_exp2_float_tess_control
+KHR-GL43.constant_expressions.basic_exp2_float_tess_eval
+KHR-GL43.constant_expressions.basic_exp2_vec2_vertex
+KHR-GL43.constant_expressions.basic_exp2_vec2_fragment
+KHR-GL43.constant_expressions.basic_exp2_vec2_compute
+KHR-GL43.constant_expressions.basic_exp2_vec2_geometry
+KHR-GL43.constant_expressions.basic_exp2_vec2_tess_control
+KHR-GL43.constant_expressions.basic_exp2_vec2_tess_eval
+KHR-GL43.constant_expressions.basic_exp2_vec3_vertex
+KHR-GL43.constant_expressions.basic_exp2_vec3_fragment
+KHR-GL43.constant_expressions.basic_exp2_vec3_compute
+KHR-GL43.constant_expressions.basic_exp2_vec3_geometry
+KHR-GL43.constant_expressions.basic_exp2_vec3_tess_control
+KHR-GL43.constant_expressions.basic_exp2_vec3_tess_eval
+KHR-GL43.constant_expressions.basic_exp2_vec4_vertex
+KHR-GL43.constant_expressions.basic_exp2_vec4_fragment
+KHR-GL43.constant_expressions.basic_exp2_vec4_compute
+KHR-GL43.constant_expressions.basic_exp2_vec4_geometry
+KHR-GL43.constant_expressions.basic_exp2_vec4_tess_control
+KHR-GL43.constant_expressions.basic_exp2_vec4_tess_eval
+KHR-GL43.constant_expressions.basic_log2_float_vertex
+KHR-GL43.constant_expressions.basic_log2_float_fragment
+KHR-GL43.constant_expressions.basic_log2_float_compute
+KHR-GL43.constant_expressions.basic_log2_float_geometry
+KHR-GL43.constant_expressions.basic_log2_float_tess_control
+KHR-GL43.constant_expressions.basic_log2_float_tess_eval
+KHR-GL43.constant_expressions.basic_log2_vec2_vertex
+KHR-GL43.constant_expressions.basic_log2_vec2_fragment
+KHR-GL43.constant_expressions.basic_log2_vec2_compute
+KHR-GL43.constant_expressions.basic_log2_vec2_geometry
+KHR-GL43.constant_expressions.basic_log2_vec2_tess_control
+KHR-GL43.constant_expressions.basic_log2_vec2_tess_eval
+KHR-GL43.constant_expressions.basic_log2_vec3_vertex
+KHR-GL43.constant_expressions.basic_log2_vec3_fragment
+KHR-GL43.constant_expressions.basic_log2_vec3_compute
+KHR-GL43.constant_expressions.basic_log2_vec3_geometry
+KHR-GL43.constant_expressions.basic_log2_vec3_tess_control
+KHR-GL43.constant_expressions.basic_log2_vec3_tess_eval
+KHR-GL43.constant_expressions.basic_log2_vec4_vertex
+KHR-GL43.constant_expressions.basic_log2_vec4_fragment
+KHR-GL43.constant_expressions.basic_log2_vec4_compute
+KHR-GL43.constant_expressions.basic_log2_vec4_geometry
+KHR-GL43.constant_expressions.basic_log2_vec4_tess_control
+KHR-GL43.constant_expressions.basic_log2_vec4_tess_eval
+KHR-GL43.constant_expressions.basic_sqrt_float_vertex
+KHR-GL43.constant_expressions.basic_sqrt_float_fragment
+KHR-GL43.constant_expressions.basic_sqrt_float_compute
+KHR-GL43.constant_expressions.basic_sqrt_float_geometry
+KHR-GL43.constant_expressions.basic_sqrt_float_tess_control
+KHR-GL43.constant_expressions.basic_sqrt_float_tess_eval
+KHR-GL43.constant_expressions.basic_sqrt_vec2_vertex
+KHR-GL43.constant_expressions.basic_sqrt_vec2_fragment
+KHR-GL43.constant_expressions.basic_sqrt_vec2_compute
+KHR-GL43.constant_expressions.basic_sqrt_vec2_geometry
+KHR-GL43.constant_expressions.basic_sqrt_vec2_tess_control
+KHR-GL43.constant_expressions.basic_sqrt_vec2_tess_eval
+KHR-GL43.constant_expressions.basic_sqrt_vec3_vertex
+KHR-GL43.constant_expressions.basic_sqrt_vec3_fragment
+KHR-GL43.constant_expressions.basic_sqrt_vec3_compute
+KHR-GL43.constant_expressions.basic_sqrt_vec3_geometry
+KHR-GL43.constant_expressions.basic_sqrt_vec3_tess_control
+KHR-GL43.constant_expressions.basic_sqrt_vec3_tess_eval
+KHR-GL43.constant_expressions.basic_sqrt_vec4_vertex
+KHR-GL43.constant_expressions.basic_sqrt_vec4_fragment
+KHR-GL43.constant_expressions.basic_sqrt_vec4_compute
+KHR-GL43.constant_expressions.basic_sqrt_vec4_geometry
+KHR-GL43.constant_expressions.basic_sqrt_vec4_tess_control
+KHR-GL43.constant_expressions.basic_sqrt_vec4_tess_eval
+KHR-GL43.constant_expressions.basic_inversesqrt_float_vertex
+KHR-GL43.constant_expressions.basic_inversesqrt_float_fragment
+KHR-GL43.constant_expressions.basic_inversesqrt_float_compute
+KHR-GL43.constant_expressions.basic_inversesqrt_float_geometry
+KHR-GL43.constant_expressions.basic_inversesqrt_float_tess_control
+KHR-GL43.constant_expressions.basic_inversesqrt_float_tess_eval
+KHR-GL43.constant_expressions.basic_inversesqrt_vec2_vertex
+KHR-GL43.constant_expressions.basic_inversesqrt_vec2_fragment
+KHR-GL43.constant_expressions.basic_inversesqrt_vec2_compute
+KHR-GL43.constant_expressions.basic_inversesqrt_vec2_geometry
+KHR-GL43.constant_expressions.basic_inversesqrt_vec2_tess_control
+KHR-GL43.constant_expressions.basic_inversesqrt_vec2_tess_eval
+KHR-GL43.constant_expressions.basic_inversesqrt_vec3_vertex
+KHR-GL43.constant_expressions.basic_inversesqrt_vec3_fragment
+KHR-GL43.constant_expressions.basic_inversesqrt_vec3_compute
+KHR-GL43.constant_expressions.basic_inversesqrt_vec3_geometry
+KHR-GL43.constant_expressions.basic_inversesqrt_vec3_tess_control
+KHR-GL43.constant_expressions.basic_inversesqrt_vec3_tess_eval
+KHR-GL43.constant_expressions.basic_inversesqrt_vec4_vertex
+KHR-GL43.constant_expressions.basic_inversesqrt_vec4_fragment
+KHR-GL43.constant_expressions.basic_inversesqrt_vec4_compute
+KHR-GL43.constant_expressions.basic_inversesqrt_vec4_geometry
+KHR-GL43.constant_expressions.basic_inversesqrt_vec4_tess_control
+KHR-GL43.constant_expressions.basic_inversesqrt_vec4_tess_eval
+KHR-GL43.constant_expressions.basic_abs_int_vertex
+KHR-GL43.constant_expressions.basic_abs_int_fragment
+KHR-GL43.constant_expressions.basic_abs_int_compute
+KHR-GL43.constant_expressions.basic_abs_int_geometry
+KHR-GL43.constant_expressions.basic_abs_int_tess_control
+KHR-GL43.constant_expressions.basic_abs_int_tess_eval
+KHR-GL43.constant_expressions.basic_abs_ivec2_vertex
+KHR-GL43.constant_expressions.basic_abs_ivec2_fragment
+KHR-GL43.constant_expressions.basic_abs_ivec2_compute
+KHR-GL43.constant_expressions.basic_abs_ivec2_geometry
+KHR-GL43.constant_expressions.basic_abs_ivec2_tess_control
+KHR-GL43.constant_expressions.basic_abs_ivec2_tess_eval
+KHR-GL43.constant_expressions.basic_abs_ivec3_vertex
+KHR-GL43.constant_expressions.basic_abs_ivec3_fragment
+KHR-GL43.constant_expressions.basic_abs_ivec3_compute
+KHR-GL43.constant_expressions.basic_abs_ivec3_geometry
+KHR-GL43.constant_expressions.basic_abs_ivec3_tess_control
+KHR-GL43.constant_expressions.basic_abs_ivec3_tess_eval
+KHR-GL43.constant_expressions.basic_abs_ivec4_vertex
+KHR-GL43.constant_expressions.basic_abs_ivec4_fragment
+KHR-GL43.constant_expressions.basic_abs_ivec4_compute
+KHR-GL43.constant_expressions.basic_abs_ivec4_geometry
+KHR-GL43.constant_expressions.basic_abs_ivec4_tess_control
+KHR-GL43.constant_expressions.basic_abs_ivec4_tess_eval
+KHR-GL43.constant_expressions.basic_sign_float_vertex
+KHR-GL43.constant_expressions.basic_sign_float_fragment
+KHR-GL43.constant_expressions.basic_sign_float_compute
+KHR-GL43.constant_expressions.basic_sign_float_geometry
+KHR-GL43.constant_expressions.basic_sign_float_tess_control
+KHR-GL43.constant_expressions.basic_sign_float_tess_eval
+KHR-GL43.constant_expressions.basic_sign_vec2_vertex
+KHR-GL43.constant_expressions.basic_sign_vec2_fragment
+KHR-GL43.constant_expressions.basic_sign_vec2_compute
+KHR-GL43.constant_expressions.basic_sign_vec2_geometry
+KHR-GL43.constant_expressions.basic_sign_vec2_tess_control
+KHR-GL43.constant_expressions.basic_sign_vec2_tess_eval
+KHR-GL43.constant_expressions.basic_sign_vec3_vertex
+KHR-GL43.constant_expressions.basic_sign_vec3_fragment
+KHR-GL43.constant_expressions.basic_sign_vec3_compute
+KHR-GL43.constant_expressions.basic_sign_vec3_geometry
+KHR-GL43.constant_expressions.basic_sign_vec3_tess_control
+KHR-GL43.constant_expressions.basic_sign_vec3_tess_eval
+KHR-GL43.constant_expressions.basic_sign_vec4_vertex
+KHR-GL43.constant_expressions.basic_sign_vec4_fragment
+KHR-GL43.constant_expressions.basic_sign_vec4_compute
+KHR-GL43.constant_expressions.basic_sign_vec4_geometry
+KHR-GL43.constant_expressions.basic_sign_vec4_tess_control
+KHR-GL43.constant_expressions.basic_sign_vec4_tess_eval
+KHR-GL43.constant_expressions.basic_floor_float_vertex
+KHR-GL43.constant_expressions.basic_floor_float_fragment
+KHR-GL43.constant_expressions.basic_floor_float_compute
+KHR-GL43.constant_expressions.basic_floor_float_geometry
+KHR-GL43.constant_expressions.basic_floor_float_tess_control
+KHR-GL43.constant_expressions.basic_floor_float_tess_eval
+KHR-GL43.constant_expressions.basic_floor_vec2_vertex
+KHR-GL43.constant_expressions.basic_floor_vec2_fragment
+KHR-GL43.constant_expressions.basic_floor_vec2_compute
+KHR-GL43.constant_expressions.basic_floor_vec2_geometry
+KHR-GL43.constant_expressions.basic_floor_vec2_tess_control
+KHR-GL43.constant_expressions.basic_floor_vec2_tess_eval
+KHR-GL43.constant_expressions.basic_floor_vec3_vertex
+KHR-GL43.constant_expressions.basic_floor_vec3_fragment
+KHR-GL43.constant_expressions.basic_floor_vec3_compute
+KHR-GL43.constant_expressions.basic_floor_vec3_geometry
+KHR-GL43.constant_expressions.basic_floor_vec3_tess_control
+KHR-GL43.constant_expressions.basic_floor_vec3_tess_eval
+KHR-GL43.constant_expressions.basic_floor_vec4_vertex
+KHR-GL43.constant_expressions.basic_floor_vec4_fragment
+KHR-GL43.constant_expressions.basic_floor_vec4_compute
+KHR-GL43.constant_expressions.basic_floor_vec4_geometry
+KHR-GL43.constant_expressions.basic_floor_vec4_tess_control
+KHR-GL43.constant_expressions.basic_floor_vec4_tess_eval
+KHR-GL43.constant_expressions.basic_trunc_float_vertex
+KHR-GL43.constant_expressions.basic_trunc_float_fragment
+KHR-GL43.constant_expressions.basic_trunc_float_compute
+KHR-GL43.constant_expressions.basic_trunc_float_geometry
+KHR-GL43.constant_expressions.basic_trunc_float_tess_control
+KHR-GL43.constant_expressions.basic_trunc_float_tess_eval
+KHR-GL43.constant_expressions.basic_trunc_vec2_vertex
+KHR-GL43.constant_expressions.basic_trunc_vec2_fragment
+KHR-GL43.constant_expressions.basic_trunc_vec2_compute
+KHR-GL43.constant_expressions.basic_trunc_vec2_geometry
+KHR-GL43.constant_expressions.basic_trunc_vec2_tess_control
+KHR-GL43.constant_expressions.basic_trunc_vec2_tess_eval
+KHR-GL43.constant_expressions.basic_trunc_vec3_vertex
+KHR-GL43.constant_expressions.basic_trunc_vec3_fragment
+KHR-GL43.constant_expressions.basic_trunc_vec3_compute
+KHR-GL43.constant_expressions.basic_trunc_vec3_geometry
+KHR-GL43.constant_expressions.basic_trunc_vec3_tess_control
+KHR-GL43.constant_expressions.basic_trunc_vec3_tess_eval
+KHR-GL43.constant_expressions.basic_trunc_vec4_vertex
+KHR-GL43.constant_expressions.basic_trunc_vec4_fragment
+KHR-GL43.constant_expressions.basic_trunc_vec4_compute
+KHR-GL43.constant_expressions.basic_trunc_vec4_geometry
+KHR-GL43.constant_expressions.basic_trunc_vec4_tess_control
+KHR-GL43.constant_expressions.basic_trunc_vec4_tess_eval
+KHR-GL43.constant_expressions.basic_round_float_vertex
+KHR-GL43.constant_expressions.basic_round_float_fragment
+KHR-GL43.constant_expressions.basic_round_float_compute
+KHR-GL43.constant_expressions.basic_round_float_geometry
+KHR-GL43.constant_expressions.basic_round_float_tess_control
+KHR-GL43.constant_expressions.basic_round_float_tess_eval
+KHR-GL43.constant_expressions.basic_round_vec2_vertex
+KHR-GL43.constant_expressions.basic_round_vec2_fragment
+KHR-GL43.constant_expressions.basic_round_vec2_compute
+KHR-GL43.constant_expressions.basic_round_vec2_geometry
+KHR-GL43.constant_expressions.basic_round_vec2_tess_control
+KHR-GL43.constant_expressions.basic_round_vec2_tess_eval
+KHR-GL43.constant_expressions.basic_round_vec3_vertex
+KHR-GL43.constant_expressions.basic_round_vec3_fragment
+KHR-GL43.constant_expressions.basic_round_vec3_compute
+KHR-GL43.constant_expressions.basic_round_vec3_geometry
+KHR-GL43.constant_expressions.basic_round_vec3_tess_control
+KHR-GL43.constant_expressions.basic_round_vec3_tess_eval
+KHR-GL43.constant_expressions.basic_round_vec4_vertex
+KHR-GL43.constant_expressions.basic_round_vec4_fragment
+KHR-GL43.constant_expressions.basic_round_vec4_compute
+KHR-GL43.constant_expressions.basic_round_vec4_geometry
+KHR-GL43.constant_expressions.basic_round_vec4_tess_control
+KHR-GL43.constant_expressions.basic_round_vec4_tess_eval
+KHR-GL43.constant_expressions.basic_ceil_float_vertex
+KHR-GL43.constant_expressions.basic_ceil_float_fragment
+KHR-GL43.constant_expressions.basic_ceil_float_compute
+KHR-GL43.constant_expressions.basic_ceil_float_geometry
+KHR-GL43.constant_expressions.basic_ceil_float_tess_control
+KHR-GL43.constant_expressions.basic_ceil_float_tess_eval
+KHR-GL43.constant_expressions.basic_ceil_vec2_vertex
+KHR-GL43.constant_expressions.basic_ceil_vec2_fragment
+KHR-GL43.constant_expressions.basic_ceil_vec2_compute
+KHR-GL43.constant_expressions.basic_ceil_vec2_geometry
+KHR-GL43.constant_expressions.basic_ceil_vec2_tess_control
+KHR-GL43.constant_expressions.basic_ceil_vec2_tess_eval
+KHR-GL43.constant_expressions.basic_ceil_vec3_vertex
+KHR-GL43.constant_expressions.basic_ceil_vec3_fragment
+KHR-GL43.constant_expressions.basic_ceil_vec3_compute
+KHR-GL43.constant_expressions.basic_ceil_vec3_geometry
+KHR-GL43.constant_expressions.basic_ceil_vec3_tess_control
+KHR-GL43.constant_expressions.basic_ceil_vec3_tess_eval
+KHR-GL43.constant_expressions.basic_ceil_vec4_vertex
+KHR-GL43.constant_expressions.basic_ceil_vec4_fragment
+KHR-GL43.constant_expressions.basic_ceil_vec4_compute
+KHR-GL43.constant_expressions.basic_ceil_vec4_geometry
+KHR-GL43.constant_expressions.basic_ceil_vec4_tess_control
+KHR-GL43.constant_expressions.basic_ceil_vec4_tess_eval
+KHR-GL43.constant_expressions.basic_mod_float_vertex
+KHR-GL43.constant_expressions.basic_mod_float_fragment
+KHR-GL43.constant_expressions.basic_mod_float_compute
+KHR-GL43.constant_expressions.basic_mod_float_geometry
+KHR-GL43.constant_expressions.basic_mod_float_tess_control
+KHR-GL43.constant_expressions.basic_mod_float_tess_eval
+KHR-GL43.constant_expressions.basic_mod_vec2_vertex
+KHR-GL43.constant_expressions.basic_mod_vec2_fragment
+KHR-GL43.constant_expressions.basic_mod_vec2_compute
+KHR-GL43.constant_expressions.basic_mod_vec2_geometry
+KHR-GL43.constant_expressions.basic_mod_vec2_tess_control
+KHR-GL43.constant_expressions.basic_mod_vec2_tess_eval
+KHR-GL43.constant_expressions.basic_mod_vec2_float_vertex
+KHR-GL43.constant_expressions.basic_mod_vec2_float_fragment
+KHR-GL43.constant_expressions.basic_mod_vec2_float_compute
+KHR-GL43.constant_expressions.basic_mod_vec2_float_geometry
+KHR-GL43.constant_expressions.basic_mod_vec2_float_tess_control
+KHR-GL43.constant_expressions.basic_mod_vec2_float_tess_eval
+KHR-GL43.constant_expressions.basic_mod_vec3_vertex
+KHR-GL43.constant_expressions.basic_mod_vec3_fragment
+KHR-GL43.constant_expressions.basic_mod_vec3_compute
+KHR-GL43.constant_expressions.basic_mod_vec3_geometry
+KHR-GL43.constant_expressions.basic_mod_vec3_tess_control
+KHR-GL43.constant_expressions.basic_mod_vec3_tess_eval
+KHR-GL43.constant_expressions.basic_mod_vec3_float_vertex
+KHR-GL43.constant_expressions.basic_mod_vec3_float_fragment
+KHR-GL43.constant_expressions.basic_mod_vec3_float_compute
+KHR-GL43.constant_expressions.basic_mod_vec3_float_geometry
+KHR-GL43.constant_expressions.basic_mod_vec3_float_tess_control
+KHR-GL43.constant_expressions.basic_mod_vec3_float_tess_eval
+KHR-GL43.constant_expressions.basic_mod_vec4_vertex
+KHR-GL43.constant_expressions.basic_mod_vec4_fragment
+KHR-GL43.constant_expressions.basic_mod_vec4_compute
+KHR-GL43.constant_expressions.basic_mod_vec4_geometry
+KHR-GL43.constant_expressions.basic_mod_vec4_tess_control
+KHR-GL43.constant_expressions.basic_mod_vec4_tess_eval
+KHR-GL43.constant_expressions.basic_mod_vec4_float_vertex
+KHR-GL43.constant_expressions.basic_mod_vec4_float_fragment
+KHR-GL43.constant_expressions.basic_mod_vec4_float_compute
+KHR-GL43.constant_expressions.basic_mod_vec4_float_geometry
+KHR-GL43.constant_expressions.basic_mod_vec4_float_tess_control
+KHR-GL43.constant_expressions.basic_mod_vec4_float_tess_eval
+KHR-GL43.constant_expressions.basic_min_float_vertex
+KHR-GL43.constant_expressions.basic_min_float_fragment
+KHR-GL43.constant_expressions.basic_min_float_compute
+KHR-GL43.constant_expressions.basic_min_float_geometry
+KHR-GL43.constant_expressions.basic_min_float_tess_control
+KHR-GL43.constant_expressions.basic_min_float_tess_eval
+KHR-GL43.constant_expressions.basic_min_vec2_vertex
+KHR-GL43.constant_expressions.basic_min_vec2_fragment
+KHR-GL43.constant_expressions.basic_min_vec2_compute
+KHR-GL43.constant_expressions.basic_min_vec2_geometry
+KHR-GL43.constant_expressions.basic_min_vec2_tess_control
+KHR-GL43.constant_expressions.basic_min_vec2_tess_eval
+KHR-GL43.constant_expressions.basic_min_vec2_float_vertex
+KHR-GL43.constant_expressions.basic_min_vec2_float_fragment
+KHR-GL43.constant_expressions.basic_min_vec2_float_compute
+KHR-GL43.constant_expressions.basic_min_vec2_float_geometry
+KHR-GL43.constant_expressions.basic_min_vec2_float_tess_control
+KHR-GL43.constant_expressions.basic_min_vec2_float_tess_eval
+KHR-GL43.constant_expressions.basic_min_vec3_vertex
+KHR-GL43.constant_expressions.basic_min_vec3_fragment
+KHR-GL43.constant_expressions.basic_min_vec3_compute
+KHR-GL43.constant_expressions.basic_min_vec3_geometry
+KHR-GL43.constant_expressions.basic_min_vec3_tess_control
+KHR-GL43.constant_expressions.basic_min_vec3_tess_eval
+KHR-GL43.constant_expressions.basic_min_vec3_float_vertex
+KHR-GL43.constant_expressions.basic_min_vec3_float_fragment
+KHR-GL43.constant_expressions.basic_min_vec3_float_compute
+KHR-GL43.constant_expressions.basic_min_vec3_float_geometry
+KHR-GL43.constant_expressions.basic_min_vec3_float_tess_control
+KHR-GL43.constant_expressions.basic_min_vec3_float_tess_eval
+KHR-GL43.constant_expressions.basic_min_vec4_vertex
+KHR-GL43.constant_expressions.basic_min_vec4_fragment
+KHR-GL43.constant_expressions.basic_min_vec4_compute
+KHR-GL43.constant_expressions.basic_min_vec4_geometry
+KHR-GL43.constant_expressions.basic_min_vec4_tess_control
+KHR-GL43.constant_expressions.basic_min_vec4_tess_eval
+KHR-GL43.constant_expressions.basic_min_vec4_float_vertex
+KHR-GL43.constant_expressions.basic_min_vec4_float_fragment
+KHR-GL43.constant_expressions.basic_min_vec4_float_compute
+KHR-GL43.constant_expressions.basic_min_vec4_float_geometry
+KHR-GL43.constant_expressions.basic_min_vec4_float_tess_control
+KHR-GL43.constant_expressions.basic_min_vec4_float_tess_eval
+KHR-GL43.constant_expressions.basic_max_float_vertex
+KHR-GL43.constant_expressions.basic_max_float_fragment
+KHR-GL43.constant_expressions.basic_max_float_compute
+KHR-GL43.constant_expressions.basic_max_float_geometry
+KHR-GL43.constant_expressions.basic_max_float_tess_control
+KHR-GL43.constant_expressions.basic_max_float_tess_eval
+KHR-GL43.constant_expressions.basic_max_vec2_vertex
+KHR-GL43.constant_expressions.basic_max_vec2_fragment
+KHR-GL43.constant_expressions.basic_max_vec2_compute
+KHR-GL43.constant_expressions.basic_max_vec2_geometry
+KHR-GL43.constant_expressions.basic_max_vec2_tess_control
+KHR-GL43.constant_expressions.basic_max_vec2_tess_eval
+KHR-GL43.constant_expressions.basic_max_vec2_float_vertex
+KHR-GL43.constant_expressions.basic_max_vec2_float_fragment
+KHR-GL43.constant_expressions.basic_max_vec2_float_compute
+KHR-GL43.constant_expressions.basic_max_vec2_float_geometry
+KHR-GL43.constant_expressions.basic_max_vec2_float_tess_control
+KHR-GL43.constant_expressions.basic_max_vec2_float_tess_eval
+KHR-GL43.constant_expressions.basic_max_vec3_vertex
+KHR-GL43.constant_expressions.basic_max_vec3_fragment
+KHR-GL43.constant_expressions.basic_max_vec3_compute
+KHR-GL43.constant_expressions.basic_max_vec3_geometry
+KHR-GL43.constant_expressions.basic_max_vec3_tess_control
+KHR-GL43.constant_expressions.basic_max_vec3_tess_eval
+KHR-GL43.constant_expressions.basic_max_vec3_float_vertex
+KHR-GL43.constant_expressions.basic_max_vec3_float_fragment
+KHR-GL43.constant_expressions.basic_max_vec3_float_compute
+KHR-GL43.constant_expressions.basic_max_vec3_float_geometry
+KHR-GL43.constant_expressions.basic_max_vec3_float_tess_control
+KHR-GL43.constant_expressions.basic_max_vec3_float_tess_eval
+KHR-GL43.constant_expressions.basic_max_vec4_vertex
+KHR-GL43.constant_expressions.basic_max_vec4_fragment
+KHR-GL43.constant_expressions.basic_max_vec4_compute
+KHR-GL43.constant_expressions.basic_max_vec4_geometry
+KHR-GL43.constant_expressions.basic_max_vec4_tess_control
+KHR-GL43.constant_expressions.basic_max_vec4_tess_eval
+KHR-GL43.constant_expressions.basic_max_vec4_float_vertex
+KHR-GL43.constant_expressions.basic_max_vec4_float_fragment
+KHR-GL43.constant_expressions.basic_max_vec4_float_compute
+KHR-GL43.constant_expressions.basic_max_vec4_float_geometry
+KHR-GL43.constant_expressions.basic_max_vec4_float_tess_control
+KHR-GL43.constant_expressions.basic_max_vec4_float_tess_eval
+KHR-GL43.constant_expressions.basic_clamp_float_vertex
+KHR-GL43.constant_expressions.basic_clamp_float_fragment
+KHR-GL43.constant_expressions.basic_clamp_float_compute
+KHR-GL43.constant_expressions.basic_clamp_float_geometry
+KHR-GL43.constant_expressions.basic_clamp_float_tess_control
+KHR-GL43.constant_expressions.basic_clamp_float_tess_eval
+KHR-GL43.constant_expressions.basic_clamp_vec2_vertex
+KHR-GL43.constant_expressions.basic_clamp_vec2_fragment
+KHR-GL43.constant_expressions.basic_clamp_vec2_compute
+KHR-GL43.constant_expressions.basic_clamp_vec2_geometry
+KHR-GL43.constant_expressions.basic_clamp_vec2_tess_control
+KHR-GL43.constant_expressions.basic_clamp_vec2_tess_eval
+KHR-GL43.constant_expressions.basic_clamp_vec2_float_vertex
+KHR-GL43.constant_expressions.basic_clamp_vec2_float_fragment
+KHR-GL43.constant_expressions.basic_clamp_vec2_float_compute
+KHR-GL43.constant_expressions.basic_clamp_vec2_float_geometry
+KHR-GL43.constant_expressions.basic_clamp_vec2_float_tess_control
+KHR-GL43.constant_expressions.basic_clamp_vec2_float_tess_eval
+KHR-GL43.constant_expressions.basic_clamp_vec3_vertex
+KHR-GL43.constant_expressions.basic_clamp_vec3_fragment
+KHR-GL43.constant_expressions.basic_clamp_vec3_compute
+KHR-GL43.constant_expressions.basic_clamp_vec3_geometry
+KHR-GL43.constant_expressions.basic_clamp_vec3_tess_control
+KHR-GL43.constant_expressions.basic_clamp_vec3_tess_eval
+KHR-GL43.constant_expressions.basic_clamp_vec3_float_vertex
+KHR-GL43.constant_expressions.basic_clamp_vec3_float_fragment
+KHR-GL43.constant_expressions.basic_clamp_vec3_float_compute
+KHR-GL43.constant_expressions.basic_clamp_vec3_float_geometry
+KHR-GL43.constant_expressions.basic_clamp_vec3_float_tess_control
+KHR-GL43.constant_expressions.basic_clamp_vec3_float_tess_eval
+KHR-GL43.constant_expressions.basic_clamp_vec4_vertex
+KHR-GL43.constant_expressions.basic_clamp_vec4_fragment
+KHR-GL43.constant_expressions.basic_clamp_vec4_compute
+KHR-GL43.constant_expressions.basic_clamp_vec4_geometry
+KHR-GL43.constant_expressions.basic_clamp_vec4_tess_control
+KHR-GL43.constant_expressions.basic_clamp_vec4_tess_eval
+KHR-GL43.constant_expressions.basic_clamp_vec4_float_vertex
+KHR-GL43.constant_expressions.basic_clamp_vec4_float_fragment
+KHR-GL43.constant_expressions.basic_clamp_vec4_float_compute
+KHR-GL43.constant_expressions.basic_clamp_vec4_float_geometry
+KHR-GL43.constant_expressions.basic_clamp_vec4_float_tess_control
+KHR-GL43.constant_expressions.basic_clamp_vec4_float_tess_eval
+KHR-GL43.constant_expressions.basic_length_float_vertex
+KHR-GL43.constant_expressions.basic_length_float_fragment
+KHR-GL43.constant_expressions.basic_length_float_compute
+KHR-GL43.constant_expressions.basic_length_float_geometry
+KHR-GL43.constant_expressions.basic_length_float_tess_control
+KHR-GL43.constant_expressions.basic_length_float_tess_eval
+KHR-GL43.constant_expressions.basic_length_vec2_vertex
+KHR-GL43.constant_expressions.basic_length_vec2_fragment
+KHR-GL43.constant_expressions.basic_length_vec2_compute
+KHR-GL43.constant_expressions.basic_length_vec2_geometry
+KHR-GL43.constant_expressions.basic_length_vec2_tess_control
+KHR-GL43.constant_expressions.basic_length_vec2_tess_eval
+KHR-GL43.constant_expressions.basic_length_vec3_vertex
+KHR-GL43.constant_expressions.basic_length_vec3_fragment
+KHR-GL43.constant_expressions.basic_length_vec3_compute
+KHR-GL43.constant_expressions.basic_length_vec3_geometry
+KHR-GL43.constant_expressions.basic_length_vec3_tess_control
+KHR-GL43.constant_expressions.basic_length_vec3_tess_eval
+KHR-GL43.constant_expressions.basic_length_vec4_vertex
+KHR-GL43.constant_expressions.basic_length_vec4_fragment
+KHR-GL43.constant_expressions.basic_length_vec4_compute
+KHR-GL43.constant_expressions.basic_length_vec4_geometry
+KHR-GL43.constant_expressions.basic_length_vec4_tess_control
+KHR-GL43.constant_expressions.basic_length_vec4_tess_eval
+KHR-GL43.constant_expressions.basic_dot_float_vertex
+KHR-GL43.constant_expressions.basic_dot_float_fragment
+KHR-GL43.constant_expressions.basic_dot_float_compute
+KHR-GL43.constant_expressions.basic_dot_float_geometry
+KHR-GL43.constant_expressions.basic_dot_float_tess_control
+KHR-GL43.constant_expressions.basic_dot_float_tess_eval
+KHR-GL43.constant_expressions.basic_dot_vec2_vertex
+KHR-GL43.constant_expressions.basic_dot_vec2_fragment
+KHR-GL43.constant_expressions.basic_dot_vec2_compute
+KHR-GL43.constant_expressions.basic_dot_vec2_geometry
+KHR-GL43.constant_expressions.basic_dot_vec2_tess_control
+KHR-GL43.constant_expressions.basic_dot_vec2_tess_eval
+KHR-GL43.constant_expressions.basic_dot_vec3_vertex
+KHR-GL43.constant_expressions.basic_dot_vec3_fragment
+KHR-GL43.constant_expressions.basic_dot_vec3_compute
+KHR-GL43.constant_expressions.basic_dot_vec3_geometry
+KHR-GL43.constant_expressions.basic_dot_vec3_tess_control
+KHR-GL43.constant_expressions.basic_dot_vec3_tess_eval
+KHR-GL43.constant_expressions.basic_dot_vec4_vertex
+KHR-GL43.constant_expressions.basic_dot_vec4_fragment
+KHR-GL43.constant_expressions.basic_dot_vec4_compute
+KHR-GL43.constant_expressions.basic_dot_vec4_geometry
+KHR-GL43.constant_expressions.basic_dot_vec4_tess_control
+KHR-GL43.constant_expressions.basic_dot_vec4_tess_eval
+KHR-GL43.constant_expressions.basic_normalize_float_vertex
+KHR-GL43.constant_expressions.basic_normalize_float_fragment
+KHR-GL43.constant_expressions.basic_normalize_float_compute
+KHR-GL43.constant_expressions.basic_normalize_float_geometry
+KHR-GL43.constant_expressions.basic_normalize_float_tess_control
+KHR-GL43.constant_expressions.basic_normalize_float_tess_eval
+KHR-GL43.constant_expressions.basic_normalize_vec2_vertex
+KHR-GL43.constant_expressions.basic_normalize_vec2_fragment
+KHR-GL43.constant_expressions.basic_normalize_vec2_compute
+KHR-GL43.constant_expressions.basic_normalize_vec2_geometry
+KHR-GL43.constant_expressions.basic_normalize_vec2_tess_control
+KHR-GL43.constant_expressions.basic_normalize_vec2_tess_eval
+KHR-GL43.constant_expressions.basic_normalize_vec3_vertex
+KHR-GL43.constant_expressions.basic_normalize_vec3_fragment
+KHR-GL43.constant_expressions.basic_normalize_vec3_compute
+KHR-GL43.constant_expressions.basic_normalize_vec3_geometry
+KHR-GL43.constant_expressions.basic_normalize_vec3_tess_control
+KHR-GL43.constant_expressions.basic_normalize_vec3_tess_eval
+KHR-GL43.constant_expressions.basic_normalize_vec4_vertex
+KHR-GL43.constant_expressions.basic_normalize_vec4_fragment
+KHR-GL43.constant_expressions.basic_normalize_vec4_compute
+KHR-GL43.constant_expressions.basic_normalize_vec4_geometry
+KHR-GL43.constant_expressions.basic_normalize_vec4_tess_control
+KHR-GL43.constant_expressions.basic_normalize_vec4_tess_eval
+KHR-GL43.constant_expressions.array_radians_float_vertex
+KHR-GL43.constant_expressions.array_radians_float_fragment
+KHR-GL43.constant_expressions.array_radians_float_compute
+KHR-GL43.constant_expressions.array_radians_float_geometry
+KHR-GL43.constant_expressions.array_radians_float_tess_control
+KHR-GL43.constant_expressions.array_radians_float_tess_eval
+KHR-GL43.constant_expressions.array_radians_vec2_vertex
+KHR-GL43.constant_expressions.array_radians_vec2_fragment
+KHR-GL43.constant_expressions.array_radians_vec2_compute
+KHR-GL43.constant_expressions.array_radians_vec2_geometry
+KHR-GL43.constant_expressions.array_radians_vec2_tess_control
+KHR-GL43.constant_expressions.array_radians_vec2_tess_eval
+KHR-GL43.constant_expressions.array_radians_vec3_vertex
+KHR-GL43.constant_expressions.array_radians_vec3_fragment
+KHR-GL43.constant_expressions.array_radians_vec3_compute
+KHR-GL43.constant_expressions.array_radians_vec3_geometry
+KHR-GL43.constant_expressions.array_radians_vec3_tess_control
+KHR-GL43.constant_expressions.array_radians_vec3_tess_eval
+KHR-GL43.constant_expressions.array_radians_vec4_vertex
+KHR-GL43.constant_expressions.array_radians_vec4_fragment
+KHR-GL43.constant_expressions.array_radians_vec4_compute
+KHR-GL43.constant_expressions.array_radians_vec4_geometry
+KHR-GL43.constant_expressions.array_radians_vec4_tess_control
+KHR-GL43.constant_expressions.array_radians_vec4_tess_eval
+KHR-GL43.constant_expressions.array_degrees_float_vertex
+KHR-GL43.constant_expressions.array_degrees_float_fragment
+KHR-GL43.constant_expressions.array_degrees_float_compute
+KHR-GL43.constant_expressions.array_degrees_float_geometry
+KHR-GL43.constant_expressions.array_degrees_float_tess_control
+KHR-GL43.constant_expressions.array_degrees_float_tess_eval
+KHR-GL43.constant_expressions.array_degrees_vec2_vertex
+KHR-GL43.constant_expressions.array_degrees_vec2_fragment
+KHR-GL43.constant_expressions.array_degrees_vec2_compute
+KHR-GL43.constant_expressions.array_degrees_vec2_geometry
+KHR-GL43.constant_expressions.array_degrees_vec2_tess_control
+KHR-GL43.constant_expressions.array_degrees_vec2_tess_eval
+KHR-GL43.constant_expressions.array_degrees_vec3_vertex
+KHR-GL43.constant_expressions.array_degrees_vec3_fragment
+KHR-GL43.constant_expressions.array_degrees_vec3_compute
+KHR-GL43.constant_expressions.array_degrees_vec3_geometry
+KHR-GL43.constant_expressions.array_degrees_vec3_tess_control
+KHR-GL43.constant_expressions.array_degrees_vec3_tess_eval
+KHR-GL43.constant_expressions.array_degrees_vec4_vertex
+KHR-GL43.constant_expressions.array_degrees_vec4_fragment
+KHR-GL43.constant_expressions.array_degrees_vec4_compute
+KHR-GL43.constant_expressions.array_degrees_vec4_geometry
+KHR-GL43.constant_expressions.array_degrees_vec4_tess_control
+KHR-GL43.constant_expressions.array_degrees_vec4_tess_eval
+KHR-GL43.constant_expressions.array_sin_float_vertex
+KHR-GL43.constant_expressions.array_sin_float_fragment
+KHR-GL43.constant_expressions.array_sin_float_compute
+KHR-GL43.constant_expressions.array_sin_float_geometry
+KHR-GL43.constant_expressions.array_sin_float_tess_control
+KHR-GL43.constant_expressions.array_sin_float_tess_eval
+KHR-GL43.constant_expressions.array_sin_vec2_vertex
+KHR-GL43.constant_expressions.array_sin_vec2_fragment
+KHR-GL43.constant_expressions.array_sin_vec2_compute
+KHR-GL43.constant_expressions.array_sin_vec2_geometry
+KHR-GL43.constant_expressions.array_sin_vec2_tess_control
+KHR-GL43.constant_expressions.array_sin_vec2_tess_eval
+KHR-GL43.constant_expressions.array_sin_vec3_vertex
+KHR-GL43.constant_expressions.array_sin_vec3_fragment
+KHR-GL43.constant_expressions.array_sin_vec3_compute
+KHR-GL43.constant_expressions.array_sin_vec3_geometry
+KHR-GL43.constant_expressions.array_sin_vec3_tess_control
+KHR-GL43.constant_expressions.array_sin_vec3_tess_eval
+KHR-GL43.constant_expressions.array_sin_vec4_vertex
+KHR-GL43.constant_expressions.array_sin_vec4_fragment
+KHR-GL43.constant_expressions.array_sin_vec4_compute
+KHR-GL43.constant_expressions.array_sin_vec4_geometry
+KHR-GL43.constant_expressions.array_sin_vec4_tess_control
+KHR-GL43.constant_expressions.array_sin_vec4_tess_eval
+KHR-GL43.constant_expressions.array_cos_float_vertex
+KHR-GL43.constant_expressions.array_cos_float_fragment
+KHR-GL43.constant_expressions.array_cos_float_compute
+KHR-GL43.constant_expressions.array_cos_float_geometry
+KHR-GL43.constant_expressions.array_cos_float_tess_control
+KHR-GL43.constant_expressions.array_cos_float_tess_eval
+KHR-GL43.constant_expressions.array_cos_vec2_vertex
+KHR-GL43.constant_expressions.array_cos_vec2_fragment
+KHR-GL43.constant_expressions.array_cos_vec2_compute
+KHR-GL43.constant_expressions.array_cos_vec2_geometry
+KHR-GL43.constant_expressions.array_cos_vec2_tess_control
+KHR-GL43.constant_expressions.array_cos_vec2_tess_eval
+KHR-GL43.constant_expressions.array_cos_vec3_vertex
+KHR-GL43.constant_expressions.array_cos_vec3_fragment
+KHR-GL43.constant_expressions.array_cos_vec3_compute
+KHR-GL43.constant_expressions.array_cos_vec3_geometry
+KHR-GL43.constant_expressions.array_cos_vec3_tess_control
+KHR-GL43.constant_expressions.array_cos_vec3_tess_eval
+KHR-GL43.constant_expressions.array_cos_vec4_vertex
+KHR-GL43.constant_expressions.array_cos_vec4_fragment
+KHR-GL43.constant_expressions.array_cos_vec4_compute
+KHR-GL43.constant_expressions.array_cos_vec4_geometry
+KHR-GL43.constant_expressions.array_cos_vec4_tess_control
+KHR-GL43.constant_expressions.array_cos_vec4_tess_eval
+KHR-GL43.constant_expressions.array_asin_float_vertex
+KHR-GL43.constant_expressions.array_asin_float_fragment
+KHR-GL43.constant_expressions.array_asin_float_compute
+KHR-GL43.constant_expressions.array_asin_float_geometry
+KHR-GL43.constant_expressions.array_asin_float_tess_control
+KHR-GL43.constant_expressions.array_asin_float_tess_eval
+KHR-GL43.constant_expressions.array_asin_vec2_vertex
+KHR-GL43.constant_expressions.array_asin_vec2_fragment
+KHR-GL43.constant_expressions.array_asin_vec2_compute
+KHR-GL43.constant_expressions.array_asin_vec2_geometry
+KHR-GL43.constant_expressions.array_asin_vec2_tess_control
+KHR-GL43.constant_expressions.array_asin_vec2_tess_eval
+KHR-GL43.constant_expressions.array_asin_vec3_vertex
+KHR-GL43.constant_expressions.array_asin_vec3_fragment
+KHR-GL43.constant_expressions.array_asin_vec3_compute
+KHR-GL43.constant_expressions.array_asin_vec3_geometry
+KHR-GL43.constant_expressions.array_asin_vec3_tess_control
+KHR-GL43.constant_expressions.array_asin_vec3_tess_eval
+KHR-GL43.constant_expressions.array_asin_vec4_vertex
+KHR-GL43.constant_expressions.array_asin_vec4_fragment
+KHR-GL43.constant_expressions.array_asin_vec4_compute
+KHR-GL43.constant_expressions.array_asin_vec4_geometry
+KHR-GL43.constant_expressions.array_asin_vec4_tess_control
+KHR-GL43.constant_expressions.array_asin_vec4_tess_eval
+KHR-GL43.constant_expressions.array_acos_float_vertex
+KHR-GL43.constant_expressions.array_acos_float_fragment
+KHR-GL43.constant_expressions.array_acos_float_compute
+KHR-GL43.constant_expressions.array_acos_float_geometry
+KHR-GL43.constant_expressions.array_acos_float_tess_control
+KHR-GL43.constant_expressions.array_acos_float_tess_eval
+KHR-GL43.constant_expressions.array_acos_vec2_vertex
+KHR-GL43.constant_expressions.array_acos_vec2_fragment
+KHR-GL43.constant_expressions.array_acos_vec2_compute
+KHR-GL43.constant_expressions.array_acos_vec2_geometry
+KHR-GL43.constant_expressions.array_acos_vec2_tess_control
+KHR-GL43.constant_expressions.array_acos_vec2_tess_eval
+KHR-GL43.constant_expressions.array_acos_vec3_vertex
+KHR-GL43.constant_expressions.array_acos_vec3_fragment
+KHR-GL43.constant_expressions.array_acos_vec3_compute
+KHR-GL43.constant_expressions.array_acos_vec3_geometry
+KHR-GL43.constant_expressions.array_acos_vec3_tess_control
+KHR-GL43.constant_expressions.array_acos_vec3_tess_eval
+KHR-GL43.constant_expressions.array_acos_vec4_vertex
+KHR-GL43.constant_expressions.array_acos_vec4_fragment
+KHR-GL43.constant_expressions.array_acos_vec4_compute
+KHR-GL43.constant_expressions.array_acos_vec4_geometry
+KHR-GL43.constant_expressions.array_acos_vec4_tess_control
+KHR-GL43.constant_expressions.array_acos_vec4_tess_eval
+KHR-GL43.constant_expressions.array_pow_float_vertex
+KHR-GL43.constant_expressions.array_pow_float_fragment
+KHR-GL43.constant_expressions.array_pow_float_compute
+KHR-GL43.constant_expressions.array_pow_float_geometry
+KHR-GL43.constant_expressions.array_pow_float_tess_control
+KHR-GL43.constant_expressions.array_pow_float_tess_eval
+KHR-GL43.constant_expressions.array_pow_vec2_vertex
+KHR-GL43.constant_expressions.array_pow_vec2_fragment
+KHR-GL43.constant_expressions.array_pow_vec2_compute
+KHR-GL43.constant_expressions.array_pow_vec2_geometry
+KHR-GL43.constant_expressions.array_pow_vec2_tess_control
+KHR-GL43.constant_expressions.array_pow_vec2_tess_eval
+KHR-GL43.constant_expressions.array_pow_vec3_vertex
+KHR-GL43.constant_expressions.array_pow_vec3_fragment
+KHR-GL43.constant_expressions.array_pow_vec3_compute
+KHR-GL43.constant_expressions.array_pow_vec3_geometry
+KHR-GL43.constant_expressions.array_pow_vec3_tess_control
+KHR-GL43.constant_expressions.array_pow_vec3_tess_eval
+KHR-GL43.constant_expressions.array_pow_vec4_vertex
+KHR-GL43.constant_expressions.array_pow_vec4_fragment
+KHR-GL43.constant_expressions.array_pow_vec4_compute
+KHR-GL43.constant_expressions.array_pow_vec4_geometry
+KHR-GL43.constant_expressions.array_pow_vec4_tess_control
+KHR-GL43.constant_expressions.array_pow_vec4_tess_eval
+KHR-GL43.constant_expressions.array_exp_float_vertex
+KHR-GL43.constant_expressions.array_exp_float_fragment
+KHR-GL43.constant_expressions.array_exp_float_compute
+KHR-GL43.constant_expressions.array_exp_float_geometry
+KHR-GL43.constant_expressions.array_exp_float_tess_control
+KHR-GL43.constant_expressions.array_exp_float_tess_eval
+KHR-GL43.constant_expressions.array_exp_vec2_vertex
+KHR-GL43.constant_expressions.array_exp_vec2_fragment
+KHR-GL43.constant_expressions.array_exp_vec2_compute
+KHR-GL43.constant_expressions.array_exp_vec2_geometry
+KHR-GL43.constant_expressions.array_exp_vec2_tess_control
+KHR-GL43.constant_expressions.array_exp_vec2_tess_eval
+KHR-GL43.constant_expressions.array_exp_vec3_vertex
+KHR-GL43.constant_expressions.array_exp_vec3_fragment
+KHR-GL43.constant_expressions.array_exp_vec3_compute
+KHR-GL43.constant_expressions.array_exp_vec3_geometry
+KHR-GL43.constant_expressions.array_exp_vec3_tess_control
+KHR-GL43.constant_expressions.array_exp_vec3_tess_eval
+KHR-GL43.constant_expressions.array_exp_vec4_vertex
+KHR-GL43.constant_expressions.array_exp_vec4_fragment
+KHR-GL43.constant_expressions.array_exp_vec4_compute
+KHR-GL43.constant_expressions.array_exp_vec4_geometry
+KHR-GL43.constant_expressions.array_exp_vec4_tess_control
+KHR-GL43.constant_expressions.array_exp_vec4_tess_eval
+KHR-GL43.constant_expressions.array_log_float_vertex
+KHR-GL43.constant_expressions.array_log_float_fragment
+KHR-GL43.constant_expressions.array_log_float_compute
+KHR-GL43.constant_expressions.array_log_float_geometry
+KHR-GL43.constant_expressions.array_log_float_tess_control
+KHR-GL43.constant_expressions.array_log_float_tess_eval
+KHR-GL43.constant_expressions.array_log_vec2_vertex
+KHR-GL43.constant_expressions.array_log_vec2_fragment
+KHR-GL43.constant_expressions.array_log_vec2_compute
+KHR-GL43.constant_expressions.array_log_vec2_geometry
+KHR-GL43.constant_expressions.array_log_vec2_tess_control
+KHR-GL43.constant_expressions.array_log_vec2_tess_eval
+KHR-GL43.constant_expressions.array_log_vec3_vertex
+KHR-GL43.constant_expressions.array_log_vec3_fragment
+KHR-GL43.constant_expressions.array_log_vec3_compute
+KHR-GL43.constant_expressions.array_log_vec3_geometry
+KHR-GL43.constant_expressions.array_log_vec3_tess_control
+KHR-GL43.constant_expressions.array_log_vec3_tess_eval
+KHR-GL43.constant_expressions.array_log_vec4_vertex
+KHR-GL43.constant_expressions.array_log_vec4_fragment
+KHR-GL43.constant_expressions.array_log_vec4_compute
+KHR-GL43.constant_expressions.array_log_vec4_geometry
+KHR-GL43.constant_expressions.array_log_vec4_tess_control
+KHR-GL43.constant_expressions.array_log_vec4_tess_eval
+KHR-GL43.constant_expressions.array_exp2_float_vertex
+KHR-GL43.constant_expressions.array_exp2_float_fragment
+KHR-GL43.constant_expressions.array_exp2_float_compute
+KHR-GL43.constant_expressions.array_exp2_float_geometry
+KHR-GL43.constant_expressions.array_exp2_float_tess_control
+KHR-GL43.constant_expressions.array_exp2_float_tess_eval
+KHR-GL43.constant_expressions.array_exp2_vec2_vertex
+KHR-GL43.constant_expressions.array_exp2_vec2_fragment
+KHR-GL43.constant_expressions.array_exp2_vec2_compute
+KHR-GL43.constant_expressions.array_exp2_vec2_geometry
+KHR-GL43.constant_expressions.array_exp2_vec2_tess_control
+KHR-GL43.constant_expressions.array_exp2_vec2_tess_eval
+KHR-GL43.constant_expressions.array_exp2_vec3_vertex
+KHR-GL43.constant_expressions.array_exp2_vec3_fragment
+KHR-GL43.constant_expressions.array_exp2_vec3_compute
+KHR-GL43.constant_expressions.array_exp2_vec3_geometry
+KHR-GL43.constant_expressions.array_exp2_vec3_tess_control
+KHR-GL43.constant_expressions.array_exp2_vec3_tess_eval
+KHR-GL43.constant_expressions.array_exp2_vec4_vertex
+KHR-GL43.constant_expressions.array_exp2_vec4_fragment
+KHR-GL43.constant_expressions.array_exp2_vec4_compute
+KHR-GL43.constant_expressions.array_exp2_vec4_geometry
+KHR-GL43.constant_expressions.array_exp2_vec4_tess_control
+KHR-GL43.constant_expressions.array_exp2_vec4_tess_eval
+KHR-GL43.constant_expressions.array_log2_float_vertex
+KHR-GL43.constant_expressions.array_log2_float_fragment
+KHR-GL43.constant_expressions.array_log2_float_compute
+KHR-GL43.constant_expressions.array_log2_float_geometry
+KHR-GL43.constant_expressions.array_log2_float_tess_control
+KHR-GL43.constant_expressions.array_log2_float_tess_eval
+KHR-GL43.constant_expressions.array_log2_vec2_vertex
+KHR-GL43.constant_expressions.array_log2_vec2_fragment
+KHR-GL43.constant_expressions.array_log2_vec2_compute
+KHR-GL43.constant_expressions.array_log2_vec2_geometry
+KHR-GL43.constant_expressions.array_log2_vec2_tess_control
+KHR-GL43.constant_expressions.array_log2_vec2_tess_eval
+KHR-GL43.constant_expressions.array_log2_vec3_vertex
+KHR-GL43.constant_expressions.array_log2_vec3_fragment
+KHR-GL43.constant_expressions.array_log2_vec3_compute
+KHR-GL43.constant_expressions.array_log2_vec3_geometry
+KHR-GL43.constant_expressions.array_log2_vec3_tess_control
+KHR-GL43.constant_expressions.array_log2_vec3_tess_eval
+KHR-GL43.constant_expressions.array_log2_vec4_vertex
+KHR-GL43.constant_expressions.array_log2_vec4_fragment
+KHR-GL43.constant_expressions.array_log2_vec4_compute
+KHR-GL43.constant_expressions.array_log2_vec4_geometry
+KHR-GL43.constant_expressions.array_log2_vec4_tess_control
+KHR-GL43.constant_expressions.array_log2_vec4_tess_eval
+KHR-GL43.constant_expressions.array_sqrt_float_vertex
+KHR-GL43.constant_expressions.array_sqrt_float_fragment
+KHR-GL43.constant_expressions.array_sqrt_float_compute
+KHR-GL43.constant_expressions.array_sqrt_float_geometry
+KHR-GL43.constant_expressions.array_sqrt_float_tess_control
+KHR-GL43.constant_expressions.array_sqrt_float_tess_eval
+KHR-GL43.constant_expressions.array_sqrt_vec2_vertex
+KHR-GL43.constant_expressions.array_sqrt_vec2_fragment
+KHR-GL43.constant_expressions.array_sqrt_vec2_compute
+KHR-GL43.constant_expressions.array_sqrt_vec2_geometry
+KHR-GL43.constant_expressions.array_sqrt_vec2_tess_control
+KHR-GL43.constant_expressions.array_sqrt_vec2_tess_eval
+KHR-GL43.constant_expressions.array_sqrt_vec3_vertex
+KHR-GL43.constant_expressions.array_sqrt_vec3_fragment
+KHR-GL43.constant_expressions.array_sqrt_vec3_compute
+KHR-GL43.constant_expressions.array_sqrt_vec3_geometry
+KHR-GL43.constant_expressions.array_sqrt_vec3_tess_control
+KHR-GL43.constant_expressions.array_sqrt_vec3_tess_eval
+KHR-GL43.constant_expressions.array_sqrt_vec4_vertex
+KHR-GL43.constant_expressions.array_sqrt_vec4_fragment
+KHR-GL43.constant_expressions.array_sqrt_vec4_compute
+KHR-GL43.constant_expressions.array_sqrt_vec4_geometry
+KHR-GL43.constant_expressions.array_sqrt_vec4_tess_control
+KHR-GL43.constant_expressions.array_sqrt_vec4_tess_eval
+KHR-GL43.constant_expressions.array_inversesqrt_float_vertex
+KHR-GL43.constant_expressions.array_inversesqrt_float_fragment
+KHR-GL43.constant_expressions.array_inversesqrt_float_compute
+KHR-GL43.constant_expressions.array_inversesqrt_float_geometry
+KHR-GL43.constant_expressions.array_inversesqrt_float_tess_control
+KHR-GL43.constant_expressions.array_inversesqrt_float_tess_eval
+KHR-GL43.constant_expressions.array_inversesqrt_vec2_vertex
+KHR-GL43.constant_expressions.array_inversesqrt_vec2_fragment
+KHR-GL43.constant_expressions.array_inversesqrt_vec2_compute
+KHR-GL43.constant_expressions.array_inversesqrt_vec2_geometry
+KHR-GL43.constant_expressions.array_inversesqrt_vec2_tess_control
+KHR-GL43.constant_expressions.array_inversesqrt_vec2_tess_eval
+KHR-GL43.constant_expressions.array_inversesqrt_vec3_vertex
+KHR-GL43.constant_expressions.array_inversesqrt_vec3_fragment
+KHR-GL43.constant_expressions.array_inversesqrt_vec3_compute
+KHR-GL43.constant_expressions.array_inversesqrt_vec3_geometry
+KHR-GL43.constant_expressions.array_inversesqrt_vec3_tess_control
+KHR-GL43.constant_expressions.array_inversesqrt_vec3_tess_eval
+KHR-GL43.constant_expressions.array_inversesqrt_vec4_vertex
+KHR-GL43.constant_expressions.array_inversesqrt_vec4_fragment
+KHR-GL43.constant_expressions.array_inversesqrt_vec4_compute
+KHR-GL43.constant_expressions.array_inversesqrt_vec4_geometry
+KHR-GL43.constant_expressions.array_inversesqrt_vec4_tess_control
+KHR-GL43.constant_expressions.array_inversesqrt_vec4_tess_eval
+KHR-GL43.constant_expressions.array_abs_int_vertex
+KHR-GL43.constant_expressions.array_abs_int_fragment
+KHR-GL43.constant_expressions.array_abs_int_compute
+KHR-GL43.constant_expressions.array_abs_int_geometry
+KHR-GL43.constant_expressions.array_abs_int_tess_control
+KHR-GL43.constant_expressions.array_abs_int_tess_eval
+KHR-GL43.constant_expressions.array_abs_ivec2_vertex
+KHR-GL43.constant_expressions.array_abs_ivec2_fragment
+KHR-GL43.constant_expressions.array_abs_ivec2_compute
+KHR-GL43.constant_expressions.array_abs_ivec2_geometry
+KHR-GL43.constant_expressions.array_abs_ivec2_tess_control
+KHR-GL43.constant_expressions.array_abs_ivec2_tess_eval
+KHR-GL43.constant_expressions.array_abs_ivec3_vertex
+KHR-GL43.constant_expressions.array_abs_ivec3_fragment
+KHR-GL43.constant_expressions.array_abs_ivec3_compute
+KHR-GL43.constant_expressions.array_abs_ivec3_geometry
+KHR-GL43.constant_expressions.array_abs_ivec3_tess_control
+KHR-GL43.constant_expressions.array_abs_ivec3_tess_eval
+KHR-GL43.constant_expressions.array_abs_ivec4_vertex
+KHR-GL43.constant_expressions.array_abs_ivec4_fragment
+KHR-GL43.constant_expressions.array_abs_ivec4_compute
+KHR-GL43.constant_expressions.array_abs_ivec4_geometry
+KHR-GL43.constant_expressions.array_abs_ivec4_tess_control
+KHR-GL43.constant_expressions.array_abs_ivec4_tess_eval
+KHR-GL43.constant_expressions.array_sign_float_vertex
+KHR-GL43.constant_expressions.array_sign_float_fragment
+KHR-GL43.constant_expressions.array_sign_float_compute
+KHR-GL43.constant_expressions.array_sign_float_geometry
+KHR-GL43.constant_expressions.array_sign_float_tess_control
+KHR-GL43.constant_expressions.array_sign_float_tess_eval
+KHR-GL43.constant_expressions.array_sign_vec2_vertex
+KHR-GL43.constant_expressions.array_sign_vec2_fragment
+KHR-GL43.constant_expressions.array_sign_vec2_compute
+KHR-GL43.constant_expressions.array_sign_vec2_geometry
+KHR-GL43.constant_expressions.array_sign_vec2_tess_control
+KHR-GL43.constant_expressions.array_sign_vec2_tess_eval
+KHR-GL43.constant_expressions.array_sign_vec3_vertex
+KHR-GL43.constant_expressions.array_sign_vec3_fragment
+KHR-GL43.constant_expressions.array_sign_vec3_compute
+KHR-GL43.constant_expressions.array_sign_vec3_geometry
+KHR-GL43.constant_expressions.array_sign_vec3_tess_control
+KHR-GL43.constant_expressions.array_sign_vec3_tess_eval
+KHR-GL43.constant_expressions.array_sign_vec4_vertex
+KHR-GL43.constant_expressions.array_sign_vec4_fragment
+KHR-GL43.constant_expressions.array_sign_vec4_compute
+KHR-GL43.constant_expressions.array_sign_vec4_geometry
+KHR-GL43.constant_expressions.array_sign_vec4_tess_control
+KHR-GL43.constant_expressions.array_sign_vec4_tess_eval
+KHR-GL43.constant_expressions.array_floor_float_vertex
+KHR-GL43.constant_expressions.array_floor_float_fragment
+KHR-GL43.constant_expressions.array_floor_float_compute
+KHR-GL43.constant_expressions.array_floor_float_geometry
+KHR-GL43.constant_expressions.array_floor_float_tess_control
+KHR-GL43.constant_expressions.array_floor_float_tess_eval
+KHR-GL43.constant_expressions.array_floor_vec2_vertex
+KHR-GL43.constant_expressions.array_floor_vec2_fragment
+KHR-GL43.constant_expressions.array_floor_vec2_compute
+KHR-GL43.constant_expressions.array_floor_vec2_geometry
+KHR-GL43.constant_expressions.array_floor_vec2_tess_control
+KHR-GL43.constant_expressions.array_floor_vec2_tess_eval
+KHR-GL43.constant_expressions.array_floor_vec3_vertex
+KHR-GL43.constant_expressions.array_floor_vec3_fragment
+KHR-GL43.constant_expressions.array_floor_vec3_compute
+KHR-GL43.constant_expressions.array_floor_vec3_geometry
+KHR-GL43.constant_expressions.array_floor_vec3_tess_control
+KHR-GL43.constant_expressions.array_floor_vec3_tess_eval
+KHR-GL43.constant_expressions.array_floor_vec4_vertex
+KHR-GL43.constant_expressions.array_floor_vec4_fragment
+KHR-GL43.constant_expressions.array_floor_vec4_compute
+KHR-GL43.constant_expressions.array_floor_vec4_geometry
+KHR-GL43.constant_expressions.array_floor_vec4_tess_control
+KHR-GL43.constant_expressions.array_floor_vec4_tess_eval
+KHR-GL43.constant_expressions.array_trunc_float_vertex
+KHR-GL43.constant_expressions.array_trunc_float_fragment
+KHR-GL43.constant_expressions.array_trunc_float_compute
+KHR-GL43.constant_expressions.array_trunc_float_geometry
+KHR-GL43.constant_expressions.array_trunc_float_tess_control
+KHR-GL43.constant_expressions.array_trunc_float_tess_eval
+KHR-GL43.constant_expressions.array_trunc_vec2_vertex
+KHR-GL43.constant_expressions.array_trunc_vec2_fragment
+KHR-GL43.constant_expressions.array_trunc_vec2_compute
+KHR-GL43.constant_expressions.array_trunc_vec2_geometry
+KHR-GL43.constant_expressions.array_trunc_vec2_tess_control
+KHR-GL43.constant_expressions.array_trunc_vec2_tess_eval
+KHR-GL43.constant_expressions.array_trunc_vec3_vertex
+KHR-GL43.constant_expressions.array_trunc_vec3_fragment
+KHR-GL43.constant_expressions.array_trunc_vec3_compute
+KHR-GL43.constant_expressions.array_trunc_vec3_geometry
+KHR-GL43.constant_expressions.array_trunc_vec3_tess_control
+KHR-GL43.constant_expressions.array_trunc_vec3_tess_eval
+KHR-GL43.constant_expressions.array_trunc_vec4_vertex
+KHR-GL43.constant_expressions.array_trunc_vec4_fragment
+KHR-GL43.constant_expressions.array_trunc_vec4_compute
+KHR-GL43.constant_expressions.array_trunc_vec4_geometry
+KHR-GL43.constant_expressions.array_trunc_vec4_tess_control
+KHR-GL43.constant_expressions.array_trunc_vec4_tess_eval
+KHR-GL43.constant_expressions.array_round_float_vertex
+KHR-GL43.constant_expressions.array_round_float_fragment
+KHR-GL43.constant_expressions.array_round_float_compute
+KHR-GL43.constant_expressions.array_round_float_geometry
+KHR-GL43.constant_expressions.array_round_float_tess_control
+KHR-GL43.constant_expressions.array_round_float_tess_eval
+KHR-GL43.constant_expressions.array_round_vec2_vertex
+KHR-GL43.constant_expressions.array_round_vec2_fragment
+KHR-GL43.constant_expressions.array_round_vec2_compute
+KHR-GL43.constant_expressions.array_round_vec2_geometry
+KHR-GL43.constant_expressions.array_round_vec2_tess_control
+KHR-GL43.constant_expressions.array_round_vec2_tess_eval
+KHR-GL43.constant_expressions.array_round_vec3_vertex
+KHR-GL43.constant_expressions.array_round_vec3_fragment
+KHR-GL43.constant_expressions.array_round_vec3_compute
+KHR-GL43.constant_expressions.array_round_vec3_geometry
+KHR-GL43.constant_expressions.array_round_vec3_tess_control
+KHR-GL43.constant_expressions.array_round_vec3_tess_eval
+KHR-GL43.constant_expressions.array_round_vec4_vertex
+KHR-GL43.constant_expressions.array_round_vec4_fragment
+KHR-GL43.constant_expressions.array_round_vec4_compute
+KHR-GL43.constant_expressions.array_round_vec4_geometry
+KHR-GL43.constant_expressions.array_round_vec4_tess_control
+KHR-GL43.constant_expressions.array_round_vec4_tess_eval
+KHR-GL43.constant_expressions.array_ceil_float_vertex
+KHR-GL43.constant_expressions.array_ceil_float_fragment
+KHR-GL43.constant_expressions.array_ceil_float_compute
+KHR-GL43.constant_expressions.array_ceil_float_geometry
+KHR-GL43.constant_expressions.array_ceil_float_tess_control
+KHR-GL43.constant_expressions.array_ceil_float_tess_eval
+KHR-GL43.constant_expressions.array_ceil_vec2_vertex
+KHR-GL43.constant_expressions.array_ceil_vec2_fragment
+KHR-GL43.constant_expressions.array_ceil_vec2_compute
+KHR-GL43.constant_expressions.array_ceil_vec2_geometry
+KHR-GL43.constant_expressions.array_ceil_vec2_tess_control
+KHR-GL43.constant_expressions.array_ceil_vec2_tess_eval
+KHR-GL43.constant_expressions.array_ceil_vec3_vertex
+KHR-GL43.constant_expressions.array_ceil_vec3_fragment
+KHR-GL43.constant_expressions.array_ceil_vec3_compute
+KHR-GL43.constant_expressions.array_ceil_vec3_geometry
+KHR-GL43.constant_expressions.array_ceil_vec3_tess_control
+KHR-GL43.constant_expressions.array_ceil_vec3_tess_eval
+KHR-GL43.constant_expressions.array_ceil_vec4_vertex
+KHR-GL43.constant_expressions.array_ceil_vec4_fragment
+KHR-GL43.constant_expressions.array_ceil_vec4_compute
+KHR-GL43.constant_expressions.array_ceil_vec4_geometry
+KHR-GL43.constant_expressions.array_ceil_vec4_tess_control
+KHR-GL43.constant_expressions.array_ceil_vec4_tess_eval
+KHR-GL43.constant_expressions.array_mod_float_vertex
+KHR-GL43.constant_expressions.array_mod_float_fragment
+KHR-GL43.constant_expressions.array_mod_float_compute
+KHR-GL43.constant_expressions.array_mod_float_geometry
+KHR-GL43.constant_expressions.array_mod_float_tess_control
+KHR-GL43.constant_expressions.array_mod_float_tess_eval
+KHR-GL43.constant_expressions.array_mod_vec2_vertex
+KHR-GL43.constant_expressions.array_mod_vec2_fragment
+KHR-GL43.constant_expressions.array_mod_vec2_compute
+KHR-GL43.constant_expressions.array_mod_vec2_geometry
+KHR-GL43.constant_expressions.array_mod_vec2_tess_control
+KHR-GL43.constant_expressions.array_mod_vec2_tess_eval
+KHR-GL43.constant_expressions.array_mod_vec2_float_vertex
+KHR-GL43.constant_expressions.array_mod_vec2_float_fragment
+KHR-GL43.constant_expressions.array_mod_vec2_float_compute
+KHR-GL43.constant_expressions.array_mod_vec2_float_geometry
+KHR-GL43.constant_expressions.array_mod_vec2_float_tess_control
+KHR-GL43.constant_expressions.array_mod_vec2_float_tess_eval
+KHR-GL43.constant_expressions.array_mod_vec3_vertex
+KHR-GL43.constant_expressions.array_mod_vec3_fragment
+KHR-GL43.constant_expressions.array_mod_vec3_compute
+KHR-GL43.constant_expressions.array_mod_vec3_geometry
+KHR-GL43.constant_expressions.array_mod_vec3_tess_control
+KHR-GL43.constant_expressions.array_mod_vec3_tess_eval
+KHR-GL43.constant_expressions.array_mod_vec3_float_vertex
+KHR-GL43.constant_expressions.array_mod_vec3_float_fragment
+KHR-GL43.constant_expressions.array_mod_vec3_float_compute
+KHR-GL43.constant_expressions.array_mod_vec3_float_geometry
+KHR-GL43.constant_expressions.array_mod_vec3_float_tess_control
+KHR-GL43.constant_expressions.array_mod_vec3_float_tess_eval
+KHR-GL43.constant_expressions.array_mod_vec4_vertex
+KHR-GL43.constant_expressions.array_mod_vec4_fragment
+KHR-GL43.constant_expressions.array_mod_vec4_compute
+KHR-GL43.constant_expressions.array_mod_vec4_geometry
+KHR-GL43.constant_expressions.array_mod_vec4_tess_control
+KHR-GL43.constant_expressions.array_mod_vec4_tess_eval
+KHR-GL43.constant_expressions.array_mod_vec4_float_vertex
+KHR-GL43.constant_expressions.array_mod_vec4_float_fragment
+KHR-GL43.constant_expressions.array_mod_vec4_float_compute
+KHR-GL43.constant_expressions.array_mod_vec4_float_geometry
+KHR-GL43.constant_expressions.array_mod_vec4_float_tess_control
+KHR-GL43.constant_expressions.array_mod_vec4_float_tess_eval
+KHR-GL43.constant_expressions.array_min_float_vertex
+KHR-GL43.constant_expressions.array_min_float_fragment
+KHR-GL43.constant_expressions.array_min_float_compute
+KHR-GL43.constant_expressions.array_min_float_geometry
+KHR-GL43.constant_expressions.array_min_float_tess_control
+KHR-GL43.constant_expressions.array_min_float_tess_eval
+KHR-GL43.constant_expressions.array_min_vec2_vertex
+KHR-GL43.constant_expressions.array_min_vec2_fragment
+KHR-GL43.constant_expressions.array_min_vec2_compute
+KHR-GL43.constant_expressions.array_min_vec2_geometry
+KHR-GL43.constant_expressions.array_min_vec2_tess_control
+KHR-GL43.constant_expressions.array_min_vec2_tess_eval
+KHR-GL43.constant_expressions.array_min_vec2_float_vertex
+KHR-GL43.constant_expressions.array_min_vec2_float_fragment
+KHR-GL43.constant_expressions.array_min_vec2_float_compute
+KHR-GL43.constant_expressions.array_min_vec2_float_geometry
+KHR-GL43.constant_expressions.array_min_vec2_float_tess_control
+KHR-GL43.constant_expressions.array_min_vec2_float_tess_eval
+KHR-GL43.constant_expressions.array_min_vec3_vertex
+KHR-GL43.constant_expressions.array_min_vec3_fragment
+KHR-GL43.constant_expressions.array_min_vec3_compute
+KHR-GL43.constant_expressions.array_min_vec3_geometry
+KHR-GL43.constant_expressions.array_min_vec3_tess_control
+KHR-GL43.constant_expressions.array_min_vec3_tess_eval
+KHR-GL43.constant_expressions.array_min_vec3_float_vertex
+KHR-GL43.constant_expressions.array_min_vec3_float_fragment
+KHR-GL43.constant_expressions.array_min_vec3_float_compute
+KHR-GL43.constant_expressions.array_min_vec3_float_geometry
+KHR-GL43.constant_expressions.array_min_vec3_float_tess_control
+KHR-GL43.constant_expressions.array_min_vec3_float_tess_eval
+KHR-GL43.constant_expressions.array_min_vec4_vertex
+KHR-GL43.constant_expressions.array_min_vec4_fragment
+KHR-GL43.constant_expressions.array_min_vec4_compute
+KHR-GL43.constant_expressions.array_min_vec4_geometry
+KHR-GL43.constant_expressions.array_min_vec4_tess_control
+KHR-GL43.constant_expressions.array_min_vec4_tess_eval
+KHR-GL43.constant_expressions.array_min_vec4_float_vertex
+KHR-GL43.constant_expressions.array_min_vec4_float_fragment
+KHR-GL43.constant_expressions.array_min_vec4_float_compute
+KHR-GL43.constant_expressions.array_min_vec4_float_geometry
+KHR-GL43.constant_expressions.array_min_vec4_float_tess_control
+KHR-GL43.constant_expressions.array_min_vec4_float_tess_eval
+KHR-GL43.constant_expressions.array_max_float_vertex
+KHR-GL43.constant_expressions.array_max_float_fragment
+KHR-GL43.constant_expressions.array_max_float_compute
+KHR-GL43.constant_expressions.array_max_float_geometry
+KHR-GL43.constant_expressions.array_max_float_tess_control
+KHR-GL43.constant_expressions.array_max_float_tess_eval
+KHR-GL43.constant_expressions.array_max_vec2_vertex
+KHR-GL43.constant_expressions.array_max_vec2_fragment
+KHR-GL43.constant_expressions.array_max_vec2_compute
+KHR-GL43.constant_expressions.array_max_vec2_geometry
+KHR-GL43.constant_expressions.array_max_vec2_tess_control
+KHR-GL43.constant_expressions.array_max_vec2_tess_eval
+KHR-GL43.constant_expressions.array_max_vec2_float_vertex
+KHR-GL43.constant_expressions.array_max_vec2_float_fragment
+KHR-GL43.constant_expressions.array_max_vec2_float_compute
+KHR-GL43.constant_expressions.array_max_vec2_float_geometry
+KHR-GL43.constant_expressions.array_max_vec2_float_tess_control
+KHR-GL43.constant_expressions.array_max_vec2_float_tess_eval
+KHR-GL43.constant_expressions.array_max_vec3_vertex
+KHR-GL43.constant_expressions.array_max_vec3_fragment
+KHR-GL43.constant_expressions.array_max_vec3_compute
+KHR-GL43.constant_expressions.array_max_vec3_geometry
+KHR-GL43.constant_expressions.array_max_vec3_tess_control
+KHR-GL43.constant_expressions.array_max_vec3_tess_eval
+KHR-GL43.constant_expressions.array_max_vec3_float_vertex
+KHR-GL43.constant_expressions.array_max_vec3_float_fragment
+KHR-GL43.constant_expressions.array_max_vec3_float_compute
+KHR-GL43.constant_expressions.array_max_vec3_float_geometry
+KHR-GL43.constant_expressions.array_max_vec3_float_tess_control
+KHR-GL43.constant_expressions.array_max_vec3_float_tess_eval
+KHR-GL43.constant_expressions.array_max_vec4_vertex
+KHR-GL43.constant_expressions.array_max_vec4_fragment
+KHR-GL43.constant_expressions.array_max_vec4_compute
+KHR-GL43.constant_expressions.array_max_vec4_geometry
+KHR-GL43.constant_expressions.array_max_vec4_tess_control
+KHR-GL43.constant_expressions.array_max_vec4_tess_eval
+KHR-GL43.constant_expressions.array_max_vec4_float_vertex
+KHR-GL43.constant_expressions.array_max_vec4_float_fragment
+KHR-GL43.constant_expressions.array_max_vec4_float_compute
+KHR-GL43.constant_expressions.array_max_vec4_float_geometry
+KHR-GL43.constant_expressions.array_max_vec4_float_tess_control
+KHR-GL43.constant_expressions.array_max_vec4_float_tess_eval
+KHR-GL43.constant_expressions.array_clamp_float_vertex
+KHR-GL43.constant_expressions.array_clamp_float_fragment
+KHR-GL43.constant_expressions.array_clamp_float_compute
+KHR-GL43.constant_expressions.array_clamp_float_geometry
+KHR-GL43.constant_expressions.array_clamp_float_tess_control
+KHR-GL43.constant_expressions.array_clamp_float_tess_eval
+KHR-GL43.constant_expressions.array_clamp_vec2_vertex
+KHR-GL43.constant_expressions.array_clamp_vec2_fragment
+KHR-GL43.constant_expressions.array_clamp_vec2_compute
+KHR-GL43.constant_expressions.array_clamp_vec2_geometry
+KHR-GL43.constant_expressions.array_clamp_vec2_tess_control
+KHR-GL43.constant_expressions.array_clamp_vec2_tess_eval
+KHR-GL43.constant_expressions.array_clamp_vec2_float_vertex
+KHR-GL43.constant_expressions.array_clamp_vec2_float_fragment
+KHR-GL43.constant_expressions.array_clamp_vec2_float_compute
+KHR-GL43.constant_expressions.array_clamp_vec2_float_geometry
+KHR-GL43.constant_expressions.array_clamp_vec2_float_tess_control
+KHR-GL43.constant_expressions.array_clamp_vec2_float_tess_eval
+KHR-GL43.constant_expressions.array_clamp_vec3_vertex
+KHR-GL43.constant_expressions.array_clamp_vec3_fragment
+KHR-GL43.constant_expressions.array_clamp_vec3_compute
+KHR-GL43.constant_expressions.array_clamp_vec3_geometry
+KHR-GL43.constant_expressions.array_clamp_vec3_tess_control
+KHR-GL43.constant_expressions.array_clamp_vec3_tess_eval
+KHR-GL43.constant_expressions.array_clamp_vec3_float_vertex
+KHR-GL43.constant_expressions.array_clamp_vec3_float_fragment
+KHR-GL43.constant_expressions.array_clamp_vec3_float_compute
+KHR-GL43.constant_expressions.array_clamp_vec3_float_geometry
+KHR-GL43.constant_expressions.array_clamp_vec3_float_tess_control
+KHR-GL43.constant_expressions.array_clamp_vec3_float_tess_eval
+KHR-GL43.constant_expressions.array_clamp_vec4_vertex
+KHR-GL43.constant_expressions.array_clamp_vec4_fragment
+KHR-GL43.constant_expressions.array_clamp_vec4_compute
+KHR-GL43.constant_expressions.array_clamp_vec4_geometry
+KHR-GL43.constant_expressions.array_clamp_vec4_tess_control
+KHR-GL43.constant_expressions.array_clamp_vec4_tess_eval
+KHR-GL43.constant_expressions.array_clamp_vec4_float_vertex
+KHR-GL43.constant_expressions.array_clamp_vec4_float_fragment
+KHR-GL43.constant_expressions.array_clamp_vec4_float_compute
+KHR-GL43.constant_expressions.array_clamp_vec4_float_geometry
+KHR-GL43.constant_expressions.array_clamp_vec4_float_tess_control
+KHR-GL43.constant_expressions.array_clamp_vec4_float_tess_eval
+KHR-GL43.constant_expressions.array_length_float_vertex
+KHR-GL43.constant_expressions.array_length_float_fragment
+KHR-GL43.constant_expressions.array_length_float_compute
+KHR-GL43.constant_expressions.array_length_float_geometry
+KHR-GL43.constant_expressions.array_length_float_tess_control
+KHR-GL43.constant_expressions.array_length_float_tess_eval
+KHR-GL43.constant_expressions.array_length_vec2_vertex
+KHR-GL43.constant_expressions.array_length_vec2_fragment
+KHR-GL43.constant_expressions.array_length_vec2_compute
+KHR-GL43.constant_expressions.array_length_vec2_geometry
+KHR-GL43.constant_expressions.array_length_vec2_tess_control
+KHR-GL43.constant_expressions.array_length_vec2_tess_eval
+KHR-GL43.constant_expressions.array_length_vec3_vertex
+KHR-GL43.constant_expressions.array_length_vec3_fragment
+KHR-GL43.constant_expressions.array_length_vec3_compute
+KHR-GL43.constant_expressions.array_length_vec3_geometry
+KHR-GL43.constant_expressions.array_length_vec3_tess_control
+KHR-GL43.constant_expressions.array_length_vec3_tess_eval
+KHR-GL43.constant_expressions.array_length_vec4_vertex
+KHR-GL43.constant_expressions.array_length_vec4_fragment
+KHR-GL43.constant_expressions.array_length_vec4_compute
+KHR-GL43.constant_expressions.array_length_vec4_geometry
+KHR-GL43.constant_expressions.array_length_vec4_tess_control
+KHR-GL43.constant_expressions.array_length_vec4_tess_eval
+KHR-GL43.constant_expressions.array_dot_float_vertex
+KHR-GL43.constant_expressions.array_dot_float_fragment
+KHR-GL43.constant_expressions.array_dot_float_compute
+KHR-GL43.constant_expressions.array_dot_float_geometry
+KHR-GL43.constant_expressions.array_dot_float_tess_control
+KHR-GL43.constant_expressions.array_dot_float_tess_eval
+KHR-GL43.constant_expressions.array_dot_vec2_vertex
+KHR-GL43.constant_expressions.array_dot_vec2_fragment
+KHR-GL43.constant_expressions.array_dot_vec2_compute
+KHR-GL43.constant_expressions.array_dot_vec2_geometry
+KHR-GL43.constant_expressions.array_dot_vec2_tess_control
+KHR-GL43.constant_expressions.array_dot_vec2_tess_eval
+KHR-GL43.constant_expressions.array_dot_vec3_vertex
+KHR-GL43.constant_expressions.array_dot_vec3_fragment
+KHR-GL43.constant_expressions.array_dot_vec3_compute
+KHR-GL43.constant_expressions.array_dot_vec3_geometry
+KHR-GL43.constant_expressions.array_dot_vec3_tess_control
+KHR-GL43.constant_expressions.array_dot_vec3_tess_eval
+KHR-GL43.constant_expressions.array_dot_vec4_vertex
+KHR-GL43.constant_expressions.array_dot_vec4_fragment
+KHR-GL43.constant_expressions.array_dot_vec4_compute
+KHR-GL43.constant_expressions.array_dot_vec4_geometry
+KHR-GL43.constant_expressions.array_dot_vec4_tess_control
+KHR-GL43.constant_expressions.array_dot_vec4_tess_eval
+KHR-GL43.constant_expressions.array_normalize_float_vertex
+KHR-GL43.constant_expressions.array_normalize_float_fragment
+KHR-GL43.constant_expressions.array_normalize_float_compute
+KHR-GL43.constant_expressions.array_normalize_float_geometry
+KHR-GL43.constant_expressions.array_normalize_float_tess_control
+KHR-GL43.constant_expressions.array_normalize_float_tess_eval
+KHR-GL43.constant_expressions.array_normalize_vec2_vertex
+KHR-GL43.constant_expressions.array_normalize_vec2_fragment
+KHR-GL43.constant_expressions.array_normalize_vec2_compute
+KHR-GL43.constant_expressions.array_normalize_vec2_geometry
+KHR-GL43.constant_expressions.array_normalize_vec2_tess_control
+KHR-GL43.constant_expressions.array_normalize_vec2_tess_eval
+KHR-GL43.constant_expressions.array_normalize_vec3_vertex
+KHR-GL43.constant_expressions.array_normalize_vec3_fragment
+KHR-GL43.constant_expressions.array_normalize_vec3_compute
+KHR-GL43.constant_expressions.array_normalize_vec3_geometry
+KHR-GL43.constant_expressions.array_normalize_vec3_tess_control
+KHR-GL43.constant_expressions.array_normalize_vec3_tess_eval
+KHR-GL43.constant_expressions.array_normalize_vec4_vertex
+KHR-GL43.constant_expressions.array_normalize_vec4_fragment
+KHR-GL43.constant_expressions.array_normalize_vec4_compute
+KHR-GL43.constant_expressions.array_normalize_vec4_geometry
+KHR-GL43.constant_expressions.array_normalize_vec4_tess_control
+KHR-GL43.constant_expressions.array_normalize_vec4_tess_eval
diff --git a/external/openglcts/data/mustpass/gl/khronos_mustpass/4.5.5.x/gl44-master.txt b/external/openglcts/data/mustpass/gl/khronos_mustpass/4.5.5.x/gl44-master.txt
index 1fc84b7..51e7861 100644
--- a/external/openglcts/data/mustpass/gl/khronos_mustpass/4.5.5.x/gl44-master.txt
+++ b/external/openglcts/data/mustpass/gl/khronos_mustpass/4.5.5.x/gl44-master.txt
@@ -2798,7 +2798,6 @@
KHR-GL44.shader_subroutine.subroutine_uniform_reset
KHR-GL44.shader_subroutine.same_subroutine_and_subroutine_uniform_but_different_type_used_in_all_stages
KHR-GL44.shader_subroutine.control_flow_and_returned_subroutine_values_used_as_subroutine_input
-KHR-GL44.shader_subroutine.multiple_contexts
KHR-GL44.shader_subroutine.subroutine_errors
KHR-GL44.shader_subroutine.subroutine_uniform_scope
KHR-GL44.shader_subroutine.missing_subroutine_keyword
@@ -3861,6 +3860,1398 @@
KHR-GL44.shader_ballot_tests.ShaderBallotBitmasks
KHR-GL44.shader_ballot_tests.ShaderBallotFunctionBallot
KHR-GL44.shader_ballot_tests.ShaderBallotFunctionRead
+KHR-GL44.constant_expressions.basic_radians_float_vertex
+KHR-GL44.constant_expressions.basic_radians_float_fragment
+KHR-GL44.constant_expressions.basic_radians_float_compute
+KHR-GL44.constant_expressions.basic_radians_float_geometry
+KHR-GL44.constant_expressions.basic_radians_float_tess_control
+KHR-GL44.constant_expressions.basic_radians_float_tess_eval
+KHR-GL44.constant_expressions.basic_radians_vec2_vertex
+KHR-GL44.constant_expressions.basic_radians_vec2_fragment
+KHR-GL44.constant_expressions.basic_radians_vec2_compute
+KHR-GL44.constant_expressions.basic_radians_vec2_geometry
+KHR-GL44.constant_expressions.basic_radians_vec2_tess_control
+KHR-GL44.constant_expressions.basic_radians_vec2_tess_eval
+KHR-GL44.constant_expressions.basic_radians_vec3_vertex
+KHR-GL44.constant_expressions.basic_radians_vec3_fragment
+KHR-GL44.constant_expressions.basic_radians_vec3_compute
+KHR-GL44.constant_expressions.basic_radians_vec3_geometry
+KHR-GL44.constant_expressions.basic_radians_vec3_tess_control
+KHR-GL44.constant_expressions.basic_radians_vec3_tess_eval
+KHR-GL44.constant_expressions.basic_radians_vec4_vertex
+KHR-GL44.constant_expressions.basic_radians_vec4_fragment
+KHR-GL44.constant_expressions.basic_radians_vec4_compute
+KHR-GL44.constant_expressions.basic_radians_vec4_geometry
+KHR-GL44.constant_expressions.basic_radians_vec4_tess_control
+KHR-GL44.constant_expressions.basic_radians_vec4_tess_eval
+KHR-GL44.constant_expressions.basic_degrees_float_vertex
+KHR-GL44.constant_expressions.basic_degrees_float_fragment
+KHR-GL44.constant_expressions.basic_degrees_float_compute
+KHR-GL44.constant_expressions.basic_degrees_float_geometry
+KHR-GL44.constant_expressions.basic_degrees_float_tess_control
+KHR-GL44.constant_expressions.basic_degrees_float_tess_eval
+KHR-GL44.constant_expressions.basic_degrees_vec2_vertex
+KHR-GL44.constant_expressions.basic_degrees_vec2_fragment
+KHR-GL44.constant_expressions.basic_degrees_vec2_compute
+KHR-GL44.constant_expressions.basic_degrees_vec2_geometry
+KHR-GL44.constant_expressions.basic_degrees_vec2_tess_control
+KHR-GL44.constant_expressions.basic_degrees_vec2_tess_eval
+KHR-GL44.constant_expressions.basic_degrees_vec3_vertex
+KHR-GL44.constant_expressions.basic_degrees_vec3_fragment
+KHR-GL44.constant_expressions.basic_degrees_vec3_compute
+KHR-GL44.constant_expressions.basic_degrees_vec3_geometry
+KHR-GL44.constant_expressions.basic_degrees_vec3_tess_control
+KHR-GL44.constant_expressions.basic_degrees_vec3_tess_eval
+KHR-GL44.constant_expressions.basic_degrees_vec4_vertex
+KHR-GL44.constant_expressions.basic_degrees_vec4_fragment
+KHR-GL44.constant_expressions.basic_degrees_vec4_compute
+KHR-GL44.constant_expressions.basic_degrees_vec4_geometry
+KHR-GL44.constant_expressions.basic_degrees_vec4_tess_control
+KHR-GL44.constant_expressions.basic_degrees_vec4_tess_eval
+KHR-GL44.constant_expressions.basic_sin_float_vertex
+KHR-GL44.constant_expressions.basic_sin_float_fragment
+KHR-GL44.constant_expressions.basic_sin_float_compute
+KHR-GL44.constant_expressions.basic_sin_float_geometry
+KHR-GL44.constant_expressions.basic_sin_float_tess_control
+KHR-GL44.constant_expressions.basic_sin_float_tess_eval
+KHR-GL44.constant_expressions.basic_sin_vec2_vertex
+KHR-GL44.constant_expressions.basic_sin_vec2_fragment
+KHR-GL44.constant_expressions.basic_sin_vec2_compute
+KHR-GL44.constant_expressions.basic_sin_vec2_geometry
+KHR-GL44.constant_expressions.basic_sin_vec2_tess_control
+KHR-GL44.constant_expressions.basic_sin_vec2_tess_eval
+KHR-GL44.constant_expressions.basic_sin_vec3_vertex
+KHR-GL44.constant_expressions.basic_sin_vec3_fragment
+KHR-GL44.constant_expressions.basic_sin_vec3_compute
+KHR-GL44.constant_expressions.basic_sin_vec3_geometry
+KHR-GL44.constant_expressions.basic_sin_vec3_tess_control
+KHR-GL44.constant_expressions.basic_sin_vec3_tess_eval
+KHR-GL44.constant_expressions.basic_sin_vec4_vertex
+KHR-GL44.constant_expressions.basic_sin_vec4_fragment
+KHR-GL44.constant_expressions.basic_sin_vec4_compute
+KHR-GL44.constant_expressions.basic_sin_vec4_geometry
+KHR-GL44.constant_expressions.basic_sin_vec4_tess_control
+KHR-GL44.constant_expressions.basic_sin_vec4_tess_eval
+KHR-GL44.constant_expressions.basic_cos_float_vertex
+KHR-GL44.constant_expressions.basic_cos_float_fragment
+KHR-GL44.constant_expressions.basic_cos_float_compute
+KHR-GL44.constant_expressions.basic_cos_float_geometry
+KHR-GL44.constant_expressions.basic_cos_float_tess_control
+KHR-GL44.constant_expressions.basic_cos_float_tess_eval
+KHR-GL44.constant_expressions.basic_cos_vec2_vertex
+KHR-GL44.constant_expressions.basic_cos_vec2_fragment
+KHR-GL44.constant_expressions.basic_cos_vec2_compute
+KHR-GL44.constant_expressions.basic_cos_vec2_geometry
+KHR-GL44.constant_expressions.basic_cos_vec2_tess_control
+KHR-GL44.constant_expressions.basic_cos_vec2_tess_eval
+KHR-GL44.constant_expressions.basic_cos_vec3_vertex
+KHR-GL44.constant_expressions.basic_cos_vec3_fragment
+KHR-GL44.constant_expressions.basic_cos_vec3_compute
+KHR-GL44.constant_expressions.basic_cos_vec3_geometry
+KHR-GL44.constant_expressions.basic_cos_vec3_tess_control
+KHR-GL44.constant_expressions.basic_cos_vec3_tess_eval
+KHR-GL44.constant_expressions.basic_cos_vec4_vertex
+KHR-GL44.constant_expressions.basic_cos_vec4_fragment
+KHR-GL44.constant_expressions.basic_cos_vec4_compute
+KHR-GL44.constant_expressions.basic_cos_vec4_geometry
+KHR-GL44.constant_expressions.basic_cos_vec4_tess_control
+KHR-GL44.constant_expressions.basic_cos_vec4_tess_eval
+KHR-GL44.constant_expressions.basic_asin_float_vertex
+KHR-GL44.constant_expressions.basic_asin_float_fragment
+KHR-GL44.constant_expressions.basic_asin_float_compute
+KHR-GL44.constant_expressions.basic_asin_float_geometry
+KHR-GL44.constant_expressions.basic_asin_float_tess_control
+KHR-GL44.constant_expressions.basic_asin_float_tess_eval
+KHR-GL44.constant_expressions.basic_asin_vec2_vertex
+KHR-GL44.constant_expressions.basic_asin_vec2_fragment
+KHR-GL44.constant_expressions.basic_asin_vec2_compute
+KHR-GL44.constant_expressions.basic_asin_vec2_geometry
+KHR-GL44.constant_expressions.basic_asin_vec2_tess_control
+KHR-GL44.constant_expressions.basic_asin_vec2_tess_eval
+KHR-GL44.constant_expressions.basic_asin_vec3_vertex
+KHR-GL44.constant_expressions.basic_asin_vec3_fragment
+KHR-GL44.constant_expressions.basic_asin_vec3_compute
+KHR-GL44.constant_expressions.basic_asin_vec3_geometry
+KHR-GL44.constant_expressions.basic_asin_vec3_tess_control
+KHR-GL44.constant_expressions.basic_asin_vec3_tess_eval
+KHR-GL44.constant_expressions.basic_asin_vec4_vertex
+KHR-GL44.constant_expressions.basic_asin_vec4_fragment
+KHR-GL44.constant_expressions.basic_asin_vec4_compute
+KHR-GL44.constant_expressions.basic_asin_vec4_geometry
+KHR-GL44.constant_expressions.basic_asin_vec4_tess_control
+KHR-GL44.constant_expressions.basic_asin_vec4_tess_eval
+KHR-GL44.constant_expressions.basic_acos_float_vertex
+KHR-GL44.constant_expressions.basic_acos_float_fragment
+KHR-GL44.constant_expressions.basic_acos_float_compute
+KHR-GL44.constant_expressions.basic_acos_float_geometry
+KHR-GL44.constant_expressions.basic_acos_float_tess_control
+KHR-GL44.constant_expressions.basic_acos_float_tess_eval
+KHR-GL44.constant_expressions.basic_acos_vec2_vertex
+KHR-GL44.constant_expressions.basic_acos_vec2_fragment
+KHR-GL44.constant_expressions.basic_acos_vec2_compute
+KHR-GL44.constant_expressions.basic_acos_vec2_geometry
+KHR-GL44.constant_expressions.basic_acos_vec2_tess_control
+KHR-GL44.constant_expressions.basic_acos_vec2_tess_eval
+KHR-GL44.constant_expressions.basic_acos_vec3_vertex
+KHR-GL44.constant_expressions.basic_acos_vec3_fragment
+KHR-GL44.constant_expressions.basic_acos_vec3_compute
+KHR-GL44.constant_expressions.basic_acos_vec3_geometry
+KHR-GL44.constant_expressions.basic_acos_vec3_tess_control
+KHR-GL44.constant_expressions.basic_acos_vec3_tess_eval
+KHR-GL44.constant_expressions.basic_acos_vec4_vertex
+KHR-GL44.constant_expressions.basic_acos_vec4_fragment
+KHR-GL44.constant_expressions.basic_acos_vec4_compute
+KHR-GL44.constant_expressions.basic_acos_vec4_geometry
+KHR-GL44.constant_expressions.basic_acos_vec4_tess_control
+KHR-GL44.constant_expressions.basic_acos_vec4_tess_eval
+KHR-GL44.constant_expressions.basic_pow_float_vertex
+KHR-GL44.constant_expressions.basic_pow_float_fragment
+KHR-GL44.constant_expressions.basic_pow_float_compute
+KHR-GL44.constant_expressions.basic_pow_float_geometry
+KHR-GL44.constant_expressions.basic_pow_float_tess_control
+KHR-GL44.constant_expressions.basic_pow_float_tess_eval
+KHR-GL44.constant_expressions.basic_pow_vec2_vertex
+KHR-GL44.constant_expressions.basic_pow_vec2_fragment
+KHR-GL44.constant_expressions.basic_pow_vec2_compute
+KHR-GL44.constant_expressions.basic_pow_vec2_geometry
+KHR-GL44.constant_expressions.basic_pow_vec2_tess_control
+KHR-GL44.constant_expressions.basic_pow_vec2_tess_eval
+KHR-GL44.constant_expressions.basic_pow_vec3_vertex
+KHR-GL44.constant_expressions.basic_pow_vec3_fragment
+KHR-GL44.constant_expressions.basic_pow_vec3_compute
+KHR-GL44.constant_expressions.basic_pow_vec3_geometry
+KHR-GL44.constant_expressions.basic_pow_vec3_tess_control
+KHR-GL44.constant_expressions.basic_pow_vec3_tess_eval
+KHR-GL44.constant_expressions.basic_pow_vec4_vertex
+KHR-GL44.constant_expressions.basic_pow_vec4_fragment
+KHR-GL44.constant_expressions.basic_pow_vec4_compute
+KHR-GL44.constant_expressions.basic_pow_vec4_geometry
+KHR-GL44.constant_expressions.basic_pow_vec4_tess_control
+KHR-GL44.constant_expressions.basic_pow_vec4_tess_eval
+KHR-GL44.constant_expressions.basic_exp_float_vertex
+KHR-GL44.constant_expressions.basic_exp_float_fragment
+KHR-GL44.constant_expressions.basic_exp_float_compute
+KHR-GL44.constant_expressions.basic_exp_float_geometry
+KHR-GL44.constant_expressions.basic_exp_float_tess_control
+KHR-GL44.constant_expressions.basic_exp_float_tess_eval
+KHR-GL44.constant_expressions.basic_exp_vec2_vertex
+KHR-GL44.constant_expressions.basic_exp_vec2_fragment
+KHR-GL44.constant_expressions.basic_exp_vec2_compute
+KHR-GL44.constant_expressions.basic_exp_vec2_geometry
+KHR-GL44.constant_expressions.basic_exp_vec2_tess_control
+KHR-GL44.constant_expressions.basic_exp_vec2_tess_eval
+KHR-GL44.constant_expressions.basic_exp_vec3_vertex
+KHR-GL44.constant_expressions.basic_exp_vec3_fragment
+KHR-GL44.constant_expressions.basic_exp_vec3_compute
+KHR-GL44.constant_expressions.basic_exp_vec3_geometry
+KHR-GL44.constant_expressions.basic_exp_vec3_tess_control
+KHR-GL44.constant_expressions.basic_exp_vec3_tess_eval
+KHR-GL44.constant_expressions.basic_exp_vec4_vertex
+KHR-GL44.constant_expressions.basic_exp_vec4_fragment
+KHR-GL44.constant_expressions.basic_exp_vec4_compute
+KHR-GL44.constant_expressions.basic_exp_vec4_geometry
+KHR-GL44.constant_expressions.basic_exp_vec4_tess_control
+KHR-GL44.constant_expressions.basic_exp_vec4_tess_eval
+KHR-GL44.constant_expressions.basic_log_float_vertex
+KHR-GL44.constant_expressions.basic_log_float_fragment
+KHR-GL44.constant_expressions.basic_log_float_compute
+KHR-GL44.constant_expressions.basic_log_float_geometry
+KHR-GL44.constant_expressions.basic_log_float_tess_control
+KHR-GL44.constant_expressions.basic_log_float_tess_eval
+KHR-GL44.constant_expressions.basic_log_vec2_vertex
+KHR-GL44.constant_expressions.basic_log_vec2_fragment
+KHR-GL44.constant_expressions.basic_log_vec2_compute
+KHR-GL44.constant_expressions.basic_log_vec2_geometry
+KHR-GL44.constant_expressions.basic_log_vec2_tess_control
+KHR-GL44.constant_expressions.basic_log_vec2_tess_eval
+KHR-GL44.constant_expressions.basic_log_vec3_vertex
+KHR-GL44.constant_expressions.basic_log_vec3_fragment
+KHR-GL44.constant_expressions.basic_log_vec3_compute
+KHR-GL44.constant_expressions.basic_log_vec3_geometry
+KHR-GL44.constant_expressions.basic_log_vec3_tess_control
+KHR-GL44.constant_expressions.basic_log_vec3_tess_eval
+KHR-GL44.constant_expressions.basic_log_vec4_vertex
+KHR-GL44.constant_expressions.basic_log_vec4_fragment
+KHR-GL44.constant_expressions.basic_log_vec4_compute
+KHR-GL44.constant_expressions.basic_log_vec4_geometry
+KHR-GL44.constant_expressions.basic_log_vec4_tess_control
+KHR-GL44.constant_expressions.basic_log_vec4_tess_eval
+KHR-GL44.constant_expressions.basic_exp2_float_vertex
+KHR-GL44.constant_expressions.basic_exp2_float_fragment
+KHR-GL44.constant_expressions.basic_exp2_float_compute
+KHR-GL44.constant_expressions.basic_exp2_float_geometry
+KHR-GL44.constant_expressions.basic_exp2_float_tess_control
+KHR-GL44.constant_expressions.basic_exp2_float_tess_eval
+KHR-GL44.constant_expressions.basic_exp2_vec2_vertex
+KHR-GL44.constant_expressions.basic_exp2_vec2_fragment
+KHR-GL44.constant_expressions.basic_exp2_vec2_compute
+KHR-GL44.constant_expressions.basic_exp2_vec2_geometry
+KHR-GL44.constant_expressions.basic_exp2_vec2_tess_control
+KHR-GL44.constant_expressions.basic_exp2_vec2_tess_eval
+KHR-GL44.constant_expressions.basic_exp2_vec3_vertex
+KHR-GL44.constant_expressions.basic_exp2_vec3_fragment
+KHR-GL44.constant_expressions.basic_exp2_vec3_compute
+KHR-GL44.constant_expressions.basic_exp2_vec3_geometry
+KHR-GL44.constant_expressions.basic_exp2_vec3_tess_control
+KHR-GL44.constant_expressions.basic_exp2_vec3_tess_eval
+KHR-GL44.constant_expressions.basic_exp2_vec4_vertex
+KHR-GL44.constant_expressions.basic_exp2_vec4_fragment
+KHR-GL44.constant_expressions.basic_exp2_vec4_compute
+KHR-GL44.constant_expressions.basic_exp2_vec4_geometry
+KHR-GL44.constant_expressions.basic_exp2_vec4_tess_control
+KHR-GL44.constant_expressions.basic_exp2_vec4_tess_eval
+KHR-GL44.constant_expressions.basic_log2_float_vertex
+KHR-GL44.constant_expressions.basic_log2_float_fragment
+KHR-GL44.constant_expressions.basic_log2_float_compute
+KHR-GL44.constant_expressions.basic_log2_float_geometry
+KHR-GL44.constant_expressions.basic_log2_float_tess_control
+KHR-GL44.constant_expressions.basic_log2_float_tess_eval
+KHR-GL44.constant_expressions.basic_log2_vec2_vertex
+KHR-GL44.constant_expressions.basic_log2_vec2_fragment
+KHR-GL44.constant_expressions.basic_log2_vec2_compute
+KHR-GL44.constant_expressions.basic_log2_vec2_geometry
+KHR-GL44.constant_expressions.basic_log2_vec2_tess_control
+KHR-GL44.constant_expressions.basic_log2_vec2_tess_eval
+KHR-GL44.constant_expressions.basic_log2_vec3_vertex
+KHR-GL44.constant_expressions.basic_log2_vec3_fragment
+KHR-GL44.constant_expressions.basic_log2_vec3_compute
+KHR-GL44.constant_expressions.basic_log2_vec3_geometry
+KHR-GL44.constant_expressions.basic_log2_vec3_tess_control
+KHR-GL44.constant_expressions.basic_log2_vec3_tess_eval
+KHR-GL44.constant_expressions.basic_log2_vec4_vertex
+KHR-GL44.constant_expressions.basic_log2_vec4_fragment
+KHR-GL44.constant_expressions.basic_log2_vec4_compute
+KHR-GL44.constant_expressions.basic_log2_vec4_geometry
+KHR-GL44.constant_expressions.basic_log2_vec4_tess_control
+KHR-GL44.constant_expressions.basic_log2_vec4_tess_eval
+KHR-GL44.constant_expressions.basic_sqrt_float_vertex
+KHR-GL44.constant_expressions.basic_sqrt_float_fragment
+KHR-GL44.constant_expressions.basic_sqrt_float_compute
+KHR-GL44.constant_expressions.basic_sqrt_float_geometry
+KHR-GL44.constant_expressions.basic_sqrt_float_tess_control
+KHR-GL44.constant_expressions.basic_sqrt_float_tess_eval
+KHR-GL44.constant_expressions.basic_sqrt_vec2_vertex
+KHR-GL44.constant_expressions.basic_sqrt_vec2_fragment
+KHR-GL44.constant_expressions.basic_sqrt_vec2_compute
+KHR-GL44.constant_expressions.basic_sqrt_vec2_geometry
+KHR-GL44.constant_expressions.basic_sqrt_vec2_tess_control
+KHR-GL44.constant_expressions.basic_sqrt_vec2_tess_eval
+KHR-GL44.constant_expressions.basic_sqrt_vec3_vertex
+KHR-GL44.constant_expressions.basic_sqrt_vec3_fragment
+KHR-GL44.constant_expressions.basic_sqrt_vec3_compute
+KHR-GL44.constant_expressions.basic_sqrt_vec3_geometry
+KHR-GL44.constant_expressions.basic_sqrt_vec3_tess_control
+KHR-GL44.constant_expressions.basic_sqrt_vec3_tess_eval
+KHR-GL44.constant_expressions.basic_sqrt_vec4_vertex
+KHR-GL44.constant_expressions.basic_sqrt_vec4_fragment
+KHR-GL44.constant_expressions.basic_sqrt_vec4_compute
+KHR-GL44.constant_expressions.basic_sqrt_vec4_geometry
+KHR-GL44.constant_expressions.basic_sqrt_vec4_tess_control
+KHR-GL44.constant_expressions.basic_sqrt_vec4_tess_eval
+KHR-GL44.constant_expressions.basic_inversesqrt_float_vertex
+KHR-GL44.constant_expressions.basic_inversesqrt_float_fragment
+KHR-GL44.constant_expressions.basic_inversesqrt_float_compute
+KHR-GL44.constant_expressions.basic_inversesqrt_float_geometry
+KHR-GL44.constant_expressions.basic_inversesqrt_float_tess_control
+KHR-GL44.constant_expressions.basic_inversesqrt_float_tess_eval
+KHR-GL44.constant_expressions.basic_inversesqrt_vec2_vertex
+KHR-GL44.constant_expressions.basic_inversesqrt_vec2_fragment
+KHR-GL44.constant_expressions.basic_inversesqrt_vec2_compute
+KHR-GL44.constant_expressions.basic_inversesqrt_vec2_geometry
+KHR-GL44.constant_expressions.basic_inversesqrt_vec2_tess_control
+KHR-GL44.constant_expressions.basic_inversesqrt_vec2_tess_eval
+KHR-GL44.constant_expressions.basic_inversesqrt_vec3_vertex
+KHR-GL44.constant_expressions.basic_inversesqrt_vec3_fragment
+KHR-GL44.constant_expressions.basic_inversesqrt_vec3_compute
+KHR-GL44.constant_expressions.basic_inversesqrt_vec3_geometry
+KHR-GL44.constant_expressions.basic_inversesqrt_vec3_tess_control
+KHR-GL44.constant_expressions.basic_inversesqrt_vec3_tess_eval
+KHR-GL44.constant_expressions.basic_inversesqrt_vec4_vertex
+KHR-GL44.constant_expressions.basic_inversesqrt_vec4_fragment
+KHR-GL44.constant_expressions.basic_inversesqrt_vec4_compute
+KHR-GL44.constant_expressions.basic_inversesqrt_vec4_geometry
+KHR-GL44.constant_expressions.basic_inversesqrt_vec4_tess_control
+KHR-GL44.constant_expressions.basic_inversesqrt_vec4_tess_eval
+KHR-GL44.constant_expressions.basic_abs_int_vertex
+KHR-GL44.constant_expressions.basic_abs_int_fragment
+KHR-GL44.constant_expressions.basic_abs_int_compute
+KHR-GL44.constant_expressions.basic_abs_int_geometry
+KHR-GL44.constant_expressions.basic_abs_int_tess_control
+KHR-GL44.constant_expressions.basic_abs_int_tess_eval
+KHR-GL44.constant_expressions.basic_abs_ivec2_vertex
+KHR-GL44.constant_expressions.basic_abs_ivec2_fragment
+KHR-GL44.constant_expressions.basic_abs_ivec2_compute
+KHR-GL44.constant_expressions.basic_abs_ivec2_geometry
+KHR-GL44.constant_expressions.basic_abs_ivec2_tess_control
+KHR-GL44.constant_expressions.basic_abs_ivec2_tess_eval
+KHR-GL44.constant_expressions.basic_abs_ivec3_vertex
+KHR-GL44.constant_expressions.basic_abs_ivec3_fragment
+KHR-GL44.constant_expressions.basic_abs_ivec3_compute
+KHR-GL44.constant_expressions.basic_abs_ivec3_geometry
+KHR-GL44.constant_expressions.basic_abs_ivec3_tess_control
+KHR-GL44.constant_expressions.basic_abs_ivec3_tess_eval
+KHR-GL44.constant_expressions.basic_abs_ivec4_vertex
+KHR-GL44.constant_expressions.basic_abs_ivec4_fragment
+KHR-GL44.constant_expressions.basic_abs_ivec4_compute
+KHR-GL44.constant_expressions.basic_abs_ivec4_geometry
+KHR-GL44.constant_expressions.basic_abs_ivec4_tess_control
+KHR-GL44.constant_expressions.basic_abs_ivec4_tess_eval
+KHR-GL44.constant_expressions.basic_sign_float_vertex
+KHR-GL44.constant_expressions.basic_sign_float_fragment
+KHR-GL44.constant_expressions.basic_sign_float_compute
+KHR-GL44.constant_expressions.basic_sign_float_geometry
+KHR-GL44.constant_expressions.basic_sign_float_tess_control
+KHR-GL44.constant_expressions.basic_sign_float_tess_eval
+KHR-GL44.constant_expressions.basic_sign_vec2_vertex
+KHR-GL44.constant_expressions.basic_sign_vec2_fragment
+KHR-GL44.constant_expressions.basic_sign_vec2_compute
+KHR-GL44.constant_expressions.basic_sign_vec2_geometry
+KHR-GL44.constant_expressions.basic_sign_vec2_tess_control
+KHR-GL44.constant_expressions.basic_sign_vec2_tess_eval
+KHR-GL44.constant_expressions.basic_sign_vec3_vertex
+KHR-GL44.constant_expressions.basic_sign_vec3_fragment
+KHR-GL44.constant_expressions.basic_sign_vec3_compute
+KHR-GL44.constant_expressions.basic_sign_vec3_geometry
+KHR-GL44.constant_expressions.basic_sign_vec3_tess_control
+KHR-GL44.constant_expressions.basic_sign_vec3_tess_eval
+KHR-GL44.constant_expressions.basic_sign_vec4_vertex
+KHR-GL44.constant_expressions.basic_sign_vec4_fragment
+KHR-GL44.constant_expressions.basic_sign_vec4_compute
+KHR-GL44.constant_expressions.basic_sign_vec4_geometry
+KHR-GL44.constant_expressions.basic_sign_vec4_tess_control
+KHR-GL44.constant_expressions.basic_sign_vec4_tess_eval
+KHR-GL44.constant_expressions.basic_floor_float_vertex
+KHR-GL44.constant_expressions.basic_floor_float_fragment
+KHR-GL44.constant_expressions.basic_floor_float_compute
+KHR-GL44.constant_expressions.basic_floor_float_geometry
+KHR-GL44.constant_expressions.basic_floor_float_tess_control
+KHR-GL44.constant_expressions.basic_floor_float_tess_eval
+KHR-GL44.constant_expressions.basic_floor_vec2_vertex
+KHR-GL44.constant_expressions.basic_floor_vec2_fragment
+KHR-GL44.constant_expressions.basic_floor_vec2_compute
+KHR-GL44.constant_expressions.basic_floor_vec2_geometry
+KHR-GL44.constant_expressions.basic_floor_vec2_tess_control
+KHR-GL44.constant_expressions.basic_floor_vec2_tess_eval
+KHR-GL44.constant_expressions.basic_floor_vec3_vertex
+KHR-GL44.constant_expressions.basic_floor_vec3_fragment
+KHR-GL44.constant_expressions.basic_floor_vec3_compute
+KHR-GL44.constant_expressions.basic_floor_vec3_geometry
+KHR-GL44.constant_expressions.basic_floor_vec3_tess_control
+KHR-GL44.constant_expressions.basic_floor_vec3_tess_eval
+KHR-GL44.constant_expressions.basic_floor_vec4_vertex
+KHR-GL44.constant_expressions.basic_floor_vec4_fragment
+KHR-GL44.constant_expressions.basic_floor_vec4_compute
+KHR-GL44.constant_expressions.basic_floor_vec4_geometry
+KHR-GL44.constant_expressions.basic_floor_vec4_tess_control
+KHR-GL44.constant_expressions.basic_floor_vec4_tess_eval
+KHR-GL44.constant_expressions.basic_trunc_float_vertex
+KHR-GL44.constant_expressions.basic_trunc_float_fragment
+KHR-GL44.constant_expressions.basic_trunc_float_compute
+KHR-GL44.constant_expressions.basic_trunc_float_geometry
+KHR-GL44.constant_expressions.basic_trunc_float_tess_control
+KHR-GL44.constant_expressions.basic_trunc_float_tess_eval
+KHR-GL44.constant_expressions.basic_trunc_vec2_vertex
+KHR-GL44.constant_expressions.basic_trunc_vec2_fragment
+KHR-GL44.constant_expressions.basic_trunc_vec2_compute
+KHR-GL44.constant_expressions.basic_trunc_vec2_geometry
+KHR-GL44.constant_expressions.basic_trunc_vec2_tess_control
+KHR-GL44.constant_expressions.basic_trunc_vec2_tess_eval
+KHR-GL44.constant_expressions.basic_trunc_vec3_vertex
+KHR-GL44.constant_expressions.basic_trunc_vec3_fragment
+KHR-GL44.constant_expressions.basic_trunc_vec3_compute
+KHR-GL44.constant_expressions.basic_trunc_vec3_geometry
+KHR-GL44.constant_expressions.basic_trunc_vec3_tess_control
+KHR-GL44.constant_expressions.basic_trunc_vec3_tess_eval
+KHR-GL44.constant_expressions.basic_trunc_vec4_vertex
+KHR-GL44.constant_expressions.basic_trunc_vec4_fragment
+KHR-GL44.constant_expressions.basic_trunc_vec4_compute
+KHR-GL44.constant_expressions.basic_trunc_vec4_geometry
+KHR-GL44.constant_expressions.basic_trunc_vec4_tess_control
+KHR-GL44.constant_expressions.basic_trunc_vec4_tess_eval
+KHR-GL44.constant_expressions.basic_round_float_vertex
+KHR-GL44.constant_expressions.basic_round_float_fragment
+KHR-GL44.constant_expressions.basic_round_float_compute
+KHR-GL44.constant_expressions.basic_round_float_geometry
+KHR-GL44.constant_expressions.basic_round_float_tess_control
+KHR-GL44.constant_expressions.basic_round_float_tess_eval
+KHR-GL44.constant_expressions.basic_round_vec2_vertex
+KHR-GL44.constant_expressions.basic_round_vec2_fragment
+KHR-GL44.constant_expressions.basic_round_vec2_compute
+KHR-GL44.constant_expressions.basic_round_vec2_geometry
+KHR-GL44.constant_expressions.basic_round_vec2_tess_control
+KHR-GL44.constant_expressions.basic_round_vec2_tess_eval
+KHR-GL44.constant_expressions.basic_round_vec3_vertex
+KHR-GL44.constant_expressions.basic_round_vec3_fragment
+KHR-GL44.constant_expressions.basic_round_vec3_compute
+KHR-GL44.constant_expressions.basic_round_vec3_geometry
+KHR-GL44.constant_expressions.basic_round_vec3_tess_control
+KHR-GL44.constant_expressions.basic_round_vec3_tess_eval
+KHR-GL44.constant_expressions.basic_round_vec4_vertex
+KHR-GL44.constant_expressions.basic_round_vec4_fragment
+KHR-GL44.constant_expressions.basic_round_vec4_compute
+KHR-GL44.constant_expressions.basic_round_vec4_geometry
+KHR-GL44.constant_expressions.basic_round_vec4_tess_control
+KHR-GL44.constant_expressions.basic_round_vec4_tess_eval
+KHR-GL44.constant_expressions.basic_ceil_float_vertex
+KHR-GL44.constant_expressions.basic_ceil_float_fragment
+KHR-GL44.constant_expressions.basic_ceil_float_compute
+KHR-GL44.constant_expressions.basic_ceil_float_geometry
+KHR-GL44.constant_expressions.basic_ceil_float_tess_control
+KHR-GL44.constant_expressions.basic_ceil_float_tess_eval
+KHR-GL44.constant_expressions.basic_ceil_vec2_vertex
+KHR-GL44.constant_expressions.basic_ceil_vec2_fragment
+KHR-GL44.constant_expressions.basic_ceil_vec2_compute
+KHR-GL44.constant_expressions.basic_ceil_vec2_geometry
+KHR-GL44.constant_expressions.basic_ceil_vec2_tess_control
+KHR-GL44.constant_expressions.basic_ceil_vec2_tess_eval
+KHR-GL44.constant_expressions.basic_ceil_vec3_vertex
+KHR-GL44.constant_expressions.basic_ceil_vec3_fragment
+KHR-GL44.constant_expressions.basic_ceil_vec3_compute
+KHR-GL44.constant_expressions.basic_ceil_vec3_geometry
+KHR-GL44.constant_expressions.basic_ceil_vec3_tess_control
+KHR-GL44.constant_expressions.basic_ceil_vec3_tess_eval
+KHR-GL44.constant_expressions.basic_ceil_vec4_vertex
+KHR-GL44.constant_expressions.basic_ceil_vec4_fragment
+KHR-GL44.constant_expressions.basic_ceil_vec4_compute
+KHR-GL44.constant_expressions.basic_ceil_vec4_geometry
+KHR-GL44.constant_expressions.basic_ceil_vec4_tess_control
+KHR-GL44.constant_expressions.basic_ceil_vec4_tess_eval
+KHR-GL44.constant_expressions.basic_mod_float_vertex
+KHR-GL44.constant_expressions.basic_mod_float_fragment
+KHR-GL44.constant_expressions.basic_mod_float_compute
+KHR-GL44.constant_expressions.basic_mod_float_geometry
+KHR-GL44.constant_expressions.basic_mod_float_tess_control
+KHR-GL44.constant_expressions.basic_mod_float_tess_eval
+KHR-GL44.constant_expressions.basic_mod_vec2_vertex
+KHR-GL44.constant_expressions.basic_mod_vec2_fragment
+KHR-GL44.constant_expressions.basic_mod_vec2_compute
+KHR-GL44.constant_expressions.basic_mod_vec2_geometry
+KHR-GL44.constant_expressions.basic_mod_vec2_tess_control
+KHR-GL44.constant_expressions.basic_mod_vec2_tess_eval
+KHR-GL44.constant_expressions.basic_mod_vec2_float_vertex
+KHR-GL44.constant_expressions.basic_mod_vec2_float_fragment
+KHR-GL44.constant_expressions.basic_mod_vec2_float_compute
+KHR-GL44.constant_expressions.basic_mod_vec2_float_geometry
+KHR-GL44.constant_expressions.basic_mod_vec2_float_tess_control
+KHR-GL44.constant_expressions.basic_mod_vec2_float_tess_eval
+KHR-GL44.constant_expressions.basic_mod_vec3_vertex
+KHR-GL44.constant_expressions.basic_mod_vec3_fragment
+KHR-GL44.constant_expressions.basic_mod_vec3_compute
+KHR-GL44.constant_expressions.basic_mod_vec3_geometry
+KHR-GL44.constant_expressions.basic_mod_vec3_tess_control
+KHR-GL44.constant_expressions.basic_mod_vec3_tess_eval
+KHR-GL44.constant_expressions.basic_mod_vec3_float_vertex
+KHR-GL44.constant_expressions.basic_mod_vec3_float_fragment
+KHR-GL44.constant_expressions.basic_mod_vec3_float_compute
+KHR-GL44.constant_expressions.basic_mod_vec3_float_geometry
+KHR-GL44.constant_expressions.basic_mod_vec3_float_tess_control
+KHR-GL44.constant_expressions.basic_mod_vec3_float_tess_eval
+KHR-GL44.constant_expressions.basic_mod_vec4_vertex
+KHR-GL44.constant_expressions.basic_mod_vec4_fragment
+KHR-GL44.constant_expressions.basic_mod_vec4_compute
+KHR-GL44.constant_expressions.basic_mod_vec4_geometry
+KHR-GL44.constant_expressions.basic_mod_vec4_tess_control
+KHR-GL44.constant_expressions.basic_mod_vec4_tess_eval
+KHR-GL44.constant_expressions.basic_mod_vec4_float_vertex
+KHR-GL44.constant_expressions.basic_mod_vec4_float_fragment
+KHR-GL44.constant_expressions.basic_mod_vec4_float_compute
+KHR-GL44.constant_expressions.basic_mod_vec4_float_geometry
+KHR-GL44.constant_expressions.basic_mod_vec4_float_tess_control
+KHR-GL44.constant_expressions.basic_mod_vec4_float_tess_eval
+KHR-GL44.constant_expressions.basic_min_float_vertex
+KHR-GL44.constant_expressions.basic_min_float_fragment
+KHR-GL44.constant_expressions.basic_min_float_compute
+KHR-GL44.constant_expressions.basic_min_float_geometry
+KHR-GL44.constant_expressions.basic_min_float_tess_control
+KHR-GL44.constant_expressions.basic_min_float_tess_eval
+KHR-GL44.constant_expressions.basic_min_vec2_vertex
+KHR-GL44.constant_expressions.basic_min_vec2_fragment
+KHR-GL44.constant_expressions.basic_min_vec2_compute
+KHR-GL44.constant_expressions.basic_min_vec2_geometry
+KHR-GL44.constant_expressions.basic_min_vec2_tess_control
+KHR-GL44.constant_expressions.basic_min_vec2_tess_eval
+KHR-GL44.constant_expressions.basic_min_vec2_float_vertex
+KHR-GL44.constant_expressions.basic_min_vec2_float_fragment
+KHR-GL44.constant_expressions.basic_min_vec2_float_compute
+KHR-GL44.constant_expressions.basic_min_vec2_float_geometry
+KHR-GL44.constant_expressions.basic_min_vec2_float_tess_control
+KHR-GL44.constant_expressions.basic_min_vec2_float_tess_eval
+KHR-GL44.constant_expressions.basic_min_vec3_vertex
+KHR-GL44.constant_expressions.basic_min_vec3_fragment
+KHR-GL44.constant_expressions.basic_min_vec3_compute
+KHR-GL44.constant_expressions.basic_min_vec3_geometry
+KHR-GL44.constant_expressions.basic_min_vec3_tess_control
+KHR-GL44.constant_expressions.basic_min_vec3_tess_eval
+KHR-GL44.constant_expressions.basic_min_vec3_float_vertex
+KHR-GL44.constant_expressions.basic_min_vec3_float_fragment
+KHR-GL44.constant_expressions.basic_min_vec3_float_compute
+KHR-GL44.constant_expressions.basic_min_vec3_float_geometry
+KHR-GL44.constant_expressions.basic_min_vec3_float_tess_control
+KHR-GL44.constant_expressions.basic_min_vec3_float_tess_eval
+KHR-GL44.constant_expressions.basic_min_vec4_vertex
+KHR-GL44.constant_expressions.basic_min_vec4_fragment
+KHR-GL44.constant_expressions.basic_min_vec4_compute
+KHR-GL44.constant_expressions.basic_min_vec4_geometry
+KHR-GL44.constant_expressions.basic_min_vec4_tess_control
+KHR-GL44.constant_expressions.basic_min_vec4_tess_eval
+KHR-GL44.constant_expressions.basic_min_vec4_float_vertex
+KHR-GL44.constant_expressions.basic_min_vec4_float_fragment
+KHR-GL44.constant_expressions.basic_min_vec4_float_compute
+KHR-GL44.constant_expressions.basic_min_vec4_float_geometry
+KHR-GL44.constant_expressions.basic_min_vec4_float_tess_control
+KHR-GL44.constant_expressions.basic_min_vec4_float_tess_eval
+KHR-GL44.constant_expressions.basic_max_float_vertex
+KHR-GL44.constant_expressions.basic_max_float_fragment
+KHR-GL44.constant_expressions.basic_max_float_compute
+KHR-GL44.constant_expressions.basic_max_float_geometry
+KHR-GL44.constant_expressions.basic_max_float_tess_control
+KHR-GL44.constant_expressions.basic_max_float_tess_eval
+KHR-GL44.constant_expressions.basic_max_vec2_vertex
+KHR-GL44.constant_expressions.basic_max_vec2_fragment
+KHR-GL44.constant_expressions.basic_max_vec2_compute
+KHR-GL44.constant_expressions.basic_max_vec2_geometry
+KHR-GL44.constant_expressions.basic_max_vec2_tess_control
+KHR-GL44.constant_expressions.basic_max_vec2_tess_eval
+KHR-GL44.constant_expressions.basic_max_vec2_float_vertex
+KHR-GL44.constant_expressions.basic_max_vec2_float_fragment
+KHR-GL44.constant_expressions.basic_max_vec2_float_compute
+KHR-GL44.constant_expressions.basic_max_vec2_float_geometry
+KHR-GL44.constant_expressions.basic_max_vec2_float_tess_control
+KHR-GL44.constant_expressions.basic_max_vec2_float_tess_eval
+KHR-GL44.constant_expressions.basic_max_vec3_vertex
+KHR-GL44.constant_expressions.basic_max_vec3_fragment
+KHR-GL44.constant_expressions.basic_max_vec3_compute
+KHR-GL44.constant_expressions.basic_max_vec3_geometry
+KHR-GL44.constant_expressions.basic_max_vec3_tess_control
+KHR-GL44.constant_expressions.basic_max_vec3_tess_eval
+KHR-GL44.constant_expressions.basic_max_vec3_float_vertex
+KHR-GL44.constant_expressions.basic_max_vec3_float_fragment
+KHR-GL44.constant_expressions.basic_max_vec3_float_compute
+KHR-GL44.constant_expressions.basic_max_vec3_float_geometry
+KHR-GL44.constant_expressions.basic_max_vec3_float_tess_control
+KHR-GL44.constant_expressions.basic_max_vec3_float_tess_eval
+KHR-GL44.constant_expressions.basic_max_vec4_vertex
+KHR-GL44.constant_expressions.basic_max_vec4_fragment
+KHR-GL44.constant_expressions.basic_max_vec4_compute
+KHR-GL44.constant_expressions.basic_max_vec4_geometry
+KHR-GL44.constant_expressions.basic_max_vec4_tess_control
+KHR-GL44.constant_expressions.basic_max_vec4_tess_eval
+KHR-GL44.constant_expressions.basic_max_vec4_float_vertex
+KHR-GL44.constant_expressions.basic_max_vec4_float_fragment
+KHR-GL44.constant_expressions.basic_max_vec4_float_compute
+KHR-GL44.constant_expressions.basic_max_vec4_float_geometry
+KHR-GL44.constant_expressions.basic_max_vec4_float_tess_control
+KHR-GL44.constant_expressions.basic_max_vec4_float_tess_eval
+KHR-GL44.constant_expressions.basic_clamp_float_vertex
+KHR-GL44.constant_expressions.basic_clamp_float_fragment
+KHR-GL44.constant_expressions.basic_clamp_float_compute
+KHR-GL44.constant_expressions.basic_clamp_float_geometry
+KHR-GL44.constant_expressions.basic_clamp_float_tess_control
+KHR-GL44.constant_expressions.basic_clamp_float_tess_eval
+KHR-GL44.constant_expressions.basic_clamp_vec2_vertex
+KHR-GL44.constant_expressions.basic_clamp_vec2_fragment
+KHR-GL44.constant_expressions.basic_clamp_vec2_compute
+KHR-GL44.constant_expressions.basic_clamp_vec2_geometry
+KHR-GL44.constant_expressions.basic_clamp_vec2_tess_control
+KHR-GL44.constant_expressions.basic_clamp_vec2_tess_eval
+KHR-GL44.constant_expressions.basic_clamp_vec2_float_vertex
+KHR-GL44.constant_expressions.basic_clamp_vec2_float_fragment
+KHR-GL44.constant_expressions.basic_clamp_vec2_float_compute
+KHR-GL44.constant_expressions.basic_clamp_vec2_float_geometry
+KHR-GL44.constant_expressions.basic_clamp_vec2_float_tess_control
+KHR-GL44.constant_expressions.basic_clamp_vec2_float_tess_eval
+KHR-GL44.constant_expressions.basic_clamp_vec3_vertex
+KHR-GL44.constant_expressions.basic_clamp_vec3_fragment
+KHR-GL44.constant_expressions.basic_clamp_vec3_compute
+KHR-GL44.constant_expressions.basic_clamp_vec3_geometry
+KHR-GL44.constant_expressions.basic_clamp_vec3_tess_control
+KHR-GL44.constant_expressions.basic_clamp_vec3_tess_eval
+KHR-GL44.constant_expressions.basic_clamp_vec3_float_vertex
+KHR-GL44.constant_expressions.basic_clamp_vec3_float_fragment
+KHR-GL44.constant_expressions.basic_clamp_vec3_float_compute
+KHR-GL44.constant_expressions.basic_clamp_vec3_float_geometry
+KHR-GL44.constant_expressions.basic_clamp_vec3_float_tess_control
+KHR-GL44.constant_expressions.basic_clamp_vec3_float_tess_eval
+KHR-GL44.constant_expressions.basic_clamp_vec4_vertex
+KHR-GL44.constant_expressions.basic_clamp_vec4_fragment
+KHR-GL44.constant_expressions.basic_clamp_vec4_compute
+KHR-GL44.constant_expressions.basic_clamp_vec4_geometry
+KHR-GL44.constant_expressions.basic_clamp_vec4_tess_control
+KHR-GL44.constant_expressions.basic_clamp_vec4_tess_eval
+KHR-GL44.constant_expressions.basic_clamp_vec4_float_vertex
+KHR-GL44.constant_expressions.basic_clamp_vec4_float_fragment
+KHR-GL44.constant_expressions.basic_clamp_vec4_float_compute
+KHR-GL44.constant_expressions.basic_clamp_vec4_float_geometry
+KHR-GL44.constant_expressions.basic_clamp_vec4_float_tess_control
+KHR-GL44.constant_expressions.basic_clamp_vec4_float_tess_eval
+KHR-GL44.constant_expressions.basic_length_float_vertex
+KHR-GL44.constant_expressions.basic_length_float_fragment
+KHR-GL44.constant_expressions.basic_length_float_compute
+KHR-GL44.constant_expressions.basic_length_float_geometry
+KHR-GL44.constant_expressions.basic_length_float_tess_control
+KHR-GL44.constant_expressions.basic_length_float_tess_eval
+KHR-GL44.constant_expressions.basic_length_vec2_vertex
+KHR-GL44.constant_expressions.basic_length_vec2_fragment
+KHR-GL44.constant_expressions.basic_length_vec2_compute
+KHR-GL44.constant_expressions.basic_length_vec2_geometry
+KHR-GL44.constant_expressions.basic_length_vec2_tess_control
+KHR-GL44.constant_expressions.basic_length_vec2_tess_eval
+KHR-GL44.constant_expressions.basic_length_vec3_vertex
+KHR-GL44.constant_expressions.basic_length_vec3_fragment
+KHR-GL44.constant_expressions.basic_length_vec3_compute
+KHR-GL44.constant_expressions.basic_length_vec3_geometry
+KHR-GL44.constant_expressions.basic_length_vec3_tess_control
+KHR-GL44.constant_expressions.basic_length_vec3_tess_eval
+KHR-GL44.constant_expressions.basic_length_vec4_vertex
+KHR-GL44.constant_expressions.basic_length_vec4_fragment
+KHR-GL44.constant_expressions.basic_length_vec4_compute
+KHR-GL44.constant_expressions.basic_length_vec4_geometry
+KHR-GL44.constant_expressions.basic_length_vec4_tess_control
+KHR-GL44.constant_expressions.basic_length_vec4_tess_eval
+KHR-GL44.constant_expressions.basic_dot_float_vertex
+KHR-GL44.constant_expressions.basic_dot_float_fragment
+KHR-GL44.constant_expressions.basic_dot_float_compute
+KHR-GL44.constant_expressions.basic_dot_float_geometry
+KHR-GL44.constant_expressions.basic_dot_float_tess_control
+KHR-GL44.constant_expressions.basic_dot_float_tess_eval
+KHR-GL44.constant_expressions.basic_dot_vec2_vertex
+KHR-GL44.constant_expressions.basic_dot_vec2_fragment
+KHR-GL44.constant_expressions.basic_dot_vec2_compute
+KHR-GL44.constant_expressions.basic_dot_vec2_geometry
+KHR-GL44.constant_expressions.basic_dot_vec2_tess_control
+KHR-GL44.constant_expressions.basic_dot_vec2_tess_eval
+KHR-GL44.constant_expressions.basic_dot_vec3_vertex
+KHR-GL44.constant_expressions.basic_dot_vec3_fragment
+KHR-GL44.constant_expressions.basic_dot_vec3_compute
+KHR-GL44.constant_expressions.basic_dot_vec3_geometry
+KHR-GL44.constant_expressions.basic_dot_vec3_tess_control
+KHR-GL44.constant_expressions.basic_dot_vec3_tess_eval
+KHR-GL44.constant_expressions.basic_dot_vec4_vertex
+KHR-GL44.constant_expressions.basic_dot_vec4_fragment
+KHR-GL44.constant_expressions.basic_dot_vec4_compute
+KHR-GL44.constant_expressions.basic_dot_vec4_geometry
+KHR-GL44.constant_expressions.basic_dot_vec4_tess_control
+KHR-GL44.constant_expressions.basic_dot_vec4_tess_eval
+KHR-GL44.constant_expressions.basic_normalize_float_vertex
+KHR-GL44.constant_expressions.basic_normalize_float_fragment
+KHR-GL44.constant_expressions.basic_normalize_float_compute
+KHR-GL44.constant_expressions.basic_normalize_float_geometry
+KHR-GL44.constant_expressions.basic_normalize_float_tess_control
+KHR-GL44.constant_expressions.basic_normalize_float_tess_eval
+KHR-GL44.constant_expressions.basic_normalize_vec2_vertex
+KHR-GL44.constant_expressions.basic_normalize_vec2_fragment
+KHR-GL44.constant_expressions.basic_normalize_vec2_compute
+KHR-GL44.constant_expressions.basic_normalize_vec2_geometry
+KHR-GL44.constant_expressions.basic_normalize_vec2_tess_control
+KHR-GL44.constant_expressions.basic_normalize_vec2_tess_eval
+KHR-GL44.constant_expressions.basic_normalize_vec3_vertex
+KHR-GL44.constant_expressions.basic_normalize_vec3_fragment
+KHR-GL44.constant_expressions.basic_normalize_vec3_compute
+KHR-GL44.constant_expressions.basic_normalize_vec3_geometry
+KHR-GL44.constant_expressions.basic_normalize_vec3_tess_control
+KHR-GL44.constant_expressions.basic_normalize_vec3_tess_eval
+KHR-GL44.constant_expressions.basic_normalize_vec4_vertex
+KHR-GL44.constant_expressions.basic_normalize_vec4_fragment
+KHR-GL44.constant_expressions.basic_normalize_vec4_compute
+KHR-GL44.constant_expressions.basic_normalize_vec4_geometry
+KHR-GL44.constant_expressions.basic_normalize_vec4_tess_control
+KHR-GL44.constant_expressions.basic_normalize_vec4_tess_eval
+KHR-GL44.constant_expressions.array_radians_float_vertex
+KHR-GL44.constant_expressions.array_radians_float_fragment
+KHR-GL44.constant_expressions.array_radians_float_compute
+KHR-GL44.constant_expressions.array_radians_float_geometry
+KHR-GL44.constant_expressions.array_radians_float_tess_control
+KHR-GL44.constant_expressions.array_radians_float_tess_eval
+KHR-GL44.constant_expressions.array_radians_vec2_vertex
+KHR-GL44.constant_expressions.array_radians_vec2_fragment
+KHR-GL44.constant_expressions.array_radians_vec2_compute
+KHR-GL44.constant_expressions.array_radians_vec2_geometry
+KHR-GL44.constant_expressions.array_radians_vec2_tess_control
+KHR-GL44.constant_expressions.array_radians_vec2_tess_eval
+KHR-GL44.constant_expressions.array_radians_vec3_vertex
+KHR-GL44.constant_expressions.array_radians_vec3_fragment
+KHR-GL44.constant_expressions.array_radians_vec3_compute
+KHR-GL44.constant_expressions.array_radians_vec3_geometry
+KHR-GL44.constant_expressions.array_radians_vec3_tess_control
+KHR-GL44.constant_expressions.array_radians_vec3_tess_eval
+KHR-GL44.constant_expressions.array_radians_vec4_vertex
+KHR-GL44.constant_expressions.array_radians_vec4_fragment
+KHR-GL44.constant_expressions.array_radians_vec4_compute
+KHR-GL44.constant_expressions.array_radians_vec4_geometry
+KHR-GL44.constant_expressions.array_radians_vec4_tess_control
+KHR-GL44.constant_expressions.array_radians_vec4_tess_eval
+KHR-GL44.constant_expressions.array_degrees_float_vertex
+KHR-GL44.constant_expressions.array_degrees_float_fragment
+KHR-GL44.constant_expressions.array_degrees_float_compute
+KHR-GL44.constant_expressions.array_degrees_float_geometry
+KHR-GL44.constant_expressions.array_degrees_float_tess_control
+KHR-GL44.constant_expressions.array_degrees_float_tess_eval
+KHR-GL44.constant_expressions.array_degrees_vec2_vertex
+KHR-GL44.constant_expressions.array_degrees_vec2_fragment
+KHR-GL44.constant_expressions.array_degrees_vec2_compute
+KHR-GL44.constant_expressions.array_degrees_vec2_geometry
+KHR-GL44.constant_expressions.array_degrees_vec2_tess_control
+KHR-GL44.constant_expressions.array_degrees_vec2_tess_eval
+KHR-GL44.constant_expressions.array_degrees_vec3_vertex
+KHR-GL44.constant_expressions.array_degrees_vec3_fragment
+KHR-GL44.constant_expressions.array_degrees_vec3_compute
+KHR-GL44.constant_expressions.array_degrees_vec3_geometry
+KHR-GL44.constant_expressions.array_degrees_vec3_tess_control
+KHR-GL44.constant_expressions.array_degrees_vec3_tess_eval
+KHR-GL44.constant_expressions.array_degrees_vec4_vertex
+KHR-GL44.constant_expressions.array_degrees_vec4_fragment
+KHR-GL44.constant_expressions.array_degrees_vec4_compute
+KHR-GL44.constant_expressions.array_degrees_vec4_geometry
+KHR-GL44.constant_expressions.array_degrees_vec4_tess_control
+KHR-GL44.constant_expressions.array_degrees_vec4_tess_eval
+KHR-GL44.constant_expressions.array_sin_float_vertex
+KHR-GL44.constant_expressions.array_sin_float_fragment
+KHR-GL44.constant_expressions.array_sin_float_compute
+KHR-GL44.constant_expressions.array_sin_float_geometry
+KHR-GL44.constant_expressions.array_sin_float_tess_control
+KHR-GL44.constant_expressions.array_sin_float_tess_eval
+KHR-GL44.constant_expressions.array_sin_vec2_vertex
+KHR-GL44.constant_expressions.array_sin_vec2_fragment
+KHR-GL44.constant_expressions.array_sin_vec2_compute
+KHR-GL44.constant_expressions.array_sin_vec2_geometry
+KHR-GL44.constant_expressions.array_sin_vec2_tess_control
+KHR-GL44.constant_expressions.array_sin_vec2_tess_eval
+KHR-GL44.constant_expressions.array_sin_vec3_vertex
+KHR-GL44.constant_expressions.array_sin_vec3_fragment
+KHR-GL44.constant_expressions.array_sin_vec3_compute
+KHR-GL44.constant_expressions.array_sin_vec3_geometry
+KHR-GL44.constant_expressions.array_sin_vec3_tess_control
+KHR-GL44.constant_expressions.array_sin_vec3_tess_eval
+KHR-GL44.constant_expressions.array_sin_vec4_vertex
+KHR-GL44.constant_expressions.array_sin_vec4_fragment
+KHR-GL44.constant_expressions.array_sin_vec4_compute
+KHR-GL44.constant_expressions.array_sin_vec4_geometry
+KHR-GL44.constant_expressions.array_sin_vec4_tess_control
+KHR-GL44.constant_expressions.array_sin_vec4_tess_eval
+KHR-GL44.constant_expressions.array_cos_float_vertex
+KHR-GL44.constant_expressions.array_cos_float_fragment
+KHR-GL44.constant_expressions.array_cos_float_compute
+KHR-GL44.constant_expressions.array_cos_float_geometry
+KHR-GL44.constant_expressions.array_cos_float_tess_control
+KHR-GL44.constant_expressions.array_cos_float_tess_eval
+KHR-GL44.constant_expressions.array_cos_vec2_vertex
+KHR-GL44.constant_expressions.array_cos_vec2_fragment
+KHR-GL44.constant_expressions.array_cos_vec2_compute
+KHR-GL44.constant_expressions.array_cos_vec2_geometry
+KHR-GL44.constant_expressions.array_cos_vec2_tess_control
+KHR-GL44.constant_expressions.array_cos_vec2_tess_eval
+KHR-GL44.constant_expressions.array_cos_vec3_vertex
+KHR-GL44.constant_expressions.array_cos_vec3_fragment
+KHR-GL44.constant_expressions.array_cos_vec3_compute
+KHR-GL44.constant_expressions.array_cos_vec3_geometry
+KHR-GL44.constant_expressions.array_cos_vec3_tess_control
+KHR-GL44.constant_expressions.array_cos_vec3_tess_eval
+KHR-GL44.constant_expressions.array_cos_vec4_vertex
+KHR-GL44.constant_expressions.array_cos_vec4_fragment
+KHR-GL44.constant_expressions.array_cos_vec4_compute
+KHR-GL44.constant_expressions.array_cos_vec4_geometry
+KHR-GL44.constant_expressions.array_cos_vec4_tess_control
+KHR-GL44.constant_expressions.array_cos_vec4_tess_eval
+KHR-GL44.constant_expressions.array_asin_float_vertex
+KHR-GL44.constant_expressions.array_asin_float_fragment
+KHR-GL44.constant_expressions.array_asin_float_compute
+KHR-GL44.constant_expressions.array_asin_float_geometry
+KHR-GL44.constant_expressions.array_asin_float_tess_control
+KHR-GL44.constant_expressions.array_asin_float_tess_eval
+KHR-GL44.constant_expressions.array_asin_vec2_vertex
+KHR-GL44.constant_expressions.array_asin_vec2_fragment
+KHR-GL44.constant_expressions.array_asin_vec2_compute
+KHR-GL44.constant_expressions.array_asin_vec2_geometry
+KHR-GL44.constant_expressions.array_asin_vec2_tess_control
+KHR-GL44.constant_expressions.array_asin_vec2_tess_eval
+KHR-GL44.constant_expressions.array_asin_vec3_vertex
+KHR-GL44.constant_expressions.array_asin_vec3_fragment
+KHR-GL44.constant_expressions.array_asin_vec3_compute
+KHR-GL44.constant_expressions.array_asin_vec3_geometry
+KHR-GL44.constant_expressions.array_asin_vec3_tess_control
+KHR-GL44.constant_expressions.array_asin_vec3_tess_eval
+KHR-GL44.constant_expressions.array_asin_vec4_vertex
+KHR-GL44.constant_expressions.array_asin_vec4_fragment
+KHR-GL44.constant_expressions.array_asin_vec4_compute
+KHR-GL44.constant_expressions.array_asin_vec4_geometry
+KHR-GL44.constant_expressions.array_asin_vec4_tess_control
+KHR-GL44.constant_expressions.array_asin_vec4_tess_eval
+KHR-GL44.constant_expressions.array_acos_float_vertex
+KHR-GL44.constant_expressions.array_acos_float_fragment
+KHR-GL44.constant_expressions.array_acos_float_compute
+KHR-GL44.constant_expressions.array_acos_float_geometry
+KHR-GL44.constant_expressions.array_acos_float_tess_control
+KHR-GL44.constant_expressions.array_acos_float_tess_eval
+KHR-GL44.constant_expressions.array_acos_vec2_vertex
+KHR-GL44.constant_expressions.array_acos_vec2_fragment
+KHR-GL44.constant_expressions.array_acos_vec2_compute
+KHR-GL44.constant_expressions.array_acos_vec2_geometry
+KHR-GL44.constant_expressions.array_acos_vec2_tess_control
+KHR-GL44.constant_expressions.array_acos_vec2_tess_eval
+KHR-GL44.constant_expressions.array_acos_vec3_vertex
+KHR-GL44.constant_expressions.array_acos_vec3_fragment
+KHR-GL44.constant_expressions.array_acos_vec3_compute
+KHR-GL44.constant_expressions.array_acos_vec3_geometry
+KHR-GL44.constant_expressions.array_acos_vec3_tess_control
+KHR-GL44.constant_expressions.array_acos_vec3_tess_eval
+KHR-GL44.constant_expressions.array_acos_vec4_vertex
+KHR-GL44.constant_expressions.array_acos_vec4_fragment
+KHR-GL44.constant_expressions.array_acos_vec4_compute
+KHR-GL44.constant_expressions.array_acos_vec4_geometry
+KHR-GL44.constant_expressions.array_acos_vec4_tess_control
+KHR-GL44.constant_expressions.array_acos_vec4_tess_eval
+KHR-GL44.constant_expressions.array_pow_float_vertex
+KHR-GL44.constant_expressions.array_pow_float_fragment
+KHR-GL44.constant_expressions.array_pow_float_compute
+KHR-GL44.constant_expressions.array_pow_float_geometry
+KHR-GL44.constant_expressions.array_pow_float_tess_control
+KHR-GL44.constant_expressions.array_pow_float_tess_eval
+KHR-GL44.constant_expressions.array_pow_vec2_vertex
+KHR-GL44.constant_expressions.array_pow_vec2_fragment
+KHR-GL44.constant_expressions.array_pow_vec2_compute
+KHR-GL44.constant_expressions.array_pow_vec2_geometry
+KHR-GL44.constant_expressions.array_pow_vec2_tess_control
+KHR-GL44.constant_expressions.array_pow_vec2_tess_eval
+KHR-GL44.constant_expressions.array_pow_vec3_vertex
+KHR-GL44.constant_expressions.array_pow_vec3_fragment
+KHR-GL44.constant_expressions.array_pow_vec3_compute
+KHR-GL44.constant_expressions.array_pow_vec3_geometry
+KHR-GL44.constant_expressions.array_pow_vec3_tess_control
+KHR-GL44.constant_expressions.array_pow_vec3_tess_eval
+KHR-GL44.constant_expressions.array_pow_vec4_vertex
+KHR-GL44.constant_expressions.array_pow_vec4_fragment
+KHR-GL44.constant_expressions.array_pow_vec4_compute
+KHR-GL44.constant_expressions.array_pow_vec4_geometry
+KHR-GL44.constant_expressions.array_pow_vec4_tess_control
+KHR-GL44.constant_expressions.array_pow_vec4_tess_eval
+KHR-GL44.constant_expressions.array_exp_float_vertex
+KHR-GL44.constant_expressions.array_exp_float_fragment
+KHR-GL44.constant_expressions.array_exp_float_compute
+KHR-GL44.constant_expressions.array_exp_float_geometry
+KHR-GL44.constant_expressions.array_exp_float_tess_control
+KHR-GL44.constant_expressions.array_exp_float_tess_eval
+KHR-GL44.constant_expressions.array_exp_vec2_vertex
+KHR-GL44.constant_expressions.array_exp_vec2_fragment
+KHR-GL44.constant_expressions.array_exp_vec2_compute
+KHR-GL44.constant_expressions.array_exp_vec2_geometry
+KHR-GL44.constant_expressions.array_exp_vec2_tess_control
+KHR-GL44.constant_expressions.array_exp_vec2_tess_eval
+KHR-GL44.constant_expressions.array_exp_vec3_vertex
+KHR-GL44.constant_expressions.array_exp_vec3_fragment
+KHR-GL44.constant_expressions.array_exp_vec3_compute
+KHR-GL44.constant_expressions.array_exp_vec3_geometry
+KHR-GL44.constant_expressions.array_exp_vec3_tess_control
+KHR-GL44.constant_expressions.array_exp_vec3_tess_eval
+KHR-GL44.constant_expressions.array_exp_vec4_vertex
+KHR-GL44.constant_expressions.array_exp_vec4_fragment
+KHR-GL44.constant_expressions.array_exp_vec4_compute
+KHR-GL44.constant_expressions.array_exp_vec4_geometry
+KHR-GL44.constant_expressions.array_exp_vec4_tess_control
+KHR-GL44.constant_expressions.array_exp_vec4_tess_eval
+KHR-GL44.constant_expressions.array_log_float_vertex
+KHR-GL44.constant_expressions.array_log_float_fragment
+KHR-GL44.constant_expressions.array_log_float_compute
+KHR-GL44.constant_expressions.array_log_float_geometry
+KHR-GL44.constant_expressions.array_log_float_tess_control
+KHR-GL44.constant_expressions.array_log_float_tess_eval
+KHR-GL44.constant_expressions.array_log_vec2_vertex
+KHR-GL44.constant_expressions.array_log_vec2_fragment
+KHR-GL44.constant_expressions.array_log_vec2_compute
+KHR-GL44.constant_expressions.array_log_vec2_geometry
+KHR-GL44.constant_expressions.array_log_vec2_tess_control
+KHR-GL44.constant_expressions.array_log_vec2_tess_eval
+KHR-GL44.constant_expressions.array_log_vec3_vertex
+KHR-GL44.constant_expressions.array_log_vec3_fragment
+KHR-GL44.constant_expressions.array_log_vec3_compute
+KHR-GL44.constant_expressions.array_log_vec3_geometry
+KHR-GL44.constant_expressions.array_log_vec3_tess_control
+KHR-GL44.constant_expressions.array_log_vec3_tess_eval
+KHR-GL44.constant_expressions.array_log_vec4_vertex
+KHR-GL44.constant_expressions.array_log_vec4_fragment
+KHR-GL44.constant_expressions.array_log_vec4_compute
+KHR-GL44.constant_expressions.array_log_vec4_geometry
+KHR-GL44.constant_expressions.array_log_vec4_tess_control
+KHR-GL44.constant_expressions.array_log_vec4_tess_eval
+KHR-GL44.constant_expressions.array_exp2_float_vertex
+KHR-GL44.constant_expressions.array_exp2_float_fragment
+KHR-GL44.constant_expressions.array_exp2_float_compute
+KHR-GL44.constant_expressions.array_exp2_float_geometry
+KHR-GL44.constant_expressions.array_exp2_float_tess_control
+KHR-GL44.constant_expressions.array_exp2_float_tess_eval
+KHR-GL44.constant_expressions.array_exp2_vec2_vertex
+KHR-GL44.constant_expressions.array_exp2_vec2_fragment
+KHR-GL44.constant_expressions.array_exp2_vec2_compute
+KHR-GL44.constant_expressions.array_exp2_vec2_geometry
+KHR-GL44.constant_expressions.array_exp2_vec2_tess_control
+KHR-GL44.constant_expressions.array_exp2_vec2_tess_eval
+KHR-GL44.constant_expressions.array_exp2_vec3_vertex
+KHR-GL44.constant_expressions.array_exp2_vec3_fragment
+KHR-GL44.constant_expressions.array_exp2_vec3_compute
+KHR-GL44.constant_expressions.array_exp2_vec3_geometry
+KHR-GL44.constant_expressions.array_exp2_vec3_tess_control
+KHR-GL44.constant_expressions.array_exp2_vec3_tess_eval
+KHR-GL44.constant_expressions.array_exp2_vec4_vertex
+KHR-GL44.constant_expressions.array_exp2_vec4_fragment
+KHR-GL44.constant_expressions.array_exp2_vec4_compute
+KHR-GL44.constant_expressions.array_exp2_vec4_geometry
+KHR-GL44.constant_expressions.array_exp2_vec4_tess_control
+KHR-GL44.constant_expressions.array_exp2_vec4_tess_eval
+KHR-GL44.constant_expressions.array_log2_float_vertex
+KHR-GL44.constant_expressions.array_log2_float_fragment
+KHR-GL44.constant_expressions.array_log2_float_compute
+KHR-GL44.constant_expressions.array_log2_float_geometry
+KHR-GL44.constant_expressions.array_log2_float_tess_control
+KHR-GL44.constant_expressions.array_log2_float_tess_eval
+KHR-GL44.constant_expressions.array_log2_vec2_vertex
+KHR-GL44.constant_expressions.array_log2_vec2_fragment
+KHR-GL44.constant_expressions.array_log2_vec2_compute
+KHR-GL44.constant_expressions.array_log2_vec2_geometry
+KHR-GL44.constant_expressions.array_log2_vec2_tess_control
+KHR-GL44.constant_expressions.array_log2_vec2_tess_eval
+KHR-GL44.constant_expressions.array_log2_vec3_vertex
+KHR-GL44.constant_expressions.array_log2_vec3_fragment
+KHR-GL44.constant_expressions.array_log2_vec3_compute
+KHR-GL44.constant_expressions.array_log2_vec3_geometry
+KHR-GL44.constant_expressions.array_log2_vec3_tess_control
+KHR-GL44.constant_expressions.array_log2_vec3_tess_eval
+KHR-GL44.constant_expressions.array_log2_vec4_vertex
+KHR-GL44.constant_expressions.array_log2_vec4_fragment
+KHR-GL44.constant_expressions.array_log2_vec4_compute
+KHR-GL44.constant_expressions.array_log2_vec4_geometry
+KHR-GL44.constant_expressions.array_log2_vec4_tess_control
+KHR-GL44.constant_expressions.array_log2_vec4_tess_eval
+KHR-GL44.constant_expressions.array_sqrt_float_vertex
+KHR-GL44.constant_expressions.array_sqrt_float_fragment
+KHR-GL44.constant_expressions.array_sqrt_float_compute
+KHR-GL44.constant_expressions.array_sqrt_float_geometry
+KHR-GL44.constant_expressions.array_sqrt_float_tess_control
+KHR-GL44.constant_expressions.array_sqrt_float_tess_eval
+KHR-GL44.constant_expressions.array_sqrt_vec2_vertex
+KHR-GL44.constant_expressions.array_sqrt_vec2_fragment
+KHR-GL44.constant_expressions.array_sqrt_vec2_compute
+KHR-GL44.constant_expressions.array_sqrt_vec2_geometry
+KHR-GL44.constant_expressions.array_sqrt_vec2_tess_control
+KHR-GL44.constant_expressions.array_sqrt_vec2_tess_eval
+KHR-GL44.constant_expressions.array_sqrt_vec3_vertex
+KHR-GL44.constant_expressions.array_sqrt_vec3_fragment
+KHR-GL44.constant_expressions.array_sqrt_vec3_compute
+KHR-GL44.constant_expressions.array_sqrt_vec3_geometry
+KHR-GL44.constant_expressions.array_sqrt_vec3_tess_control
+KHR-GL44.constant_expressions.array_sqrt_vec3_tess_eval
+KHR-GL44.constant_expressions.array_sqrt_vec4_vertex
+KHR-GL44.constant_expressions.array_sqrt_vec4_fragment
+KHR-GL44.constant_expressions.array_sqrt_vec4_compute
+KHR-GL44.constant_expressions.array_sqrt_vec4_geometry
+KHR-GL44.constant_expressions.array_sqrt_vec4_tess_control
+KHR-GL44.constant_expressions.array_sqrt_vec4_tess_eval
+KHR-GL44.constant_expressions.array_inversesqrt_float_vertex
+KHR-GL44.constant_expressions.array_inversesqrt_float_fragment
+KHR-GL44.constant_expressions.array_inversesqrt_float_compute
+KHR-GL44.constant_expressions.array_inversesqrt_float_geometry
+KHR-GL44.constant_expressions.array_inversesqrt_float_tess_control
+KHR-GL44.constant_expressions.array_inversesqrt_float_tess_eval
+KHR-GL44.constant_expressions.array_inversesqrt_vec2_vertex
+KHR-GL44.constant_expressions.array_inversesqrt_vec2_fragment
+KHR-GL44.constant_expressions.array_inversesqrt_vec2_compute
+KHR-GL44.constant_expressions.array_inversesqrt_vec2_geometry
+KHR-GL44.constant_expressions.array_inversesqrt_vec2_tess_control
+KHR-GL44.constant_expressions.array_inversesqrt_vec2_tess_eval
+KHR-GL44.constant_expressions.array_inversesqrt_vec3_vertex
+KHR-GL44.constant_expressions.array_inversesqrt_vec3_fragment
+KHR-GL44.constant_expressions.array_inversesqrt_vec3_compute
+KHR-GL44.constant_expressions.array_inversesqrt_vec3_geometry
+KHR-GL44.constant_expressions.array_inversesqrt_vec3_tess_control
+KHR-GL44.constant_expressions.array_inversesqrt_vec3_tess_eval
+KHR-GL44.constant_expressions.array_inversesqrt_vec4_vertex
+KHR-GL44.constant_expressions.array_inversesqrt_vec4_fragment
+KHR-GL44.constant_expressions.array_inversesqrt_vec4_compute
+KHR-GL44.constant_expressions.array_inversesqrt_vec4_geometry
+KHR-GL44.constant_expressions.array_inversesqrt_vec4_tess_control
+KHR-GL44.constant_expressions.array_inversesqrt_vec4_tess_eval
+KHR-GL44.constant_expressions.array_abs_int_vertex
+KHR-GL44.constant_expressions.array_abs_int_fragment
+KHR-GL44.constant_expressions.array_abs_int_compute
+KHR-GL44.constant_expressions.array_abs_int_geometry
+KHR-GL44.constant_expressions.array_abs_int_tess_control
+KHR-GL44.constant_expressions.array_abs_int_tess_eval
+KHR-GL44.constant_expressions.array_abs_ivec2_vertex
+KHR-GL44.constant_expressions.array_abs_ivec2_fragment
+KHR-GL44.constant_expressions.array_abs_ivec2_compute
+KHR-GL44.constant_expressions.array_abs_ivec2_geometry
+KHR-GL44.constant_expressions.array_abs_ivec2_tess_control
+KHR-GL44.constant_expressions.array_abs_ivec2_tess_eval
+KHR-GL44.constant_expressions.array_abs_ivec3_vertex
+KHR-GL44.constant_expressions.array_abs_ivec3_fragment
+KHR-GL44.constant_expressions.array_abs_ivec3_compute
+KHR-GL44.constant_expressions.array_abs_ivec3_geometry
+KHR-GL44.constant_expressions.array_abs_ivec3_tess_control
+KHR-GL44.constant_expressions.array_abs_ivec3_tess_eval
+KHR-GL44.constant_expressions.array_abs_ivec4_vertex
+KHR-GL44.constant_expressions.array_abs_ivec4_fragment
+KHR-GL44.constant_expressions.array_abs_ivec4_compute
+KHR-GL44.constant_expressions.array_abs_ivec4_geometry
+KHR-GL44.constant_expressions.array_abs_ivec4_tess_control
+KHR-GL44.constant_expressions.array_abs_ivec4_tess_eval
+KHR-GL44.constant_expressions.array_sign_float_vertex
+KHR-GL44.constant_expressions.array_sign_float_fragment
+KHR-GL44.constant_expressions.array_sign_float_compute
+KHR-GL44.constant_expressions.array_sign_float_geometry
+KHR-GL44.constant_expressions.array_sign_float_tess_control
+KHR-GL44.constant_expressions.array_sign_float_tess_eval
+KHR-GL44.constant_expressions.array_sign_vec2_vertex
+KHR-GL44.constant_expressions.array_sign_vec2_fragment
+KHR-GL44.constant_expressions.array_sign_vec2_compute
+KHR-GL44.constant_expressions.array_sign_vec2_geometry
+KHR-GL44.constant_expressions.array_sign_vec2_tess_control
+KHR-GL44.constant_expressions.array_sign_vec2_tess_eval
+KHR-GL44.constant_expressions.array_sign_vec3_vertex
+KHR-GL44.constant_expressions.array_sign_vec3_fragment
+KHR-GL44.constant_expressions.array_sign_vec3_compute
+KHR-GL44.constant_expressions.array_sign_vec3_geometry
+KHR-GL44.constant_expressions.array_sign_vec3_tess_control
+KHR-GL44.constant_expressions.array_sign_vec3_tess_eval
+KHR-GL44.constant_expressions.array_sign_vec4_vertex
+KHR-GL44.constant_expressions.array_sign_vec4_fragment
+KHR-GL44.constant_expressions.array_sign_vec4_compute
+KHR-GL44.constant_expressions.array_sign_vec4_geometry
+KHR-GL44.constant_expressions.array_sign_vec4_tess_control
+KHR-GL44.constant_expressions.array_sign_vec4_tess_eval
+KHR-GL44.constant_expressions.array_floor_float_vertex
+KHR-GL44.constant_expressions.array_floor_float_fragment
+KHR-GL44.constant_expressions.array_floor_float_compute
+KHR-GL44.constant_expressions.array_floor_float_geometry
+KHR-GL44.constant_expressions.array_floor_float_tess_control
+KHR-GL44.constant_expressions.array_floor_float_tess_eval
+KHR-GL44.constant_expressions.array_floor_vec2_vertex
+KHR-GL44.constant_expressions.array_floor_vec2_fragment
+KHR-GL44.constant_expressions.array_floor_vec2_compute
+KHR-GL44.constant_expressions.array_floor_vec2_geometry
+KHR-GL44.constant_expressions.array_floor_vec2_tess_control
+KHR-GL44.constant_expressions.array_floor_vec2_tess_eval
+KHR-GL44.constant_expressions.array_floor_vec3_vertex
+KHR-GL44.constant_expressions.array_floor_vec3_fragment
+KHR-GL44.constant_expressions.array_floor_vec3_compute
+KHR-GL44.constant_expressions.array_floor_vec3_geometry
+KHR-GL44.constant_expressions.array_floor_vec3_tess_control
+KHR-GL44.constant_expressions.array_floor_vec3_tess_eval
+KHR-GL44.constant_expressions.array_floor_vec4_vertex
+KHR-GL44.constant_expressions.array_floor_vec4_fragment
+KHR-GL44.constant_expressions.array_floor_vec4_compute
+KHR-GL44.constant_expressions.array_floor_vec4_geometry
+KHR-GL44.constant_expressions.array_floor_vec4_tess_control
+KHR-GL44.constant_expressions.array_floor_vec4_tess_eval
+KHR-GL44.constant_expressions.array_trunc_float_vertex
+KHR-GL44.constant_expressions.array_trunc_float_fragment
+KHR-GL44.constant_expressions.array_trunc_float_compute
+KHR-GL44.constant_expressions.array_trunc_float_geometry
+KHR-GL44.constant_expressions.array_trunc_float_tess_control
+KHR-GL44.constant_expressions.array_trunc_float_tess_eval
+KHR-GL44.constant_expressions.array_trunc_vec2_vertex
+KHR-GL44.constant_expressions.array_trunc_vec2_fragment
+KHR-GL44.constant_expressions.array_trunc_vec2_compute
+KHR-GL44.constant_expressions.array_trunc_vec2_geometry
+KHR-GL44.constant_expressions.array_trunc_vec2_tess_control
+KHR-GL44.constant_expressions.array_trunc_vec2_tess_eval
+KHR-GL44.constant_expressions.array_trunc_vec3_vertex
+KHR-GL44.constant_expressions.array_trunc_vec3_fragment
+KHR-GL44.constant_expressions.array_trunc_vec3_compute
+KHR-GL44.constant_expressions.array_trunc_vec3_geometry
+KHR-GL44.constant_expressions.array_trunc_vec3_tess_control
+KHR-GL44.constant_expressions.array_trunc_vec3_tess_eval
+KHR-GL44.constant_expressions.array_trunc_vec4_vertex
+KHR-GL44.constant_expressions.array_trunc_vec4_fragment
+KHR-GL44.constant_expressions.array_trunc_vec4_compute
+KHR-GL44.constant_expressions.array_trunc_vec4_geometry
+KHR-GL44.constant_expressions.array_trunc_vec4_tess_control
+KHR-GL44.constant_expressions.array_trunc_vec4_tess_eval
+KHR-GL44.constant_expressions.array_round_float_vertex
+KHR-GL44.constant_expressions.array_round_float_fragment
+KHR-GL44.constant_expressions.array_round_float_compute
+KHR-GL44.constant_expressions.array_round_float_geometry
+KHR-GL44.constant_expressions.array_round_float_tess_control
+KHR-GL44.constant_expressions.array_round_float_tess_eval
+KHR-GL44.constant_expressions.array_round_vec2_vertex
+KHR-GL44.constant_expressions.array_round_vec2_fragment
+KHR-GL44.constant_expressions.array_round_vec2_compute
+KHR-GL44.constant_expressions.array_round_vec2_geometry
+KHR-GL44.constant_expressions.array_round_vec2_tess_control
+KHR-GL44.constant_expressions.array_round_vec2_tess_eval
+KHR-GL44.constant_expressions.array_round_vec3_vertex
+KHR-GL44.constant_expressions.array_round_vec3_fragment
+KHR-GL44.constant_expressions.array_round_vec3_compute
+KHR-GL44.constant_expressions.array_round_vec3_geometry
+KHR-GL44.constant_expressions.array_round_vec3_tess_control
+KHR-GL44.constant_expressions.array_round_vec3_tess_eval
+KHR-GL44.constant_expressions.array_round_vec4_vertex
+KHR-GL44.constant_expressions.array_round_vec4_fragment
+KHR-GL44.constant_expressions.array_round_vec4_compute
+KHR-GL44.constant_expressions.array_round_vec4_geometry
+KHR-GL44.constant_expressions.array_round_vec4_tess_control
+KHR-GL44.constant_expressions.array_round_vec4_tess_eval
+KHR-GL44.constant_expressions.array_ceil_float_vertex
+KHR-GL44.constant_expressions.array_ceil_float_fragment
+KHR-GL44.constant_expressions.array_ceil_float_compute
+KHR-GL44.constant_expressions.array_ceil_float_geometry
+KHR-GL44.constant_expressions.array_ceil_float_tess_control
+KHR-GL44.constant_expressions.array_ceil_float_tess_eval
+KHR-GL44.constant_expressions.array_ceil_vec2_vertex
+KHR-GL44.constant_expressions.array_ceil_vec2_fragment
+KHR-GL44.constant_expressions.array_ceil_vec2_compute
+KHR-GL44.constant_expressions.array_ceil_vec2_geometry
+KHR-GL44.constant_expressions.array_ceil_vec2_tess_control
+KHR-GL44.constant_expressions.array_ceil_vec2_tess_eval
+KHR-GL44.constant_expressions.array_ceil_vec3_vertex
+KHR-GL44.constant_expressions.array_ceil_vec3_fragment
+KHR-GL44.constant_expressions.array_ceil_vec3_compute
+KHR-GL44.constant_expressions.array_ceil_vec3_geometry
+KHR-GL44.constant_expressions.array_ceil_vec3_tess_control
+KHR-GL44.constant_expressions.array_ceil_vec3_tess_eval
+KHR-GL44.constant_expressions.array_ceil_vec4_vertex
+KHR-GL44.constant_expressions.array_ceil_vec4_fragment
+KHR-GL44.constant_expressions.array_ceil_vec4_compute
+KHR-GL44.constant_expressions.array_ceil_vec4_geometry
+KHR-GL44.constant_expressions.array_ceil_vec4_tess_control
+KHR-GL44.constant_expressions.array_ceil_vec4_tess_eval
+KHR-GL44.constant_expressions.array_mod_float_vertex
+KHR-GL44.constant_expressions.array_mod_float_fragment
+KHR-GL44.constant_expressions.array_mod_float_compute
+KHR-GL44.constant_expressions.array_mod_float_geometry
+KHR-GL44.constant_expressions.array_mod_float_tess_control
+KHR-GL44.constant_expressions.array_mod_float_tess_eval
+KHR-GL44.constant_expressions.array_mod_vec2_vertex
+KHR-GL44.constant_expressions.array_mod_vec2_fragment
+KHR-GL44.constant_expressions.array_mod_vec2_compute
+KHR-GL44.constant_expressions.array_mod_vec2_geometry
+KHR-GL44.constant_expressions.array_mod_vec2_tess_control
+KHR-GL44.constant_expressions.array_mod_vec2_tess_eval
+KHR-GL44.constant_expressions.array_mod_vec2_float_vertex
+KHR-GL44.constant_expressions.array_mod_vec2_float_fragment
+KHR-GL44.constant_expressions.array_mod_vec2_float_compute
+KHR-GL44.constant_expressions.array_mod_vec2_float_geometry
+KHR-GL44.constant_expressions.array_mod_vec2_float_tess_control
+KHR-GL44.constant_expressions.array_mod_vec2_float_tess_eval
+KHR-GL44.constant_expressions.array_mod_vec3_vertex
+KHR-GL44.constant_expressions.array_mod_vec3_fragment
+KHR-GL44.constant_expressions.array_mod_vec3_compute
+KHR-GL44.constant_expressions.array_mod_vec3_geometry
+KHR-GL44.constant_expressions.array_mod_vec3_tess_control
+KHR-GL44.constant_expressions.array_mod_vec3_tess_eval
+KHR-GL44.constant_expressions.array_mod_vec3_float_vertex
+KHR-GL44.constant_expressions.array_mod_vec3_float_fragment
+KHR-GL44.constant_expressions.array_mod_vec3_float_compute
+KHR-GL44.constant_expressions.array_mod_vec3_float_geometry
+KHR-GL44.constant_expressions.array_mod_vec3_float_tess_control
+KHR-GL44.constant_expressions.array_mod_vec3_float_tess_eval
+KHR-GL44.constant_expressions.array_mod_vec4_vertex
+KHR-GL44.constant_expressions.array_mod_vec4_fragment
+KHR-GL44.constant_expressions.array_mod_vec4_compute
+KHR-GL44.constant_expressions.array_mod_vec4_geometry
+KHR-GL44.constant_expressions.array_mod_vec4_tess_control
+KHR-GL44.constant_expressions.array_mod_vec4_tess_eval
+KHR-GL44.constant_expressions.array_mod_vec4_float_vertex
+KHR-GL44.constant_expressions.array_mod_vec4_float_fragment
+KHR-GL44.constant_expressions.array_mod_vec4_float_compute
+KHR-GL44.constant_expressions.array_mod_vec4_float_geometry
+KHR-GL44.constant_expressions.array_mod_vec4_float_tess_control
+KHR-GL44.constant_expressions.array_mod_vec4_float_tess_eval
+KHR-GL44.constant_expressions.array_min_float_vertex
+KHR-GL44.constant_expressions.array_min_float_fragment
+KHR-GL44.constant_expressions.array_min_float_compute
+KHR-GL44.constant_expressions.array_min_float_geometry
+KHR-GL44.constant_expressions.array_min_float_tess_control
+KHR-GL44.constant_expressions.array_min_float_tess_eval
+KHR-GL44.constant_expressions.array_min_vec2_vertex
+KHR-GL44.constant_expressions.array_min_vec2_fragment
+KHR-GL44.constant_expressions.array_min_vec2_compute
+KHR-GL44.constant_expressions.array_min_vec2_geometry
+KHR-GL44.constant_expressions.array_min_vec2_tess_control
+KHR-GL44.constant_expressions.array_min_vec2_tess_eval
+KHR-GL44.constant_expressions.array_min_vec2_float_vertex
+KHR-GL44.constant_expressions.array_min_vec2_float_fragment
+KHR-GL44.constant_expressions.array_min_vec2_float_compute
+KHR-GL44.constant_expressions.array_min_vec2_float_geometry
+KHR-GL44.constant_expressions.array_min_vec2_float_tess_control
+KHR-GL44.constant_expressions.array_min_vec2_float_tess_eval
+KHR-GL44.constant_expressions.array_min_vec3_vertex
+KHR-GL44.constant_expressions.array_min_vec3_fragment
+KHR-GL44.constant_expressions.array_min_vec3_compute
+KHR-GL44.constant_expressions.array_min_vec3_geometry
+KHR-GL44.constant_expressions.array_min_vec3_tess_control
+KHR-GL44.constant_expressions.array_min_vec3_tess_eval
+KHR-GL44.constant_expressions.array_min_vec3_float_vertex
+KHR-GL44.constant_expressions.array_min_vec3_float_fragment
+KHR-GL44.constant_expressions.array_min_vec3_float_compute
+KHR-GL44.constant_expressions.array_min_vec3_float_geometry
+KHR-GL44.constant_expressions.array_min_vec3_float_tess_control
+KHR-GL44.constant_expressions.array_min_vec3_float_tess_eval
+KHR-GL44.constant_expressions.array_min_vec4_vertex
+KHR-GL44.constant_expressions.array_min_vec4_fragment
+KHR-GL44.constant_expressions.array_min_vec4_compute
+KHR-GL44.constant_expressions.array_min_vec4_geometry
+KHR-GL44.constant_expressions.array_min_vec4_tess_control
+KHR-GL44.constant_expressions.array_min_vec4_tess_eval
+KHR-GL44.constant_expressions.array_min_vec4_float_vertex
+KHR-GL44.constant_expressions.array_min_vec4_float_fragment
+KHR-GL44.constant_expressions.array_min_vec4_float_compute
+KHR-GL44.constant_expressions.array_min_vec4_float_geometry
+KHR-GL44.constant_expressions.array_min_vec4_float_tess_control
+KHR-GL44.constant_expressions.array_min_vec4_float_tess_eval
+KHR-GL44.constant_expressions.array_max_float_vertex
+KHR-GL44.constant_expressions.array_max_float_fragment
+KHR-GL44.constant_expressions.array_max_float_compute
+KHR-GL44.constant_expressions.array_max_float_geometry
+KHR-GL44.constant_expressions.array_max_float_tess_control
+KHR-GL44.constant_expressions.array_max_float_tess_eval
+KHR-GL44.constant_expressions.array_max_vec2_vertex
+KHR-GL44.constant_expressions.array_max_vec2_fragment
+KHR-GL44.constant_expressions.array_max_vec2_compute
+KHR-GL44.constant_expressions.array_max_vec2_geometry
+KHR-GL44.constant_expressions.array_max_vec2_tess_control
+KHR-GL44.constant_expressions.array_max_vec2_tess_eval
+KHR-GL44.constant_expressions.array_max_vec2_float_vertex
+KHR-GL44.constant_expressions.array_max_vec2_float_fragment
+KHR-GL44.constant_expressions.array_max_vec2_float_compute
+KHR-GL44.constant_expressions.array_max_vec2_float_geometry
+KHR-GL44.constant_expressions.array_max_vec2_float_tess_control
+KHR-GL44.constant_expressions.array_max_vec2_float_tess_eval
+KHR-GL44.constant_expressions.array_max_vec3_vertex
+KHR-GL44.constant_expressions.array_max_vec3_fragment
+KHR-GL44.constant_expressions.array_max_vec3_compute
+KHR-GL44.constant_expressions.array_max_vec3_geometry
+KHR-GL44.constant_expressions.array_max_vec3_tess_control
+KHR-GL44.constant_expressions.array_max_vec3_tess_eval
+KHR-GL44.constant_expressions.array_max_vec3_float_vertex
+KHR-GL44.constant_expressions.array_max_vec3_float_fragment
+KHR-GL44.constant_expressions.array_max_vec3_float_compute
+KHR-GL44.constant_expressions.array_max_vec3_float_geometry
+KHR-GL44.constant_expressions.array_max_vec3_float_tess_control
+KHR-GL44.constant_expressions.array_max_vec3_float_tess_eval
+KHR-GL44.constant_expressions.array_max_vec4_vertex
+KHR-GL44.constant_expressions.array_max_vec4_fragment
+KHR-GL44.constant_expressions.array_max_vec4_compute
+KHR-GL44.constant_expressions.array_max_vec4_geometry
+KHR-GL44.constant_expressions.array_max_vec4_tess_control
+KHR-GL44.constant_expressions.array_max_vec4_tess_eval
+KHR-GL44.constant_expressions.array_max_vec4_float_vertex
+KHR-GL44.constant_expressions.array_max_vec4_float_fragment
+KHR-GL44.constant_expressions.array_max_vec4_float_compute
+KHR-GL44.constant_expressions.array_max_vec4_float_geometry
+KHR-GL44.constant_expressions.array_max_vec4_float_tess_control
+KHR-GL44.constant_expressions.array_max_vec4_float_tess_eval
+KHR-GL44.constant_expressions.array_clamp_float_vertex
+KHR-GL44.constant_expressions.array_clamp_float_fragment
+KHR-GL44.constant_expressions.array_clamp_float_compute
+KHR-GL44.constant_expressions.array_clamp_float_geometry
+KHR-GL44.constant_expressions.array_clamp_float_tess_control
+KHR-GL44.constant_expressions.array_clamp_float_tess_eval
+KHR-GL44.constant_expressions.array_clamp_vec2_vertex
+KHR-GL44.constant_expressions.array_clamp_vec2_fragment
+KHR-GL44.constant_expressions.array_clamp_vec2_compute
+KHR-GL44.constant_expressions.array_clamp_vec2_geometry
+KHR-GL44.constant_expressions.array_clamp_vec2_tess_control
+KHR-GL44.constant_expressions.array_clamp_vec2_tess_eval
+KHR-GL44.constant_expressions.array_clamp_vec2_float_vertex
+KHR-GL44.constant_expressions.array_clamp_vec2_float_fragment
+KHR-GL44.constant_expressions.array_clamp_vec2_float_compute
+KHR-GL44.constant_expressions.array_clamp_vec2_float_geometry
+KHR-GL44.constant_expressions.array_clamp_vec2_float_tess_control
+KHR-GL44.constant_expressions.array_clamp_vec2_float_tess_eval
+KHR-GL44.constant_expressions.array_clamp_vec3_vertex
+KHR-GL44.constant_expressions.array_clamp_vec3_fragment
+KHR-GL44.constant_expressions.array_clamp_vec3_compute
+KHR-GL44.constant_expressions.array_clamp_vec3_geometry
+KHR-GL44.constant_expressions.array_clamp_vec3_tess_control
+KHR-GL44.constant_expressions.array_clamp_vec3_tess_eval
+KHR-GL44.constant_expressions.array_clamp_vec3_float_vertex
+KHR-GL44.constant_expressions.array_clamp_vec3_float_fragment
+KHR-GL44.constant_expressions.array_clamp_vec3_float_compute
+KHR-GL44.constant_expressions.array_clamp_vec3_float_geometry
+KHR-GL44.constant_expressions.array_clamp_vec3_float_tess_control
+KHR-GL44.constant_expressions.array_clamp_vec3_float_tess_eval
+KHR-GL44.constant_expressions.array_clamp_vec4_vertex
+KHR-GL44.constant_expressions.array_clamp_vec4_fragment
+KHR-GL44.constant_expressions.array_clamp_vec4_compute
+KHR-GL44.constant_expressions.array_clamp_vec4_geometry
+KHR-GL44.constant_expressions.array_clamp_vec4_tess_control
+KHR-GL44.constant_expressions.array_clamp_vec4_tess_eval
+KHR-GL44.constant_expressions.array_clamp_vec4_float_vertex
+KHR-GL44.constant_expressions.array_clamp_vec4_float_fragment
+KHR-GL44.constant_expressions.array_clamp_vec4_float_compute
+KHR-GL44.constant_expressions.array_clamp_vec4_float_geometry
+KHR-GL44.constant_expressions.array_clamp_vec4_float_tess_control
+KHR-GL44.constant_expressions.array_clamp_vec4_float_tess_eval
+KHR-GL44.constant_expressions.array_length_float_vertex
+KHR-GL44.constant_expressions.array_length_float_fragment
+KHR-GL44.constant_expressions.array_length_float_compute
+KHR-GL44.constant_expressions.array_length_float_geometry
+KHR-GL44.constant_expressions.array_length_float_tess_control
+KHR-GL44.constant_expressions.array_length_float_tess_eval
+KHR-GL44.constant_expressions.array_length_vec2_vertex
+KHR-GL44.constant_expressions.array_length_vec2_fragment
+KHR-GL44.constant_expressions.array_length_vec2_compute
+KHR-GL44.constant_expressions.array_length_vec2_geometry
+KHR-GL44.constant_expressions.array_length_vec2_tess_control
+KHR-GL44.constant_expressions.array_length_vec2_tess_eval
+KHR-GL44.constant_expressions.array_length_vec3_vertex
+KHR-GL44.constant_expressions.array_length_vec3_fragment
+KHR-GL44.constant_expressions.array_length_vec3_compute
+KHR-GL44.constant_expressions.array_length_vec3_geometry
+KHR-GL44.constant_expressions.array_length_vec3_tess_control
+KHR-GL44.constant_expressions.array_length_vec3_tess_eval
+KHR-GL44.constant_expressions.array_length_vec4_vertex
+KHR-GL44.constant_expressions.array_length_vec4_fragment
+KHR-GL44.constant_expressions.array_length_vec4_compute
+KHR-GL44.constant_expressions.array_length_vec4_geometry
+KHR-GL44.constant_expressions.array_length_vec4_tess_control
+KHR-GL44.constant_expressions.array_length_vec4_tess_eval
+KHR-GL44.constant_expressions.array_dot_float_vertex
+KHR-GL44.constant_expressions.array_dot_float_fragment
+KHR-GL44.constant_expressions.array_dot_float_compute
+KHR-GL44.constant_expressions.array_dot_float_geometry
+KHR-GL44.constant_expressions.array_dot_float_tess_control
+KHR-GL44.constant_expressions.array_dot_float_tess_eval
+KHR-GL44.constant_expressions.array_dot_vec2_vertex
+KHR-GL44.constant_expressions.array_dot_vec2_fragment
+KHR-GL44.constant_expressions.array_dot_vec2_compute
+KHR-GL44.constant_expressions.array_dot_vec2_geometry
+KHR-GL44.constant_expressions.array_dot_vec2_tess_control
+KHR-GL44.constant_expressions.array_dot_vec2_tess_eval
+KHR-GL44.constant_expressions.array_dot_vec3_vertex
+KHR-GL44.constant_expressions.array_dot_vec3_fragment
+KHR-GL44.constant_expressions.array_dot_vec3_compute
+KHR-GL44.constant_expressions.array_dot_vec3_geometry
+KHR-GL44.constant_expressions.array_dot_vec3_tess_control
+KHR-GL44.constant_expressions.array_dot_vec3_tess_eval
+KHR-GL44.constant_expressions.array_dot_vec4_vertex
+KHR-GL44.constant_expressions.array_dot_vec4_fragment
+KHR-GL44.constant_expressions.array_dot_vec4_compute
+KHR-GL44.constant_expressions.array_dot_vec4_geometry
+KHR-GL44.constant_expressions.array_dot_vec4_tess_control
+KHR-GL44.constant_expressions.array_dot_vec4_tess_eval
+KHR-GL44.constant_expressions.array_normalize_float_vertex
+KHR-GL44.constant_expressions.array_normalize_float_fragment
+KHR-GL44.constant_expressions.array_normalize_float_compute
+KHR-GL44.constant_expressions.array_normalize_float_geometry
+KHR-GL44.constant_expressions.array_normalize_float_tess_control
+KHR-GL44.constant_expressions.array_normalize_float_tess_eval
+KHR-GL44.constant_expressions.array_normalize_vec2_vertex
+KHR-GL44.constant_expressions.array_normalize_vec2_fragment
+KHR-GL44.constant_expressions.array_normalize_vec2_compute
+KHR-GL44.constant_expressions.array_normalize_vec2_geometry
+KHR-GL44.constant_expressions.array_normalize_vec2_tess_control
+KHR-GL44.constant_expressions.array_normalize_vec2_tess_eval
+KHR-GL44.constant_expressions.array_normalize_vec3_vertex
+KHR-GL44.constant_expressions.array_normalize_vec3_fragment
+KHR-GL44.constant_expressions.array_normalize_vec3_compute
+KHR-GL44.constant_expressions.array_normalize_vec3_geometry
+KHR-GL44.constant_expressions.array_normalize_vec3_tess_control
+KHR-GL44.constant_expressions.array_normalize_vec3_tess_eval
+KHR-GL44.constant_expressions.array_normalize_vec4_vertex
+KHR-GL44.constant_expressions.array_normalize_vec4_fragment
+KHR-GL44.constant_expressions.array_normalize_vec4_compute
+KHR-GL44.constant_expressions.array_normalize_vec4_geometry
+KHR-GL44.constant_expressions.array_normalize_vec4_tess_control
+KHR-GL44.constant_expressions.array_normalize_vec4_tess_eval
KHR-GL44.shaders44.preprocessor.invalid_redefinitions.invalid_identifier_2_vertex
KHR-GL44.shaders44.preprocessor.invalid_redefinitions.invalid_identifier_2_fragment
KHR-GL44.shaders44.preprocessor.line_continuation.comment_vertex
diff --git a/external/openglcts/data/mustpass/gl/khronos_mustpass/4.5.5.x/gl45-master.txt b/external/openglcts/data/mustpass/gl/khronos_mustpass/4.5.5.x/gl45-master.txt
index ed785a7..3b3b0d5 100644
--- a/external/openglcts/data/mustpass/gl/khronos_mustpass/4.5.5.x/gl45-master.txt
+++ b/external/openglcts/data/mustpass/gl/khronos_mustpass/4.5.5.x/gl45-master.txt
@@ -2798,7 +2798,6 @@
KHR-GL45.shader_subroutine.subroutine_uniform_reset
KHR-GL45.shader_subroutine.same_subroutine_and_subroutine_uniform_but_different_type_used_in_all_stages
KHR-GL45.shader_subroutine.control_flow_and_returned_subroutine_values_used_as_subroutine_input
-KHR-GL45.shader_subroutine.multiple_contexts
KHR-GL45.shader_subroutine.subroutine_errors
KHR-GL45.shader_subroutine.subroutine_uniform_scope
KHR-GL45.shader_subroutine.missing_subroutine_keyword
@@ -2868,6 +2867,7 @@
KHR-GL45.shader_atomic_counters.negative-uniform
KHR-GL45.shader_atomic_counters.negative-array
KHR-GL45.shader_atomic_counters.negative-arithmetic
+KHR-GL45.shader_atomic_counters.negative-unsized-array
KHR-GL45.shader_image_load_store.basic-api-get
KHR-GL45.shader_image_load_store.basic-api-bind
KHR-GL45.shader_image_load_store.basic-api-barrier
@@ -3861,6 +3861,1398 @@
KHR-GL45.shader_ballot_tests.ShaderBallotBitmasks
KHR-GL45.shader_ballot_tests.ShaderBallotFunctionBallot
KHR-GL45.shader_ballot_tests.ShaderBallotFunctionRead
+KHR-GL45.constant_expressions.basic_radians_float_vertex
+KHR-GL45.constant_expressions.basic_radians_float_fragment
+KHR-GL45.constant_expressions.basic_radians_float_compute
+KHR-GL45.constant_expressions.basic_radians_float_geometry
+KHR-GL45.constant_expressions.basic_radians_float_tess_control
+KHR-GL45.constant_expressions.basic_radians_float_tess_eval
+KHR-GL45.constant_expressions.basic_radians_vec2_vertex
+KHR-GL45.constant_expressions.basic_radians_vec2_fragment
+KHR-GL45.constant_expressions.basic_radians_vec2_compute
+KHR-GL45.constant_expressions.basic_radians_vec2_geometry
+KHR-GL45.constant_expressions.basic_radians_vec2_tess_control
+KHR-GL45.constant_expressions.basic_radians_vec2_tess_eval
+KHR-GL45.constant_expressions.basic_radians_vec3_vertex
+KHR-GL45.constant_expressions.basic_radians_vec3_fragment
+KHR-GL45.constant_expressions.basic_radians_vec3_compute
+KHR-GL45.constant_expressions.basic_radians_vec3_geometry
+KHR-GL45.constant_expressions.basic_radians_vec3_tess_control
+KHR-GL45.constant_expressions.basic_radians_vec3_tess_eval
+KHR-GL45.constant_expressions.basic_radians_vec4_vertex
+KHR-GL45.constant_expressions.basic_radians_vec4_fragment
+KHR-GL45.constant_expressions.basic_radians_vec4_compute
+KHR-GL45.constant_expressions.basic_radians_vec4_geometry
+KHR-GL45.constant_expressions.basic_radians_vec4_tess_control
+KHR-GL45.constant_expressions.basic_radians_vec4_tess_eval
+KHR-GL45.constant_expressions.basic_degrees_float_vertex
+KHR-GL45.constant_expressions.basic_degrees_float_fragment
+KHR-GL45.constant_expressions.basic_degrees_float_compute
+KHR-GL45.constant_expressions.basic_degrees_float_geometry
+KHR-GL45.constant_expressions.basic_degrees_float_tess_control
+KHR-GL45.constant_expressions.basic_degrees_float_tess_eval
+KHR-GL45.constant_expressions.basic_degrees_vec2_vertex
+KHR-GL45.constant_expressions.basic_degrees_vec2_fragment
+KHR-GL45.constant_expressions.basic_degrees_vec2_compute
+KHR-GL45.constant_expressions.basic_degrees_vec2_geometry
+KHR-GL45.constant_expressions.basic_degrees_vec2_tess_control
+KHR-GL45.constant_expressions.basic_degrees_vec2_tess_eval
+KHR-GL45.constant_expressions.basic_degrees_vec3_vertex
+KHR-GL45.constant_expressions.basic_degrees_vec3_fragment
+KHR-GL45.constant_expressions.basic_degrees_vec3_compute
+KHR-GL45.constant_expressions.basic_degrees_vec3_geometry
+KHR-GL45.constant_expressions.basic_degrees_vec3_tess_control
+KHR-GL45.constant_expressions.basic_degrees_vec3_tess_eval
+KHR-GL45.constant_expressions.basic_degrees_vec4_vertex
+KHR-GL45.constant_expressions.basic_degrees_vec4_fragment
+KHR-GL45.constant_expressions.basic_degrees_vec4_compute
+KHR-GL45.constant_expressions.basic_degrees_vec4_geometry
+KHR-GL45.constant_expressions.basic_degrees_vec4_tess_control
+KHR-GL45.constant_expressions.basic_degrees_vec4_tess_eval
+KHR-GL45.constant_expressions.basic_sin_float_vertex
+KHR-GL45.constant_expressions.basic_sin_float_fragment
+KHR-GL45.constant_expressions.basic_sin_float_compute
+KHR-GL45.constant_expressions.basic_sin_float_geometry
+KHR-GL45.constant_expressions.basic_sin_float_tess_control
+KHR-GL45.constant_expressions.basic_sin_float_tess_eval
+KHR-GL45.constant_expressions.basic_sin_vec2_vertex
+KHR-GL45.constant_expressions.basic_sin_vec2_fragment
+KHR-GL45.constant_expressions.basic_sin_vec2_compute
+KHR-GL45.constant_expressions.basic_sin_vec2_geometry
+KHR-GL45.constant_expressions.basic_sin_vec2_tess_control
+KHR-GL45.constant_expressions.basic_sin_vec2_tess_eval
+KHR-GL45.constant_expressions.basic_sin_vec3_vertex
+KHR-GL45.constant_expressions.basic_sin_vec3_fragment
+KHR-GL45.constant_expressions.basic_sin_vec3_compute
+KHR-GL45.constant_expressions.basic_sin_vec3_geometry
+KHR-GL45.constant_expressions.basic_sin_vec3_tess_control
+KHR-GL45.constant_expressions.basic_sin_vec3_tess_eval
+KHR-GL45.constant_expressions.basic_sin_vec4_vertex
+KHR-GL45.constant_expressions.basic_sin_vec4_fragment
+KHR-GL45.constant_expressions.basic_sin_vec4_compute
+KHR-GL45.constant_expressions.basic_sin_vec4_geometry
+KHR-GL45.constant_expressions.basic_sin_vec4_tess_control
+KHR-GL45.constant_expressions.basic_sin_vec4_tess_eval
+KHR-GL45.constant_expressions.basic_cos_float_vertex
+KHR-GL45.constant_expressions.basic_cos_float_fragment
+KHR-GL45.constant_expressions.basic_cos_float_compute
+KHR-GL45.constant_expressions.basic_cos_float_geometry
+KHR-GL45.constant_expressions.basic_cos_float_tess_control
+KHR-GL45.constant_expressions.basic_cos_float_tess_eval
+KHR-GL45.constant_expressions.basic_cos_vec2_vertex
+KHR-GL45.constant_expressions.basic_cos_vec2_fragment
+KHR-GL45.constant_expressions.basic_cos_vec2_compute
+KHR-GL45.constant_expressions.basic_cos_vec2_geometry
+KHR-GL45.constant_expressions.basic_cos_vec2_tess_control
+KHR-GL45.constant_expressions.basic_cos_vec2_tess_eval
+KHR-GL45.constant_expressions.basic_cos_vec3_vertex
+KHR-GL45.constant_expressions.basic_cos_vec3_fragment
+KHR-GL45.constant_expressions.basic_cos_vec3_compute
+KHR-GL45.constant_expressions.basic_cos_vec3_geometry
+KHR-GL45.constant_expressions.basic_cos_vec3_tess_control
+KHR-GL45.constant_expressions.basic_cos_vec3_tess_eval
+KHR-GL45.constant_expressions.basic_cos_vec4_vertex
+KHR-GL45.constant_expressions.basic_cos_vec4_fragment
+KHR-GL45.constant_expressions.basic_cos_vec4_compute
+KHR-GL45.constant_expressions.basic_cos_vec4_geometry
+KHR-GL45.constant_expressions.basic_cos_vec4_tess_control
+KHR-GL45.constant_expressions.basic_cos_vec4_tess_eval
+KHR-GL45.constant_expressions.basic_asin_float_vertex
+KHR-GL45.constant_expressions.basic_asin_float_fragment
+KHR-GL45.constant_expressions.basic_asin_float_compute
+KHR-GL45.constant_expressions.basic_asin_float_geometry
+KHR-GL45.constant_expressions.basic_asin_float_tess_control
+KHR-GL45.constant_expressions.basic_asin_float_tess_eval
+KHR-GL45.constant_expressions.basic_asin_vec2_vertex
+KHR-GL45.constant_expressions.basic_asin_vec2_fragment
+KHR-GL45.constant_expressions.basic_asin_vec2_compute
+KHR-GL45.constant_expressions.basic_asin_vec2_geometry
+KHR-GL45.constant_expressions.basic_asin_vec2_tess_control
+KHR-GL45.constant_expressions.basic_asin_vec2_tess_eval
+KHR-GL45.constant_expressions.basic_asin_vec3_vertex
+KHR-GL45.constant_expressions.basic_asin_vec3_fragment
+KHR-GL45.constant_expressions.basic_asin_vec3_compute
+KHR-GL45.constant_expressions.basic_asin_vec3_geometry
+KHR-GL45.constant_expressions.basic_asin_vec3_tess_control
+KHR-GL45.constant_expressions.basic_asin_vec3_tess_eval
+KHR-GL45.constant_expressions.basic_asin_vec4_vertex
+KHR-GL45.constant_expressions.basic_asin_vec4_fragment
+KHR-GL45.constant_expressions.basic_asin_vec4_compute
+KHR-GL45.constant_expressions.basic_asin_vec4_geometry
+KHR-GL45.constant_expressions.basic_asin_vec4_tess_control
+KHR-GL45.constant_expressions.basic_asin_vec4_tess_eval
+KHR-GL45.constant_expressions.basic_acos_float_vertex
+KHR-GL45.constant_expressions.basic_acos_float_fragment
+KHR-GL45.constant_expressions.basic_acos_float_compute
+KHR-GL45.constant_expressions.basic_acos_float_geometry
+KHR-GL45.constant_expressions.basic_acos_float_tess_control
+KHR-GL45.constant_expressions.basic_acos_float_tess_eval
+KHR-GL45.constant_expressions.basic_acos_vec2_vertex
+KHR-GL45.constant_expressions.basic_acos_vec2_fragment
+KHR-GL45.constant_expressions.basic_acos_vec2_compute
+KHR-GL45.constant_expressions.basic_acos_vec2_geometry
+KHR-GL45.constant_expressions.basic_acos_vec2_tess_control
+KHR-GL45.constant_expressions.basic_acos_vec2_tess_eval
+KHR-GL45.constant_expressions.basic_acos_vec3_vertex
+KHR-GL45.constant_expressions.basic_acos_vec3_fragment
+KHR-GL45.constant_expressions.basic_acos_vec3_compute
+KHR-GL45.constant_expressions.basic_acos_vec3_geometry
+KHR-GL45.constant_expressions.basic_acos_vec3_tess_control
+KHR-GL45.constant_expressions.basic_acos_vec3_tess_eval
+KHR-GL45.constant_expressions.basic_acos_vec4_vertex
+KHR-GL45.constant_expressions.basic_acos_vec4_fragment
+KHR-GL45.constant_expressions.basic_acos_vec4_compute
+KHR-GL45.constant_expressions.basic_acos_vec4_geometry
+KHR-GL45.constant_expressions.basic_acos_vec4_tess_control
+KHR-GL45.constant_expressions.basic_acos_vec4_tess_eval
+KHR-GL45.constant_expressions.basic_pow_float_vertex
+KHR-GL45.constant_expressions.basic_pow_float_fragment
+KHR-GL45.constant_expressions.basic_pow_float_compute
+KHR-GL45.constant_expressions.basic_pow_float_geometry
+KHR-GL45.constant_expressions.basic_pow_float_tess_control
+KHR-GL45.constant_expressions.basic_pow_float_tess_eval
+KHR-GL45.constant_expressions.basic_pow_vec2_vertex
+KHR-GL45.constant_expressions.basic_pow_vec2_fragment
+KHR-GL45.constant_expressions.basic_pow_vec2_compute
+KHR-GL45.constant_expressions.basic_pow_vec2_geometry
+KHR-GL45.constant_expressions.basic_pow_vec2_tess_control
+KHR-GL45.constant_expressions.basic_pow_vec2_tess_eval
+KHR-GL45.constant_expressions.basic_pow_vec3_vertex
+KHR-GL45.constant_expressions.basic_pow_vec3_fragment
+KHR-GL45.constant_expressions.basic_pow_vec3_compute
+KHR-GL45.constant_expressions.basic_pow_vec3_geometry
+KHR-GL45.constant_expressions.basic_pow_vec3_tess_control
+KHR-GL45.constant_expressions.basic_pow_vec3_tess_eval
+KHR-GL45.constant_expressions.basic_pow_vec4_vertex
+KHR-GL45.constant_expressions.basic_pow_vec4_fragment
+KHR-GL45.constant_expressions.basic_pow_vec4_compute
+KHR-GL45.constant_expressions.basic_pow_vec4_geometry
+KHR-GL45.constant_expressions.basic_pow_vec4_tess_control
+KHR-GL45.constant_expressions.basic_pow_vec4_tess_eval
+KHR-GL45.constant_expressions.basic_exp_float_vertex
+KHR-GL45.constant_expressions.basic_exp_float_fragment
+KHR-GL45.constant_expressions.basic_exp_float_compute
+KHR-GL45.constant_expressions.basic_exp_float_geometry
+KHR-GL45.constant_expressions.basic_exp_float_tess_control
+KHR-GL45.constant_expressions.basic_exp_float_tess_eval
+KHR-GL45.constant_expressions.basic_exp_vec2_vertex
+KHR-GL45.constant_expressions.basic_exp_vec2_fragment
+KHR-GL45.constant_expressions.basic_exp_vec2_compute
+KHR-GL45.constant_expressions.basic_exp_vec2_geometry
+KHR-GL45.constant_expressions.basic_exp_vec2_tess_control
+KHR-GL45.constant_expressions.basic_exp_vec2_tess_eval
+KHR-GL45.constant_expressions.basic_exp_vec3_vertex
+KHR-GL45.constant_expressions.basic_exp_vec3_fragment
+KHR-GL45.constant_expressions.basic_exp_vec3_compute
+KHR-GL45.constant_expressions.basic_exp_vec3_geometry
+KHR-GL45.constant_expressions.basic_exp_vec3_tess_control
+KHR-GL45.constant_expressions.basic_exp_vec3_tess_eval
+KHR-GL45.constant_expressions.basic_exp_vec4_vertex
+KHR-GL45.constant_expressions.basic_exp_vec4_fragment
+KHR-GL45.constant_expressions.basic_exp_vec4_compute
+KHR-GL45.constant_expressions.basic_exp_vec4_geometry
+KHR-GL45.constant_expressions.basic_exp_vec4_tess_control
+KHR-GL45.constant_expressions.basic_exp_vec4_tess_eval
+KHR-GL45.constant_expressions.basic_log_float_vertex
+KHR-GL45.constant_expressions.basic_log_float_fragment
+KHR-GL45.constant_expressions.basic_log_float_compute
+KHR-GL45.constant_expressions.basic_log_float_geometry
+KHR-GL45.constant_expressions.basic_log_float_tess_control
+KHR-GL45.constant_expressions.basic_log_float_tess_eval
+KHR-GL45.constant_expressions.basic_log_vec2_vertex
+KHR-GL45.constant_expressions.basic_log_vec2_fragment
+KHR-GL45.constant_expressions.basic_log_vec2_compute
+KHR-GL45.constant_expressions.basic_log_vec2_geometry
+KHR-GL45.constant_expressions.basic_log_vec2_tess_control
+KHR-GL45.constant_expressions.basic_log_vec2_tess_eval
+KHR-GL45.constant_expressions.basic_log_vec3_vertex
+KHR-GL45.constant_expressions.basic_log_vec3_fragment
+KHR-GL45.constant_expressions.basic_log_vec3_compute
+KHR-GL45.constant_expressions.basic_log_vec3_geometry
+KHR-GL45.constant_expressions.basic_log_vec3_tess_control
+KHR-GL45.constant_expressions.basic_log_vec3_tess_eval
+KHR-GL45.constant_expressions.basic_log_vec4_vertex
+KHR-GL45.constant_expressions.basic_log_vec4_fragment
+KHR-GL45.constant_expressions.basic_log_vec4_compute
+KHR-GL45.constant_expressions.basic_log_vec4_geometry
+KHR-GL45.constant_expressions.basic_log_vec4_tess_control
+KHR-GL45.constant_expressions.basic_log_vec4_tess_eval
+KHR-GL45.constant_expressions.basic_exp2_float_vertex
+KHR-GL45.constant_expressions.basic_exp2_float_fragment
+KHR-GL45.constant_expressions.basic_exp2_float_compute
+KHR-GL45.constant_expressions.basic_exp2_float_geometry
+KHR-GL45.constant_expressions.basic_exp2_float_tess_control
+KHR-GL45.constant_expressions.basic_exp2_float_tess_eval
+KHR-GL45.constant_expressions.basic_exp2_vec2_vertex
+KHR-GL45.constant_expressions.basic_exp2_vec2_fragment
+KHR-GL45.constant_expressions.basic_exp2_vec2_compute
+KHR-GL45.constant_expressions.basic_exp2_vec2_geometry
+KHR-GL45.constant_expressions.basic_exp2_vec2_tess_control
+KHR-GL45.constant_expressions.basic_exp2_vec2_tess_eval
+KHR-GL45.constant_expressions.basic_exp2_vec3_vertex
+KHR-GL45.constant_expressions.basic_exp2_vec3_fragment
+KHR-GL45.constant_expressions.basic_exp2_vec3_compute
+KHR-GL45.constant_expressions.basic_exp2_vec3_geometry
+KHR-GL45.constant_expressions.basic_exp2_vec3_tess_control
+KHR-GL45.constant_expressions.basic_exp2_vec3_tess_eval
+KHR-GL45.constant_expressions.basic_exp2_vec4_vertex
+KHR-GL45.constant_expressions.basic_exp2_vec4_fragment
+KHR-GL45.constant_expressions.basic_exp2_vec4_compute
+KHR-GL45.constant_expressions.basic_exp2_vec4_geometry
+KHR-GL45.constant_expressions.basic_exp2_vec4_tess_control
+KHR-GL45.constant_expressions.basic_exp2_vec4_tess_eval
+KHR-GL45.constant_expressions.basic_log2_float_vertex
+KHR-GL45.constant_expressions.basic_log2_float_fragment
+KHR-GL45.constant_expressions.basic_log2_float_compute
+KHR-GL45.constant_expressions.basic_log2_float_geometry
+KHR-GL45.constant_expressions.basic_log2_float_tess_control
+KHR-GL45.constant_expressions.basic_log2_float_tess_eval
+KHR-GL45.constant_expressions.basic_log2_vec2_vertex
+KHR-GL45.constant_expressions.basic_log2_vec2_fragment
+KHR-GL45.constant_expressions.basic_log2_vec2_compute
+KHR-GL45.constant_expressions.basic_log2_vec2_geometry
+KHR-GL45.constant_expressions.basic_log2_vec2_tess_control
+KHR-GL45.constant_expressions.basic_log2_vec2_tess_eval
+KHR-GL45.constant_expressions.basic_log2_vec3_vertex
+KHR-GL45.constant_expressions.basic_log2_vec3_fragment
+KHR-GL45.constant_expressions.basic_log2_vec3_compute
+KHR-GL45.constant_expressions.basic_log2_vec3_geometry
+KHR-GL45.constant_expressions.basic_log2_vec3_tess_control
+KHR-GL45.constant_expressions.basic_log2_vec3_tess_eval
+KHR-GL45.constant_expressions.basic_log2_vec4_vertex
+KHR-GL45.constant_expressions.basic_log2_vec4_fragment
+KHR-GL45.constant_expressions.basic_log2_vec4_compute
+KHR-GL45.constant_expressions.basic_log2_vec4_geometry
+KHR-GL45.constant_expressions.basic_log2_vec4_tess_control
+KHR-GL45.constant_expressions.basic_log2_vec4_tess_eval
+KHR-GL45.constant_expressions.basic_sqrt_float_vertex
+KHR-GL45.constant_expressions.basic_sqrt_float_fragment
+KHR-GL45.constant_expressions.basic_sqrt_float_compute
+KHR-GL45.constant_expressions.basic_sqrt_float_geometry
+KHR-GL45.constant_expressions.basic_sqrt_float_tess_control
+KHR-GL45.constant_expressions.basic_sqrt_float_tess_eval
+KHR-GL45.constant_expressions.basic_sqrt_vec2_vertex
+KHR-GL45.constant_expressions.basic_sqrt_vec2_fragment
+KHR-GL45.constant_expressions.basic_sqrt_vec2_compute
+KHR-GL45.constant_expressions.basic_sqrt_vec2_geometry
+KHR-GL45.constant_expressions.basic_sqrt_vec2_tess_control
+KHR-GL45.constant_expressions.basic_sqrt_vec2_tess_eval
+KHR-GL45.constant_expressions.basic_sqrt_vec3_vertex
+KHR-GL45.constant_expressions.basic_sqrt_vec3_fragment
+KHR-GL45.constant_expressions.basic_sqrt_vec3_compute
+KHR-GL45.constant_expressions.basic_sqrt_vec3_geometry
+KHR-GL45.constant_expressions.basic_sqrt_vec3_tess_control
+KHR-GL45.constant_expressions.basic_sqrt_vec3_tess_eval
+KHR-GL45.constant_expressions.basic_sqrt_vec4_vertex
+KHR-GL45.constant_expressions.basic_sqrt_vec4_fragment
+KHR-GL45.constant_expressions.basic_sqrt_vec4_compute
+KHR-GL45.constant_expressions.basic_sqrt_vec4_geometry
+KHR-GL45.constant_expressions.basic_sqrt_vec4_tess_control
+KHR-GL45.constant_expressions.basic_sqrt_vec4_tess_eval
+KHR-GL45.constant_expressions.basic_inversesqrt_float_vertex
+KHR-GL45.constant_expressions.basic_inversesqrt_float_fragment
+KHR-GL45.constant_expressions.basic_inversesqrt_float_compute
+KHR-GL45.constant_expressions.basic_inversesqrt_float_geometry
+KHR-GL45.constant_expressions.basic_inversesqrt_float_tess_control
+KHR-GL45.constant_expressions.basic_inversesqrt_float_tess_eval
+KHR-GL45.constant_expressions.basic_inversesqrt_vec2_vertex
+KHR-GL45.constant_expressions.basic_inversesqrt_vec2_fragment
+KHR-GL45.constant_expressions.basic_inversesqrt_vec2_compute
+KHR-GL45.constant_expressions.basic_inversesqrt_vec2_geometry
+KHR-GL45.constant_expressions.basic_inversesqrt_vec2_tess_control
+KHR-GL45.constant_expressions.basic_inversesqrt_vec2_tess_eval
+KHR-GL45.constant_expressions.basic_inversesqrt_vec3_vertex
+KHR-GL45.constant_expressions.basic_inversesqrt_vec3_fragment
+KHR-GL45.constant_expressions.basic_inversesqrt_vec3_compute
+KHR-GL45.constant_expressions.basic_inversesqrt_vec3_geometry
+KHR-GL45.constant_expressions.basic_inversesqrt_vec3_tess_control
+KHR-GL45.constant_expressions.basic_inversesqrt_vec3_tess_eval
+KHR-GL45.constant_expressions.basic_inversesqrt_vec4_vertex
+KHR-GL45.constant_expressions.basic_inversesqrt_vec4_fragment
+KHR-GL45.constant_expressions.basic_inversesqrt_vec4_compute
+KHR-GL45.constant_expressions.basic_inversesqrt_vec4_geometry
+KHR-GL45.constant_expressions.basic_inversesqrt_vec4_tess_control
+KHR-GL45.constant_expressions.basic_inversesqrt_vec4_tess_eval
+KHR-GL45.constant_expressions.basic_abs_int_vertex
+KHR-GL45.constant_expressions.basic_abs_int_fragment
+KHR-GL45.constant_expressions.basic_abs_int_compute
+KHR-GL45.constant_expressions.basic_abs_int_geometry
+KHR-GL45.constant_expressions.basic_abs_int_tess_control
+KHR-GL45.constant_expressions.basic_abs_int_tess_eval
+KHR-GL45.constant_expressions.basic_abs_ivec2_vertex
+KHR-GL45.constant_expressions.basic_abs_ivec2_fragment
+KHR-GL45.constant_expressions.basic_abs_ivec2_compute
+KHR-GL45.constant_expressions.basic_abs_ivec2_geometry
+KHR-GL45.constant_expressions.basic_abs_ivec2_tess_control
+KHR-GL45.constant_expressions.basic_abs_ivec2_tess_eval
+KHR-GL45.constant_expressions.basic_abs_ivec3_vertex
+KHR-GL45.constant_expressions.basic_abs_ivec3_fragment
+KHR-GL45.constant_expressions.basic_abs_ivec3_compute
+KHR-GL45.constant_expressions.basic_abs_ivec3_geometry
+KHR-GL45.constant_expressions.basic_abs_ivec3_tess_control
+KHR-GL45.constant_expressions.basic_abs_ivec3_tess_eval
+KHR-GL45.constant_expressions.basic_abs_ivec4_vertex
+KHR-GL45.constant_expressions.basic_abs_ivec4_fragment
+KHR-GL45.constant_expressions.basic_abs_ivec4_compute
+KHR-GL45.constant_expressions.basic_abs_ivec4_geometry
+KHR-GL45.constant_expressions.basic_abs_ivec4_tess_control
+KHR-GL45.constant_expressions.basic_abs_ivec4_tess_eval
+KHR-GL45.constant_expressions.basic_sign_float_vertex
+KHR-GL45.constant_expressions.basic_sign_float_fragment
+KHR-GL45.constant_expressions.basic_sign_float_compute
+KHR-GL45.constant_expressions.basic_sign_float_geometry
+KHR-GL45.constant_expressions.basic_sign_float_tess_control
+KHR-GL45.constant_expressions.basic_sign_float_tess_eval
+KHR-GL45.constant_expressions.basic_sign_vec2_vertex
+KHR-GL45.constant_expressions.basic_sign_vec2_fragment
+KHR-GL45.constant_expressions.basic_sign_vec2_compute
+KHR-GL45.constant_expressions.basic_sign_vec2_geometry
+KHR-GL45.constant_expressions.basic_sign_vec2_tess_control
+KHR-GL45.constant_expressions.basic_sign_vec2_tess_eval
+KHR-GL45.constant_expressions.basic_sign_vec3_vertex
+KHR-GL45.constant_expressions.basic_sign_vec3_fragment
+KHR-GL45.constant_expressions.basic_sign_vec3_compute
+KHR-GL45.constant_expressions.basic_sign_vec3_geometry
+KHR-GL45.constant_expressions.basic_sign_vec3_tess_control
+KHR-GL45.constant_expressions.basic_sign_vec3_tess_eval
+KHR-GL45.constant_expressions.basic_sign_vec4_vertex
+KHR-GL45.constant_expressions.basic_sign_vec4_fragment
+KHR-GL45.constant_expressions.basic_sign_vec4_compute
+KHR-GL45.constant_expressions.basic_sign_vec4_geometry
+KHR-GL45.constant_expressions.basic_sign_vec4_tess_control
+KHR-GL45.constant_expressions.basic_sign_vec4_tess_eval
+KHR-GL45.constant_expressions.basic_floor_float_vertex
+KHR-GL45.constant_expressions.basic_floor_float_fragment
+KHR-GL45.constant_expressions.basic_floor_float_compute
+KHR-GL45.constant_expressions.basic_floor_float_geometry
+KHR-GL45.constant_expressions.basic_floor_float_tess_control
+KHR-GL45.constant_expressions.basic_floor_float_tess_eval
+KHR-GL45.constant_expressions.basic_floor_vec2_vertex
+KHR-GL45.constant_expressions.basic_floor_vec2_fragment
+KHR-GL45.constant_expressions.basic_floor_vec2_compute
+KHR-GL45.constant_expressions.basic_floor_vec2_geometry
+KHR-GL45.constant_expressions.basic_floor_vec2_tess_control
+KHR-GL45.constant_expressions.basic_floor_vec2_tess_eval
+KHR-GL45.constant_expressions.basic_floor_vec3_vertex
+KHR-GL45.constant_expressions.basic_floor_vec3_fragment
+KHR-GL45.constant_expressions.basic_floor_vec3_compute
+KHR-GL45.constant_expressions.basic_floor_vec3_geometry
+KHR-GL45.constant_expressions.basic_floor_vec3_tess_control
+KHR-GL45.constant_expressions.basic_floor_vec3_tess_eval
+KHR-GL45.constant_expressions.basic_floor_vec4_vertex
+KHR-GL45.constant_expressions.basic_floor_vec4_fragment
+KHR-GL45.constant_expressions.basic_floor_vec4_compute
+KHR-GL45.constant_expressions.basic_floor_vec4_geometry
+KHR-GL45.constant_expressions.basic_floor_vec4_tess_control
+KHR-GL45.constant_expressions.basic_floor_vec4_tess_eval
+KHR-GL45.constant_expressions.basic_trunc_float_vertex
+KHR-GL45.constant_expressions.basic_trunc_float_fragment
+KHR-GL45.constant_expressions.basic_trunc_float_compute
+KHR-GL45.constant_expressions.basic_trunc_float_geometry
+KHR-GL45.constant_expressions.basic_trunc_float_tess_control
+KHR-GL45.constant_expressions.basic_trunc_float_tess_eval
+KHR-GL45.constant_expressions.basic_trunc_vec2_vertex
+KHR-GL45.constant_expressions.basic_trunc_vec2_fragment
+KHR-GL45.constant_expressions.basic_trunc_vec2_compute
+KHR-GL45.constant_expressions.basic_trunc_vec2_geometry
+KHR-GL45.constant_expressions.basic_trunc_vec2_tess_control
+KHR-GL45.constant_expressions.basic_trunc_vec2_tess_eval
+KHR-GL45.constant_expressions.basic_trunc_vec3_vertex
+KHR-GL45.constant_expressions.basic_trunc_vec3_fragment
+KHR-GL45.constant_expressions.basic_trunc_vec3_compute
+KHR-GL45.constant_expressions.basic_trunc_vec3_geometry
+KHR-GL45.constant_expressions.basic_trunc_vec3_tess_control
+KHR-GL45.constant_expressions.basic_trunc_vec3_tess_eval
+KHR-GL45.constant_expressions.basic_trunc_vec4_vertex
+KHR-GL45.constant_expressions.basic_trunc_vec4_fragment
+KHR-GL45.constant_expressions.basic_trunc_vec4_compute
+KHR-GL45.constant_expressions.basic_trunc_vec4_geometry
+KHR-GL45.constant_expressions.basic_trunc_vec4_tess_control
+KHR-GL45.constant_expressions.basic_trunc_vec4_tess_eval
+KHR-GL45.constant_expressions.basic_round_float_vertex
+KHR-GL45.constant_expressions.basic_round_float_fragment
+KHR-GL45.constant_expressions.basic_round_float_compute
+KHR-GL45.constant_expressions.basic_round_float_geometry
+KHR-GL45.constant_expressions.basic_round_float_tess_control
+KHR-GL45.constant_expressions.basic_round_float_tess_eval
+KHR-GL45.constant_expressions.basic_round_vec2_vertex
+KHR-GL45.constant_expressions.basic_round_vec2_fragment
+KHR-GL45.constant_expressions.basic_round_vec2_compute
+KHR-GL45.constant_expressions.basic_round_vec2_geometry
+KHR-GL45.constant_expressions.basic_round_vec2_tess_control
+KHR-GL45.constant_expressions.basic_round_vec2_tess_eval
+KHR-GL45.constant_expressions.basic_round_vec3_vertex
+KHR-GL45.constant_expressions.basic_round_vec3_fragment
+KHR-GL45.constant_expressions.basic_round_vec3_compute
+KHR-GL45.constant_expressions.basic_round_vec3_geometry
+KHR-GL45.constant_expressions.basic_round_vec3_tess_control
+KHR-GL45.constant_expressions.basic_round_vec3_tess_eval
+KHR-GL45.constant_expressions.basic_round_vec4_vertex
+KHR-GL45.constant_expressions.basic_round_vec4_fragment
+KHR-GL45.constant_expressions.basic_round_vec4_compute
+KHR-GL45.constant_expressions.basic_round_vec4_geometry
+KHR-GL45.constant_expressions.basic_round_vec4_tess_control
+KHR-GL45.constant_expressions.basic_round_vec4_tess_eval
+KHR-GL45.constant_expressions.basic_ceil_float_vertex
+KHR-GL45.constant_expressions.basic_ceil_float_fragment
+KHR-GL45.constant_expressions.basic_ceil_float_compute
+KHR-GL45.constant_expressions.basic_ceil_float_geometry
+KHR-GL45.constant_expressions.basic_ceil_float_tess_control
+KHR-GL45.constant_expressions.basic_ceil_float_tess_eval
+KHR-GL45.constant_expressions.basic_ceil_vec2_vertex
+KHR-GL45.constant_expressions.basic_ceil_vec2_fragment
+KHR-GL45.constant_expressions.basic_ceil_vec2_compute
+KHR-GL45.constant_expressions.basic_ceil_vec2_geometry
+KHR-GL45.constant_expressions.basic_ceil_vec2_tess_control
+KHR-GL45.constant_expressions.basic_ceil_vec2_tess_eval
+KHR-GL45.constant_expressions.basic_ceil_vec3_vertex
+KHR-GL45.constant_expressions.basic_ceil_vec3_fragment
+KHR-GL45.constant_expressions.basic_ceil_vec3_compute
+KHR-GL45.constant_expressions.basic_ceil_vec3_geometry
+KHR-GL45.constant_expressions.basic_ceil_vec3_tess_control
+KHR-GL45.constant_expressions.basic_ceil_vec3_tess_eval
+KHR-GL45.constant_expressions.basic_ceil_vec4_vertex
+KHR-GL45.constant_expressions.basic_ceil_vec4_fragment
+KHR-GL45.constant_expressions.basic_ceil_vec4_compute
+KHR-GL45.constant_expressions.basic_ceil_vec4_geometry
+KHR-GL45.constant_expressions.basic_ceil_vec4_tess_control
+KHR-GL45.constant_expressions.basic_ceil_vec4_tess_eval
+KHR-GL45.constant_expressions.basic_mod_float_vertex
+KHR-GL45.constant_expressions.basic_mod_float_fragment
+KHR-GL45.constant_expressions.basic_mod_float_compute
+KHR-GL45.constant_expressions.basic_mod_float_geometry
+KHR-GL45.constant_expressions.basic_mod_float_tess_control
+KHR-GL45.constant_expressions.basic_mod_float_tess_eval
+KHR-GL45.constant_expressions.basic_mod_vec2_vertex
+KHR-GL45.constant_expressions.basic_mod_vec2_fragment
+KHR-GL45.constant_expressions.basic_mod_vec2_compute
+KHR-GL45.constant_expressions.basic_mod_vec2_geometry
+KHR-GL45.constant_expressions.basic_mod_vec2_tess_control
+KHR-GL45.constant_expressions.basic_mod_vec2_tess_eval
+KHR-GL45.constant_expressions.basic_mod_vec2_float_vertex
+KHR-GL45.constant_expressions.basic_mod_vec2_float_fragment
+KHR-GL45.constant_expressions.basic_mod_vec2_float_compute
+KHR-GL45.constant_expressions.basic_mod_vec2_float_geometry
+KHR-GL45.constant_expressions.basic_mod_vec2_float_tess_control
+KHR-GL45.constant_expressions.basic_mod_vec2_float_tess_eval
+KHR-GL45.constant_expressions.basic_mod_vec3_vertex
+KHR-GL45.constant_expressions.basic_mod_vec3_fragment
+KHR-GL45.constant_expressions.basic_mod_vec3_compute
+KHR-GL45.constant_expressions.basic_mod_vec3_geometry
+KHR-GL45.constant_expressions.basic_mod_vec3_tess_control
+KHR-GL45.constant_expressions.basic_mod_vec3_tess_eval
+KHR-GL45.constant_expressions.basic_mod_vec3_float_vertex
+KHR-GL45.constant_expressions.basic_mod_vec3_float_fragment
+KHR-GL45.constant_expressions.basic_mod_vec3_float_compute
+KHR-GL45.constant_expressions.basic_mod_vec3_float_geometry
+KHR-GL45.constant_expressions.basic_mod_vec3_float_tess_control
+KHR-GL45.constant_expressions.basic_mod_vec3_float_tess_eval
+KHR-GL45.constant_expressions.basic_mod_vec4_vertex
+KHR-GL45.constant_expressions.basic_mod_vec4_fragment
+KHR-GL45.constant_expressions.basic_mod_vec4_compute
+KHR-GL45.constant_expressions.basic_mod_vec4_geometry
+KHR-GL45.constant_expressions.basic_mod_vec4_tess_control
+KHR-GL45.constant_expressions.basic_mod_vec4_tess_eval
+KHR-GL45.constant_expressions.basic_mod_vec4_float_vertex
+KHR-GL45.constant_expressions.basic_mod_vec4_float_fragment
+KHR-GL45.constant_expressions.basic_mod_vec4_float_compute
+KHR-GL45.constant_expressions.basic_mod_vec4_float_geometry
+KHR-GL45.constant_expressions.basic_mod_vec4_float_tess_control
+KHR-GL45.constant_expressions.basic_mod_vec4_float_tess_eval
+KHR-GL45.constant_expressions.basic_min_float_vertex
+KHR-GL45.constant_expressions.basic_min_float_fragment
+KHR-GL45.constant_expressions.basic_min_float_compute
+KHR-GL45.constant_expressions.basic_min_float_geometry
+KHR-GL45.constant_expressions.basic_min_float_tess_control
+KHR-GL45.constant_expressions.basic_min_float_tess_eval
+KHR-GL45.constant_expressions.basic_min_vec2_vertex
+KHR-GL45.constant_expressions.basic_min_vec2_fragment
+KHR-GL45.constant_expressions.basic_min_vec2_compute
+KHR-GL45.constant_expressions.basic_min_vec2_geometry
+KHR-GL45.constant_expressions.basic_min_vec2_tess_control
+KHR-GL45.constant_expressions.basic_min_vec2_tess_eval
+KHR-GL45.constant_expressions.basic_min_vec2_float_vertex
+KHR-GL45.constant_expressions.basic_min_vec2_float_fragment
+KHR-GL45.constant_expressions.basic_min_vec2_float_compute
+KHR-GL45.constant_expressions.basic_min_vec2_float_geometry
+KHR-GL45.constant_expressions.basic_min_vec2_float_tess_control
+KHR-GL45.constant_expressions.basic_min_vec2_float_tess_eval
+KHR-GL45.constant_expressions.basic_min_vec3_vertex
+KHR-GL45.constant_expressions.basic_min_vec3_fragment
+KHR-GL45.constant_expressions.basic_min_vec3_compute
+KHR-GL45.constant_expressions.basic_min_vec3_geometry
+KHR-GL45.constant_expressions.basic_min_vec3_tess_control
+KHR-GL45.constant_expressions.basic_min_vec3_tess_eval
+KHR-GL45.constant_expressions.basic_min_vec3_float_vertex
+KHR-GL45.constant_expressions.basic_min_vec3_float_fragment
+KHR-GL45.constant_expressions.basic_min_vec3_float_compute
+KHR-GL45.constant_expressions.basic_min_vec3_float_geometry
+KHR-GL45.constant_expressions.basic_min_vec3_float_tess_control
+KHR-GL45.constant_expressions.basic_min_vec3_float_tess_eval
+KHR-GL45.constant_expressions.basic_min_vec4_vertex
+KHR-GL45.constant_expressions.basic_min_vec4_fragment
+KHR-GL45.constant_expressions.basic_min_vec4_compute
+KHR-GL45.constant_expressions.basic_min_vec4_geometry
+KHR-GL45.constant_expressions.basic_min_vec4_tess_control
+KHR-GL45.constant_expressions.basic_min_vec4_tess_eval
+KHR-GL45.constant_expressions.basic_min_vec4_float_vertex
+KHR-GL45.constant_expressions.basic_min_vec4_float_fragment
+KHR-GL45.constant_expressions.basic_min_vec4_float_compute
+KHR-GL45.constant_expressions.basic_min_vec4_float_geometry
+KHR-GL45.constant_expressions.basic_min_vec4_float_tess_control
+KHR-GL45.constant_expressions.basic_min_vec4_float_tess_eval
+KHR-GL45.constant_expressions.basic_max_float_vertex
+KHR-GL45.constant_expressions.basic_max_float_fragment
+KHR-GL45.constant_expressions.basic_max_float_compute
+KHR-GL45.constant_expressions.basic_max_float_geometry
+KHR-GL45.constant_expressions.basic_max_float_tess_control
+KHR-GL45.constant_expressions.basic_max_float_tess_eval
+KHR-GL45.constant_expressions.basic_max_vec2_vertex
+KHR-GL45.constant_expressions.basic_max_vec2_fragment
+KHR-GL45.constant_expressions.basic_max_vec2_compute
+KHR-GL45.constant_expressions.basic_max_vec2_geometry
+KHR-GL45.constant_expressions.basic_max_vec2_tess_control
+KHR-GL45.constant_expressions.basic_max_vec2_tess_eval
+KHR-GL45.constant_expressions.basic_max_vec2_float_vertex
+KHR-GL45.constant_expressions.basic_max_vec2_float_fragment
+KHR-GL45.constant_expressions.basic_max_vec2_float_compute
+KHR-GL45.constant_expressions.basic_max_vec2_float_geometry
+KHR-GL45.constant_expressions.basic_max_vec2_float_tess_control
+KHR-GL45.constant_expressions.basic_max_vec2_float_tess_eval
+KHR-GL45.constant_expressions.basic_max_vec3_vertex
+KHR-GL45.constant_expressions.basic_max_vec3_fragment
+KHR-GL45.constant_expressions.basic_max_vec3_compute
+KHR-GL45.constant_expressions.basic_max_vec3_geometry
+KHR-GL45.constant_expressions.basic_max_vec3_tess_control
+KHR-GL45.constant_expressions.basic_max_vec3_tess_eval
+KHR-GL45.constant_expressions.basic_max_vec3_float_vertex
+KHR-GL45.constant_expressions.basic_max_vec3_float_fragment
+KHR-GL45.constant_expressions.basic_max_vec3_float_compute
+KHR-GL45.constant_expressions.basic_max_vec3_float_geometry
+KHR-GL45.constant_expressions.basic_max_vec3_float_tess_control
+KHR-GL45.constant_expressions.basic_max_vec3_float_tess_eval
+KHR-GL45.constant_expressions.basic_max_vec4_vertex
+KHR-GL45.constant_expressions.basic_max_vec4_fragment
+KHR-GL45.constant_expressions.basic_max_vec4_compute
+KHR-GL45.constant_expressions.basic_max_vec4_geometry
+KHR-GL45.constant_expressions.basic_max_vec4_tess_control
+KHR-GL45.constant_expressions.basic_max_vec4_tess_eval
+KHR-GL45.constant_expressions.basic_max_vec4_float_vertex
+KHR-GL45.constant_expressions.basic_max_vec4_float_fragment
+KHR-GL45.constant_expressions.basic_max_vec4_float_compute
+KHR-GL45.constant_expressions.basic_max_vec4_float_geometry
+KHR-GL45.constant_expressions.basic_max_vec4_float_tess_control
+KHR-GL45.constant_expressions.basic_max_vec4_float_tess_eval
+KHR-GL45.constant_expressions.basic_clamp_float_vertex
+KHR-GL45.constant_expressions.basic_clamp_float_fragment
+KHR-GL45.constant_expressions.basic_clamp_float_compute
+KHR-GL45.constant_expressions.basic_clamp_float_geometry
+KHR-GL45.constant_expressions.basic_clamp_float_tess_control
+KHR-GL45.constant_expressions.basic_clamp_float_tess_eval
+KHR-GL45.constant_expressions.basic_clamp_vec2_vertex
+KHR-GL45.constant_expressions.basic_clamp_vec2_fragment
+KHR-GL45.constant_expressions.basic_clamp_vec2_compute
+KHR-GL45.constant_expressions.basic_clamp_vec2_geometry
+KHR-GL45.constant_expressions.basic_clamp_vec2_tess_control
+KHR-GL45.constant_expressions.basic_clamp_vec2_tess_eval
+KHR-GL45.constant_expressions.basic_clamp_vec2_float_vertex
+KHR-GL45.constant_expressions.basic_clamp_vec2_float_fragment
+KHR-GL45.constant_expressions.basic_clamp_vec2_float_compute
+KHR-GL45.constant_expressions.basic_clamp_vec2_float_geometry
+KHR-GL45.constant_expressions.basic_clamp_vec2_float_tess_control
+KHR-GL45.constant_expressions.basic_clamp_vec2_float_tess_eval
+KHR-GL45.constant_expressions.basic_clamp_vec3_vertex
+KHR-GL45.constant_expressions.basic_clamp_vec3_fragment
+KHR-GL45.constant_expressions.basic_clamp_vec3_compute
+KHR-GL45.constant_expressions.basic_clamp_vec3_geometry
+KHR-GL45.constant_expressions.basic_clamp_vec3_tess_control
+KHR-GL45.constant_expressions.basic_clamp_vec3_tess_eval
+KHR-GL45.constant_expressions.basic_clamp_vec3_float_vertex
+KHR-GL45.constant_expressions.basic_clamp_vec3_float_fragment
+KHR-GL45.constant_expressions.basic_clamp_vec3_float_compute
+KHR-GL45.constant_expressions.basic_clamp_vec3_float_geometry
+KHR-GL45.constant_expressions.basic_clamp_vec3_float_tess_control
+KHR-GL45.constant_expressions.basic_clamp_vec3_float_tess_eval
+KHR-GL45.constant_expressions.basic_clamp_vec4_vertex
+KHR-GL45.constant_expressions.basic_clamp_vec4_fragment
+KHR-GL45.constant_expressions.basic_clamp_vec4_compute
+KHR-GL45.constant_expressions.basic_clamp_vec4_geometry
+KHR-GL45.constant_expressions.basic_clamp_vec4_tess_control
+KHR-GL45.constant_expressions.basic_clamp_vec4_tess_eval
+KHR-GL45.constant_expressions.basic_clamp_vec4_float_vertex
+KHR-GL45.constant_expressions.basic_clamp_vec4_float_fragment
+KHR-GL45.constant_expressions.basic_clamp_vec4_float_compute
+KHR-GL45.constant_expressions.basic_clamp_vec4_float_geometry
+KHR-GL45.constant_expressions.basic_clamp_vec4_float_tess_control
+KHR-GL45.constant_expressions.basic_clamp_vec4_float_tess_eval
+KHR-GL45.constant_expressions.basic_length_float_vertex
+KHR-GL45.constant_expressions.basic_length_float_fragment
+KHR-GL45.constant_expressions.basic_length_float_compute
+KHR-GL45.constant_expressions.basic_length_float_geometry
+KHR-GL45.constant_expressions.basic_length_float_tess_control
+KHR-GL45.constant_expressions.basic_length_float_tess_eval
+KHR-GL45.constant_expressions.basic_length_vec2_vertex
+KHR-GL45.constant_expressions.basic_length_vec2_fragment
+KHR-GL45.constant_expressions.basic_length_vec2_compute
+KHR-GL45.constant_expressions.basic_length_vec2_geometry
+KHR-GL45.constant_expressions.basic_length_vec2_tess_control
+KHR-GL45.constant_expressions.basic_length_vec2_tess_eval
+KHR-GL45.constant_expressions.basic_length_vec3_vertex
+KHR-GL45.constant_expressions.basic_length_vec3_fragment
+KHR-GL45.constant_expressions.basic_length_vec3_compute
+KHR-GL45.constant_expressions.basic_length_vec3_geometry
+KHR-GL45.constant_expressions.basic_length_vec3_tess_control
+KHR-GL45.constant_expressions.basic_length_vec3_tess_eval
+KHR-GL45.constant_expressions.basic_length_vec4_vertex
+KHR-GL45.constant_expressions.basic_length_vec4_fragment
+KHR-GL45.constant_expressions.basic_length_vec4_compute
+KHR-GL45.constant_expressions.basic_length_vec4_geometry
+KHR-GL45.constant_expressions.basic_length_vec4_tess_control
+KHR-GL45.constant_expressions.basic_length_vec4_tess_eval
+KHR-GL45.constant_expressions.basic_dot_float_vertex
+KHR-GL45.constant_expressions.basic_dot_float_fragment
+KHR-GL45.constant_expressions.basic_dot_float_compute
+KHR-GL45.constant_expressions.basic_dot_float_geometry
+KHR-GL45.constant_expressions.basic_dot_float_tess_control
+KHR-GL45.constant_expressions.basic_dot_float_tess_eval
+KHR-GL45.constant_expressions.basic_dot_vec2_vertex
+KHR-GL45.constant_expressions.basic_dot_vec2_fragment
+KHR-GL45.constant_expressions.basic_dot_vec2_compute
+KHR-GL45.constant_expressions.basic_dot_vec2_geometry
+KHR-GL45.constant_expressions.basic_dot_vec2_tess_control
+KHR-GL45.constant_expressions.basic_dot_vec2_tess_eval
+KHR-GL45.constant_expressions.basic_dot_vec3_vertex
+KHR-GL45.constant_expressions.basic_dot_vec3_fragment
+KHR-GL45.constant_expressions.basic_dot_vec3_compute
+KHR-GL45.constant_expressions.basic_dot_vec3_geometry
+KHR-GL45.constant_expressions.basic_dot_vec3_tess_control
+KHR-GL45.constant_expressions.basic_dot_vec3_tess_eval
+KHR-GL45.constant_expressions.basic_dot_vec4_vertex
+KHR-GL45.constant_expressions.basic_dot_vec4_fragment
+KHR-GL45.constant_expressions.basic_dot_vec4_compute
+KHR-GL45.constant_expressions.basic_dot_vec4_geometry
+KHR-GL45.constant_expressions.basic_dot_vec4_tess_control
+KHR-GL45.constant_expressions.basic_dot_vec4_tess_eval
+KHR-GL45.constant_expressions.basic_normalize_float_vertex
+KHR-GL45.constant_expressions.basic_normalize_float_fragment
+KHR-GL45.constant_expressions.basic_normalize_float_compute
+KHR-GL45.constant_expressions.basic_normalize_float_geometry
+KHR-GL45.constant_expressions.basic_normalize_float_tess_control
+KHR-GL45.constant_expressions.basic_normalize_float_tess_eval
+KHR-GL45.constant_expressions.basic_normalize_vec2_vertex
+KHR-GL45.constant_expressions.basic_normalize_vec2_fragment
+KHR-GL45.constant_expressions.basic_normalize_vec2_compute
+KHR-GL45.constant_expressions.basic_normalize_vec2_geometry
+KHR-GL45.constant_expressions.basic_normalize_vec2_tess_control
+KHR-GL45.constant_expressions.basic_normalize_vec2_tess_eval
+KHR-GL45.constant_expressions.basic_normalize_vec3_vertex
+KHR-GL45.constant_expressions.basic_normalize_vec3_fragment
+KHR-GL45.constant_expressions.basic_normalize_vec3_compute
+KHR-GL45.constant_expressions.basic_normalize_vec3_geometry
+KHR-GL45.constant_expressions.basic_normalize_vec3_tess_control
+KHR-GL45.constant_expressions.basic_normalize_vec3_tess_eval
+KHR-GL45.constant_expressions.basic_normalize_vec4_vertex
+KHR-GL45.constant_expressions.basic_normalize_vec4_fragment
+KHR-GL45.constant_expressions.basic_normalize_vec4_compute
+KHR-GL45.constant_expressions.basic_normalize_vec4_geometry
+KHR-GL45.constant_expressions.basic_normalize_vec4_tess_control
+KHR-GL45.constant_expressions.basic_normalize_vec4_tess_eval
+KHR-GL45.constant_expressions.array_radians_float_vertex
+KHR-GL45.constant_expressions.array_radians_float_fragment
+KHR-GL45.constant_expressions.array_radians_float_compute
+KHR-GL45.constant_expressions.array_radians_float_geometry
+KHR-GL45.constant_expressions.array_radians_float_tess_control
+KHR-GL45.constant_expressions.array_radians_float_tess_eval
+KHR-GL45.constant_expressions.array_radians_vec2_vertex
+KHR-GL45.constant_expressions.array_radians_vec2_fragment
+KHR-GL45.constant_expressions.array_radians_vec2_compute
+KHR-GL45.constant_expressions.array_radians_vec2_geometry
+KHR-GL45.constant_expressions.array_radians_vec2_tess_control
+KHR-GL45.constant_expressions.array_radians_vec2_tess_eval
+KHR-GL45.constant_expressions.array_radians_vec3_vertex
+KHR-GL45.constant_expressions.array_radians_vec3_fragment
+KHR-GL45.constant_expressions.array_radians_vec3_compute
+KHR-GL45.constant_expressions.array_radians_vec3_geometry
+KHR-GL45.constant_expressions.array_radians_vec3_tess_control
+KHR-GL45.constant_expressions.array_radians_vec3_tess_eval
+KHR-GL45.constant_expressions.array_radians_vec4_vertex
+KHR-GL45.constant_expressions.array_radians_vec4_fragment
+KHR-GL45.constant_expressions.array_radians_vec4_compute
+KHR-GL45.constant_expressions.array_radians_vec4_geometry
+KHR-GL45.constant_expressions.array_radians_vec4_tess_control
+KHR-GL45.constant_expressions.array_radians_vec4_tess_eval
+KHR-GL45.constant_expressions.array_degrees_float_vertex
+KHR-GL45.constant_expressions.array_degrees_float_fragment
+KHR-GL45.constant_expressions.array_degrees_float_compute
+KHR-GL45.constant_expressions.array_degrees_float_geometry
+KHR-GL45.constant_expressions.array_degrees_float_tess_control
+KHR-GL45.constant_expressions.array_degrees_float_tess_eval
+KHR-GL45.constant_expressions.array_degrees_vec2_vertex
+KHR-GL45.constant_expressions.array_degrees_vec2_fragment
+KHR-GL45.constant_expressions.array_degrees_vec2_compute
+KHR-GL45.constant_expressions.array_degrees_vec2_geometry
+KHR-GL45.constant_expressions.array_degrees_vec2_tess_control
+KHR-GL45.constant_expressions.array_degrees_vec2_tess_eval
+KHR-GL45.constant_expressions.array_degrees_vec3_vertex
+KHR-GL45.constant_expressions.array_degrees_vec3_fragment
+KHR-GL45.constant_expressions.array_degrees_vec3_compute
+KHR-GL45.constant_expressions.array_degrees_vec3_geometry
+KHR-GL45.constant_expressions.array_degrees_vec3_tess_control
+KHR-GL45.constant_expressions.array_degrees_vec3_tess_eval
+KHR-GL45.constant_expressions.array_degrees_vec4_vertex
+KHR-GL45.constant_expressions.array_degrees_vec4_fragment
+KHR-GL45.constant_expressions.array_degrees_vec4_compute
+KHR-GL45.constant_expressions.array_degrees_vec4_geometry
+KHR-GL45.constant_expressions.array_degrees_vec4_tess_control
+KHR-GL45.constant_expressions.array_degrees_vec4_tess_eval
+KHR-GL45.constant_expressions.array_sin_float_vertex
+KHR-GL45.constant_expressions.array_sin_float_fragment
+KHR-GL45.constant_expressions.array_sin_float_compute
+KHR-GL45.constant_expressions.array_sin_float_geometry
+KHR-GL45.constant_expressions.array_sin_float_tess_control
+KHR-GL45.constant_expressions.array_sin_float_tess_eval
+KHR-GL45.constant_expressions.array_sin_vec2_vertex
+KHR-GL45.constant_expressions.array_sin_vec2_fragment
+KHR-GL45.constant_expressions.array_sin_vec2_compute
+KHR-GL45.constant_expressions.array_sin_vec2_geometry
+KHR-GL45.constant_expressions.array_sin_vec2_tess_control
+KHR-GL45.constant_expressions.array_sin_vec2_tess_eval
+KHR-GL45.constant_expressions.array_sin_vec3_vertex
+KHR-GL45.constant_expressions.array_sin_vec3_fragment
+KHR-GL45.constant_expressions.array_sin_vec3_compute
+KHR-GL45.constant_expressions.array_sin_vec3_geometry
+KHR-GL45.constant_expressions.array_sin_vec3_tess_control
+KHR-GL45.constant_expressions.array_sin_vec3_tess_eval
+KHR-GL45.constant_expressions.array_sin_vec4_vertex
+KHR-GL45.constant_expressions.array_sin_vec4_fragment
+KHR-GL45.constant_expressions.array_sin_vec4_compute
+KHR-GL45.constant_expressions.array_sin_vec4_geometry
+KHR-GL45.constant_expressions.array_sin_vec4_tess_control
+KHR-GL45.constant_expressions.array_sin_vec4_tess_eval
+KHR-GL45.constant_expressions.array_cos_float_vertex
+KHR-GL45.constant_expressions.array_cos_float_fragment
+KHR-GL45.constant_expressions.array_cos_float_compute
+KHR-GL45.constant_expressions.array_cos_float_geometry
+KHR-GL45.constant_expressions.array_cos_float_tess_control
+KHR-GL45.constant_expressions.array_cos_float_tess_eval
+KHR-GL45.constant_expressions.array_cos_vec2_vertex
+KHR-GL45.constant_expressions.array_cos_vec2_fragment
+KHR-GL45.constant_expressions.array_cos_vec2_compute
+KHR-GL45.constant_expressions.array_cos_vec2_geometry
+KHR-GL45.constant_expressions.array_cos_vec2_tess_control
+KHR-GL45.constant_expressions.array_cos_vec2_tess_eval
+KHR-GL45.constant_expressions.array_cos_vec3_vertex
+KHR-GL45.constant_expressions.array_cos_vec3_fragment
+KHR-GL45.constant_expressions.array_cos_vec3_compute
+KHR-GL45.constant_expressions.array_cos_vec3_geometry
+KHR-GL45.constant_expressions.array_cos_vec3_tess_control
+KHR-GL45.constant_expressions.array_cos_vec3_tess_eval
+KHR-GL45.constant_expressions.array_cos_vec4_vertex
+KHR-GL45.constant_expressions.array_cos_vec4_fragment
+KHR-GL45.constant_expressions.array_cos_vec4_compute
+KHR-GL45.constant_expressions.array_cos_vec4_geometry
+KHR-GL45.constant_expressions.array_cos_vec4_tess_control
+KHR-GL45.constant_expressions.array_cos_vec4_tess_eval
+KHR-GL45.constant_expressions.array_asin_float_vertex
+KHR-GL45.constant_expressions.array_asin_float_fragment
+KHR-GL45.constant_expressions.array_asin_float_compute
+KHR-GL45.constant_expressions.array_asin_float_geometry
+KHR-GL45.constant_expressions.array_asin_float_tess_control
+KHR-GL45.constant_expressions.array_asin_float_tess_eval
+KHR-GL45.constant_expressions.array_asin_vec2_vertex
+KHR-GL45.constant_expressions.array_asin_vec2_fragment
+KHR-GL45.constant_expressions.array_asin_vec2_compute
+KHR-GL45.constant_expressions.array_asin_vec2_geometry
+KHR-GL45.constant_expressions.array_asin_vec2_tess_control
+KHR-GL45.constant_expressions.array_asin_vec2_tess_eval
+KHR-GL45.constant_expressions.array_asin_vec3_vertex
+KHR-GL45.constant_expressions.array_asin_vec3_fragment
+KHR-GL45.constant_expressions.array_asin_vec3_compute
+KHR-GL45.constant_expressions.array_asin_vec3_geometry
+KHR-GL45.constant_expressions.array_asin_vec3_tess_control
+KHR-GL45.constant_expressions.array_asin_vec3_tess_eval
+KHR-GL45.constant_expressions.array_asin_vec4_vertex
+KHR-GL45.constant_expressions.array_asin_vec4_fragment
+KHR-GL45.constant_expressions.array_asin_vec4_compute
+KHR-GL45.constant_expressions.array_asin_vec4_geometry
+KHR-GL45.constant_expressions.array_asin_vec4_tess_control
+KHR-GL45.constant_expressions.array_asin_vec4_tess_eval
+KHR-GL45.constant_expressions.array_acos_float_vertex
+KHR-GL45.constant_expressions.array_acos_float_fragment
+KHR-GL45.constant_expressions.array_acos_float_compute
+KHR-GL45.constant_expressions.array_acos_float_geometry
+KHR-GL45.constant_expressions.array_acos_float_tess_control
+KHR-GL45.constant_expressions.array_acos_float_tess_eval
+KHR-GL45.constant_expressions.array_acos_vec2_vertex
+KHR-GL45.constant_expressions.array_acos_vec2_fragment
+KHR-GL45.constant_expressions.array_acos_vec2_compute
+KHR-GL45.constant_expressions.array_acos_vec2_geometry
+KHR-GL45.constant_expressions.array_acos_vec2_tess_control
+KHR-GL45.constant_expressions.array_acos_vec2_tess_eval
+KHR-GL45.constant_expressions.array_acos_vec3_vertex
+KHR-GL45.constant_expressions.array_acos_vec3_fragment
+KHR-GL45.constant_expressions.array_acos_vec3_compute
+KHR-GL45.constant_expressions.array_acos_vec3_geometry
+KHR-GL45.constant_expressions.array_acos_vec3_tess_control
+KHR-GL45.constant_expressions.array_acos_vec3_tess_eval
+KHR-GL45.constant_expressions.array_acos_vec4_vertex
+KHR-GL45.constant_expressions.array_acos_vec4_fragment
+KHR-GL45.constant_expressions.array_acos_vec4_compute
+KHR-GL45.constant_expressions.array_acos_vec4_geometry
+KHR-GL45.constant_expressions.array_acos_vec4_tess_control
+KHR-GL45.constant_expressions.array_acos_vec4_tess_eval
+KHR-GL45.constant_expressions.array_pow_float_vertex
+KHR-GL45.constant_expressions.array_pow_float_fragment
+KHR-GL45.constant_expressions.array_pow_float_compute
+KHR-GL45.constant_expressions.array_pow_float_geometry
+KHR-GL45.constant_expressions.array_pow_float_tess_control
+KHR-GL45.constant_expressions.array_pow_float_tess_eval
+KHR-GL45.constant_expressions.array_pow_vec2_vertex
+KHR-GL45.constant_expressions.array_pow_vec2_fragment
+KHR-GL45.constant_expressions.array_pow_vec2_compute
+KHR-GL45.constant_expressions.array_pow_vec2_geometry
+KHR-GL45.constant_expressions.array_pow_vec2_tess_control
+KHR-GL45.constant_expressions.array_pow_vec2_tess_eval
+KHR-GL45.constant_expressions.array_pow_vec3_vertex
+KHR-GL45.constant_expressions.array_pow_vec3_fragment
+KHR-GL45.constant_expressions.array_pow_vec3_compute
+KHR-GL45.constant_expressions.array_pow_vec3_geometry
+KHR-GL45.constant_expressions.array_pow_vec3_tess_control
+KHR-GL45.constant_expressions.array_pow_vec3_tess_eval
+KHR-GL45.constant_expressions.array_pow_vec4_vertex
+KHR-GL45.constant_expressions.array_pow_vec4_fragment
+KHR-GL45.constant_expressions.array_pow_vec4_compute
+KHR-GL45.constant_expressions.array_pow_vec4_geometry
+KHR-GL45.constant_expressions.array_pow_vec4_tess_control
+KHR-GL45.constant_expressions.array_pow_vec4_tess_eval
+KHR-GL45.constant_expressions.array_exp_float_vertex
+KHR-GL45.constant_expressions.array_exp_float_fragment
+KHR-GL45.constant_expressions.array_exp_float_compute
+KHR-GL45.constant_expressions.array_exp_float_geometry
+KHR-GL45.constant_expressions.array_exp_float_tess_control
+KHR-GL45.constant_expressions.array_exp_float_tess_eval
+KHR-GL45.constant_expressions.array_exp_vec2_vertex
+KHR-GL45.constant_expressions.array_exp_vec2_fragment
+KHR-GL45.constant_expressions.array_exp_vec2_compute
+KHR-GL45.constant_expressions.array_exp_vec2_geometry
+KHR-GL45.constant_expressions.array_exp_vec2_tess_control
+KHR-GL45.constant_expressions.array_exp_vec2_tess_eval
+KHR-GL45.constant_expressions.array_exp_vec3_vertex
+KHR-GL45.constant_expressions.array_exp_vec3_fragment
+KHR-GL45.constant_expressions.array_exp_vec3_compute
+KHR-GL45.constant_expressions.array_exp_vec3_geometry
+KHR-GL45.constant_expressions.array_exp_vec3_tess_control
+KHR-GL45.constant_expressions.array_exp_vec3_tess_eval
+KHR-GL45.constant_expressions.array_exp_vec4_vertex
+KHR-GL45.constant_expressions.array_exp_vec4_fragment
+KHR-GL45.constant_expressions.array_exp_vec4_compute
+KHR-GL45.constant_expressions.array_exp_vec4_geometry
+KHR-GL45.constant_expressions.array_exp_vec4_tess_control
+KHR-GL45.constant_expressions.array_exp_vec4_tess_eval
+KHR-GL45.constant_expressions.array_log_float_vertex
+KHR-GL45.constant_expressions.array_log_float_fragment
+KHR-GL45.constant_expressions.array_log_float_compute
+KHR-GL45.constant_expressions.array_log_float_geometry
+KHR-GL45.constant_expressions.array_log_float_tess_control
+KHR-GL45.constant_expressions.array_log_float_tess_eval
+KHR-GL45.constant_expressions.array_log_vec2_vertex
+KHR-GL45.constant_expressions.array_log_vec2_fragment
+KHR-GL45.constant_expressions.array_log_vec2_compute
+KHR-GL45.constant_expressions.array_log_vec2_geometry
+KHR-GL45.constant_expressions.array_log_vec2_tess_control
+KHR-GL45.constant_expressions.array_log_vec2_tess_eval
+KHR-GL45.constant_expressions.array_log_vec3_vertex
+KHR-GL45.constant_expressions.array_log_vec3_fragment
+KHR-GL45.constant_expressions.array_log_vec3_compute
+KHR-GL45.constant_expressions.array_log_vec3_geometry
+KHR-GL45.constant_expressions.array_log_vec3_tess_control
+KHR-GL45.constant_expressions.array_log_vec3_tess_eval
+KHR-GL45.constant_expressions.array_log_vec4_vertex
+KHR-GL45.constant_expressions.array_log_vec4_fragment
+KHR-GL45.constant_expressions.array_log_vec4_compute
+KHR-GL45.constant_expressions.array_log_vec4_geometry
+KHR-GL45.constant_expressions.array_log_vec4_tess_control
+KHR-GL45.constant_expressions.array_log_vec4_tess_eval
+KHR-GL45.constant_expressions.array_exp2_float_vertex
+KHR-GL45.constant_expressions.array_exp2_float_fragment
+KHR-GL45.constant_expressions.array_exp2_float_compute
+KHR-GL45.constant_expressions.array_exp2_float_geometry
+KHR-GL45.constant_expressions.array_exp2_float_tess_control
+KHR-GL45.constant_expressions.array_exp2_float_tess_eval
+KHR-GL45.constant_expressions.array_exp2_vec2_vertex
+KHR-GL45.constant_expressions.array_exp2_vec2_fragment
+KHR-GL45.constant_expressions.array_exp2_vec2_compute
+KHR-GL45.constant_expressions.array_exp2_vec2_geometry
+KHR-GL45.constant_expressions.array_exp2_vec2_tess_control
+KHR-GL45.constant_expressions.array_exp2_vec2_tess_eval
+KHR-GL45.constant_expressions.array_exp2_vec3_vertex
+KHR-GL45.constant_expressions.array_exp2_vec3_fragment
+KHR-GL45.constant_expressions.array_exp2_vec3_compute
+KHR-GL45.constant_expressions.array_exp2_vec3_geometry
+KHR-GL45.constant_expressions.array_exp2_vec3_tess_control
+KHR-GL45.constant_expressions.array_exp2_vec3_tess_eval
+KHR-GL45.constant_expressions.array_exp2_vec4_vertex
+KHR-GL45.constant_expressions.array_exp2_vec4_fragment
+KHR-GL45.constant_expressions.array_exp2_vec4_compute
+KHR-GL45.constant_expressions.array_exp2_vec4_geometry
+KHR-GL45.constant_expressions.array_exp2_vec4_tess_control
+KHR-GL45.constant_expressions.array_exp2_vec4_tess_eval
+KHR-GL45.constant_expressions.array_log2_float_vertex
+KHR-GL45.constant_expressions.array_log2_float_fragment
+KHR-GL45.constant_expressions.array_log2_float_compute
+KHR-GL45.constant_expressions.array_log2_float_geometry
+KHR-GL45.constant_expressions.array_log2_float_tess_control
+KHR-GL45.constant_expressions.array_log2_float_tess_eval
+KHR-GL45.constant_expressions.array_log2_vec2_vertex
+KHR-GL45.constant_expressions.array_log2_vec2_fragment
+KHR-GL45.constant_expressions.array_log2_vec2_compute
+KHR-GL45.constant_expressions.array_log2_vec2_geometry
+KHR-GL45.constant_expressions.array_log2_vec2_tess_control
+KHR-GL45.constant_expressions.array_log2_vec2_tess_eval
+KHR-GL45.constant_expressions.array_log2_vec3_vertex
+KHR-GL45.constant_expressions.array_log2_vec3_fragment
+KHR-GL45.constant_expressions.array_log2_vec3_compute
+KHR-GL45.constant_expressions.array_log2_vec3_geometry
+KHR-GL45.constant_expressions.array_log2_vec3_tess_control
+KHR-GL45.constant_expressions.array_log2_vec3_tess_eval
+KHR-GL45.constant_expressions.array_log2_vec4_vertex
+KHR-GL45.constant_expressions.array_log2_vec4_fragment
+KHR-GL45.constant_expressions.array_log2_vec4_compute
+KHR-GL45.constant_expressions.array_log2_vec4_geometry
+KHR-GL45.constant_expressions.array_log2_vec4_tess_control
+KHR-GL45.constant_expressions.array_log2_vec4_tess_eval
+KHR-GL45.constant_expressions.array_sqrt_float_vertex
+KHR-GL45.constant_expressions.array_sqrt_float_fragment
+KHR-GL45.constant_expressions.array_sqrt_float_compute
+KHR-GL45.constant_expressions.array_sqrt_float_geometry
+KHR-GL45.constant_expressions.array_sqrt_float_tess_control
+KHR-GL45.constant_expressions.array_sqrt_float_tess_eval
+KHR-GL45.constant_expressions.array_sqrt_vec2_vertex
+KHR-GL45.constant_expressions.array_sqrt_vec2_fragment
+KHR-GL45.constant_expressions.array_sqrt_vec2_compute
+KHR-GL45.constant_expressions.array_sqrt_vec2_geometry
+KHR-GL45.constant_expressions.array_sqrt_vec2_tess_control
+KHR-GL45.constant_expressions.array_sqrt_vec2_tess_eval
+KHR-GL45.constant_expressions.array_sqrt_vec3_vertex
+KHR-GL45.constant_expressions.array_sqrt_vec3_fragment
+KHR-GL45.constant_expressions.array_sqrt_vec3_compute
+KHR-GL45.constant_expressions.array_sqrt_vec3_geometry
+KHR-GL45.constant_expressions.array_sqrt_vec3_tess_control
+KHR-GL45.constant_expressions.array_sqrt_vec3_tess_eval
+KHR-GL45.constant_expressions.array_sqrt_vec4_vertex
+KHR-GL45.constant_expressions.array_sqrt_vec4_fragment
+KHR-GL45.constant_expressions.array_sqrt_vec4_compute
+KHR-GL45.constant_expressions.array_sqrt_vec4_geometry
+KHR-GL45.constant_expressions.array_sqrt_vec4_tess_control
+KHR-GL45.constant_expressions.array_sqrt_vec4_tess_eval
+KHR-GL45.constant_expressions.array_inversesqrt_float_vertex
+KHR-GL45.constant_expressions.array_inversesqrt_float_fragment
+KHR-GL45.constant_expressions.array_inversesqrt_float_compute
+KHR-GL45.constant_expressions.array_inversesqrt_float_geometry
+KHR-GL45.constant_expressions.array_inversesqrt_float_tess_control
+KHR-GL45.constant_expressions.array_inversesqrt_float_tess_eval
+KHR-GL45.constant_expressions.array_inversesqrt_vec2_vertex
+KHR-GL45.constant_expressions.array_inversesqrt_vec2_fragment
+KHR-GL45.constant_expressions.array_inversesqrt_vec2_compute
+KHR-GL45.constant_expressions.array_inversesqrt_vec2_geometry
+KHR-GL45.constant_expressions.array_inversesqrt_vec2_tess_control
+KHR-GL45.constant_expressions.array_inversesqrt_vec2_tess_eval
+KHR-GL45.constant_expressions.array_inversesqrt_vec3_vertex
+KHR-GL45.constant_expressions.array_inversesqrt_vec3_fragment
+KHR-GL45.constant_expressions.array_inversesqrt_vec3_compute
+KHR-GL45.constant_expressions.array_inversesqrt_vec3_geometry
+KHR-GL45.constant_expressions.array_inversesqrt_vec3_tess_control
+KHR-GL45.constant_expressions.array_inversesqrt_vec3_tess_eval
+KHR-GL45.constant_expressions.array_inversesqrt_vec4_vertex
+KHR-GL45.constant_expressions.array_inversesqrt_vec4_fragment
+KHR-GL45.constant_expressions.array_inversesqrt_vec4_compute
+KHR-GL45.constant_expressions.array_inversesqrt_vec4_geometry
+KHR-GL45.constant_expressions.array_inversesqrt_vec4_tess_control
+KHR-GL45.constant_expressions.array_inversesqrt_vec4_tess_eval
+KHR-GL45.constant_expressions.array_abs_int_vertex
+KHR-GL45.constant_expressions.array_abs_int_fragment
+KHR-GL45.constant_expressions.array_abs_int_compute
+KHR-GL45.constant_expressions.array_abs_int_geometry
+KHR-GL45.constant_expressions.array_abs_int_tess_control
+KHR-GL45.constant_expressions.array_abs_int_tess_eval
+KHR-GL45.constant_expressions.array_abs_ivec2_vertex
+KHR-GL45.constant_expressions.array_abs_ivec2_fragment
+KHR-GL45.constant_expressions.array_abs_ivec2_compute
+KHR-GL45.constant_expressions.array_abs_ivec2_geometry
+KHR-GL45.constant_expressions.array_abs_ivec2_tess_control
+KHR-GL45.constant_expressions.array_abs_ivec2_tess_eval
+KHR-GL45.constant_expressions.array_abs_ivec3_vertex
+KHR-GL45.constant_expressions.array_abs_ivec3_fragment
+KHR-GL45.constant_expressions.array_abs_ivec3_compute
+KHR-GL45.constant_expressions.array_abs_ivec3_geometry
+KHR-GL45.constant_expressions.array_abs_ivec3_tess_control
+KHR-GL45.constant_expressions.array_abs_ivec3_tess_eval
+KHR-GL45.constant_expressions.array_abs_ivec4_vertex
+KHR-GL45.constant_expressions.array_abs_ivec4_fragment
+KHR-GL45.constant_expressions.array_abs_ivec4_compute
+KHR-GL45.constant_expressions.array_abs_ivec4_geometry
+KHR-GL45.constant_expressions.array_abs_ivec4_tess_control
+KHR-GL45.constant_expressions.array_abs_ivec4_tess_eval
+KHR-GL45.constant_expressions.array_sign_float_vertex
+KHR-GL45.constant_expressions.array_sign_float_fragment
+KHR-GL45.constant_expressions.array_sign_float_compute
+KHR-GL45.constant_expressions.array_sign_float_geometry
+KHR-GL45.constant_expressions.array_sign_float_tess_control
+KHR-GL45.constant_expressions.array_sign_float_tess_eval
+KHR-GL45.constant_expressions.array_sign_vec2_vertex
+KHR-GL45.constant_expressions.array_sign_vec2_fragment
+KHR-GL45.constant_expressions.array_sign_vec2_compute
+KHR-GL45.constant_expressions.array_sign_vec2_geometry
+KHR-GL45.constant_expressions.array_sign_vec2_tess_control
+KHR-GL45.constant_expressions.array_sign_vec2_tess_eval
+KHR-GL45.constant_expressions.array_sign_vec3_vertex
+KHR-GL45.constant_expressions.array_sign_vec3_fragment
+KHR-GL45.constant_expressions.array_sign_vec3_compute
+KHR-GL45.constant_expressions.array_sign_vec3_geometry
+KHR-GL45.constant_expressions.array_sign_vec3_tess_control
+KHR-GL45.constant_expressions.array_sign_vec3_tess_eval
+KHR-GL45.constant_expressions.array_sign_vec4_vertex
+KHR-GL45.constant_expressions.array_sign_vec4_fragment
+KHR-GL45.constant_expressions.array_sign_vec4_compute
+KHR-GL45.constant_expressions.array_sign_vec4_geometry
+KHR-GL45.constant_expressions.array_sign_vec4_tess_control
+KHR-GL45.constant_expressions.array_sign_vec4_tess_eval
+KHR-GL45.constant_expressions.array_floor_float_vertex
+KHR-GL45.constant_expressions.array_floor_float_fragment
+KHR-GL45.constant_expressions.array_floor_float_compute
+KHR-GL45.constant_expressions.array_floor_float_geometry
+KHR-GL45.constant_expressions.array_floor_float_tess_control
+KHR-GL45.constant_expressions.array_floor_float_tess_eval
+KHR-GL45.constant_expressions.array_floor_vec2_vertex
+KHR-GL45.constant_expressions.array_floor_vec2_fragment
+KHR-GL45.constant_expressions.array_floor_vec2_compute
+KHR-GL45.constant_expressions.array_floor_vec2_geometry
+KHR-GL45.constant_expressions.array_floor_vec2_tess_control
+KHR-GL45.constant_expressions.array_floor_vec2_tess_eval
+KHR-GL45.constant_expressions.array_floor_vec3_vertex
+KHR-GL45.constant_expressions.array_floor_vec3_fragment
+KHR-GL45.constant_expressions.array_floor_vec3_compute
+KHR-GL45.constant_expressions.array_floor_vec3_geometry
+KHR-GL45.constant_expressions.array_floor_vec3_tess_control
+KHR-GL45.constant_expressions.array_floor_vec3_tess_eval
+KHR-GL45.constant_expressions.array_floor_vec4_vertex
+KHR-GL45.constant_expressions.array_floor_vec4_fragment
+KHR-GL45.constant_expressions.array_floor_vec4_compute
+KHR-GL45.constant_expressions.array_floor_vec4_geometry
+KHR-GL45.constant_expressions.array_floor_vec4_tess_control
+KHR-GL45.constant_expressions.array_floor_vec4_tess_eval
+KHR-GL45.constant_expressions.array_trunc_float_vertex
+KHR-GL45.constant_expressions.array_trunc_float_fragment
+KHR-GL45.constant_expressions.array_trunc_float_compute
+KHR-GL45.constant_expressions.array_trunc_float_geometry
+KHR-GL45.constant_expressions.array_trunc_float_tess_control
+KHR-GL45.constant_expressions.array_trunc_float_tess_eval
+KHR-GL45.constant_expressions.array_trunc_vec2_vertex
+KHR-GL45.constant_expressions.array_trunc_vec2_fragment
+KHR-GL45.constant_expressions.array_trunc_vec2_compute
+KHR-GL45.constant_expressions.array_trunc_vec2_geometry
+KHR-GL45.constant_expressions.array_trunc_vec2_tess_control
+KHR-GL45.constant_expressions.array_trunc_vec2_tess_eval
+KHR-GL45.constant_expressions.array_trunc_vec3_vertex
+KHR-GL45.constant_expressions.array_trunc_vec3_fragment
+KHR-GL45.constant_expressions.array_trunc_vec3_compute
+KHR-GL45.constant_expressions.array_trunc_vec3_geometry
+KHR-GL45.constant_expressions.array_trunc_vec3_tess_control
+KHR-GL45.constant_expressions.array_trunc_vec3_tess_eval
+KHR-GL45.constant_expressions.array_trunc_vec4_vertex
+KHR-GL45.constant_expressions.array_trunc_vec4_fragment
+KHR-GL45.constant_expressions.array_trunc_vec4_compute
+KHR-GL45.constant_expressions.array_trunc_vec4_geometry
+KHR-GL45.constant_expressions.array_trunc_vec4_tess_control
+KHR-GL45.constant_expressions.array_trunc_vec4_tess_eval
+KHR-GL45.constant_expressions.array_round_float_vertex
+KHR-GL45.constant_expressions.array_round_float_fragment
+KHR-GL45.constant_expressions.array_round_float_compute
+KHR-GL45.constant_expressions.array_round_float_geometry
+KHR-GL45.constant_expressions.array_round_float_tess_control
+KHR-GL45.constant_expressions.array_round_float_tess_eval
+KHR-GL45.constant_expressions.array_round_vec2_vertex
+KHR-GL45.constant_expressions.array_round_vec2_fragment
+KHR-GL45.constant_expressions.array_round_vec2_compute
+KHR-GL45.constant_expressions.array_round_vec2_geometry
+KHR-GL45.constant_expressions.array_round_vec2_tess_control
+KHR-GL45.constant_expressions.array_round_vec2_tess_eval
+KHR-GL45.constant_expressions.array_round_vec3_vertex
+KHR-GL45.constant_expressions.array_round_vec3_fragment
+KHR-GL45.constant_expressions.array_round_vec3_compute
+KHR-GL45.constant_expressions.array_round_vec3_geometry
+KHR-GL45.constant_expressions.array_round_vec3_tess_control
+KHR-GL45.constant_expressions.array_round_vec3_tess_eval
+KHR-GL45.constant_expressions.array_round_vec4_vertex
+KHR-GL45.constant_expressions.array_round_vec4_fragment
+KHR-GL45.constant_expressions.array_round_vec4_compute
+KHR-GL45.constant_expressions.array_round_vec4_geometry
+KHR-GL45.constant_expressions.array_round_vec4_tess_control
+KHR-GL45.constant_expressions.array_round_vec4_tess_eval
+KHR-GL45.constant_expressions.array_ceil_float_vertex
+KHR-GL45.constant_expressions.array_ceil_float_fragment
+KHR-GL45.constant_expressions.array_ceil_float_compute
+KHR-GL45.constant_expressions.array_ceil_float_geometry
+KHR-GL45.constant_expressions.array_ceil_float_tess_control
+KHR-GL45.constant_expressions.array_ceil_float_tess_eval
+KHR-GL45.constant_expressions.array_ceil_vec2_vertex
+KHR-GL45.constant_expressions.array_ceil_vec2_fragment
+KHR-GL45.constant_expressions.array_ceil_vec2_compute
+KHR-GL45.constant_expressions.array_ceil_vec2_geometry
+KHR-GL45.constant_expressions.array_ceil_vec2_tess_control
+KHR-GL45.constant_expressions.array_ceil_vec2_tess_eval
+KHR-GL45.constant_expressions.array_ceil_vec3_vertex
+KHR-GL45.constant_expressions.array_ceil_vec3_fragment
+KHR-GL45.constant_expressions.array_ceil_vec3_compute
+KHR-GL45.constant_expressions.array_ceil_vec3_geometry
+KHR-GL45.constant_expressions.array_ceil_vec3_tess_control
+KHR-GL45.constant_expressions.array_ceil_vec3_tess_eval
+KHR-GL45.constant_expressions.array_ceil_vec4_vertex
+KHR-GL45.constant_expressions.array_ceil_vec4_fragment
+KHR-GL45.constant_expressions.array_ceil_vec4_compute
+KHR-GL45.constant_expressions.array_ceil_vec4_geometry
+KHR-GL45.constant_expressions.array_ceil_vec4_tess_control
+KHR-GL45.constant_expressions.array_ceil_vec4_tess_eval
+KHR-GL45.constant_expressions.array_mod_float_vertex
+KHR-GL45.constant_expressions.array_mod_float_fragment
+KHR-GL45.constant_expressions.array_mod_float_compute
+KHR-GL45.constant_expressions.array_mod_float_geometry
+KHR-GL45.constant_expressions.array_mod_float_tess_control
+KHR-GL45.constant_expressions.array_mod_float_tess_eval
+KHR-GL45.constant_expressions.array_mod_vec2_vertex
+KHR-GL45.constant_expressions.array_mod_vec2_fragment
+KHR-GL45.constant_expressions.array_mod_vec2_compute
+KHR-GL45.constant_expressions.array_mod_vec2_geometry
+KHR-GL45.constant_expressions.array_mod_vec2_tess_control
+KHR-GL45.constant_expressions.array_mod_vec2_tess_eval
+KHR-GL45.constant_expressions.array_mod_vec2_float_vertex
+KHR-GL45.constant_expressions.array_mod_vec2_float_fragment
+KHR-GL45.constant_expressions.array_mod_vec2_float_compute
+KHR-GL45.constant_expressions.array_mod_vec2_float_geometry
+KHR-GL45.constant_expressions.array_mod_vec2_float_tess_control
+KHR-GL45.constant_expressions.array_mod_vec2_float_tess_eval
+KHR-GL45.constant_expressions.array_mod_vec3_vertex
+KHR-GL45.constant_expressions.array_mod_vec3_fragment
+KHR-GL45.constant_expressions.array_mod_vec3_compute
+KHR-GL45.constant_expressions.array_mod_vec3_geometry
+KHR-GL45.constant_expressions.array_mod_vec3_tess_control
+KHR-GL45.constant_expressions.array_mod_vec3_tess_eval
+KHR-GL45.constant_expressions.array_mod_vec3_float_vertex
+KHR-GL45.constant_expressions.array_mod_vec3_float_fragment
+KHR-GL45.constant_expressions.array_mod_vec3_float_compute
+KHR-GL45.constant_expressions.array_mod_vec3_float_geometry
+KHR-GL45.constant_expressions.array_mod_vec3_float_tess_control
+KHR-GL45.constant_expressions.array_mod_vec3_float_tess_eval
+KHR-GL45.constant_expressions.array_mod_vec4_vertex
+KHR-GL45.constant_expressions.array_mod_vec4_fragment
+KHR-GL45.constant_expressions.array_mod_vec4_compute
+KHR-GL45.constant_expressions.array_mod_vec4_geometry
+KHR-GL45.constant_expressions.array_mod_vec4_tess_control
+KHR-GL45.constant_expressions.array_mod_vec4_tess_eval
+KHR-GL45.constant_expressions.array_mod_vec4_float_vertex
+KHR-GL45.constant_expressions.array_mod_vec4_float_fragment
+KHR-GL45.constant_expressions.array_mod_vec4_float_compute
+KHR-GL45.constant_expressions.array_mod_vec4_float_geometry
+KHR-GL45.constant_expressions.array_mod_vec4_float_tess_control
+KHR-GL45.constant_expressions.array_mod_vec4_float_tess_eval
+KHR-GL45.constant_expressions.array_min_float_vertex
+KHR-GL45.constant_expressions.array_min_float_fragment
+KHR-GL45.constant_expressions.array_min_float_compute
+KHR-GL45.constant_expressions.array_min_float_geometry
+KHR-GL45.constant_expressions.array_min_float_tess_control
+KHR-GL45.constant_expressions.array_min_float_tess_eval
+KHR-GL45.constant_expressions.array_min_vec2_vertex
+KHR-GL45.constant_expressions.array_min_vec2_fragment
+KHR-GL45.constant_expressions.array_min_vec2_compute
+KHR-GL45.constant_expressions.array_min_vec2_geometry
+KHR-GL45.constant_expressions.array_min_vec2_tess_control
+KHR-GL45.constant_expressions.array_min_vec2_tess_eval
+KHR-GL45.constant_expressions.array_min_vec2_float_vertex
+KHR-GL45.constant_expressions.array_min_vec2_float_fragment
+KHR-GL45.constant_expressions.array_min_vec2_float_compute
+KHR-GL45.constant_expressions.array_min_vec2_float_geometry
+KHR-GL45.constant_expressions.array_min_vec2_float_tess_control
+KHR-GL45.constant_expressions.array_min_vec2_float_tess_eval
+KHR-GL45.constant_expressions.array_min_vec3_vertex
+KHR-GL45.constant_expressions.array_min_vec3_fragment
+KHR-GL45.constant_expressions.array_min_vec3_compute
+KHR-GL45.constant_expressions.array_min_vec3_geometry
+KHR-GL45.constant_expressions.array_min_vec3_tess_control
+KHR-GL45.constant_expressions.array_min_vec3_tess_eval
+KHR-GL45.constant_expressions.array_min_vec3_float_vertex
+KHR-GL45.constant_expressions.array_min_vec3_float_fragment
+KHR-GL45.constant_expressions.array_min_vec3_float_compute
+KHR-GL45.constant_expressions.array_min_vec3_float_geometry
+KHR-GL45.constant_expressions.array_min_vec3_float_tess_control
+KHR-GL45.constant_expressions.array_min_vec3_float_tess_eval
+KHR-GL45.constant_expressions.array_min_vec4_vertex
+KHR-GL45.constant_expressions.array_min_vec4_fragment
+KHR-GL45.constant_expressions.array_min_vec4_compute
+KHR-GL45.constant_expressions.array_min_vec4_geometry
+KHR-GL45.constant_expressions.array_min_vec4_tess_control
+KHR-GL45.constant_expressions.array_min_vec4_tess_eval
+KHR-GL45.constant_expressions.array_min_vec4_float_vertex
+KHR-GL45.constant_expressions.array_min_vec4_float_fragment
+KHR-GL45.constant_expressions.array_min_vec4_float_compute
+KHR-GL45.constant_expressions.array_min_vec4_float_geometry
+KHR-GL45.constant_expressions.array_min_vec4_float_tess_control
+KHR-GL45.constant_expressions.array_min_vec4_float_tess_eval
+KHR-GL45.constant_expressions.array_max_float_vertex
+KHR-GL45.constant_expressions.array_max_float_fragment
+KHR-GL45.constant_expressions.array_max_float_compute
+KHR-GL45.constant_expressions.array_max_float_geometry
+KHR-GL45.constant_expressions.array_max_float_tess_control
+KHR-GL45.constant_expressions.array_max_float_tess_eval
+KHR-GL45.constant_expressions.array_max_vec2_vertex
+KHR-GL45.constant_expressions.array_max_vec2_fragment
+KHR-GL45.constant_expressions.array_max_vec2_compute
+KHR-GL45.constant_expressions.array_max_vec2_geometry
+KHR-GL45.constant_expressions.array_max_vec2_tess_control
+KHR-GL45.constant_expressions.array_max_vec2_tess_eval
+KHR-GL45.constant_expressions.array_max_vec2_float_vertex
+KHR-GL45.constant_expressions.array_max_vec2_float_fragment
+KHR-GL45.constant_expressions.array_max_vec2_float_compute
+KHR-GL45.constant_expressions.array_max_vec2_float_geometry
+KHR-GL45.constant_expressions.array_max_vec2_float_tess_control
+KHR-GL45.constant_expressions.array_max_vec2_float_tess_eval
+KHR-GL45.constant_expressions.array_max_vec3_vertex
+KHR-GL45.constant_expressions.array_max_vec3_fragment
+KHR-GL45.constant_expressions.array_max_vec3_compute
+KHR-GL45.constant_expressions.array_max_vec3_geometry
+KHR-GL45.constant_expressions.array_max_vec3_tess_control
+KHR-GL45.constant_expressions.array_max_vec3_tess_eval
+KHR-GL45.constant_expressions.array_max_vec3_float_vertex
+KHR-GL45.constant_expressions.array_max_vec3_float_fragment
+KHR-GL45.constant_expressions.array_max_vec3_float_compute
+KHR-GL45.constant_expressions.array_max_vec3_float_geometry
+KHR-GL45.constant_expressions.array_max_vec3_float_tess_control
+KHR-GL45.constant_expressions.array_max_vec3_float_tess_eval
+KHR-GL45.constant_expressions.array_max_vec4_vertex
+KHR-GL45.constant_expressions.array_max_vec4_fragment
+KHR-GL45.constant_expressions.array_max_vec4_compute
+KHR-GL45.constant_expressions.array_max_vec4_geometry
+KHR-GL45.constant_expressions.array_max_vec4_tess_control
+KHR-GL45.constant_expressions.array_max_vec4_tess_eval
+KHR-GL45.constant_expressions.array_max_vec4_float_vertex
+KHR-GL45.constant_expressions.array_max_vec4_float_fragment
+KHR-GL45.constant_expressions.array_max_vec4_float_compute
+KHR-GL45.constant_expressions.array_max_vec4_float_geometry
+KHR-GL45.constant_expressions.array_max_vec4_float_tess_control
+KHR-GL45.constant_expressions.array_max_vec4_float_tess_eval
+KHR-GL45.constant_expressions.array_clamp_float_vertex
+KHR-GL45.constant_expressions.array_clamp_float_fragment
+KHR-GL45.constant_expressions.array_clamp_float_compute
+KHR-GL45.constant_expressions.array_clamp_float_geometry
+KHR-GL45.constant_expressions.array_clamp_float_tess_control
+KHR-GL45.constant_expressions.array_clamp_float_tess_eval
+KHR-GL45.constant_expressions.array_clamp_vec2_vertex
+KHR-GL45.constant_expressions.array_clamp_vec2_fragment
+KHR-GL45.constant_expressions.array_clamp_vec2_compute
+KHR-GL45.constant_expressions.array_clamp_vec2_geometry
+KHR-GL45.constant_expressions.array_clamp_vec2_tess_control
+KHR-GL45.constant_expressions.array_clamp_vec2_tess_eval
+KHR-GL45.constant_expressions.array_clamp_vec2_float_vertex
+KHR-GL45.constant_expressions.array_clamp_vec2_float_fragment
+KHR-GL45.constant_expressions.array_clamp_vec2_float_compute
+KHR-GL45.constant_expressions.array_clamp_vec2_float_geometry
+KHR-GL45.constant_expressions.array_clamp_vec2_float_tess_control
+KHR-GL45.constant_expressions.array_clamp_vec2_float_tess_eval
+KHR-GL45.constant_expressions.array_clamp_vec3_vertex
+KHR-GL45.constant_expressions.array_clamp_vec3_fragment
+KHR-GL45.constant_expressions.array_clamp_vec3_compute
+KHR-GL45.constant_expressions.array_clamp_vec3_geometry
+KHR-GL45.constant_expressions.array_clamp_vec3_tess_control
+KHR-GL45.constant_expressions.array_clamp_vec3_tess_eval
+KHR-GL45.constant_expressions.array_clamp_vec3_float_vertex
+KHR-GL45.constant_expressions.array_clamp_vec3_float_fragment
+KHR-GL45.constant_expressions.array_clamp_vec3_float_compute
+KHR-GL45.constant_expressions.array_clamp_vec3_float_geometry
+KHR-GL45.constant_expressions.array_clamp_vec3_float_tess_control
+KHR-GL45.constant_expressions.array_clamp_vec3_float_tess_eval
+KHR-GL45.constant_expressions.array_clamp_vec4_vertex
+KHR-GL45.constant_expressions.array_clamp_vec4_fragment
+KHR-GL45.constant_expressions.array_clamp_vec4_compute
+KHR-GL45.constant_expressions.array_clamp_vec4_geometry
+KHR-GL45.constant_expressions.array_clamp_vec4_tess_control
+KHR-GL45.constant_expressions.array_clamp_vec4_tess_eval
+KHR-GL45.constant_expressions.array_clamp_vec4_float_vertex
+KHR-GL45.constant_expressions.array_clamp_vec4_float_fragment
+KHR-GL45.constant_expressions.array_clamp_vec4_float_compute
+KHR-GL45.constant_expressions.array_clamp_vec4_float_geometry
+KHR-GL45.constant_expressions.array_clamp_vec4_float_tess_control
+KHR-GL45.constant_expressions.array_clamp_vec4_float_tess_eval
+KHR-GL45.constant_expressions.array_length_float_vertex
+KHR-GL45.constant_expressions.array_length_float_fragment
+KHR-GL45.constant_expressions.array_length_float_compute
+KHR-GL45.constant_expressions.array_length_float_geometry
+KHR-GL45.constant_expressions.array_length_float_tess_control
+KHR-GL45.constant_expressions.array_length_float_tess_eval
+KHR-GL45.constant_expressions.array_length_vec2_vertex
+KHR-GL45.constant_expressions.array_length_vec2_fragment
+KHR-GL45.constant_expressions.array_length_vec2_compute
+KHR-GL45.constant_expressions.array_length_vec2_geometry
+KHR-GL45.constant_expressions.array_length_vec2_tess_control
+KHR-GL45.constant_expressions.array_length_vec2_tess_eval
+KHR-GL45.constant_expressions.array_length_vec3_vertex
+KHR-GL45.constant_expressions.array_length_vec3_fragment
+KHR-GL45.constant_expressions.array_length_vec3_compute
+KHR-GL45.constant_expressions.array_length_vec3_geometry
+KHR-GL45.constant_expressions.array_length_vec3_tess_control
+KHR-GL45.constant_expressions.array_length_vec3_tess_eval
+KHR-GL45.constant_expressions.array_length_vec4_vertex
+KHR-GL45.constant_expressions.array_length_vec4_fragment
+KHR-GL45.constant_expressions.array_length_vec4_compute
+KHR-GL45.constant_expressions.array_length_vec4_geometry
+KHR-GL45.constant_expressions.array_length_vec4_tess_control
+KHR-GL45.constant_expressions.array_length_vec4_tess_eval
+KHR-GL45.constant_expressions.array_dot_float_vertex
+KHR-GL45.constant_expressions.array_dot_float_fragment
+KHR-GL45.constant_expressions.array_dot_float_compute
+KHR-GL45.constant_expressions.array_dot_float_geometry
+KHR-GL45.constant_expressions.array_dot_float_tess_control
+KHR-GL45.constant_expressions.array_dot_float_tess_eval
+KHR-GL45.constant_expressions.array_dot_vec2_vertex
+KHR-GL45.constant_expressions.array_dot_vec2_fragment
+KHR-GL45.constant_expressions.array_dot_vec2_compute
+KHR-GL45.constant_expressions.array_dot_vec2_geometry
+KHR-GL45.constant_expressions.array_dot_vec2_tess_control
+KHR-GL45.constant_expressions.array_dot_vec2_tess_eval
+KHR-GL45.constant_expressions.array_dot_vec3_vertex
+KHR-GL45.constant_expressions.array_dot_vec3_fragment
+KHR-GL45.constant_expressions.array_dot_vec3_compute
+KHR-GL45.constant_expressions.array_dot_vec3_geometry
+KHR-GL45.constant_expressions.array_dot_vec3_tess_control
+KHR-GL45.constant_expressions.array_dot_vec3_tess_eval
+KHR-GL45.constant_expressions.array_dot_vec4_vertex
+KHR-GL45.constant_expressions.array_dot_vec4_fragment
+KHR-GL45.constant_expressions.array_dot_vec4_compute
+KHR-GL45.constant_expressions.array_dot_vec4_geometry
+KHR-GL45.constant_expressions.array_dot_vec4_tess_control
+KHR-GL45.constant_expressions.array_dot_vec4_tess_eval
+KHR-GL45.constant_expressions.array_normalize_float_vertex
+KHR-GL45.constant_expressions.array_normalize_float_fragment
+KHR-GL45.constant_expressions.array_normalize_float_compute
+KHR-GL45.constant_expressions.array_normalize_float_geometry
+KHR-GL45.constant_expressions.array_normalize_float_tess_control
+KHR-GL45.constant_expressions.array_normalize_float_tess_eval
+KHR-GL45.constant_expressions.array_normalize_vec2_vertex
+KHR-GL45.constant_expressions.array_normalize_vec2_fragment
+KHR-GL45.constant_expressions.array_normalize_vec2_compute
+KHR-GL45.constant_expressions.array_normalize_vec2_geometry
+KHR-GL45.constant_expressions.array_normalize_vec2_tess_control
+KHR-GL45.constant_expressions.array_normalize_vec2_tess_eval
+KHR-GL45.constant_expressions.array_normalize_vec3_vertex
+KHR-GL45.constant_expressions.array_normalize_vec3_fragment
+KHR-GL45.constant_expressions.array_normalize_vec3_compute
+KHR-GL45.constant_expressions.array_normalize_vec3_geometry
+KHR-GL45.constant_expressions.array_normalize_vec3_tess_control
+KHR-GL45.constant_expressions.array_normalize_vec3_tess_eval
+KHR-GL45.constant_expressions.array_normalize_vec4_vertex
+KHR-GL45.constant_expressions.array_normalize_vec4_fragment
+KHR-GL45.constant_expressions.array_normalize_vec4_compute
+KHR-GL45.constant_expressions.array_normalize_vec4_geometry
+KHR-GL45.constant_expressions.array_normalize_vec4_tess_control
+KHR-GL45.constant_expressions.array_normalize_vec4_tess_eval
KHR-GL45.shaders44.preprocessor.invalid_redefinitions.invalid_identifier_2_vertex
KHR-GL45.shaders44.preprocessor.invalid_redefinitions.invalid_identifier_2_fragment
KHR-GL45.shaders44.preprocessor.line_continuation.comment_vertex
@@ -4721,7 +6113,186 @@
KHR-GL45.direct_state_access.textures_buffer_rg32f
KHR-GL45.direct_state_access.textures_buffer_rgb32f
KHR-GL45.direct_state_access.textures_buffer_rgba32f
-KHR-GL45.direct_state_access.textures_storage_and_subimage
+KHR-GL45.direct_state_access.textures_storage_1d_r8i
+KHR-GL45.direct_state_access.textures_storage_1d_rg8i
+KHR-GL45.direct_state_access.textures_storage_1d_rgba8i
+KHR-GL45.direct_state_access.textures_storage_2d_r8i
+KHR-GL45.direct_state_access.textures_storage_2d_rg8i
+KHR-GL45.direct_state_access.textures_storage_2d_rgba8i
+KHR-GL45.direct_state_access.textures_storage_3d_r8i
+KHR-GL45.direct_state_access.textures_storage_3d_rg8i
+KHR-GL45.direct_state_access.textures_storage_3d_rgba8i
+KHR-GL45.direct_state_access.textures_storage_1d_r8ui
+KHR-GL45.direct_state_access.textures_storage_1d_rg8ui
+KHR-GL45.direct_state_access.textures_storage_1d_rgba8ui
+KHR-GL45.direct_state_access.textures_storage_2d_r8ui
+KHR-GL45.direct_state_access.textures_storage_2d_rg8ui
+KHR-GL45.direct_state_access.textures_storage_2d_rgba8ui
+KHR-GL45.direct_state_access.textures_storage_3d_r8ui
+KHR-GL45.direct_state_access.textures_storage_3d_rg8ui
+KHR-GL45.direct_state_access.textures_storage_3d_rgba8ui
+KHR-GL45.direct_state_access.textures_storage_1d_r8ui_unorm
+KHR-GL45.direct_state_access.textures_storage_1d_rg8ui_unorm
+KHR-GL45.direct_state_access.textures_storage_1d_rgba8ui_unorm
+KHR-GL45.direct_state_access.textures_storage_2d_r8ui_unorm
+KHR-GL45.direct_state_access.textures_storage_2d_rg8ui_unorm
+KHR-GL45.direct_state_access.textures_storage_2d_rgba8ui_unorm
+KHR-GL45.direct_state_access.textures_storage_3d_r8ui_unorm
+KHR-GL45.direct_state_access.textures_storage_3d_rg8ui_unorm
+KHR-GL45.direct_state_access.textures_storage_3d_rgba8ui_unorm
+KHR-GL45.direct_state_access.textures_storage_1d_r16i
+KHR-GL45.direct_state_access.textures_storage_1d_rg16i
+KHR-GL45.direct_state_access.textures_storage_1d_rgba16i
+KHR-GL45.direct_state_access.textures_storage_2d_r16i
+KHR-GL45.direct_state_access.textures_storage_2d_rg16i
+KHR-GL45.direct_state_access.textures_storage_2d_rgba16i
+KHR-GL45.direct_state_access.textures_storage_3d_r16i
+KHR-GL45.direct_state_access.textures_storage_3d_rg16i
+KHR-GL45.direct_state_access.textures_storage_3d_rgba16i
+KHR-GL45.direct_state_access.textures_storage_1d_r16ui
+KHR-GL45.direct_state_access.textures_storage_1d_rg16ui
+KHR-GL45.direct_state_access.textures_storage_1d_rgba16ui
+KHR-GL45.direct_state_access.textures_storage_2d_r16ui
+KHR-GL45.direct_state_access.textures_storage_2d_rg16ui
+KHR-GL45.direct_state_access.textures_storage_2d_rgba16ui
+KHR-GL45.direct_state_access.textures_storage_3d_r16ui
+KHR-GL45.direct_state_access.textures_storage_3d_rg16ui
+KHR-GL45.direct_state_access.textures_storage_3d_rgba16ui
+KHR-GL45.direct_state_access.textures_storage_1d_r16ui_unorm
+KHR-GL45.direct_state_access.textures_storage_1d_rg16ui_unorm
+KHR-GL45.direct_state_access.textures_storage_1d_rgba16ui_unorm
+KHR-GL45.direct_state_access.textures_storage_2d_r16ui_unorm
+KHR-GL45.direct_state_access.textures_storage_2d_rg16ui_unorm
+KHR-GL45.direct_state_access.textures_storage_2d_rgba16ui_unorm
+KHR-GL45.direct_state_access.textures_storage_3d_r16ui_unorm
+KHR-GL45.direct_state_access.textures_storage_3d_rg16ui_unorm
+KHR-GL45.direct_state_access.textures_storage_3d_rgba16ui_unorm
+KHR-GL45.direct_state_access.textures_storage_1d_r32i
+KHR-GL45.direct_state_access.textures_storage_1d_rg32i
+KHR-GL45.direct_state_access.textures_storage_1d_rgb32i
+KHR-GL45.direct_state_access.textures_storage_1d_rgba32i
+KHR-GL45.direct_state_access.textures_storage_2d_r32i
+KHR-GL45.direct_state_access.textures_storage_2d_rg32i
+KHR-GL45.direct_state_access.textures_storage_2d_rgb32i
+KHR-GL45.direct_state_access.textures_storage_2d_rgba32i
+KHR-GL45.direct_state_access.textures_storage_3d_r32i
+KHR-GL45.direct_state_access.textures_storage_3d_rg32i
+KHR-GL45.direct_state_access.textures_storage_3d_rgb32i
+KHR-GL45.direct_state_access.textures_storage_3d_rgba32i
+KHR-GL45.direct_state_access.textures_storage_1d_r32ui
+KHR-GL45.direct_state_access.textures_storage_1d_rg32ui
+KHR-GL45.direct_state_access.textures_storage_1d_rgb32ui
+KHR-GL45.direct_state_access.textures_storage_1d_rgba32ui
+KHR-GL45.direct_state_access.textures_storage_2d_r32ui
+KHR-GL45.direct_state_access.textures_storage_2d_rg32ui
+KHR-GL45.direct_state_access.textures_storage_2d_rgb32ui
+KHR-GL45.direct_state_access.textures_storage_2d_rgba32ui
+KHR-GL45.direct_state_access.textures_storage_3d_r32ui
+KHR-GL45.direct_state_access.textures_storage_3d_rg32ui
+KHR-GL45.direct_state_access.textures_storage_3d_rgb32ui
+KHR-GL45.direct_state_access.textures_storage_3d_rgba32ui
+KHR-GL45.direct_state_access.textures_storage_1d_r32f
+KHR-GL45.direct_state_access.textures_storage_1d_rg32f
+KHR-GL45.direct_state_access.textures_storage_1d_rgb32f
+KHR-GL45.direct_state_access.textures_storage_1d_rgba32f
+KHR-GL45.direct_state_access.textures_storage_2d_r32f
+KHR-GL45.direct_state_access.textures_storage_2d_rg32f
+KHR-GL45.direct_state_access.textures_storage_2d_rgb32f
+KHR-GL45.direct_state_access.textures_storage_2d_rgba32f
+KHR-GL45.direct_state_access.textures_storage_3d_r32f
+KHR-GL45.direct_state_access.textures_storage_3d_rg32f
+KHR-GL45.direct_state_access.textures_storage_3d_rgb32f
+KHR-GL45.direct_state_access.textures_storage_3d_rgba32f
+KHR-GL45.direct_state_access.textures_subimage_1d_r8i
+KHR-GL45.direct_state_access.textures_subimage_1d_rg8i
+KHR-GL45.direct_state_access.textures_subimage_1d_rgba8i
+KHR-GL45.direct_state_access.textures_subimage_2d_r8i
+KHR-GL45.direct_state_access.textures_subimage_2d_rg8i
+KHR-GL45.direct_state_access.textures_subimage_2d_rgba8i
+KHR-GL45.direct_state_access.textures_subimage_3d_r8i
+KHR-GL45.direct_state_access.textures_subimage_3d_rg8i
+KHR-GL45.direct_state_access.textures_subimage_3d_rgba8i
+KHR-GL45.direct_state_access.textures_subimage_1d_r8ui
+KHR-GL45.direct_state_access.textures_subimage_1d_rg8ui
+KHR-GL45.direct_state_access.textures_subimage_1d_rgba8ui
+KHR-GL45.direct_state_access.textures_subimage_2d_r8ui
+KHR-GL45.direct_state_access.textures_subimage_2d_rg8ui
+KHR-GL45.direct_state_access.textures_subimage_2d_rgba8ui
+KHR-GL45.direct_state_access.textures_subimage_3d_r8ui
+KHR-GL45.direct_state_access.textures_subimage_3d_rg8ui
+KHR-GL45.direct_state_access.textures_subimage_3d_rgba8ui
+KHR-GL45.direct_state_access.textures_subimage_1d_r8ui_unorm
+KHR-GL45.direct_state_access.textures_subimage_1d_rg8ui_unorm
+KHR-GL45.direct_state_access.textures_subimage_1d_rgba8ui_unorm
+KHR-GL45.direct_state_access.textures_subimage_2d_r8ui_unorm
+KHR-GL45.direct_state_access.textures_subimage_2d_rg8ui_unorm
+KHR-GL45.direct_state_access.textures_subimage_2d_rgba8ui_unorm
+KHR-GL45.direct_state_access.textures_subimage_3d_r8ui_unorm
+KHR-GL45.direct_state_access.textures_subimage_3d_rg8ui_unorm
+KHR-GL45.direct_state_access.textures_subimage_3d_rgba8ui_unorm
+KHR-GL45.direct_state_access.textures_subimage_1d_r16i
+KHR-GL45.direct_state_access.textures_subimage_1d_rg16i
+KHR-GL45.direct_state_access.textures_subimage_1d_rgba16i
+KHR-GL45.direct_state_access.textures_subimage_2d_r16i
+KHR-GL45.direct_state_access.textures_subimage_2d_rg16i
+KHR-GL45.direct_state_access.textures_subimage_2d_rgba16i
+KHR-GL45.direct_state_access.textures_subimage_3d_r16i
+KHR-GL45.direct_state_access.textures_subimage_3d_rg16i
+KHR-GL45.direct_state_access.textures_subimage_3d_rgba16i
+KHR-GL45.direct_state_access.textures_subimage_1d_r16ui
+KHR-GL45.direct_state_access.textures_subimage_1d_rg16ui
+KHR-GL45.direct_state_access.textures_subimage_1d_rgba16ui
+KHR-GL45.direct_state_access.textures_subimage_2d_r16ui
+KHR-GL45.direct_state_access.textures_subimage_2d_rg16ui
+KHR-GL45.direct_state_access.textures_subimage_2d_rgba16ui
+KHR-GL45.direct_state_access.textures_subimage_3d_r16ui
+KHR-GL45.direct_state_access.textures_subimage_3d_rg16ui
+KHR-GL45.direct_state_access.textures_subimage_3d_rgba16ui
+KHR-GL45.direct_state_access.textures_subimage_1d_r16ui_unorm
+KHR-GL45.direct_state_access.textures_subimage_1d_rg16ui_unorm
+KHR-GL45.direct_state_access.textures_subimage_1d_rgba16ui_unorm
+KHR-GL45.direct_state_access.textures_subimage_2d_r16ui_unorm
+KHR-GL45.direct_state_access.textures_subimage_2d_rg16ui_unorm
+KHR-GL45.direct_state_access.textures_subimage_2d_rgba16ui_unorm
+KHR-GL45.direct_state_access.textures_subimage_3d_r16ui_unorm
+KHR-GL45.direct_state_access.textures_subimage_3d_rg16ui_unorm
+KHR-GL45.direct_state_access.textures_subimage_3d_rgba16ui_unorm
+KHR-GL45.direct_state_access.textures_subimage_1d_r32i
+KHR-GL45.direct_state_access.textures_subimage_1d_rg32i
+KHR-GL45.direct_state_access.textures_subimage_1d_rgb32i
+KHR-GL45.direct_state_access.textures_subimage_1d_rgba32i
+KHR-GL45.direct_state_access.textures_subimage_2d_r32i
+KHR-GL45.direct_state_access.textures_subimage_2d_rg32i
+KHR-GL45.direct_state_access.textures_subimage_2d_rgb32i
+KHR-GL45.direct_state_access.textures_subimage_2d_rgba32i
+KHR-GL45.direct_state_access.textures_subimage_3d_r32i
+KHR-GL45.direct_state_access.textures_subimage_3d_rg32i
+KHR-GL45.direct_state_access.textures_subimage_3d_rgb32i
+KHR-GL45.direct_state_access.textures_subimage_3d_rgba32i
+KHR-GL45.direct_state_access.textures_subimage_1d_r32ui
+KHR-GL45.direct_state_access.textures_subimage_1d_rg32ui
+KHR-GL45.direct_state_access.textures_subimage_1d_rgb32ui
+KHR-GL45.direct_state_access.textures_subimage_1d_rgba32ui
+KHR-GL45.direct_state_access.textures_subimage_2d_r32ui
+KHR-GL45.direct_state_access.textures_subimage_2d_rg32ui
+KHR-GL45.direct_state_access.textures_subimage_2d_rgb32ui
+KHR-GL45.direct_state_access.textures_subimage_2d_rgba32ui
+KHR-GL45.direct_state_access.textures_subimage_3d_r32ui
+KHR-GL45.direct_state_access.textures_subimage_3d_rg32ui
+KHR-GL45.direct_state_access.textures_subimage_3d_rgb32ui
+KHR-GL45.direct_state_access.textures_subimage_3d_rgba32ui
+KHR-GL45.direct_state_access.textures_subimage_1d_r32f
+KHR-GL45.direct_state_access.textures_subimage_1d_rg32f
+KHR-GL45.direct_state_access.textures_subimage_1d_rgb32f
+KHR-GL45.direct_state_access.textures_subimage_1d_rgba32f
+KHR-GL45.direct_state_access.textures_subimage_2d_r32f
+KHR-GL45.direct_state_access.textures_subimage_2d_rg32f
+KHR-GL45.direct_state_access.textures_subimage_2d_rgb32f
+KHR-GL45.direct_state_access.textures_subimage_2d_rgba32f
+KHR-GL45.direct_state_access.textures_subimage_3d_r32f
+KHR-GL45.direct_state_access.textures_subimage_3d_rg32f
+KHR-GL45.direct_state_access.textures_subimage_3d_rgb32f
+KHR-GL45.direct_state_access.textures_subimage_3d_rgba32f
KHR-GL45.direct_state_access.textures_storage_multisample
KHR-GL45.direct_state_access.textures_compressed_subimage
KHR-GL45.direct_state_access.textures_copy
@@ -4753,10 +6324,10 @@
KHR-GL45.conditional_render_inverted.functional
KHR-GL45.sync.flush_commands
KHR-GL45.incomplete_texture_access.sampler
-KHR-GL45.parallel_shader_compile.SimpleQueriesTest
-KHR-GL45.parallel_shader_compile.MaxShaderCompileThreadsTest
-KHR-GL45.parallel_shader_compile.CompilationCompletionNonParallelTest
-KHR-GL45.parallel_shader_compile.CompilationCompletionParallelTest
+KHR-GL45.parallel_shader_compile.simple_queries
+KHR-GL45.parallel_shader_compile.max_shader_compile_threads
+KHR-GL45.parallel_shader_compile.compilation_completion_non_parallel
+KHR-GL45.parallel_shader_compile.compilation_completion_parallel
KHR-GL45.post_depth_coverage_tests.PostDepthShader
KHR-GL45.post_depth_coverage_tests.PostDepthSampleMask
KHR-GL45.sparse_texture2_tests.ShaderExtension
@@ -4940,3 +6511,6 @@
KHR-GL45.polygon_offset_clamp.PolygonOffsetClampAvailability
KHR-GL45.polygon_offset_clamp.PolygonOffsetClampMinMax
KHR-GL45.polygon_offset_clamp.PolygonOffsetClampZeroInfinity
+KHR-GL45.separable_programs_tf.tessellation_active
+KHR-GL45.separable_programs_tf.geometry_active
+KHR-GL45.spirv_extensions.spirv_extensions_queries
diff --git a/external/openglcts/data/mustpass/gl/khronos_mustpass/4.5.5.x/src/gl40-test-issues.txt b/external/openglcts/data/mustpass/gl/khronos_mustpass/4.5.5.x/src/gl40-test-issues.txt
new file mode 100644
index 0000000..c2fd524
--- /dev/null
+++ b/external/openglcts/data/mustpass/gl/khronos_mustpass/4.5.5.x/src/gl40-test-issues.txt
@@ -0,0 +1,2 @@
+# VK-GL-CTS issue: 624
+KHR-GL40.shader_subroutine.multiple_contexts
diff --git a/external/openglcts/data/mustpass/gl/khronos_mustpass/4.5.5.x/src/gl41-test-issues.txt b/external/openglcts/data/mustpass/gl/khronos_mustpass/4.5.5.x/src/gl41-test-issues.txt
new file mode 100644
index 0000000..bcf2806
--- /dev/null
+++ b/external/openglcts/data/mustpass/gl/khronos_mustpass/4.5.5.x/src/gl41-test-issues.txt
@@ -0,0 +1,2 @@
+# VK-GL-CTS issue: 624
+KHR-GL41.shader_subroutine.multiple_contexts
diff --git a/external/openglcts/data/mustpass/gl/khronos_mustpass/4.5.5.x/src/gl42-test-issues.txt b/external/openglcts/data/mustpass/gl/khronos_mustpass/4.5.5.x/src/gl42-test-issues.txt
new file mode 100644
index 0000000..c56274e
--- /dev/null
+++ b/external/openglcts/data/mustpass/gl/khronos_mustpass/4.5.5.x/src/gl42-test-issues.txt
@@ -0,0 +1,2 @@
+# VK-GL-CTS issue: 624
+KHR-GL42.shader_subroutine.multiple_contexts
diff --git a/external/openglcts/data/mustpass/gl/khronos_mustpass/4.5.5.x/src/gl43-test-issues.txt b/external/openglcts/data/mustpass/gl/khronos_mustpass/4.5.5.x/src/gl43-test-issues.txt
new file mode 100644
index 0000000..a0e70c3
--- /dev/null
+++ b/external/openglcts/data/mustpass/gl/khronos_mustpass/4.5.5.x/src/gl43-test-issues.txt
@@ -0,0 +1,2 @@
+# VK-GL-CTS issue: 624
+KHR-GL43.shader_subroutine.multiple_contexts
diff --git a/external/openglcts/data/mustpass/gl/khronos_mustpass/4.5.5.x/src/gl44-test-issues.txt b/external/openglcts/data/mustpass/gl/khronos_mustpass/4.5.5.x/src/gl44-test-issues.txt
new file mode 100644
index 0000000..19dc4ae
--- /dev/null
+++ b/external/openglcts/data/mustpass/gl/khronos_mustpass/4.5.5.x/src/gl44-test-issues.txt
@@ -0,0 +1,2 @@
+# VK-GL-CTS issue: 624
+KHR-GL44.shader_subroutine.multiple_contexts
diff --git a/external/openglcts/data/mustpass/gl/khronos_mustpass/4.5.5.x/src/gl45-test-issues.txt b/external/openglcts/data/mustpass/gl/khronos_mustpass/4.5.5.x/src/gl45-test-issues.txt
new file mode 100644
index 0000000..479437e
--- /dev/null
+++ b/external/openglcts/data/mustpass/gl/khronos_mustpass/4.5.5.x/src/gl45-test-issues.txt
@@ -0,0 +1,2 @@
+# VK-GL-CTS issue: 624
+KHR-GL45.shader_subroutine.multiple_contexts
diff --git a/external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.4.x/gles2-master.txt b/external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.4.x/gles2-master.txt
index b0082da..182b7ea 100644
--- a/external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.4.x/gles2-master.txt
+++ b/external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.4.x/gles2-master.txt
@@ -7730,12 +7730,16 @@
dEQP-GLES2.functional.shaders.builtin_variable.max_vertex_uniform_vectors_fragment
dEQP-GLES2.functional.shaders.builtin_variable.max_fragment_uniform_vectors_vertex
dEQP-GLES2.functional.shaders.builtin_variable.max_fragment_uniform_vectors_fragment
+dEQP-GLES2.functional.shaders.builtin_variable.max_varying_vectors_vertex
+dEQP-GLES2.functional.shaders.builtin_variable.max_varying_vectors_fragment
dEQP-GLES2.functional.shaders.builtin_variable.max_texture_image_units_vertex
dEQP-GLES2.functional.shaders.builtin_variable.max_texture_image_units_fragment
dEQP-GLES2.functional.shaders.builtin_variable.max_vertex_texture_image_units_vertex
dEQP-GLES2.functional.shaders.builtin_variable.max_vertex_texture_image_units_fragment
dEQP-GLES2.functional.shaders.builtin_variable.max_combined_texture_image_units_vertex
dEQP-GLES2.functional.shaders.builtin_variable.max_combined_texture_image_units_fragment
+dEQP-GLES2.functional.shaders.builtin_variable.max_draw_buffers_vertex
+dEQP-GLES2.functional.shaders.builtin_variable.max_draw_buffers_fragment
dEQP-GLES2.functional.shaders.builtin_variable.depth_range_vertex
dEQP-GLES2.functional.shaders.builtin_variable.depth_range_fragment
dEQP-GLES2.functional.shaders.builtin_variable.fragcoord_xyz
@@ -13605,6 +13609,13 @@
dEQP-GLES2.functional.negative_api.texture.copyteximage2d_width_height_max_cube_neg_x
dEQP-GLES2.functional.negative_api.texture.copyteximage2d_width_height_max_cube_neg_y
dEQP-GLES2.functional.negative_api.texture.copyteximage2d_width_height_max_cube_neg_z
+dEQP-GLES2.functional.negative_api.texture.copyteximage2d_invalid_border_tex2d
+dEQP-GLES2.functional.negative_api.texture.copyteximage2d_invalid_border_cube_pos_x
+dEQP-GLES2.functional.negative_api.texture.copyteximage2d_invalid_border_cube_pos_y
+dEQP-GLES2.functional.negative_api.texture.copyteximage2d_invalid_border_cube_pos_z
+dEQP-GLES2.functional.negative_api.texture.copyteximage2d_invalid_border_cube_neg_x
+dEQP-GLES2.functional.negative_api.texture.copyteximage2d_invalid_border_cube_neg_y
+dEQP-GLES2.functional.negative_api.texture.copyteximage2d_invalid_border_cube_neg_z
dEQP-GLES2.functional.negative_api.texture.copyteximage2d_incomplete_framebuffer
dEQP-GLES2.functional.negative_api.texture.copytexsubimage2d_invalid_target
dEQP-GLES2.functional.negative_api.texture.copytexsubimage2d_neg_level_tex2d
diff --git a/external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.4.x/src/gles2-driver-issues.txt b/external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.4.x/src/gles2-driver-issues.txt
index 771908c..ca3c6e1 100644
--- a/external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.4.x/src/gles2-driver-issues.txt
+++ b/external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.4.x/src/gles2-driver-issues.txt
@@ -154,12 +154,6 @@
dEQP-GLES2.functional.shaders.reserved_operators.operator_bitwise_not_vertex
dEQP-GLES2.functional.shaders.reserved_operators.operator_bitwise_not_fragment
-#VK-GL-CTS 241
-dEQP-GLES2.functional.shaders.builtin_variable.max_varying_vectors_vertex
-dEQP-GLES2.functional.shaders.builtin_variable.max_varying_vectors_fragment
-dEQP-GLES2.functional.shaders.builtin_variable.max_draw_buffers_vertex
-dEQP-GLES2.functional.shaders.builtin_variable.max_draw_buffers_fragment
-
#VK-GL-CTS 244
dEQP-GLES2.functional.shaders.fragdata.invalid_assign_to_1
@@ -238,13 +232,6 @@
#VK-GL-CTS 252
dEQP-GLES2.functional.negative_api.state.get_framebuffer_attachment_parameteriv
-dEQP-GLES2.functional.negative_api.texture.copyteximage2d_invalid_border_tex2d
-dEQP-GLES2.functional.negative_api.texture.copyteximage2d_invalid_border_cube_pos_x
-dEQP-GLES2.functional.negative_api.texture.copyteximage2d_invalid_border_cube_pos_y
-dEQP-GLES2.functional.negative_api.texture.copyteximage2d_invalid_border_cube_pos_z
-dEQP-GLES2.functional.negative_api.texture.copyteximage2d_invalid_border_cube_neg_x
-dEQP-GLES2.functional.negative_api.texture.copyteximage2d_invalid_border_cube_neg_y
-dEQP-GLES2.functional.negative_api.texture.copyteximage2d_invalid_border_cube_neg_z
dEQP-GLES2.functional.negative_api.texture.texsubimage2d_neg_wdt_hgt
#VK-GL-CTS 253
diff --git a/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.4.x/gles3-khr-master.txt b/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.4.x/gles3-khr-master.txt
index 4b043de..ee479b7 100644
--- a/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.4.x/gles3-khr-master.txt
+++ b/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.4.x/gles3-khr-master.txt
@@ -2573,3 +2573,471 @@
KHR-GLES3.texture_filter_anisotropic.queries
KHR-GLES3.texture_filter_anisotropic.drawing
KHR-GLES3.exposed_extensions.validate_extensions
+KHR-GLES3.core.constant_expressions.basic_radians_float_vertex
+KHR-GLES3.core.constant_expressions.basic_radians_float_fragment
+KHR-GLES3.core.constant_expressions.basic_radians_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_radians_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_radians_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_radians_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_radians_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_radians_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_degrees_float_vertex
+KHR-GLES3.core.constant_expressions.basic_degrees_float_fragment
+KHR-GLES3.core.constant_expressions.basic_degrees_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_degrees_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_degrees_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_degrees_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_degrees_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_degrees_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_sin_float_vertex
+KHR-GLES3.core.constant_expressions.basic_sin_float_fragment
+KHR-GLES3.core.constant_expressions.basic_sin_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_sin_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_sin_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_sin_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_sin_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_sin_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_cos_float_vertex
+KHR-GLES3.core.constant_expressions.basic_cos_float_fragment
+KHR-GLES3.core.constant_expressions.basic_cos_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_cos_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_cos_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_cos_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_cos_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_cos_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_asin_float_vertex
+KHR-GLES3.core.constant_expressions.basic_asin_float_fragment
+KHR-GLES3.core.constant_expressions.basic_asin_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_asin_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_asin_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_asin_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_asin_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_asin_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_acos_float_vertex
+KHR-GLES3.core.constant_expressions.basic_acos_float_fragment
+KHR-GLES3.core.constant_expressions.basic_acos_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_acos_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_acos_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_acos_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_acos_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_acos_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_pow_float_vertex
+KHR-GLES3.core.constant_expressions.basic_pow_float_fragment
+KHR-GLES3.core.constant_expressions.basic_pow_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_pow_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_pow_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_pow_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_pow_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_pow_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_exp_float_vertex
+KHR-GLES3.core.constant_expressions.basic_exp_float_fragment
+KHR-GLES3.core.constant_expressions.basic_exp_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_exp_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_exp_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_exp_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_exp_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_exp_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_log_float_vertex
+KHR-GLES3.core.constant_expressions.basic_log_float_fragment
+KHR-GLES3.core.constant_expressions.basic_log_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_log_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_log_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_log_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_log_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_log_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_exp2_float_vertex
+KHR-GLES3.core.constant_expressions.basic_exp2_float_fragment
+KHR-GLES3.core.constant_expressions.basic_exp2_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_exp2_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_exp2_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_exp2_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_exp2_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_exp2_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_log2_float_vertex
+KHR-GLES3.core.constant_expressions.basic_log2_float_fragment
+KHR-GLES3.core.constant_expressions.basic_log2_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_log2_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_log2_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_log2_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_log2_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_log2_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_sqrt_float_vertex
+KHR-GLES3.core.constant_expressions.basic_sqrt_float_fragment
+KHR-GLES3.core.constant_expressions.basic_sqrt_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_sqrt_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_sqrt_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_sqrt_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_sqrt_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_sqrt_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_inversesqrt_float_vertex
+KHR-GLES3.core.constant_expressions.basic_inversesqrt_float_fragment
+KHR-GLES3.core.constant_expressions.basic_inversesqrt_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_inversesqrt_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_inversesqrt_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_inversesqrt_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_inversesqrt_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_inversesqrt_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_abs_int_vertex
+KHR-GLES3.core.constant_expressions.basic_abs_int_fragment
+KHR-GLES3.core.constant_expressions.basic_abs_ivec2_vertex
+KHR-GLES3.core.constant_expressions.basic_abs_ivec2_fragment
+KHR-GLES3.core.constant_expressions.basic_abs_ivec3_vertex
+KHR-GLES3.core.constant_expressions.basic_abs_ivec3_fragment
+KHR-GLES3.core.constant_expressions.basic_abs_ivec4_vertex
+KHR-GLES3.core.constant_expressions.basic_abs_ivec4_fragment
+KHR-GLES3.core.constant_expressions.basic_sign_float_vertex
+KHR-GLES3.core.constant_expressions.basic_sign_float_fragment
+KHR-GLES3.core.constant_expressions.basic_sign_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_sign_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_sign_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_sign_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_sign_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_sign_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_floor_float_vertex
+KHR-GLES3.core.constant_expressions.basic_floor_float_fragment
+KHR-GLES3.core.constant_expressions.basic_floor_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_floor_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_floor_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_floor_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_floor_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_floor_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_trunc_float_vertex
+KHR-GLES3.core.constant_expressions.basic_trunc_float_fragment
+KHR-GLES3.core.constant_expressions.basic_trunc_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_trunc_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_trunc_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_trunc_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_trunc_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_trunc_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_round_float_vertex
+KHR-GLES3.core.constant_expressions.basic_round_float_fragment
+KHR-GLES3.core.constant_expressions.basic_round_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_round_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_round_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_round_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_round_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_round_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_ceil_float_vertex
+KHR-GLES3.core.constant_expressions.basic_ceil_float_fragment
+KHR-GLES3.core.constant_expressions.basic_ceil_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_ceil_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_ceil_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_ceil_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_ceil_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_ceil_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_mod_float_vertex
+KHR-GLES3.core.constant_expressions.basic_mod_float_fragment
+KHR-GLES3.core.constant_expressions.basic_mod_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_mod_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_mod_vec2_float_vertex
+KHR-GLES3.core.constant_expressions.basic_mod_vec2_float_fragment
+KHR-GLES3.core.constant_expressions.basic_mod_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_mod_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_mod_vec3_float_vertex
+KHR-GLES3.core.constant_expressions.basic_mod_vec3_float_fragment
+KHR-GLES3.core.constant_expressions.basic_mod_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_mod_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_mod_vec4_float_vertex
+KHR-GLES3.core.constant_expressions.basic_mod_vec4_float_fragment
+KHR-GLES3.core.constant_expressions.basic_min_float_vertex
+KHR-GLES3.core.constant_expressions.basic_min_float_fragment
+KHR-GLES3.core.constant_expressions.basic_min_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_min_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_min_vec2_float_vertex
+KHR-GLES3.core.constant_expressions.basic_min_vec2_float_fragment
+KHR-GLES3.core.constant_expressions.basic_min_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_min_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_min_vec3_float_vertex
+KHR-GLES3.core.constant_expressions.basic_min_vec3_float_fragment
+KHR-GLES3.core.constant_expressions.basic_min_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_min_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_min_vec4_float_vertex
+KHR-GLES3.core.constant_expressions.basic_min_vec4_float_fragment
+KHR-GLES3.core.constant_expressions.basic_max_float_vertex
+KHR-GLES3.core.constant_expressions.basic_max_float_fragment
+KHR-GLES3.core.constant_expressions.basic_max_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_max_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_max_vec2_float_vertex
+KHR-GLES3.core.constant_expressions.basic_max_vec2_float_fragment
+KHR-GLES3.core.constant_expressions.basic_max_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_max_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_max_vec3_float_vertex
+KHR-GLES3.core.constant_expressions.basic_max_vec3_float_fragment
+KHR-GLES3.core.constant_expressions.basic_max_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_max_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_max_vec4_float_vertex
+KHR-GLES3.core.constant_expressions.basic_max_vec4_float_fragment
+KHR-GLES3.core.constant_expressions.basic_clamp_float_vertex
+KHR-GLES3.core.constant_expressions.basic_clamp_float_fragment
+KHR-GLES3.core.constant_expressions.basic_clamp_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_clamp_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_clamp_vec2_float_vertex
+KHR-GLES3.core.constant_expressions.basic_clamp_vec2_float_fragment
+KHR-GLES3.core.constant_expressions.basic_clamp_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_clamp_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_clamp_vec3_float_vertex
+KHR-GLES3.core.constant_expressions.basic_clamp_vec3_float_fragment
+KHR-GLES3.core.constant_expressions.basic_clamp_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_clamp_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_clamp_vec4_float_vertex
+KHR-GLES3.core.constant_expressions.basic_clamp_vec4_float_fragment
+KHR-GLES3.core.constant_expressions.basic_length_float_vertex
+KHR-GLES3.core.constant_expressions.basic_length_float_fragment
+KHR-GLES3.core.constant_expressions.basic_length_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_length_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_length_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_length_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_length_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_length_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_dot_float_vertex
+KHR-GLES3.core.constant_expressions.basic_dot_float_fragment
+KHR-GLES3.core.constant_expressions.basic_dot_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_dot_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_dot_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_dot_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_dot_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_dot_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_normalize_float_vertex
+KHR-GLES3.core.constant_expressions.basic_normalize_float_fragment
+KHR-GLES3.core.constant_expressions.basic_normalize_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_normalize_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_normalize_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_normalize_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_normalize_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_normalize_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_radians_float_vertex
+KHR-GLES3.core.constant_expressions.array_radians_float_fragment
+KHR-GLES3.core.constant_expressions.array_radians_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_radians_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_radians_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_radians_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_radians_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_radians_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_degrees_float_vertex
+KHR-GLES3.core.constant_expressions.array_degrees_float_fragment
+KHR-GLES3.core.constant_expressions.array_degrees_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_degrees_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_degrees_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_degrees_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_degrees_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_degrees_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_sin_float_vertex
+KHR-GLES3.core.constant_expressions.array_sin_float_fragment
+KHR-GLES3.core.constant_expressions.array_sin_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_sin_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_sin_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_sin_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_sin_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_sin_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_cos_float_vertex
+KHR-GLES3.core.constant_expressions.array_cos_float_fragment
+KHR-GLES3.core.constant_expressions.array_cos_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_cos_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_cos_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_cos_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_cos_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_cos_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_asin_float_vertex
+KHR-GLES3.core.constant_expressions.array_asin_float_fragment
+KHR-GLES3.core.constant_expressions.array_asin_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_asin_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_asin_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_asin_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_asin_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_asin_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_acos_float_vertex
+KHR-GLES3.core.constant_expressions.array_acos_float_fragment
+KHR-GLES3.core.constant_expressions.array_acos_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_acos_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_acos_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_acos_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_acos_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_acos_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_pow_float_vertex
+KHR-GLES3.core.constant_expressions.array_pow_float_fragment
+KHR-GLES3.core.constant_expressions.array_pow_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_pow_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_pow_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_pow_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_pow_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_pow_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_exp_float_vertex
+KHR-GLES3.core.constant_expressions.array_exp_float_fragment
+KHR-GLES3.core.constant_expressions.array_exp_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_exp_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_exp_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_exp_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_exp_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_exp_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_log_float_vertex
+KHR-GLES3.core.constant_expressions.array_log_float_fragment
+KHR-GLES3.core.constant_expressions.array_log_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_log_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_log_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_log_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_log_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_log_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_exp2_float_vertex
+KHR-GLES3.core.constant_expressions.array_exp2_float_fragment
+KHR-GLES3.core.constant_expressions.array_exp2_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_exp2_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_exp2_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_exp2_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_exp2_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_exp2_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_log2_float_vertex
+KHR-GLES3.core.constant_expressions.array_log2_float_fragment
+KHR-GLES3.core.constant_expressions.array_log2_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_log2_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_log2_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_log2_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_log2_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_log2_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_sqrt_float_vertex
+KHR-GLES3.core.constant_expressions.array_sqrt_float_fragment
+KHR-GLES3.core.constant_expressions.array_sqrt_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_sqrt_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_sqrt_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_sqrt_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_sqrt_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_sqrt_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_inversesqrt_float_vertex
+KHR-GLES3.core.constant_expressions.array_inversesqrt_float_fragment
+KHR-GLES3.core.constant_expressions.array_inversesqrt_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_inversesqrt_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_inversesqrt_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_inversesqrt_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_inversesqrt_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_inversesqrt_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_abs_int_vertex
+KHR-GLES3.core.constant_expressions.array_abs_int_fragment
+KHR-GLES3.core.constant_expressions.array_abs_ivec2_vertex
+KHR-GLES3.core.constant_expressions.array_abs_ivec2_fragment
+KHR-GLES3.core.constant_expressions.array_abs_ivec3_vertex
+KHR-GLES3.core.constant_expressions.array_abs_ivec3_fragment
+KHR-GLES3.core.constant_expressions.array_abs_ivec4_vertex
+KHR-GLES3.core.constant_expressions.array_abs_ivec4_fragment
+KHR-GLES3.core.constant_expressions.array_sign_float_vertex
+KHR-GLES3.core.constant_expressions.array_sign_float_fragment
+KHR-GLES3.core.constant_expressions.array_sign_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_sign_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_sign_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_sign_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_sign_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_sign_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_floor_float_vertex
+KHR-GLES3.core.constant_expressions.array_floor_float_fragment
+KHR-GLES3.core.constant_expressions.array_floor_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_floor_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_floor_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_floor_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_floor_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_floor_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_trunc_float_vertex
+KHR-GLES3.core.constant_expressions.array_trunc_float_fragment
+KHR-GLES3.core.constant_expressions.array_trunc_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_trunc_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_trunc_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_trunc_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_trunc_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_trunc_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_round_float_vertex
+KHR-GLES3.core.constant_expressions.array_round_float_fragment
+KHR-GLES3.core.constant_expressions.array_round_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_round_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_round_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_round_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_round_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_round_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_ceil_float_vertex
+KHR-GLES3.core.constant_expressions.array_ceil_float_fragment
+KHR-GLES3.core.constant_expressions.array_ceil_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_ceil_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_ceil_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_ceil_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_ceil_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_ceil_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_mod_float_vertex
+KHR-GLES3.core.constant_expressions.array_mod_float_fragment
+KHR-GLES3.core.constant_expressions.array_mod_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_mod_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_mod_vec2_float_vertex
+KHR-GLES3.core.constant_expressions.array_mod_vec2_float_fragment
+KHR-GLES3.core.constant_expressions.array_mod_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_mod_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_mod_vec3_float_vertex
+KHR-GLES3.core.constant_expressions.array_mod_vec3_float_fragment
+KHR-GLES3.core.constant_expressions.array_mod_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_mod_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_mod_vec4_float_vertex
+KHR-GLES3.core.constant_expressions.array_mod_vec4_float_fragment
+KHR-GLES3.core.constant_expressions.array_min_float_vertex
+KHR-GLES3.core.constant_expressions.array_min_float_fragment
+KHR-GLES3.core.constant_expressions.array_min_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_min_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_min_vec2_float_vertex
+KHR-GLES3.core.constant_expressions.array_min_vec2_float_fragment
+KHR-GLES3.core.constant_expressions.array_min_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_min_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_min_vec3_float_vertex
+KHR-GLES3.core.constant_expressions.array_min_vec3_float_fragment
+KHR-GLES3.core.constant_expressions.array_min_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_min_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_min_vec4_float_vertex
+KHR-GLES3.core.constant_expressions.array_min_vec4_float_fragment
+KHR-GLES3.core.constant_expressions.array_max_float_vertex
+KHR-GLES3.core.constant_expressions.array_max_float_fragment
+KHR-GLES3.core.constant_expressions.array_max_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_max_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_max_vec2_float_vertex
+KHR-GLES3.core.constant_expressions.array_max_vec2_float_fragment
+KHR-GLES3.core.constant_expressions.array_max_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_max_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_max_vec3_float_vertex
+KHR-GLES3.core.constant_expressions.array_max_vec3_float_fragment
+KHR-GLES3.core.constant_expressions.array_max_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_max_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_max_vec4_float_vertex
+KHR-GLES3.core.constant_expressions.array_max_vec4_float_fragment
+KHR-GLES3.core.constant_expressions.array_clamp_float_vertex
+KHR-GLES3.core.constant_expressions.array_clamp_float_fragment
+KHR-GLES3.core.constant_expressions.array_clamp_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_clamp_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_clamp_vec2_float_vertex
+KHR-GLES3.core.constant_expressions.array_clamp_vec2_float_fragment
+KHR-GLES3.core.constant_expressions.array_clamp_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_clamp_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_clamp_vec3_float_vertex
+KHR-GLES3.core.constant_expressions.array_clamp_vec3_float_fragment
+KHR-GLES3.core.constant_expressions.array_clamp_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_clamp_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_clamp_vec4_float_vertex
+KHR-GLES3.core.constant_expressions.array_clamp_vec4_float_fragment
+KHR-GLES3.core.constant_expressions.array_length_float_vertex
+KHR-GLES3.core.constant_expressions.array_length_float_fragment
+KHR-GLES3.core.constant_expressions.array_length_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_length_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_length_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_length_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_length_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_length_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_dot_float_vertex
+KHR-GLES3.core.constant_expressions.array_dot_float_fragment
+KHR-GLES3.core.constant_expressions.array_dot_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_dot_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_dot_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_dot_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_dot_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_dot_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_normalize_float_vertex
+KHR-GLES3.core.constant_expressions.array_normalize_float_fragment
+KHR-GLES3.core.constant_expressions.array_normalize_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_normalize_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_normalize_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_normalize_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_normalize_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_normalize_vec4_fragment
+KHR-GLES3.parallel_shader_compile.simple_queries
+KHR-GLES3.parallel_shader_compile.max_shader_compile_threads
+KHR-GLES3.parallel_shader_compile.compilation_completion_non_parallel
+KHR-GLES3.parallel_shader_compile.compilation_completion_parallel
diff --git a/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.4.x/gles31-khr-master.txt b/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.4.x/gles31-khr-master.txt
index 49024ad..d9df703 100644
--- a/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.4.x/gles31-khr-master.txt
+++ b/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.4.x/gles31-khr-master.txt
@@ -83,6 +83,7 @@
KHR-GLES31.core.shader_atomic_counters.negative-uniform
KHR-GLES31.core.shader_atomic_counters.negative-array
KHR-GLES31.core.shader_atomic_counters.negative-arithmetic
+KHR-GLES31.core.shader_atomic_counters.negative-unsized-array
KHR-GLES31.core.texture_gather.api-enums
KHR-GLES31.core.texture_gather.gather-glsl-compile
KHR-GLES31.core.texture_gather.plain-gather-float-2d
@@ -791,6 +792,934 @@
KHR-GLES31.core.shader_integer_mix.mix-ivec4
KHR-GLES31.core.shader_integer_mix.mix-uvec4
KHR-GLES31.core.shader_integer_mix.mix-bvec4
+KHR-GLES31.core.constant_expressions.basic_radians_float_compute
+KHR-GLES31.core.constant_expressions.basic_radians_float_geometry
+KHR-GLES31.core.constant_expressions.basic_radians_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_radians_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_radians_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_radians_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_radians_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_radians_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_radians_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_radians_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_radians_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_radians_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_radians_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_radians_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_radians_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_radians_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_degrees_float_compute
+KHR-GLES31.core.constant_expressions.basic_degrees_float_geometry
+KHR-GLES31.core.constant_expressions.basic_degrees_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_degrees_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_degrees_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_degrees_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_degrees_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_degrees_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_degrees_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_degrees_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_degrees_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_degrees_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_degrees_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_degrees_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_degrees_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_degrees_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_sin_float_compute
+KHR-GLES31.core.constant_expressions.basic_sin_float_geometry
+KHR-GLES31.core.constant_expressions.basic_sin_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_sin_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_sin_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_sin_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_sin_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_sin_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_sin_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_sin_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_sin_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_sin_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_sin_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_sin_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_sin_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_sin_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_cos_float_compute
+KHR-GLES31.core.constant_expressions.basic_cos_float_geometry
+KHR-GLES31.core.constant_expressions.basic_cos_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_cos_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_cos_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_cos_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_cos_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_cos_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_cos_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_cos_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_cos_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_cos_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_cos_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_cos_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_cos_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_cos_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_asin_float_compute
+KHR-GLES31.core.constant_expressions.basic_asin_float_geometry
+KHR-GLES31.core.constant_expressions.basic_asin_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_asin_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_asin_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_asin_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_asin_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_asin_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_asin_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_asin_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_asin_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_asin_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_asin_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_asin_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_asin_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_asin_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_acos_float_compute
+KHR-GLES31.core.constant_expressions.basic_acos_float_geometry
+KHR-GLES31.core.constant_expressions.basic_acos_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_acos_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_acos_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_acos_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_acos_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_acos_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_acos_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_acos_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_acos_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_acos_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_acos_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_acos_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_acos_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_acos_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_pow_float_compute
+KHR-GLES31.core.constant_expressions.basic_pow_float_geometry
+KHR-GLES31.core.constant_expressions.basic_pow_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_pow_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_pow_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_pow_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_pow_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_pow_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_pow_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_pow_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_pow_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_pow_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_pow_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_pow_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_pow_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_pow_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_exp_float_compute
+KHR-GLES31.core.constant_expressions.basic_exp_float_geometry
+KHR-GLES31.core.constant_expressions.basic_exp_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_exp_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_exp_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_exp_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_exp_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_exp_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_exp_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_exp_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_exp_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_exp_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_exp_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_exp_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_exp_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_exp_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_log_float_compute
+KHR-GLES31.core.constant_expressions.basic_log_float_geometry
+KHR-GLES31.core.constant_expressions.basic_log_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_log_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_log_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_log_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_log_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_log_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_log_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_log_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_log_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_log_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_log_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_log_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_log_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_log_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_exp2_float_compute
+KHR-GLES31.core.constant_expressions.basic_exp2_float_geometry
+KHR-GLES31.core.constant_expressions.basic_exp2_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_exp2_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_exp2_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_exp2_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_exp2_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_exp2_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_exp2_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_exp2_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_exp2_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_exp2_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_exp2_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_exp2_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_exp2_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_exp2_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_log2_float_compute
+KHR-GLES31.core.constant_expressions.basic_log2_float_geometry
+KHR-GLES31.core.constant_expressions.basic_log2_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_log2_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_log2_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_log2_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_log2_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_log2_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_log2_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_log2_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_log2_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_log2_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_log2_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_log2_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_log2_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_log2_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_sqrt_float_compute
+KHR-GLES31.core.constant_expressions.basic_sqrt_float_geometry
+KHR-GLES31.core.constant_expressions.basic_sqrt_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_sqrt_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_sqrt_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_sqrt_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_sqrt_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_sqrt_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_sqrt_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_sqrt_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_sqrt_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_sqrt_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_sqrt_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_sqrt_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_sqrt_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_sqrt_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_inversesqrt_float_compute
+KHR-GLES31.core.constant_expressions.basic_inversesqrt_float_geometry
+KHR-GLES31.core.constant_expressions.basic_inversesqrt_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_inversesqrt_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_inversesqrt_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_inversesqrt_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_inversesqrt_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_inversesqrt_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_inversesqrt_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_inversesqrt_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_inversesqrt_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_inversesqrt_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_inversesqrt_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_inversesqrt_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_inversesqrt_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_inversesqrt_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_abs_int_compute
+KHR-GLES31.core.constant_expressions.basic_abs_int_geometry
+KHR-GLES31.core.constant_expressions.basic_abs_int_tess_control
+KHR-GLES31.core.constant_expressions.basic_abs_int_tess_eval
+KHR-GLES31.core.constant_expressions.basic_abs_ivec2_compute
+KHR-GLES31.core.constant_expressions.basic_abs_ivec2_geometry
+KHR-GLES31.core.constant_expressions.basic_abs_ivec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_abs_ivec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_abs_ivec3_compute
+KHR-GLES31.core.constant_expressions.basic_abs_ivec3_geometry
+KHR-GLES31.core.constant_expressions.basic_abs_ivec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_abs_ivec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_abs_ivec4_compute
+KHR-GLES31.core.constant_expressions.basic_abs_ivec4_geometry
+KHR-GLES31.core.constant_expressions.basic_abs_ivec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_abs_ivec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_sign_float_compute
+KHR-GLES31.core.constant_expressions.basic_sign_float_geometry
+KHR-GLES31.core.constant_expressions.basic_sign_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_sign_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_sign_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_sign_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_sign_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_sign_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_sign_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_sign_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_sign_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_sign_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_sign_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_sign_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_sign_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_sign_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_floor_float_compute
+KHR-GLES31.core.constant_expressions.basic_floor_float_geometry
+KHR-GLES31.core.constant_expressions.basic_floor_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_floor_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_floor_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_floor_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_floor_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_floor_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_floor_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_floor_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_floor_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_floor_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_floor_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_floor_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_floor_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_floor_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_trunc_float_compute
+KHR-GLES31.core.constant_expressions.basic_trunc_float_geometry
+KHR-GLES31.core.constant_expressions.basic_trunc_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_trunc_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_trunc_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_trunc_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_trunc_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_trunc_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_trunc_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_trunc_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_trunc_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_trunc_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_trunc_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_trunc_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_trunc_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_trunc_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_round_float_compute
+KHR-GLES31.core.constant_expressions.basic_round_float_geometry
+KHR-GLES31.core.constant_expressions.basic_round_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_round_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_round_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_round_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_round_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_round_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_round_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_round_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_round_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_round_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_round_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_round_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_round_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_round_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_ceil_float_compute
+KHR-GLES31.core.constant_expressions.basic_ceil_float_geometry
+KHR-GLES31.core.constant_expressions.basic_ceil_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_ceil_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_ceil_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_ceil_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_ceil_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_ceil_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_ceil_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_ceil_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_ceil_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_ceil_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_ceil_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_ceil_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_ceil_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_ceil_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_mod_float_compute
+KHR-GLES31.core.constant_expressions.basic_mod_float_geometry
+KHR-GLES31.core.constant_expressions.basic_mod_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_mod_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_mod_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_mod_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_mod_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_mod_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_mod_vec2_float_compute
+KHR-GLES31.core.constant_expressions.basic_mod_vec2_float_geometry
+KHR-GLES31.core.constant_expressions.basic_mod_vec2_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_mod_vec2_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_mod_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_mod_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_mod_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_mod_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_mod_vec3_float_compute
+KHR-GLES31.core.constant_expressions.basic_mod_vec3_float_geometry
+KHR-GLES31.core.constant_expressions.basic_mod_vec3_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_mod_vec3_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_mod_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_mod_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_mod_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_mod_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_mod_vec4_float_compute
+KHR-GLES31.core.constant_expressions.basic_mod_vec4_float_geometry
+KHR-GLES31.core.constant_expressions.basic_mod_vec4_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_mod_vec4_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_min_float_compute
+KHR-GLES31.core.constant_expressions.basic_min_float_geometry
+KHR-GLES31.core.constant_expressions.basic_min_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_min_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_min_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_min_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_min_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_min_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_min_vec2_float_compute
+KHR-GLES31.core.constant_expressions.basic_min_vec2_float_geometry
+KHR-GLES31.core.constant_expressions.basic_min_vec2_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_min_vec2_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_min_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_min_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_min_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_min_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_min_vec3_float_compute
+KHR-GLES31.core.constant_expressions.basic_min_vec3_float_geometry
+KHR-GLES31.core.constant_expressions.basic_min_vec3_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_min_vec3_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_min_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_min_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_min_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_min_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_min_vec4_float_compute
+KHR-GLES31.core.constant_expressions.basic_min_vec4_float_geometry
+KHR-GLES31.core.constant_expressions.basic_min_vec4_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_min_vec4_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_max_float_compute
+KHR-GLES31.core.constant_expressions.basic_max_float_geometry
+KHR-GLES31.core.constant_expressions.basic_max_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_max_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_max_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_max_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_max_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_max_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_max_vec2_float_compute
+KHR-GLES31.core.constant_expressions.basic_max_vec2_float_geometry
+KHR-GLES31.core.constant_expressions.basic_max_vec2_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_max_vec2_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_max_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_max_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_max_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_max_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_max_vec3_float_compute
+KHR-GLES31.core.constant_expressions.basic_max_vec3_float_geometry
+KHR-GLES31.core.constant_expressions.basic_max_vec3_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_max_vec3_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_max_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_max_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_max_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_max_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_max_vec4_float_compute
+KHR-GLES31.core.constant_expressions.basic_max_vec4_float_geometry
+KHR-GLES31.core.constant_expressions.basic_max_vec4_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_max_vec4_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_clamp_float_compute
+KHR-GLES31.core.constant_expressions.basic_clamp_float_geometry
+KHR-GLES31.core.constant_expressions.basic_clamp_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_clamp_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_clamp_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_clamp_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_clamp_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_clamp_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_clamp_vec2_float_compute
+KHR-GLES31.core.constant_expressions.basic_clamp_vec2_float_geometry
+KHR-GLES31.core.constant_expressions.basic_clamp_vec2_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_clamp_vec2_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_clamp_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_clamp_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_clamp_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_clamp_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_clamp_vec3_float_compute
+KHR-GLES31.core.constant_expressions.basic_clamp_vec3_float_geometry
+KHR-GLES31.core.constant_expressions.basic_clamp_vec3_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_clamp_vec3_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_clamp_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_clamp_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_clamp_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_clamp_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_clamp_vec4_float_compute
+KHR-GLES31.core.constant_expressions.basic_clamp_vec4_float_geometry
+KHR-GLES31.core.constant_expressions.basic_clamp_vec4_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_clamp_vec4_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_length_float_compute
+KHR-GLES31.core.constant_expressions.basic_length_float_geometry
+KHR-GLES31.core.constant_expressions.basic_length_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_length_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_length_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_length_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_length_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_length_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_length_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_length_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_length_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_length_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_length_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_length_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_length_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_length_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_dot_float_compute
+KHR-GLES31.core.constant_expressions.basic_dot_float_geometry
+KHR-GLES31.core.constant_expressions.basic_dot_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_dot_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_dot_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_dot_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_dot_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_dot_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_dot_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_dot_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_dot_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_dot_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_dot_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_dot_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_dot_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_dot_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_normalize_float_compute
+KHR-GLES31.core.constant_expressions.basic_normalize_float_geometry
+KHR-GLES31.core.constant_expressions.basic_normalize_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_normalize_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_normalize_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_normalize_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_normalize_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_normalize_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_normalize_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_normalize_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_normalize_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_normalize_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_normalize_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_normalize_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_normalize_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_normalize_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_radians_float_compute
+KHR-GLES31.core.constant_expressions.array_radians_float_geometry
+KHR-GLES31.core.constant_expressions.array_radians_float_tess_control
+KHR-GLES31.core.constant_expressions.array_radians_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_radians_vec2_compute
+KHR-GLES31.core.constant_expressions.array_radians_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_radians_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_radians_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_radians_vec3_compute
+KHR-GLES31.core.constant_expressions.array_radians_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_radians_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_radians_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_radians_vec4_compute
+KHR-GLES31.core.constant_expressions.array_radians_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_radians_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_radians_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_degrees_float_compute
+KHR-GLES31.core.constant_expressions.array_degrees_float_geometry
+KHR-GLES31.core.constant_expressions.array_degrees_float_tess_control
+KHR-GLES31.core.constant_expressions.array_degrees_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_degrees_vec2_compute
+KHR-GLES31.core.constant_expressions.array_degrees_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_degrees_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_degrees_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_degrees_vec3_compute
+KHR-GLES31.core.constant_expressions.array_degrees_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_degrees_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_degrees_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_degrees_vec4_compute
+KHR-GLES31.core.constant_expressions.array_degrees_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_degrees_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_degrees_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_sin_float_compute
+KHR-GLES31.core.constant_expressions.array_sin_float_geometry
+KHR-GLES31.core.constant_expressions.array_sin_float_tess_control
+KHR-GLES31.core.constant_expressions.array_sin_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_sin_vec2_compute
+KHR-GLES31.core.constant_expressions.array_sin_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_sin_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_sin_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_sin_vec3_compute
+KHR-GLES31.core.constant_expressions.array_sin_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_sin_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_sin_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_sin_vec4_compute
+KHR-GLES31.core.constant_expressions.array_sin_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_sin_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_sin_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_cos_float_compute
+KHR-GLES31.core.constant_expressions.array_cos_float_geometry
+KHR-GLES31.core.constant_expressions.array_cos_float_tess_control
+KHR-GLES31.core.constant_expressions.array_cos_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_cos_vec2_compute
+KHR-GLES31.core.constant_expressions.array_cos_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_cos_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_cos_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_cos_vec3_compute
+KHR-GLES31.core.constant_expressions.array_cos_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_cos_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_cos_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_cos_vec4_compute
+KHR-GLES31.core.constant_expressions.array_cos_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_cos_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_cos_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_asin_float_compute
+KHR-GLES31.core.constant_expressions.array_asin_float_geometry
+KHR-GLES31.core.constant_expressions.array_asin_float_tess_control
+KHR-GLES31.core.constant_expressions.array_asin_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_asin_vec2_compute
+KHR-GLES31.core.constant_expressions.array_asin_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_asin_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_asin_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_asin_vec3_compute
+KHR-GLES31.core.constant_expressions.array_asin_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_asin_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_asin_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_asin_vec4_compute
+KHR-GLES31.core.constant_expressions.array_asin_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_asin_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_asin_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_acos_float_compute
+KHR-GLES31.core.constant_expressions.array_acos_float_geometry
+KHR-GLES31.core.constant_expressions.array_acos_float_tess_control
+KHR-GLES31.core.constant_expressions.array_acos_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_acos_vec2_compute
+KHR-GLES31.core.constant_expressions.array_acos_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_acos_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_acos_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_acos_vec3_compute
+KHR-GLES31.core.constant_expressions.array_acos_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_acos_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_acos_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_acos_vec4_compute
+KHR-GLES31.core.constant_expressions.array_acos_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_acos_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_acos_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_pow_float_compute
+KHR-GLES31.core.constant_expressions.array_pow_float_geometry
+KHR-GLES31.core.constant_expressions.array_pow_float_tess_control
+KHR-GLES31.core.constant_expressions.array_pow_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_pow_vec2_compute
+KHR-GLES31.core.constant_expressions.array_pow_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_pow_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_pow_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_pow_vec3_compute
+KHR-GLES31.core.constant_expressions.array_pow_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_pow_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_pow_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_pow_vec4_compute
+KHR-GLES31.core.constant_expressions.array_pow_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_pow_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_pow_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_exp_float_compute
+KHR-GLES31.core.constant_expressions.array_exp_float_geometry
+KHR-GLES31.core.constant_expressions.array_exp_float_tess_control
+KHR-GLES31.core.constant_expressions.array_exp_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_exp_vec2_compute
+KHR-GLES31.core.constant_expressions.array_exp_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_exp_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_exp_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_exp_vec3_compute
+KHR-GLES31.core.constant_expressions.array_exp_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_exp_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_exp_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_exp_vec4_compute
+KHR-GLES31.core.constant_expressions.array_exp_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_exp_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_exp_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_log_float_compute
+KHR-GLES31.core.constant_expressions.array_log_float_geometry
+KHR-GLES31.core.constant_expressions.array_log_float_tess_control
+KHR-GLES31.core.constant_expressions.array_log_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_log_vec2_compute
+KHR-GLES31.core.constant_expressions.array_log_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_log_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_log_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_log_vec3_compute
+KHR-GLES31.core.constant_expressions.array_log_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_log_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_log_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_log_vec4_compute
+KHR-GLES31.core.constant_expressions.array_log_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_log_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_log_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_exp2_float_compute
+KHR-GLES31.core.constant_expressions.array_exp2_float_geometry
+KHR-GLES31.core.constant_expressions.array_exp2_float_tess_control
+KHR-GLES31.core.constant_expressions.array_exp2_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_exp2_vec2_compute
+KHR-GLES31.core.constant_expressions.array_exp2_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_exp2_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_exp2_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_exp2_vec3_compute
+KHR-GLES31.core.constant_expressions.array_exp2_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_exp2_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_exp2_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_exp2_vec4_compute
+KHR-GLES31.core.constant_expressions.array_exp2_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_exp2_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_exp2_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_log2_float_compute
+KHR-GLES31.core.constant_expressions.array_log2_float_geometry
+KHR-GLES31.core.constant_expressions.array_log2_float_tess_control
+KHR-GLES31.core.constant_expressions.array_log2_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_log2_vec2_compute
+KHR-GLES31.core.constant_expressions.array_log2_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_log2_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_log2_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_log2_vec3_compute
+KHR-GLES31.core.constant_expressions.array_log2_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_log2_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_log2_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_log2_vec4_compute
+KHR-GLES31.core.constant_expressions.array_log2_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_log2_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_log2_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_sqrt_float_compute
+KHR-GLES31.core.constant_expressions.array_sqrt_float_geometry
+KHR-GLES31.core.constant_expressions.array_sqrt_float_tess_control
+KHR-GLES31.core.constant_expressions.array_sqrt_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_sqrt_vec2_compute
+KHR-GLES31.core.constant_expressions.array_sqrt_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_sqrt_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_sqrt_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_sqrt_vec3_compute
+KHR-GLES31.core.constant_expressions.array_sqrt_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_sqrt_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_sqrt_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_sqrt_vec4_compute
+KHR-GLES31.core.constant_expressions.array_sqrt_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_sqrt_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_sqrt_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_inversesqrt_float_compute
+KHR-GLES31.core.constant_expressions.array_inversesqrt_float_geometry
+KHR-GLES31.core.constant_expressions.array_inversesqrt_float_tess_control
+KHR-GLES31.core.constant_expressions.array_inversesqrt_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_inversesqrt_vec2_compute
+KHR-GLES31.core.constant_expressions.array_inversesqrt_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_inversesqrt_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_inversesqrt_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_inversesqrt_vec3_compute
+KHR-GLES31.core.constant_expressions.array_inversesqrt_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_inversesqrt_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_inversesqrt_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_inversesqrt_vec4_compute
+KHR-GLES31.core.constant_expressions.array_inversesqrt_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_inversesqrt_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_inversesqrt_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_abs_int_compute
+KHR-GLES31.core.constant_expressions.array_abs_int_geometry
+KHR-GLES31.core.constant_expressions.array_abs_int_tess_control
+KHR-GLES31.core.constant_expressions.array_abs_int_tess_eval
+KHR-GLES31.core.constant_expressions.array_abs_ivec2_compute
+KHR-GLES31.core.constant_expressions.array_abs_ivec2_geometry
+KHR-GLES31.core.constant_expressions.array_abs_ivec2_tess_control
+KHR-GLES31.core.constant_expressions.array_abs_ivec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_abs_ivec3_compute
+KHR-GLES31.core.constant_expressions.array_abs_ivec3_geometry
+KHR-GLES31.core.constant_expressions.array_abs_ivec3_tess_control
+KHR-GLES31.core.constant_expressions.array_abs_ivec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_abs_ivec4_compute
+KHR-GLES31.core.constant_expressions.array_abs_ivec4_geometry
+KHR-GLES31.core.constant_expressions.array_abs_ivec4_tess_control
+KHR-GLES31.core.constant_expressions.array_abs_ivec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_sign_float_compute
+KHR-GLES31.core.constant_expressions.array_sign_float_geometry
+KHR-GLES31.core.constant_expressions.array_sign_float_tess_control
+KHR-GLES31.core.constant_expressions.array_sign_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_sign_vec2_compute
+KHR-GLES31.core.constant_expressions.array_sign_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_sign_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_sign_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_sign_vec3_compute
+KHR-GLES31.core.constant_expressions.array_sign_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_sign_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_sign_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_sign_vec4_compute
+KHR-GLES31.core.constant_expressions.array_sign_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_sign_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_sign_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_floor_float_compute
+KHR-GLES31.core.constant_expressions.array_floor_float_geometry
+KHR-GLES31.core.constant_expressions.array_floor_float_tess_control
+KHR-GLES31.core.constant_expressions.array_floor_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_floor_vec2_compute
+KHR-GLES31.core.constant_expressions.array_floor_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_floor_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_floor_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_floor_vec3_compute
+KHR-GLES31.core.constant_expressions.array_floor_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_floor_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_floor_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_floor_vec4_compute
+KHR-GLES31.core.constant_expressions.array_floor_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_floor_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_floor_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_trunc_float_compute
+KHR-GLES31.core.constant_expressions.array_trunc_float_geometry
+KHR-GLES31.core.constant_expressions.array_trunc_float_tess_control
+KHR-GLES31.core.constant_expressions.array_trunc_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_trunc_vec2_compute
+KHR-GLES31.core.constant_expressions.array_trunc_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_trunc_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_trunc_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_trunc_vec3_compute
+KHR-GLES31.core.constant_expressions.array_trunc_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_trunc_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_trunc_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_trunc_vec4_compute
+KHR-GLES31.core.constant_expressions.array_trunc_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_trunc_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_trunc_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_round_float_compute
+KHR-GLES31.core.constant_expressions.array_round_float_geometry
+KHR-GLES31.core.constant_expressions.array_round_float_tess_control
+KHR-GLES31.core.constant_expressions.array_round_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_round_vec2_compute
+KHR-GLES31.core.constant_expressions.array_round_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_round_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_round_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_round_vec3_compute
+KHR-GLES31.core.constant_expressions.array_round_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_round_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_round_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_round_vec4_compute
+KHR-GLES31.core.constant_expressions.array_round_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_round_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_round_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_ceil_float_compute
+KHR-GLES31.core.constant_expressions.array_ceil_float_geometry
+KHR-GLES31.core.constant_expressions.array_ceil_float_tess_control
+KHR-GLES31.core.constant_expressions.array_ceil_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_ceil_vec2_compute
+KHR-GLES31.core.constant_expressions.array_ceil_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_ceil_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_ceil_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_ceil_vec3_compute
+KHR-GLES31.core.constant_expressions.array_ceil_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_ceil_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_ceil_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_ceil_vec4_compute
+KHR-GLES31.core.constant_expressions.array_ceil_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_ceil_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_ceil_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_mod_float_compute
+KHR-GLES31.core.constant_expressions.array_mod_float_geometry
+KHR-GLES31.core.constant_expressions.array_mod_float_tess_control
+KHR-GLES31.core.constant_expressions.array_mod_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_mod_vec2_compute
+KHR-GLES31.core.constant_expressions.array_mod_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_mod_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_mod_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_mod_vec2_float_compute
+KHR-GLES31.core.constant_expressions.array_mod_vec2_float_geometry
+KHR-GLES31.core.constant_expressions.array_mod_vec2_float_tess_control
+KHR-GLES31.core.constant_expressions.array_mod_vec2_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_mod_vec3_compute
+KHR-GLES31.core.constant_expressions.array_mod_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_mod_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_mod_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_mod_vec3_float_compute
+KHR-GLES31.core.constant_expressions.array_mod_vec3_float_geometry
+KHR-GLES31.core.constant_expressions.array_mod_vec3_float_tess_control
+KHR-GLES31.core.constant_expressions.array_mod_vec3_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_mod_vec4_compute
+KHR-GLES31.core.constant_expressions.array_mod_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_mod_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_mod_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_mod_vec4_float_compute
+KHR-GLES31.core.constant_expressions.array_mod_vec4_float_geometry
+KHR-GLES31.core.constant_expressions.array_mod_vec4_float_tess_control
+KHR-GLES31.core.constant_expressions.array_mod_vec4_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_min_float_compute
+KHR-GLES31.core.constant_expressions.array_min_float_geometry
+KHR-GLES31.core.constant_expressions.array_min_float_tess_control
+KHR-GLES31.core.constant_expressions.array_min_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_min_vec2_compute
+KHR-GLES31.core.constant_expressions.array_min_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_min_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_min_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_min_vec2_float_compute
+KHR-GLES31.core.constant_expressions.array_min_vec2_float_geometry
+KHR-GLES31.core.constant_expressions.array_min_vec2_float_tess_control
+KHR-GLES31.core.constant_expressions.array_min_vec2_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_min_vec3_compute
+KHR-GLES31.core.constant_expressions.array_min_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_min_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_min_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_min_vec3_float_compute
+KHR-GLES31.core.constant_expressions.array_min_vec3_float_geometry
+KHR-GLES31.core.constant_expressions.array_min_vec3_float_tess_control
+KHR-GLES31.core.constant_expressions.array_min_vec3_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_min_vec4_compute
+KHR-GLES31.core.constant_expressions.array_min_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_min_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_min_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_min_vec4_float_compute
+KHR-GLES31.core.constant_expressions.array_min_vec4_float_geometry
+KHR-GLES31.core.constant_expressions.array_min_vec4_float_tess_control
+KHR-GLES31.core.constant_expressions.array_min_vec4_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_max_float_compute
+KHR-GLES31.core.constant_expressions.array_max_float_geometry
+KHR-GLES31.core.constant_expressions.array_max_float_tess_control
+KHR-GLES31.core.constant_expressions.array_max_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_max_vec2_compute
+KHR-GLES31.core.constant_expressions.array_max_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_max_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_max_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_max_vec2_float_compute
+KHR-GLES31.core.constant_expressions.array_max_vec2_float_geometry
+KHR-GLES31.core.constant_expressions.array_max_vec2_float_tess_control
+KHR-GLES31.core.constant_expressions.array_max_vec2_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_max_vec3_compute
+KHR-GLES31.core.constant_expressions.array_max_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_max_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_max_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_max_vec3_float_compute
+KHR-GLES31.core.constant_expressions.array_max_vec3_float_geometry
+KHR-GLES31.core.constant_expressions.array_max_vec3_float_tess_control
+KHR-GLES31.core.constant_expressions.array_max_vec3_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_max_vec4_compute
+KHR-GLES31.core.constant_expressions.array_max_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_max_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_max_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_max_vec4_float_compute
+KHR-GLES31.core.constant_expressions.array_max_vec4_float_geometry
+KHR-GLES31.core.constant_expressions.array_max_vec4_float_tess_control
+KHR-GLES31.core.constant_expressions.array_max_vec4_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_clamp_float_compute
+KHR-GLES31.core.constant_expressions.array_clamp_float_geometry
+KHR-GLES31.core.constant_expressions.array_clamp_float_tess_control
+KHR-GLES31.core.constant_expressions.array_clamp_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_clamp_vec2_compute
+KHR-GLES31.core.constant_expressions.array_clamp_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_clamp_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_clamp_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_clamp_vec2_float_compute
+KHR-GLES31.core.constant_expressions.array_clamp_vec2_float_geometry
+KHR-GLES31.core.constant_expressions.array_clamp_vec2_float_tess_control
+KHR-GLES31.core.constant_expressions.array_clamp_vec2_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_clamp_vec3_compute
+KHR-GLES31.core.constant_expressions.array_clamp_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_clamp_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_clamp_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_clamp_vec3_float_compute
+KHR-GLES31.core.constant_expressions.array_clamp_vec3_float_geometry
+KHR-GLES31.core.constant_expressions.array_clamp_vec3_float_tess_control
+KHR-GLES31.core.constant_expressions.array_clamp_vec3_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_clamp_vec4_compute
+KHR-GLES31.core.constant_expressions.array_clamp_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_clamp_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_clamp_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_clamp_vec4_float_compute
+KHR-GLES31.core.constant_expressions.array_clamp_vec4_float_geometry
+KHR-GLES31.core.constant_expressions.array_clamp_vec4_float_tess_control
+KHR-GLES31.core.constant_expressions.array_clamp_vec4_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_length_float_compute
+KHR-GLES31.core.constant_expressions.array_length_float_geometry
+KHR-GLES31.core.constant_expressions.array_length_float_tess_control
+KHR-GLES31.core.constant_expressions.array_length_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_length_vec2_compute
+KHR-GLES31.core.constant_expressions.array_length_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_length_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_length_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_length_vec3_compute
+KHR-GLES31.core.constant_expressions.array_length_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_length_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_length_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_length_vec4_compute
+KHR-GLES31.core.constant_expressions.array_length_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_length_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_length_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_dot_float_compute
+KHR-GLES31.core.constant_expressions.array_dot_float_geometry
+KHR-GLES31.core.constant_expressions.array_dot_float_tess_control
+KHR-GLES31.core.constant_expressions.array_dot_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_dot_vec2_compute
+KHR-GLES31.core.constant_expressions.array_dot_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_dot_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_dot_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_dot_vec3_compute
+KHR-GLES31.core.constant_expressions.array_dot_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_dot_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_dot_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_dot_vec4_compute
+KHR-GLES31.core.constant_expressions.array_dot_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_dot_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_dot_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_normalize_float_compute
+KHR-GLES31.core.constant_expressions.array_normalize_float_geometry
+KHR-GLES31.core.constant_expressions.array_normalize_float_tess_control
+KHR-GLES31.core.constant_expressions.array_normalize_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_normalize_vec2_compute
+KHR-GLES31.core.constant_expressions.array_normalize_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_normalize_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_normalize_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_normalize_vec3_compute
+KHR-GLES31.core.constant_expressions.array_normalize_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_normalize_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_normalize_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_normalize_vec4_compute
+KHR-GLES31.core.constant_expressions.array_normalize_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_normalize_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_normalize_vec4_tess_eval
KHR-GLES31.core.blend_equation_advanced.coherent.enableDisable
KHR-GLES31.core.blend_equation_advanced.preprocessor.none
KHR-GLES31.core.blend_equation_advanced.preprocessor.require
diff --git a/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.4.x/gles32-khr-master.txt b/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.4.x/gles32-khr-master.txt
index 2152a27..500c67b 100644
--- a/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.4.x/gles32-khr-master.txt
+++ b/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.4.x/gles32-khr-master.txt
@@ -305,3 +305,701 @@
KHR-GLES32.core.draw_buffers_indexed.color_masks
KHR-GLES32.core.draw_buffers_indexed.blending
KHR-GLES32.core.draw_buffers_indexed.negative
+KHR-GLES32.core.constant_expressions.basic_radians_float_geometry
+KHR-GLES32.core.constant_expressions.basic_radians_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_radians_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_radians_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_radians_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_radians_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_radians_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_radians_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_radians_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_radians_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_radians_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_radians_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_degrees_float_geometry
+KHR-GLES32.core.constant_expressions.basic_degrees_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_degrees_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_degrees_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_degrees_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_degrees_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_degrees_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_degrees_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_degrees_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_degrees_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_degrees_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_degrees_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_sin_float_geometry
+KHR-GLES32.core.constant_expressions.basic_sin_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_sin_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_sin_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_sin_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_sin_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_sin_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_sin_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_sin_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_sin_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_sin_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_sin_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_cos_float_geometry
+KHR-GLES32.core.constant_expressions.basic_cos_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_cos_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_cos_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_cos_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_cos_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_cos_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_cos_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_cos_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_cos_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_cos_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_cos_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_asin_float_geometry
+KHR-GLES32.core.constant_expressions.basic_asin_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_asin_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_asin_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_asin_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_asin_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_asin_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_asin_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_asin_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_asin_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_asin_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_asin_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_acos_float_geometry
+KHR-GLES32.core.constant_expressions.basic_acos_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_acos_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_acos_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_acos_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_acos_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_acos_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_acos_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_acos_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_acos_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_acos_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_acos_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_pow_float_geometry
+KHR-GLES32.core.constant_expressions.basic_pow_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_pow_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_pow_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_pow_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_pow_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_pow_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_pow_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_pow_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_pow_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_pow_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_pow_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_exp_float_geometry
+KHR-GLES32.core.constant_expressions.basic_exp_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_exp_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_exp_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_exp_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_exp_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_exp_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_exp_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_exp_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_exp_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_exp_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_exp_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_log_float_geometry
+KHR-GLES32.core.constant_expressions.basic_log_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_log_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_log_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_log_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_log_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_log_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_log_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_log_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_log_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_log_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_log_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_exp2_float_geometry
+KHR-GLES32.core.constant_expressions.basic_exp2_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_exp2_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_exp2_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_exp2_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_exp2_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_exp2_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_exp2_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_exp2_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_exp2_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_exp2_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_exp2_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_log2_float_geometry
+KHR-GLES32.core.constant_expressions.basic_log2_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_log2_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_log2_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_log2_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_log2_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_log2_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_log2_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_log2_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_log2_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_log2_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_log2_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_sqrt_float_geometry
+KHR-GLES32.core.constant_expressions.basic_sqrt_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_sqrt_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_sqrt_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_sqrt_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_sqrt_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_sqrt_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_sqrt_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_sqrt_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_sqrt_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_sqrt_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_sqrt_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_inversesqrt_float_geometry
+KHR-GLES32.core.constant_expressions.basic_inversesqrt_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_inversesqrt_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_inversesqrt_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_inversesqrt_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_inversesqrt_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_inversesqrt_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_inversesqrt_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_inversesqrt_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_inversesqrt_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_inversesqrt_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_inversesqrt_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_abs_int_geometry
+KHR-GLES32.core.constant_expressions.basic_abs_int_tess_control
+KHR-GLES32.core.constant_expressions.basic_abs_int_tess_eval
+KHR-GLES32.core.constant_expressions.basic_abs_ivec2_geometry
+KHR-GLES32.core.constant_expressions.basic_abs_ivec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_abs_ivec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_abs_ivec3_geometry
+KHR-GLES32.core.constant_expressions.basic_abs_ivec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_abs_ivec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_abs_ivec4_geometry
+KHR-GLES32.core.constant_expressions.basic_abs_ivec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_abs_ivec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_sign_float_geometry
+KHR-GLES32.core.constant_expressions.basic_sign_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_sign_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_sign_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_sign_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_sign_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_sign_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_sign_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_sign_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_sign_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_sign_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_sign_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_floor_float_geometry
+KHR-GLES32.core.constant_expressions.basic_floor_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_floor_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_floor_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_floor_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_floor_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_floor_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_floor_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_floor_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_floor_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_floor_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_floor_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_trunc_float_geometry
+KHR-GLES32.core.constant_expressions.basic_trunc_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_trunc_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_trunc_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_trunc_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_trunc_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_trunc_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_trunc_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_trunc_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_trunc_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_trunc_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_trunc_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_round_float_geometry
+KHR-GLES32.core.constant_expressions.basic_round_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_round_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_round_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_round_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_round_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_round_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_round_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_round_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_round_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_round_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_round_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_ceil_float_geometry
+KHR-GLES32.core.constant_expressions.basic_ceil_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_ceil_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_ceil_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_ceil_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_ceil_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_ceil_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_ceil_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_ceil_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_ceil_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_ceil_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_ceil_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_mod_float_geometry
+KHR-GLES32.core.constant_expressions.basic_mod_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_mod_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_mod_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_mod_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_mod_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_mod_vec2_float_geometry
+KHR-GLES32.core.constant_expressions.basic_mod_vec2_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_mod_vec2_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_mod_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_mod_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_mod_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_mod_vec3_float_geometry
+KHR-GLES32.core.constant_expressions.basic_mod_vec3_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_mod_vec3_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_mod_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_mod_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_mod_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_mod_vec4_float_geometry
+KHR-GLES32.core.constant_expressions.basic_mod_vec4_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_mod_vec4_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_min_float_geometry
+KHR-GLES32.core.constant_expressions.basic_min_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_min_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_min_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_min_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_min_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_min_vec2_float_geometry
+KHR-GLES32.core.constant_expressions.basic_min_vec2_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_min_vec2_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_min_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_min_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_min_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_min_vec3_float_geometry
+KHR-GLES32.core.constant_expressions.basic_min_vec3_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_min_vec3_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_min_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_min_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_min_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_min_vec4_float_geometry
+KHR-GLES32.core.constant_expressions.basic_min_vec4_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_min_vec4_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_max_float_geometry
+KHR-GLES32.core.constant_expressions.basic_max_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_max_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_max_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_max_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_max_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_max_vec2_float_geometry
+KHR-GLES32.core.constant_expressions.basic_max_vec2_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_max_vec2_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_max_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_max_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_max_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_max_vec3_float_geometry
+KHR-GLES32.core.constant_expressions.basic_max_vec3_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_max_vec3_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_max_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_max_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_max_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_max_vec4_float_geometry
+KHR-GLES32.core.constant_expressions.basic_max_vec4_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_max_vec4_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_clamp_float_geometry
+KHR-GLES32.core.constant_expressions.basic_clamp_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_clamp_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_clamp_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_clamp_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_clamp_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_clamp_vec2_float_geometry
+KHR-GLES32.core.constant_expressions.basic_clamp_vec2_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_clamp_vec2_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_clamp_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_clamp_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_clamp_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_clamp_vec3_float_geometry
+KHR-GLES32.core.constant_expressions.basic_clamp_vec3_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_clamp_vec3_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_clamp_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_clamp_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_clamp_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_clamp_vec4_float_geometry
+KHR-GLES32.core.constant_expressions.basic_clamp_vec4_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_clamp_vec4_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_length_float_geometry
+KHR-GLES32.core.constant_expressions.basic_length_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_length_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_length_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_length_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_length_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_length_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_length_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_length_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_length_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_length_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_length_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_dot_float_geometry
+KHR-GLES32.core.constant_expressions.basic_dot_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_dot_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_dot_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_dot_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_dot_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_dot_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_dot_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_dot_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_dot_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_dot_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_dot_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_normalize_float_geometry
+KHR-GLES32.core.constant_expressions.basic_normalize_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_normalize_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_normalize_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_normalize_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_normalize_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_normalize_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_normalize_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_normalize_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_normalize_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_normalize_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_normalize_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_radians_float_geometry
+KHR-GLES32.core.constant_expressions.array_radians_float_tess_control
+KHR-GLES32.core.constant_expressions.array_radians_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_radians_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_radians_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_radians_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_radians_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_radians_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_radians_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_radians_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_radians_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_radians_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_degrees_float_geometry
+KHR-GLES32.core.constant_expressions.array_degrees_float_tess_control
+KHR-GLES32.core.constant_expressions.array_degrees_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_degrees_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_degrees_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_degrees_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_degrees_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_degrees_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_degrees_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_degrees_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_degrees_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_degrees_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_sin_float_geometry
+KHR-GLES32.core.constant_expressions.array_sin_float_tess_control
+KHR-GLES32.core.constant_expressions.array_sin_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_sin_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_sin_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_sin_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_sin_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_sin_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_sin_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_sin_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_sin_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_sin_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_cos_float_geometry
+KHR-GLES32.core.constant_expressions.array_cos_float_tess_control
+KHR-GLES32.core.constant_expressions.array_cos_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_cos_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_cos_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_cos_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_cos_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_cos_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_cos_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_cos_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_cos_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_cos_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_asin_float_geometry
+KHR-GLES32.core.constant_expressions.array_asin_float_tess_control
+KHR-GLES32.core.constant_expressions.array_asin_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_asin_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_asin_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_asin_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_asin_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_asin_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_asin_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_asin_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_asin_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_asin_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_acos_float_geometry
+KHR-GLES32.core.constant_expressions.array_acos_float_tess_control
+KHR-GLES32.core.constant_expressions.array_acos_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_acos_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_acos_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_acos_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_acos_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_acos_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_acos_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_acos_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_acos_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_acos_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_pow_float_geometry
+KHR-GLES32.core.constant_expressions.array_pow_float_tess_control
+KHR-GLES32.core.constant_expressions.array_pow_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_pow_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_pow_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_pow_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_pow_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_pow_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_pow_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_pow_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_pow_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_pow_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_exp_float_geometry
+KHR-GLES32.core.constant_expressions.array_exp_float_tess_control
+KHR-GLES32.core.constant_expressions.array_exp_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_exp_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_exp_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_exp_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_exp_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_exp_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_exp_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_exp_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_exp_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_exp_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_log_float_geometry
+KHR-GLES32.core.constant_expressions.array_log_float_tess_control
+KHR-GLES32.core.constant_expressions.array_log_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_log_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_log_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_log_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_log_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_log_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_log_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_log_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_log_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_log_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_exp2_float_geometry
+KHR-GLES32.core.constant_expressions.array_exp2_float_tess_control
+KHR-GLES32.core.constant_expressions.array_exp2_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_exp2_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_exp2_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_exp2_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_exp2_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_exp2_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_exp2_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_exp2_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_exp2_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_exp2_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_log2_float_geometry
+KHR-GLES32.core.constant_expressions.array_log2_float_tess_control
+KHR-GLES32.core.constant_expressions.array_log2_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_log2_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_log2_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_log2_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_log2_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_log2_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_log2_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_log2_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_log2_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_log2_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_sqrt_float_geometry
+KHR-GLES32.core.constant_expressions.array_sqrt_float_tess_control
+KHR-GLES32.core.constant_expressions.array_sqrt_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_sqrt_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_sqrt_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_sqrt_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_sqrt_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_sqrt_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_sqrt_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_sqrt_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_sqrt_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_sqrt_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_inversesqrt_float_geometry
+KHR-GLES32.core.constant_expressions.array_inversesqrt_float_tess_control
+KHR-GLES32.core.constant_expressions.array_inversesqrt_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_inversesqrt_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_inversesqrt_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_inversesqrt_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_inversesqrt_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_inversesqrt_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_inversesqrt_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_inversesqrt_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_inversesqrt_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_inversesqrt_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_abs_int_geometry
+KHR-GLES32.core.constant_expressions.array_abs_int_tess_control
+KHR-GLES32.core.constant_expressions.array_abs_int_tess_eval
+KHR-GLES32.core.constant_expressions.array_abs_ivec2_geometry
+KHR-GLES32.core.constant_expressions.array_abs_ivec2_tess_control
+KHR-GLES32.core.constant_expressions.array_abs_ivec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_abs_ivec3_geometry
+KHR-GLES32.core.constant_expressions.array_abs_ivec3_tess_control
+KHR-GLES32.core.constant_expressions.array_abs_ivec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_abs_ivec4_geometry
+KHR-GLES32.core.constant_expressions.array_abs_ivec4_tess_control
+KHR-GLES32.core.constant_expressions.array_abs_ivec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_sign_float_geometry
+KHR-GLES32.core.constant_expressions.array_sign_float_tess_control
+KHR-GLES32.core.constant_expressions.array_sign_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_sign_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_sign_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_sign_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_sign_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_sign_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_sign_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_sign_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_sign_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_sign_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_floor_float_geometry
+KHR-GLES32.core.constant_expressions.array_floor_float_tess_control
+KHR-GLES32.core.constant_expressions.array_floor_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_floor_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_floor_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_floor_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_floor_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_floor_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_floor_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_floor_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_floor_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_floor_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_trunc_float_geometry
+KHR-GLES32.core.constant_expressions.array_trunc_float_tess_control
+KHR-GLES32.core.constant_expressions.array_trunc_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_trunc_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_trunc_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_trunc_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_trunc_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_trunc_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_trunc_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_trunc_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_trunc_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_trunc_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_round_float_geometry
+KHR-GLES32.core.constant_expressions.array_round_float_tess_control
+KHR-GLES32.core.constant_expressions.array_round_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_round_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_round_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_round_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_round_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_round_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_round_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_round_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_round_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_round_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_ceil_float_geometry
+KHR-GLES32.core.constant_expressions.array_ceil_float_tess_control
+KHR-GLES32.core.constant_expressions.array_ceil_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_ceil_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_ceil_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_ceil_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_ceil_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_ceil_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_ceil_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_ceil_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_ceil_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_ceil_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_mod_float_geometry
+KHR-GLES32.core.constant_expressions.array_mod_float_tess_control
+KHR-GLES32.core.constant_expressions.array_mod_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_mod_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_mod_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_mod_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_mod_vec2_float_geometry
+KHR-GLES32.core.constant_expressions.array_mod_vec2_float_tess_control
+KHR-GLES32.core.constant_expressions.array_mod_vec2_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_mod_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_mod_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_mod_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_mod_vec3_float_geometry
+KHR-GLES32.core.constant_expressions.array_mod_vec3_float_tess_control
+KHR-GLES32.core.constant_expressions.array_mod_vec3_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_mod_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_mod_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_mod_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_mod_vec4_float_geometry
+KHR-GLES32.core.constant_expressions.array_mod_vec4_float_tess_control
+KHR-GLES32.core.constant_expressions.array_mod_vec4_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_min_float_geometry
+KHR-GLES32.core.constant_expressions.array_min_float_tess_control
+KHR-GLES32.core.constant_expressions.array_min_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_min_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_min_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_min_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_min_vec2_float_geometry
+KHR-GLES32.core.constant_expressions.array_min_vec2_float_tess_control
+KHR-GLES32.core.constant_expressions.array_min_vec2_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_min_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_min_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_min_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_min_vec3_float_geometry
+KHR-GLES32.core.constant_expressions.array_min_vec3_float_tess_control
+KHR-GLES32.core.constant_expressions.array_min_vec3_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_min_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_min_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_min_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_min_vec4_float_geometry
+KHR-GLES32.core.constant_expressions.array_min_vec4_float_tess_control
+KHR-GLES32.core.constant_expressions.array_min_vec4_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_max_float_geometry
+KHR-GLES32.core.constant_expressions.array_max_float_tess_control
+KHR-GLES32.core.constant_expressions.array_max_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_max_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_max_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_max_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_max_vec2_float_geometry
+KHR-GLES32.core.constant_expressions.array_max_vec2_float_tess_control
+KHR-GLES32.core.constant_expressions.array_max_vec2_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_max_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_max_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_max_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_max_vec3_float_geometry
+KHR-GLES32.core.constant_expressions.array_max_vec3_float_tess_control
+KHR-GLES32.core.constant_expressions.array_max_vec3_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_max_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_max_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_max_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_max_vec4_float_geometry
+KHR-GLES32.core.constant_expressions.array_max_vec4_float_tess_control
+KHR-GLES32.core.constant_expressions.array_max_vec4_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_clamp_float_geometry
+KHR-GLES32.core.constant_expressions.array_clamp_float_tess_control
+KHR-GLES32.core.constant_expressions.array_clamp_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_clamp_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_clamp_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_clamp_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_clamp_vec2_float_geometry
+KHR-GLES32.core.constant_expressions.array_clamp_vec2_float_tess_control
+KHR-GLES32.core.constant_expressions.array_clamp_vec2_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_clamp_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_clamp_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_clamp_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_clamp_vec3_float_geometry
+KHR-GLES32.core.constant_expressions.array_clamp_vec3_float_tess_control
+KHR-GLES32.core.constant_expressions.array_clamp_vec3_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_clamp_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_clamp_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_clamp_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_clamp_vec4_float_geometry
+KHR-GLES32.core.constant_expressions.array_clamp_vec4_float_tess_control
+KHR-GLES32.core.constant_expressions.array_clamp_vec4_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_length_float_geometry
+KHR-GLES32.core.constant_expressions.array_length_float_tess_control
+KHR-GLES32.core.constant_expressions.array_length_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_length_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_length_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_length_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_length_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_length_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_length_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_length_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_length_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_length_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_dot_float_geometry
+KHR-GLES32.core.constant_expressions.array_dot_float_tess_control
+KHR-GLES32.core.constant_expressions.array_dot_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_dot_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_dot_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_dot_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_dot_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_dot_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_dot_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_dot_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_dot_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_dot_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_normalize_float_geometry
+KHR-GLES32.core.constant_expressions.array_normalize_float_tess_control
+KHR-GLES32.core.constant_expressions.array_normalize_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_normalize_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_normalize_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_normalize_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_normalize_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_normalize_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_normalize_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_normalize_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_normalize_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_normalize_vec4_tess_eval
+KHR-GLES32.core.separable_programs_tf.tessellation_active
+KHR-GLES32.core.separable_programs_tf.geometry_active
diff --git a/external/openglcts/data/mustpass/gles/khronos_mustpass/master/gles3-khr-master.txt b/external/openglcts/data/mustpass/gles/khronos_mustpass/master/gles3-khr-master.txt
index 4b043de..ee479b7 100644
--- a/external/openglcts/data/mustpass/gles/khronos_mustpass/master/gles3-khr-master.txt
+++ b/external/openglcts/data/mustpass/gles/khronos_mustpass/master/gles3-khr-master.txt
@@ -2573,3 +2573,471 @@
KHR-GLES3.texture_filter_anisotropic.queries
KHR-GLES3.texture_filter_anisotropic.drawing
KHR-GLES3.exposed_extensions.validate_extensions
+KHR-GLES3.core.constant_expressions.basic_radians_float_vertex
+KHR-GLES3.core.constant_expressions.basic_radians_float_fragment
+KHR-GLES3.core.constant_expressions.basic_radians_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_radians_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_radians_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_radians_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_radians_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_radians_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_degrees_float_vertex
+KHR-GLES3.core.constant_expressions.basic_degrees_float_fragment
+KHR-GLES3.core.constant_expressions.basic_degrees_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_degrees_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_degrees_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_degrees_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_degrees_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_degrees_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_sin_float_vertex
+KHR-GLES3.core.constant_expressions.basic_sin_float_fragment
+KHR-GLES3.core.constant_expressions.basic_sin_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_sin_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_sin_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_sin_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_sin_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_sin_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_cos_float_vertex
+KHR-GLES3.core.constant_expressions.basic_cos_float_fragment
+KHR-GLES3.core.constant_expressions.basic_cos_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_cos_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_cos_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_cos_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_cos_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_cos_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_asin_float_vertex
+KHR-GLES3.core.constant_expressions.basic_asin_float_fragment
+KHR-GLES3.core.constant_expressions.basic_asin_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_asin_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_asin_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_asin_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_asin_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_asin_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_acos_float_vertex
+KHR-GLES3.core.constant_expressions.basic_acos_float_fragment
+KHR-GLES3.core.constant_expressions.basic_acos_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_acos_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_acos_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_acos_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_acos_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_acos_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_pow_float_vertex
+KHR-GLES3.core.constant_expressions.basic_pow_float_fragment
+KHR-GLES3.core.constant_expressions.basic_pow_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_pow_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_pow_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_pow_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_pow_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_pow_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_exp_float_vertex
+KHR-GLES3.core.constant_expressions.basic_exp_float_fragment
+KHR-GLES3.core.constant_expressions.basic_exp_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_exp_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_exp_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_exp_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_exp_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_exp_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_log_float_vertex
+KHR-GLES3.core.constant_expressions.basic_log_float_fragment
+KHR-GLES3.core.constant_expressions.basic_log_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_log_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_log_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_log_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_log_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_log_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_exp2_float_vertex
+KHR-GLES3.core.constant_expressions.basic_exp2_float_fragment
+KHR-GLES3.core.constant_expressions.basic_exp2_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_exp2_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_exp2_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_exp2_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_exp2_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_exp2_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_log2_float_vertex
+KHR-GLES3.core.constant_expressions.basic_log2_float_fragment
+KHR-GLES3.core.constant_expressions.basic_log2_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_log2_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_log2_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_log2_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_log2_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_log2_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_sqrt_float_vertex
+KHR-GLES3.core.constant_expressions.basic_sqrt_float_fragment
+KHR-GLES3.core.constant_expressions.basic_sqrt_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_sqrt_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_sqrt_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_sqrt_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_sqrt_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_sqrt_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_inversesqrt_float_vertex
+KHR-GLES3.core.constant_expressions.basic_inversesqrt_float_fragment
+KHR-GLES3.core.constant_expressions.basic_inversesqrt_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_inversesqrt_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_inversesqrt_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_inversesqrt_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_inversesqrt_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_inversesqrt_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_abs_int_vertex
+KHR-GLES3.core.constant_expressions.basic_abs_int_fragment
+KHR-GLES3.core.constant_expressions.basic_abs_ivec2_vertex
+KHR-GLES3.core.constant_expressions.basic_abs_ivec2_fragment
+KHR-GLES3.core.constant_expressions.basic_abs_ivec3_vertex
+KHR-GLES3.core.constant_expressions.basic_abs_ivec3_fragment
+KHR-GLES3.core.constant_expressions.basic_abs_ivec4_vertex
+KHR-GLES3.core.constant_expressions.basic_abs_ivec4_fragment
+KHR-GLES3.core.constant_expressions.basic_sign_float_vertex
+KHR-GLES3.core.constant_expressions.basic_sign_float_fragment
+KHR-GLES3.core.constant_expressions.basic_sign_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_sign_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_sign_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_sign_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_sign_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_sign_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_floor_float_vertex
+KHR-GLES3.core.constant_expressions.basic_floor_float_fragment
+KHR-GLES3.core.constant_expressions.basic_floor_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_floor_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_floor_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_floor_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_floor_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_floor_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_trunc_float_vertex
+KHR-GLES3.core.constant_expressions.basic_trunc_float_fragment
+KHR-GLES3.core.constant_expressions.basic_trunc_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_trunc_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_trunc_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_trunc_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_trunc_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_trunc_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_round_float_vertex
+KHR-GLES3.core.constant_expressions.basic_round_float_fragment
+KHR-GLES3.core.constant_expressions.basic_round_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_round_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_round_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_round_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_round_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_round_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_ceil_float_vertex
+KHR-GLES3.core.constant_expressions.basic_ceil_float_fragment
+KHR-GLES3.core.constant_expressions.basic_ceil_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_ceil_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_ceil_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_ceil_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_ceil_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_ceil_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_mod_float_vertex
+KHR-GLES3.core.constant_expressions.basic_mod_float_fragment
+KHR-GLES3.core.constant_expressions.basic_mod_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_mod_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_mod_vec2_float_vertex
+KHR-GLES3.core.constant_expressions.basic_mod_vec2_float_fragment
+KHR-GLES3.core.constant_expressions.basic_mod_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_mod_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_mod_vec3_float_vertex
+KHR-GLES3.core.constant_expressions.basic_mod_vec3_float_fragment
+KHR-GLES3.core.constant_expressions.basic_mod_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_mod_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_mod_vec4_float_vertex
+KHR-GLES3.core.constant_expressions.basic_mod_vec4_float_fragment
+KHR-GLES3.core.constant_expressions.basic_min_float_vertex
+KHR-GLES3.core.constant_expressions.basic_min_float_fragment
+KHR-GLES3.core.constant_expressions.basic_min_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_min_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_min_vec2_float_vertex
+KHR-GLES3.core.constant_expressions.basic_min_vec2_float_fragment
+KHR-GLES3.core.constant_expressions.basic_min_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_min_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_min_vec3_float_vertex
+KHR-GLES3.core.constant_expressions.basic_min_vec3_float_fragment
+KHR-GLES3.core.constant_expressions.basic_min_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_min_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_min_vec4_float_vertex
+KHR-GLES3.core.constant_expressions.basic_min_vec4_float_fragment
+KHR-GLES3.core.constant_expressions.basic_max_float_vertex
+KHR-GLES3.core.constant_expressions.basic_max_float_fragment
+KHR-GLES3.core.constant_expressions.basic_max_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_max_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_max_vec2_float_vertex
+KHR-GLES3.core.constant_expressions.basic_max_vec2_float_fragment
+KHR-GLES3.core.constant_expressions.basic_max_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_max_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_max_vec3_float_vertex
+KHR-GLES3.core.constant_expressions.basic_max_vec3_float_fragment
+KHR-GLES3.core.constant_expressions.basic_max_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_max_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_max_vec4_float_vertex
+KHR-GLES3.core.constant_expressions.basic_max_vec4_float_fragment
+KHR-GLES3.core.constant_expressions.basic_clamp_float_vertex
+KHR-GLES3.core.constant_expressions.basic_clamp_float_fragment
+KHR-GLES3.core.constant_expressions.basic_clamp_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_clamp_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_clamp_vec2_float_vertex
+KHR-GLES3.core.constant_expressions.basic_clamp_vec2_float_fragment
+KHR-GLES3.core.constant_expressions.basic_clamp_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_clamp_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_clamp_vec3_float_vertex
+KHR-GLES3.core.constant_expressions.basic_clamp_vec3_float_fragment
+KHR-GLES3.core.constant_expressions.basic_clamp_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_clamp_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_clamp_vec4_float_vertex
+KHR-GLES3.core.constant_expressions.basic_clamp_vec4_float_fragment
+KHR-GLES3.core.constant_expressions.basic_length_float_vertex
+KHR-GLES3.core.constant_expressions.basic_length_float_fragment
+KHR-GLES3.core.constant_expressions.basic_length_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_length_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_length_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_length_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_length_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_length_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_dot_float_vertex
+KHR-GLES3.core.constant_expressions.basic_dot_float_fragment
+KHR-GLES3.core.constant_expressions.basic_dot_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_dot_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_dot_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_dot_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_dot_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_dot_vec4_fragment
+KHR-GLES3.core.constant_expressions.basic_normalize_float_vertex
+KHR-GLES3.core.constant_expressions.basic_normalize_float_fragment
+KHR-GLES3.core.constant_expressions.basic_normalize_vec2_vertex
+KHR-GLES3.core.constant_expressions.basic_normalize_vec2_fragment
+KHR-GLES3.core.constant_expressions.basic_normalize_vec3_vertex
+KHR-GLES3.core.constant_expressions.basic_normalize_vec3_fragment
+KHR-GLES3.core.constant_expressions.basic_normalize_vec4_vertex
+KHR-GLES3.core.constant_expressions.basic_normalize_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_radians_float_vertex
+KHR-GLES3.core.constant_expressions.array_radians_float_fragment
+KHR-GLES3.core.constant_expressions.array_radians_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_radians_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_radians_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_radians_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_radians_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_radians_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_degrees_float_vertex
+KHR-GLES3.core.constant_expressions.array_degrees_float_fragment
+KHR-GLES3.core.constant_expressions.array_degrees_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_degrees_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_degrees_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_degrees_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_degrees_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_degrees_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_sin_float_vertex
+KHR-GLES3.core.constant_expressions.array_sin_float_fragment
+KHR-GLES3.core.constant_expressions.array_sin_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_sin_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_sin_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_sin_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_sin_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_sin_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_cos_float_vertex
+KHR-GLES3.core.constant_expressions.array_cos_float_fragment
+KHR-GLES3.core.constant_expressions.array_cos_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_cos_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_cos_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_cos_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_cos_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_cos_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_asin_float_vertex
+KHR-GLES3.core.constant_expressions.array_asin_float_fragment
+KHR-GLES3.core.constant_expressions.array_asin_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_asin_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_asin_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_asin_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_asin_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_asin_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_acos_float_vertex
+KHR-GLES3.core.constant_expressions.array_acos_float_fragment
+KHR-GLES3.core.constant_expressions.array_acos_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_acos_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_acos_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_acos_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_acos_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_acos_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_pow_float_vertex
+KHR-GLES3.core.constant_expressions.array_pow_float_fragment
+KHR-GLES3.core.constant_expressions.array_pow_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_pow_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_pow_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_pow_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_pow_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_pow_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_exp_float_vertex
+KHR-GLES3.core.constant_expressions.array_exp_float_fragment
+KHR-GLES3.core.constant_expressions.array_exp_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_exp_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_exp_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_exp_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_exp_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_exp_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_log_float_vertex
+KHR-GLES3.core.constant_expressions.array_log_float_fragment
+KHR-GLES3.core.constant_expressions.array_log_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_log_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_log_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_log_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_log_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_log_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_exp2_float_vertex
+KHR-GLES3.core.constant_expressions.array_exp2_float_fragment
+KHR-GLES3.core.constant_expressions.array_exp2_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_exp2_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_exp2_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_exp2_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_exp2_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_exp2_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_log2_float_vertex
+KHR-GLES3.core.constant_expressions.array_log2_float_fragment
+KHR-GLES3.core.constant_expressions.array_log2_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_log2_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_log2_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_log2_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_log2_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_log2_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_sqrt_float_vertex
+KHR-GLES3.core.constant_expressions.array_sqrt_float_fragment
+KHR-GLES3.core.constant_expressions.array_sqrt_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_sqrt_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_sqrt_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_sqrt_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_sqrt_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_sqrt_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_inversesqrt_float_vertex
+KHR-GLES3.core.constant_expressions.array_inversesqrt_float_fragment
+KHR-GLES3.core.constant_expressions.array_inversesqrt_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_inversesqrt_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_inversesqrt_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_inversesqrt_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_inversesqrt_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_inversesqrt_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_abs_int_vertex
+KHR-GLES3.core.constant_expressions.array_abs_int_fragment
+KHR-GLES3.core.constant_expressions.array_abs_ivec2_vertex
+KHR-GLES3.core.constant_expressions.array_abs_ivec2_fragment
+KHR-GLES3.core.constant_expressions.array_abs_ivec3_vertex
+KHR-GLES3.core.constant_expressions.array_abs_ivec3_fragment
+KHR-GLES3.core.constant_expressions.array_abs_ivec4_vertex
+KHR-GLES3.core.constant_expressions.array_abs_ivec4_fragment
+KHR-GLES3.core.constant_expressions.array_sign_float_vertex
+KHR-GLES3.core.constant_expressions.array_sign_float_fragment
+KHR-GLES3.core.constant_expressions.array_sign_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_sign_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_sign_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_sign_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_sign_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_sign_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_floor_float_vertex
+KHR-GLES3.core.constant_expressions.array_floor_float_fragment
+KHR-GLES3.core.constant_expressions.array_floor_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_floor_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_floor_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_floor_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_floor_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_floor_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_trunc_float_vertex
+KHR-GLES3.core.constant_expressions.array_trunc_float_fragment
+KHR-GLES3.core.constant_expressions.array_trunc_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_trunc_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_trunc_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_trunc_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_trunc_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_trunc_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_round_float_vertex
+KHR-GLES3.core.constant_expressions.array_round_float_fragment
+KHR-GLES3.core.constant_expressions.array_round_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_round_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_round_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_round_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_round_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_round_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_ceil_float_vertex
+KHR-GLES3.core.constant_expressions.array_ceil_float_fragment
+KHR-GLES3.core.constant_expressions.array_ceil_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_ceil_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_ceil_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_ceil_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_ceil_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_ceil_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_mod_float_vertex
+KHR-GLES3.core.constant_expressions.array_mod_float_fragment
+KHR-GLES3.core.constant_expressions.array_mod_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_mod_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_mod_vec2_float_vertex
+KHR-GLES3.core.constant_expressions.array_mod_vec2_float_fragment
+KHR-GLES3.core.constant_expressions.array_mod_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_mod_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_mod_vec3_float_vertex
+KHR-GLES3.core.constant_expressions.array_mod_vec3_float_fragment
+KHR-GLES3.core.constant_expressions.array_mod_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_mod_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_mod_vec4_float_vertex
+KHR-GLES3.core.constant_expressions.array_mod_vec4_float_fragment
+KHR-GLES3.core.constant_expressions.array_min_float_vertex
+KHR-GLES3.core.constant_expressions.array_min_float_fragment
+KHR-GLES3.core.constant_expressions.array_min_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_min_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_min_vec2_float_vertex
+KHR-GLES3.core.constant_expressions.array_min_vec2_float_fragment
+KHR-GLES3.core.constant_expressions.array_min_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_min_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_min_vec3_float_vertex
+KHR-GLES3.core.constant_expressions.array_min_vec3_float_fragment
+KHR-GLES3.core.constant_expressions.array_min_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_min_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_min_vec4_float_vertex
+KHR-GLES3.core.constant_expressions.array_min_vec4_float_fragment
+KHR-GLES3.core.constant_expressions.array_max_float_vertex
+KHR-GLES3.core.constant_expressions.array_max_float_fragment
+KHR-GLES3.core.constant_expressions.array_max_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_max_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_max_vec2_float_vertex
+KHR-GLES3.core.constant_expressions.array_max_vec2_float_fragment
+KHR-GLES3.core.constant_expressions.array_max_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_max_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_max_vec3_float_vertex
+KHR-GLES3.core.constant_expressions.array_max_vec3_float_fragment
+KHR-GLES3.core.constant_expressions.array_max_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_max_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_max_vec4_float_vertex
+KHR-GLES3.core.constant_expressions.array_max_vec4_float_fragment
+KHR-GLES3.core.constant_expressions.array_clamp_float_vertex
+KHR-GLES3.core.constant_expressions.array_clamp_float_fragment
+KHR-GLES3.core.constant_expressions.array_clamp_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_clamp_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_clamp_vec2_float_vertex
+KHR-GLES3.core.constant_expressions.array_clamp_vec2_float_fragment
+KHR-GLES3.core.constant_expressions.array_clamp_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_clamp_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_clamp_vec3_float_vertex
+KHR-GLES3.core.constant_expressions.array_clamp_vec3_float_fragment
+KHR-GLES3.core.constant_expressions.array_clamp_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_clamp_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_clamp_vec4_float_vertex
+KHR-GLES3.core.constant_expressions.array_clamp_vec4_float_fragment
+KHR-GLES3.core.constant_expressions.array_length_float_vertex
+KHR-GLES3.core.constant_expressions.array_length_float_fragment
+KHR-GLES3.core.constant_expressions.array_length_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_length_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_length_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_length_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_length_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_length_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_dot_float_vertex
+KHR-GLES3.core.constant_expressions.array_dot_float_fragment
+KHR-GLES3.core.constant_expressions.array_dot_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_dot_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_dot_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_dot_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_dot_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_dot_vec4_fragment
+KHR-GLES3.core.constant_expressions.array_normalize_float_vertex
+KHR-GLES3.core.constant_expressions.array_normalize_float_fragment
+KHR-GLES3.core.constant_expressions.array_normalize_vec2_vertex
+KHR-GLES3.core.constant_expressions.array_normalize_vec2_fragment
+KHR-GLES3.core.constant_expressions.array_normalize_vec3_vertex
+KHR-GLES3.core.constant_expressions.array_normalize_vec3_fragment
+KHR-GLES3.core.constant_expressions.array_normalize_vec4_vertex
+KHR-GLES3.core.constant_expressions.array_normalize_vec4_fragment
+KHR-GLES3.parallel_shader_compile.simple_queries
+KHR-GLES3.parallel_shader_compile.max_shader_compile_threads
+KHR-GLES3.parallel_shader_compile.compilation_completion_non_parallel
+KHR-GLES3.parallel_shader_compile.compilation_completion_parallel
diff --git a/external/openglcts/data/mustpass/gles/khronos_mustpass/master/gles31-khr-master.txt b/external/openglcts/data/mustpass/gles/khronos_mustpass/master/gles31-khr-master.txt
index 49024ad..d9df703 100644
--- a/external/openglcts/data/mustpass/gles/khronos_mustpass/master/gles31-khr-master.txt
+++ b/external/openglcts/data/mustpass/gles/khronos_mustpass/master/gles31-khr-master.txt
@@ -83,6 +83,7 @@
KHR-GLES31.core.shader_atomic_counters.negative-uniform
KHR-GLES31.core.shader_atomic_counters.negative-array
KHR-GLES31.core.shader_atomic_counters.negative-arithmetic
+KHR-GLES31.core.shader_atomic_counters.negative-unsized-array
KHR-GLES31.core.texture_gather.api-enums
KHR-GLES31.core.texture_gather.gather-glsl-compile
KHR-GLES31.core.texture_gather.plain-gather-float-2d
@@ -791,6 +792,934 @@
KHR-GLES31.core.shader_integer_mix.mix-ivec4
KHR-GLES31.core.shader_integer_mix.mix-uvec4
KHR-GLES31.core.shader_integer_mix.mix-bvec4
+KHR-GLES31.core.constant_expressions.basic_radians_float_compute
+KHR-GLES31.core.constant_expressions.basic_radians_float_geometry
+KHR-GLES31.core.constant_expressions.basic_radians_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_radians_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_radians_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_radians_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_radians_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_radians_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_radians_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_radians_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_radians_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_radians_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_radians_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_radians_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_radians_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_radians_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_degrees_float_compute
+KHR-GLES31.core.constant_expressions.basic_degrees_float_geometry
+KHR-GLES31.core.constant_expressions.basic_degrees_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_degrees_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_degrees_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_degrees_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_degrees_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_degrees_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_degrees_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_degrees_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_degrees_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_degrees_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_degrees_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_degrees_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_degrees_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_degrees_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_sin_float_compute
+KHR-GLES31.core.constant_expressions.basic_sin_float_geometry
+KHR-GLES31.core.constant_expressions.basic_sin_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_sin_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_sin_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_sin_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_sin_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_sin_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_sin_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_sin_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_sin_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_sin_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_sin_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_sin_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_sin_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_sin_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_cos_float_compute
+KHR-GLES31.core.constant_expressions.basic_cos_float_geometry
+KHR-GLES31.core.constant_expressions.basic_cos_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_cos_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_cos_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_cos_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_cos_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_cos_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_cos_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_cos_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_cos_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_cos_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_cos_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_cos_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_cos_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_cos_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_asin_float_compute
+KHR-GLES31.core.constant_expressions.basic_asin_float_geometry
+KHR-GLES31.core.constant_expressions.basic_asin_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_asin_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_asin_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_asin_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_asin_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_asin_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_asin_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_asin_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_asin_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_asin_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_asin_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_asin_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_asin_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_asin_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_acos_float_compute
+KHR-GLES31.core.constant_expressions.basic_acos_float_geometry
+KHR-GLES31.core.constant_expressions.basic_acos_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_acos_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_acos_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_acos_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_acos_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_acos_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_acos_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_acos_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_acos_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_acos_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_acos_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_acos_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_acos_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_acos_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_pow_float_compute
+KHR-GLES31.core.constant_expressions.basic_pow_float_geometry
+KHR-GLES31.core.constant_expressions.basic_pow_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_pow_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_pow_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_pow_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_pow_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_pow_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_pow_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_pow_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_pow_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_pow_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_pow_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_pow_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_pow_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_pow_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_exp_float_compute
+KHR-GLES31.core.constant_expressions.basic_exp_float_geometry
+KHR-GLES31.core.constant_expressions.basic_exp_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_exp_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_exp_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_exp_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_exp_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_exp_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_exp_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_exp_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_exp_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_exp_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_exp_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_exp_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_exp_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_exp_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_log_float_compute
+KHR-GLES31.core.constant_expressions.basic_log_float_geometry
+KHR-GLES31.core.constant_expressions.basic_log_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_log_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_log_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_log_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_log_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_log_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_log_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_log_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_log_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_log_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_log_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_log_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_log_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_log_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_exp2_float_compute
+KHR-GLES31.core.constant_expressions.basic_exp2_float_geometry
+KHR-GLES31.core.constant_expressions.basic_exp2_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_exp2_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_exp2_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_exp2_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_exp2_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_exp2_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_exp2_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_exp2_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_exp2_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_exp2_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_exp2_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_exp2_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_exp2_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_exp2_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_log2_float_compute
+KHR-GLES31.core.constant_expressions.basic_log2_float_geometry
+KHR-GLES31.core.constant_expressions.basic_log2_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_log2_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_log2_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_log2_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_log2_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_log2_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_log2_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_log2_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_log2_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_log2_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_log2_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_log2_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_log2_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_log2_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_sqrt_float_compute
+KHR-GLES31.core.constant_expressions.basic_sqrt_float_geometry
+KHR-GLES31.core.constant_expressions.basic_sqrt_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_sqrt_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_sqrt_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_sqrt_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_sqrt_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_sqrt_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_sqrt_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_sqrt_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_sqrt_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_sqrt_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_sqrt_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_sqrt_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_sqrt_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_sqrt_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_inversesqrt_float_compute
+KHR-GLES31.core.constant_expressions.basic_inversesqrt_float_geometry
+KHR-GLES31.core.constant_expressions.basic_inversesqrt_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_inversesqrt_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_inversesqrt_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_inversesqrt_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_inversesqrt_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_inversesqrt_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_inversesqrt_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_inversesqrt_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_inversesqrt_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_inversesqrt_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_inversesqrt_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_inversesqrt_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_inversesqrt_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_inversesqrt_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_abs_int_compute
+KHR-GLES31.core.constant_expressions.basic_abs_int_geometry
+KHR-GLES31.core.constant_expressions.basic_abs_int_tess_control
+KHR-GLES31.core.constant_expressions.basic_abs_int_tess_eval
+KHR-GLES31.core.constant_expressions.basic_abs_ivec2_compute
+KHR-GLES31.core.constant_expressions.basic_abs_ivec2_geometry
+KHR-GLES31.core.constant_expressions.basic_abs_ivec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_abs_ivec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_abs_ivec3_compute
+KHR-GLES31.core.constant_expressions.basic_abs_ivec3_geometry
+KHR-GLES31.core.constant_expressions.basic_abs_ivec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_abs_ivec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_abs_ivec4_compute
+KHR-GLES31.core.constant_expressions.basic_abs_ivec4_geometry
+KHR-GLES31.core.constant_expressions.basic_abs_ivec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_abs_ivec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_sign_float_compute
+KHR-GLES31.core.constant_expressions.basic_sign_float_geometry
+KHR-GLES31.core.constant_expressions.basic_sign_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_sign_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_sign_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_sign_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_sign_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_sign_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_sign_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_sign_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_sign_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_sign_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_sign_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_sign_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_sign_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_sign_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_floor_float_compute
+KHR-GLES31.core.constant_expressions.basic_floor_float_geometry
+KHR-GLES31.core.constant_expressions.basic_floor_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_floor_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_floor_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_floor_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_floor_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_floor_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_floor_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_floor_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_floor_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_floor_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_floor_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_floor_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_floor_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_floor_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_trunc_float_compute
+KHR-GLES31.core.constant_expressions.basic_trunc_float_geometry
+KHR-GLES31.core.constant_expressions.basic_trunc_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_trunc_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_trunc_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_trunc_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_trunc_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_trunc_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_trunc_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_trunc_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_trunc_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_trunc_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_trunc_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_trunc_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_trunc_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_trunc_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_round_float_compute
+KHR-GLES31.core.constant_expressions.basic_round_float_geometry
+KHR-GLES31.core.constant_expressions.basic_round_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_round_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_round_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_round_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_round_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_round_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_round_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_round_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_round_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_round_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_round_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_round_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_round_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_round_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_ceil_float_compute
+KHR-GLES31.core.constant_expressions.basic_ceil_float_geometry
+KHR-GLES31.core.constant_expressions.basic_ceil_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_ceil_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_ceil_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_ceil_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_ceil_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_ceil_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_ceil_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_ceil_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_ceil_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_ceil_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_ceil_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_ceil_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_ceil_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_ceil_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_mod_float_compute
+KHR-GLES31.core.constant_expressions.basic_mod_float_geometry
+KHR-GLES31.core.constant_expressions.basic_mod_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_mod_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_mod_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_mod_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_mod_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_mod_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_mod_vec2_float_compute
+KHR-GLES31.core.constant_expressions.basic_mod_vec2_float_geometry
+KHR-GLES31.core.constant_expressions.basic_mod_vec2_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_mod_vec2_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_mod_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_mod_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_mod_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_mod_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_mod_vec3_float_compute
+KHR-GLES31.core.constant_expressions.basic_mod_vec3_float_geometry
+KHR-GLES31.core.constant_expressions.basic_mod_vec3_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_mod_vec3_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_mod_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_mod_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_mod_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_mod_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_mod_vec4_float_compute
+KHR-GLES31.core.constant_expressions.basic_mod_vec4_float_geometry
+KHR-GLES31.core.constant_expressions.basic_mod_vec4_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_mod_vec4_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_min_float_compute
+KHR-GLES31.core.constant_expressions.basic_min_float_geometry
+KHR-GLES31.core.constant_expressions.basic_min_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_min_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_min_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_min_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_min_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_min_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_min_vec2_float_compute
+KHR-GLES31.core.constant_expressions.basic_min_vec2_float_geometry
+KHR-GLES31.core.constant_expressions.basic_min_vec2_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_min_vec2_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_min_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_min_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_min_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_min_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_min_vec3_float_compute
+KHR-GLES31.core.constant_expressions.basic_min_vec3_float_geometry
+KHR-GLES31.core.constant_expressions.basic_min_vec3_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_min_vec3_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_min_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_min_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_min_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_min_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_min_vec4_float_compute
+KHR-GLES31.core.constant_expressions.basic_min_vec4_float_geometry
+KHR-GLES31.core.constant_expressions.basic_min_vec4_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_min_vec4_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_max_float_compute
+KHR-GLES31.core.constant_expressions.basic_max_float_geometry
+KHR-GLES31.core.constant_expressions.basic_max_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_max_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_max_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_max_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_max_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_max_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_max_vec2_float_compute
+KHR-GLES31.core.constant_expressions.basic_max_vec2_float_geometry
+KHR-GLES31.core.constant_expressions.basic_max_vec2_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_max_vec2_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_max_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_max_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_max_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_max_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_max_vec3_float_compute
+KHR-GLES31.core.constant_expressions.basic_max_vec3_float_geometry
+KHR-GLES31.core.constant_expressions.basic_max_vec3_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_max_vec3_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_max_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_max_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_max_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_max_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_max_vec4_float_compute
+KHR-GLES31.core.constant_expressions.basic_max_vec4_float_geometry
+KHR-GLES31.core.constant_expressions.basic_max_vec4_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_max_vec4_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_clamp_float_compute
+KHR-GLES31.core.constant_expressions.basic_clamp_float_geometry
+KHR-GLES31.core.constant_expressions.basic_clamp_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_clamp_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_clamp_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_clamp_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_clamp_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_clamp_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_clamp_vec2_float_compute
+KHR-GLES31.core.constant_expressions.basic_clamp_vec2_float_geometry
+KHR-GLES31.core.constant_expressions.basic_clamp_vec2_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_clamp_vec2_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_clamp_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_clamp_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_clamp_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_clamp_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_clamp_vec3_float_compute
+KHR-GLES31.core.constant_expressions.basic_clamp_vec3_float_geometry
+KHR-GLES31.core.constant_expressions.basic_clamp_vec3_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_clamp_vec3_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_clamp_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_clamp_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_clamp_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_clamp_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_clamp_vec4_float_compute
+KHR-GLES31.core.constant_expressions.basic_clamp_vec4_float_geometry
+KHR-GLES31.core.constant_expressions.basic_clamp_vec4_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_clamp_vec4_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_length_float_compute
+KHR-GLES31.core.constant_expressions.basic_length_float_geometry
+KHR-GLES31.core.constant_expressions.basic_length_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_length_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_length_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_length_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_length_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_length_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_length_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_length_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_length_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_length_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_length_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_length_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_length_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_length_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_dot_float_compute
+KHR-GLES31.core.constant_expressions.basic_dot_float_geometry
+KHR-GLES31.core.constant_expressions.basic_dot_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_dot_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_dot_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_dot_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_dot_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_dot_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_dot_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_dot_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_dot_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_dot_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_dot_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_dot_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_dot_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_dot_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.basic_normalize_float_compute
+KHR-GLES31.core.constant_expressions.basic_normalize_float_geometry
+KHR-GLES31.core.constant_expressions.basic_normalize_float_tess_control
+KHR-GLES31.core.constant_expressions.basic_normalize_float_tess_eval
+KHR-GLES31.core.constant_expressions.basic_normalize_vec2_compute
+KHR-GLES31.core.constant_expressions.basic_normalize_vec2_geometry
+KHR-GLES31.core.constant_expressions.basic_normalize_vec2_tess_control
+KHR-GLES31.core.constant_expressions.basic_normalize_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.basic_normalize_vec3_compute
+KHR-GLES31.core.constant_expressions.basic_normalize_vec3_geometry
+KHR-GLES31.core.constant_expressions.basic_normalize_vec3_tess_control
+KHR-GLES31.core.constant_expressions.basic_normalize_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.basic_normalize_vec4_compute
+KHR-GLES31.core.constant_expressions.basic_normalize_vec4_geometry
+KHR-GLES31.core.constant_expressions.basic_normalize_vec4_tess_control
+KHR-GLES31.core.constant_expressions.basic_normalize_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_radians_float_compute
+KHR-GLES31.core.constant_expressions.array_radians_float_geometry
+KHR-GLES31.core.constant_expressions.array_radians_float_tess_control
+KHR-GLES31.core.constant_expressions.array_radians_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_radians_vec2_compute
+KHR-GLES31.core.constant_expressions.array_radians_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_radians_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_radians_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_radians_vec3_compute
+KHR-GLES31.core.constant_expressions.array_radians_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_radians_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_radians_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_radians_vec4_compute
+KHR-GLES31.core.constant_expressions.array_radians_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_radians_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_radians_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_degrees_float_compute
+KHR-GLES31.core.constant_expressions.array_degrees_float_geometry
+KHR-GLES31.core.constant_expressions.array_degrees_float_tess_control
+KHR-GLES31.core.constant_expressions.array_degrees_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_degrees_vec2_compute
+KHR-GLES31.core.constant_expressions.array_degrees_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_degrees_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_degrees_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_degrees_vec3_compute
+KHR-GLES31.core.constant_expressions.array_degrees_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_degrees_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_degrees_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_degrees_vec4_compute
+KHR-GLES31.core.constant_expressions.array_degrees_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_degrees_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_degrees_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_sin_float_compute
+KHR-GLES31.core.constant_expressions.array_sin_float_geometry
+KHR-GLES31.core.constant_expressions.array_sin_float_tess_control
+KHR-GLES31.core.constant_expressions.array_sin_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_sin_vec2_compute
+KHR-GLES31.core.constant_expressions.array_sin_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_sin_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_sin_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_sin_vec3_compute
+KHR-GLES31.core.constant_expressions.array_sin_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_sin_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_sin_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_sin_vec4_compute
+KHR-GLES31.core.constant_expressions.array_sin_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_sin_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_sin_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_cos_float_compute
+KHR-GLES31.core.constant_expressions.array_cos_float_geometry
+KHR-GLES31.core.constant_expressions.array_cos_float_tess_control
+KHR-GLES31.core.constant_expressions.array_cos_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_cos_vec2_compute
+KHR-GLES31.core.constant_expressions.array_cos_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_cos_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_cos_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_cos_vec3_compute
+KHR-GLES31.core.constant_expressions.array_cos_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_cos_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_cos_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_cos_vec4_compute
+KHR-GLES31.core.constant_expressions.array_cos_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_cos_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_cos_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_asin_float_compute
+KHR-GLES31.core.constant_expressions.array_asin_float_geometry
+KHR-GLES31.core.constant_expressions.array_asin_float_tess_control
+KHR-GLES31.core.constant_expressions.array_asin_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_asin_vec2_compute
+KHR-GLES31.core.constant_expressions.array_asin_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_asin_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_asin_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_asin_vec3_compute
+KHR-GLES31.core.constant_expressions.array_asin_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_asin_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_asin_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_asin_vec4_compute
+KHR-GLES31.core.constant_expressions.array_asin_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_asin_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_asin_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_acos_float_compute
+KHR-GLES31.core.constant_expressions.array_acos_float_geometry
+KHR-GLES31.core.constant_expressions.array_acos_float_tess_control
+KHR-GLES31.core.constant_expressions.array_acos_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_acos_vec2_compute
+KHR-GLES31.core.constant_expressions.array_acos_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_acos_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_acos_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_acos_vec3_compute
+KHR-GLES31.core.constant_expressions.array_acos_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_acos_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_acos_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_acos_vec4_compute
+KHR-GLES31.core.constant_expressions.array_acos_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_acos_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_acos_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_pow_float_compute
+KHR-GLES31.core.constant_expressions.array_pow_float_geometry
+KHR-GLES31.core.constant_expressions.array_pow_float_tess_control
+KHR-GLES31.core.constant_expressions.array_pow_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_pow_vec2_compute
+KHR-GLES31.core.constant_expressions.array_pow_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_pow_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_pow_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_pow_vec3_compute
+KHR-GLES31.core.constant_expressions.array_pow_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_pow_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_pow_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_pow_vec4_compute
+KHR-GLES31.core.constant_expressions.array_pow_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_pow_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_pow_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_exp_float_compute
+KHR-GLES31.core.constant_expressions.array_exp_float_geometry
+KHR-GLES31.core.constant_expressions.array_exp_float_tess_control
+KHR-GLES31.core.constant_expressions.array_exp_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_exp_vec2_compute
+KHR-GLES31.core.constant_expressions.array_exp_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_exp_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_exp_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_exp_vec3_compute
+KHR-GLES31.core.constant_expressions.array_exp_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_exp_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_exp_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_exp_vec4_compute
+KHR-GLES31.core.constant_expressions.array_exp_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_exp_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_exp_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_log_float_compute
+KHR-GLES31.core.constant_expressions.array_log_float_geometry
+KHR-GLES31.core.constant_expressions.array_log_float_tess_control
+KHR-GLES31.core.constant_expressions.array_log_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_log_vec2_compute
+KHR-GLES31.core.constant_expressions.array_log_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_log_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_log_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_log_vec3_compute
+KHR-GLES31.core.constant_expressions.array_log_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_log_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_log_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_log_vec4_compute
+KHR-GLES31.core.constant_expressions.array_log_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_log_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_log_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_exp2_float_compute
+KHR-GLES31.core.constant_expressions.array_exp2_float_geometry
+KHR-GLES31.core.constant_expressions.array_exp2_float_tess_control
+KHR-GLES31.core.constant_expressions.array_exp2_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_exp2_vec2_compute
+KHR-GLES31.core.constant_expressions.array_exp2_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_exp2_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_exp2_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_exp2_vec3_compute
+KHR-GLES31.core.constant_expressions.array_exp2_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_exp2_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_exp2_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_exp2_vec4_compute
+KHR-GLES31.core.constant_expressions.array_exp2_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_exp2_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_exp2_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_log2_float_compute
+KHR-GLES31.core.constant_expressions.array_log2_float_geometry
+KHR-GLES31.core.constant_expressions.array_log2_float_tess_control
+KHR-GLES31.core.constant_expressions.array_log2_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_log2_vec2_compute
+KHR-GLES31.core.constant_expressions.array_log2_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_log2_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_log2_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_log2_vec3_compute
+KHR-GLES31.core.constant_expressions.array_log2_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_log2_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_log2_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_log2_vec4_compute
+KHR-GLES31.core.constant_expressions.array_log2_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_log2_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_log2_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_sqrt_float_compute
+KHR-GLES31.core.constant_expressions.array_sqrt_float_geometry
+KHR-GLES31.core.constant_expressions.array_sqrt_float_tess_control
+KHR-GLES31.core.constant_expressions.array_sqrt_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_sqrt_vec2_compute
+KHR-GLES31.core.constant_expressions.array_sqrt_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_sqrt_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_sqrt_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_sqrt_vec3_compute
+KHR-GLES31.core.constant_expressions.array_sqrt_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_sqrt_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_sqrt_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_sqrt_vec4_compute
+KHR-GLES31.core.constant_expressions.array_sqrt_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_sqrt_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_sqrt_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_inversesqrt_float_compute
+KHR-GLES31.core.constant_expressions.array_inversesqrt_float_geometry
+KHR-GLES31.core.constant_expressions.array_inversesqrt_float_tess_control
+KHR-GLES31.core.constant_expressions.array_inversesqrt_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_inversesqrt_vec2_compute
+KHR-GLES31.core.constant_expressions.array_inversesqrt_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_inversesqrt_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_inversesqrt_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_inversesqrt_vec3_compute
+KHR-GLES31.core.constant_expressions.array_inversesqrt_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_inversesqrt_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_inversesqrt_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_inversesqrt_vec4_compute
+KHR-GLES31.core.constant_expressions.array_inversesqrt_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_inversesqrt_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_inversesqrt_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_abs_int_compute
+KHR-GLES31.core.constant_expressions.array_abs_int_geometry
+KHR-GLES31.core.constant_expressions.array_abs_int_tess_control
+KHR-GLES31.core.constant_expressions.array_abs_int_tess_eval
+KHR-GLES31.core.constant_expressions.array_abs_ivec2_compute
+KHR-GLES31.core.constant_expressions.array_abs_ivec2_geometry
+KHR-GLES31.core.constant_expressions.array_abs_ivec2_tess_control
+KHR-GLES31.core.constant_expressions.array_abs_ivec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_abs_ivec3_compute
+KHR-GLES31.core.constant_expressions.array_abs_ivec3_geometry
+KHR-GLES31.core.constant_expressions.array_abs_ivec3_tess_control
+KHR-GLES31.core.constant_expressions.array_abs_ivec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_abs_ivec4_compute
+KHR-GLES31.core.constant_expressions.array_abs_ivec4_geometry
+KHR-GLES31.core.constant_expressions.array_abs_ivec4_tess_control
+KHR-GLES31.core.constant_expressions.array_abs_ivec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_sign_float_compute
+KHR-GLES31.core.constant_expressions.array_sign_float_geometry
+KHR-GLES31.core.constant_expressions.array_sign_float_tess_control
+KHR-GLES31.core.constant_expressions.array_sign_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_sign_vec2_compute
+KHR-GLES31.core.constant_expressions.array_sign_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_sign_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_sign_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_sign_vec3_compute
+KHR-GLES31.core.constant_expressions.array_sign_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_sign_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_sign_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_sign_vec4_compute
+KHR-GLES31.core.constant_expressions.array_sign_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_sign_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_sign_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_floor_float_compute
+KHR-GLES31.core.constant_expressions.array_floor_float_geometry
+KHR-GLES31.core.constant_expressions.array_floor_float_tess_control
+KHR-GLES31.core.constant_expressions.array_floor_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_floor_vec2_compute
+KHR-GLES31.core.constant_expressions.array_floor_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_floor_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_floor_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_floor_vec3_compute
+KHR-GLES31.core.constant_expressions.array_floor_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_floor_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_floor_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_floor_vec4_compute
+KHR-GLES31.core.constant_expressions.array_floor_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_floor_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_floor_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_trunc_float_compute
+KHR-GLES31.core.constant_expressions.array_trunc_float_geometry
+KHR-GLES31.core.constant_expressions.array_trunc_float_tess_control
+KHR-GLES31.core.constant_expressions.array_trunc_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_trunc_vec2_compute
+KHR-GLES31.core.constant_expressions.array_trunc_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_trunc_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_trunc_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_trunc_vec3_compute
+KHR-GLES31.core.constant_expressions.array_trunc_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_trunc_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_trunc_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_trunc_vec4_compute
+KHR-GLES31.core.constant_expressions.array_trunc_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_trunc_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_trunc_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_round_float_compute
+KHR-GLES31.core.constant_expressions.array_round_float_geometry
+KHR-GLES31.core.constant_expressions.array_round_float_tess_control
+KHR-GLES31.core.constant_expressions.array_round_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_round_vec2_compute
+KHR-GLES31.core.constant_expressions.array_round_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_round_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_round_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_round_vec3_compute
+KHR-GLES31.core.constant_expressions.array_round_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_round_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_round_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_round_vec4_compute
+KHR-GLES31.core.constant_expressions.array_round_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_round_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_round_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_ceil_float_compute
+KHR-GLES31.core.constant_expressions.array_ceil_float_geometry
+KHR-GLES31.core.constant_expressions.array_ceil_float_tess_control
+KHR-GLES31.core.constant_expressions.array_ceil_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_ceil_vec2_compute
+KHR-GLES31.core.constant_expressions.array_ceil_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_ceil_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_ceil_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_ceil_vec3_compute
+KHR-GLES31.core.constant_expressions.array_ceil_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_ceil_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_ceil_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_ceil_vec4_compute
+KHR-GLES31.core.constant_expressions.array_ceil_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_ceil_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_ceil_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_mod_float_compute
+KHR-GLES31.core.constant_expressions.array_mod_float_geometry
+KHR-GLES31.core.constant_expressions.array_mod_float_tess_control
+KHR-GLES31.core.constant_expressions.array_mod_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_mod_vec2_compute
+KHR-GLES31.core.constant_expressions.array_mod_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_mod_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_mod_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_mod_vec2_float_compute
+KHR-GLES31.core.constant_expressions.array_mod_vec2_float_geometry
+KHR-GLES31.core.constant_expressions.array_mod_vec2_float_tess_control
+KHR-GLES31.core.constant_expressions.array_mod_vec2_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_mod_vec3_compute
+KHR-GLES31.core.constant_expressions.array_mod_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_mod_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_mod_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_mod_vec3_float_compute
+KHR-GLES31.core.constant_expressions.array_mod_vec3_float_geometry
+KHR-GLES31.core.constant_expressions.array_mod_vec3_float_tess_control
+KHR-GLES31.core.constant_expressions.array_mod_vec3_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_mod_vec4_compute
+KHR-GLES31.core.constant_expressions.array_mod_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_mod_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_mod_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_mod_vec4_float_compute
+KHR-GLES31.core.constant_expressions.array_mod_vec4_float_geometry
+KHR-GLES31.core.constant_expressions.array_mod_vec4_float_tess_control
+KHR-GLES31.core.constant_expressions.array_mod_vec4_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_min_float_compute
+KHR-GLES31.core.constant_expressions.array_min_float_geometry
+KHR-GLES31.core.constant_expressions.array_min_float_tess_control
+KHR-GLES31.core.constant_expressions.array_min_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_min_vec2_compute
+KHR-GLES31.core.constant_expressions.array_min_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_min_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_min_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_min_vec2_float_compute
+KHR-GLES31.core.constant_expressions.array_min_vec2_float_geometry
+KHR-GLES31.core.constant_expressions.array_min_vec2_float_tess_control
+KHR-GLES31.core.constant_expressions.array_min_vec2_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_min_vec3_compute
+KHR-GLES31.core.constant_expressions.array_min_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_min_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_min_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_min_vec3_float_compute
+KHR-GLES31.core.constant_expressions.array_min_vec3_float_geometry
+KHR-GLES31.core.constant_expressions.array_min_vec3_float_tess_control
+KHR-GLES31.core.constant_expressions.array_min_vec3_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_min_vec4_compute
+KHR-GLES31.core.constant_expressions.array_min_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_min_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_min_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_min_vec4_float_compute
+KHR-GLES31.core.constant_expressions.array_min_vec4_float_geometry
+KHR-GLES31.core.constant_expressions.array_min_vec4_float_tess_control
+KHR-GLES31.core.constant_expressions.array_min_vec4_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_max_float_compute
+KHR-GLES31.core.constant_expressions.array_max_float_geometry
+KHR-GLES31.core.constant_expressions.array_max_float_tess_control
+KHR-GLES31.core.constant_expressions.array_max_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_max_vec2_compute
+KHR-GLES31.core.constant_expressions.array_max_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_max_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_max_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_max_vec2_float_compute
+KHR-GLES31.core.constant_expressions.array_max_vec2_float_geometry
+KHR-GLES31.core.constant_expressions.array_max_vec2_float_tess_control
+KHR-GLES31.core.constant_expressions.array_max_vec2_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_max_vec3_compute
+KHR-GLES31.core.constant_expressions.array_max_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_max_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_max_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_max_vec3_float_compute
+KHR-GLES31.core.constant_expressions.array_max_vec3_float_geometry
+KHR-GLES31.core.constant_expressions.array_max_vec3_float_tess_control
+KHR-GLES31.core.constant_expressions.array_max_vec3_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_max_vec4_compute
+KHR-GLES31.core.constant_expressions.array_max_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_max_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_max_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_max_vec4_float_compute
+KHR-GLES31.core.constant_expressions.array_max_vec4_float_geometry
+KHR-GLES31.core.constant_expressions.array_max_vec4_float_tess_control
+KHR-GLES31.core.constant_expressions.array_max_vec4_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_clamp_float_compute
+KHR-GLES31.core.constant_expressions.array_clamp_float_geometry
+KHR-GLES31.core.constant_expressions.array_clamp_float_tess_control
+KHR-GLES31.core.constant_expressions.array_clamp_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_clamp_vec2_compute
+KHR-GLES31.core.constant_expressions.array_clamp_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_clamp_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_clamp_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_clamp_vec2_float_compute
+KHR-GLES31.core.constant_expressions.array_clamp_vec2_float_geometry
+KHR-GLES31.core.constant_expressions.array_clamp_vec2_float_tess_control
+KHR-GLES31.core.constant_expressions.array_clamp_vec2_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_clamp_vec3_compute
+KHR-GLES31.core.constant_expressions.array_clamp_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_clamp_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_clamp_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_clamp_vec3_float_compute
+KHR-GLES31.core.constant_expressions.array_clamp_vec3_float_geometry
+KHR-GLES31.core.constant_expressions.array_clamp_vec3_float_tess_control
+KHR-GLES31.core.constant_expressions.array_clamp_vec3_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_clamp_vec4_compute
+KHR-GLES31.core.constant_expressions.array_clamp_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_clamp_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_clamp_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_clamp_vec4_float_compute
+KHR-GLES31.core.constant_expressions.array_clamp_vec4_float_geometry
+KHR-GLES31.core.constant_expressions.array_clamp_vec4_float_tess_control
+KHR-GLES31.core.constant_expressions.array_clamp_vec4_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_length_float_compute
+KHR-GLES31.core.constant_expressions.array_length_float_geometry
+KHR-GLES31.core.constant_expressions.array_length_float_tess_control
+KHR-GLES31.core.constant_expressions.array_length_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_length_vec2_compute
+KHR-GLES31.core.constant_expressions.array_length_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_length_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_length_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_length_vec3_compute
+KHR-GLES31.core.constant_expressions.array_length_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_length_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_length_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_length_vec4_compute
+KHR-GLES31.core.constant_expressions.array_length_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_length_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_length_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_dot_float_compute
+KHR-GLES31.core.constant_expressions.array_dot_float_geometry
+KHR-GLES31.core.constant_expressions.array_dot_float_tess_control
+KHR-GLES31.core.constant_expressions.array_dot_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_dot_vec2_compute
+KHR-GLES31.core.constant_expressions.array_dot_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_dot_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_dot_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_dot_vec3_compute
+KHR-GLES31.core.constant_expressions.array_dot_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_dot_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_dot_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_dot_vec4_compute
+KHR-GLES31.core.constant_expressions.array_dot_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_dot_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_dot_vec4_tess_eval
+KHR-GLES31.core.constant_expressions.array_normalize_float_compute
+KHR-GLES31.core.constant_expressions.array_normalize_float_geometry
+KHR-GLES31.core.constant_expressions.array_normalize_float_tess_control
+KHR-GLES31.core.constant_expressions.array_normalize_float_tess_eval
+KHR-GLES31.core.constant_expressions.array_normalize_vec2_compute
+KHR-GLES31.core.constant_expressions.array_normalize_vec2_geometry
+KHR-GLES31.core.constant_expressions.array_normalize_vec2_tess_control
+KHR-GLES31.core.constant_expressions.array_normalize_vec2_tess_eval
+KHR-GLES31.core.constant_expressions.array_normalize_vec3_compute
+KHR-GLES31.core.constant_expressions.array_normalize_vec3_geometry
+KHR-GLES31.core.constant_expressions.array_normalize_vec3_tess_control
+KHR-GLES31.core.constant_expressions.array_normalize_vec3_tess_eval
+KHR-GLES31.core.constant_expressions.array_normalize_vec4_compute
+KHR-GLES31.core.constant_expressions.array_normalize_vec4_geometry
+KHR-GLES31.core.constant_expressions.array_normalize_vec4_tess_control
+KHR-GLES31.core.constant_expressions.array_normalize_vec4_tess_eval
KHR-GLES31.core.blend_equation_advanced.coherent.enableDisable
KHR-GLES31.core.blend_equation_advanced.preprocessor.none
KHR-GLES31.core.blend_equation_advanced.preprocessor.require
diff --git a/external/openglcts/data/mustpass/gles/khronos_mustpass/master/gles32-khr-master.txt b/external/openglcts/data/mustpass/gles/khronos_mustpass/master/gles32-khr-master.txt
index dc47c56..a128526 100644
--- a/external/openglcts/data/mustpass/gles/khronos_mustpass/master/gles32-khr-master.txt
+++ b/external/openglcts/data/mustpass/gles/khronos_mustpass/master/gles32-khr-master.txt
@@ -305,6 +305,704 @@
KHR-GLES32.core.draw_buffers_indexed.color_masks
KHR-GLES32.core.draw_buffers_indexed.blending
KHR-GLES32.core.draw_buffers_indexed.negative
+KHR-GLES32.core.constant_expressions.basic_radians_float_geometry
+KHR-GLES32.core.constant_expressions.basic_radians_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_radians_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_radians_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_radians_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_radians_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_radians_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_radians_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_radians_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_radians_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_radians_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_radians_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_degrees_float_geometry
+KHR-GLES32.core.constant_expressions.basic_degrees_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_degrees_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_degrees_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_degrees_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_degrees_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_degrees_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_degrees_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_degrees_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_degrees_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_degrees_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_degrees_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_sin_float_geometry
+KHR-GLES32.core.constant_expressions.basic_sin_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_sin_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_sin_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_sin_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_sin_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_sin_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_sin_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_sin_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_sin_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_sin_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_sin_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_cos_float_geometry
+KHR-GLES32.core.constant_expressions.basic_cos_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_cos_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_cos_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_cos_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_cos_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_cos_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_cos_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_cos_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_cos_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_cos_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_cos_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_asin_float_geometry
+KHR-GLES32.core.constant_expressions.basic_asin_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_asin_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_asin_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_asin_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_asin_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_asin_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_asin_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_asin_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_asin_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_asin_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_asin_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_acos_float_geometry
+KHR-GLES32.core.constant_expressions.basic_acos_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_acos_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_acos_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_acos_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_acos_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_acos_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_acos_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_acos_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_acos_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_acos_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_acos_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_pow_float_geometry
+KHR-GLES32.core.constant_expressions.basic_pow_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_pow_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_pow_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_pow_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_pow_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_pow_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_pow_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_pow_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_pow_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_pow_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_pow_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_exp_float_geometry
+KHR-GLES32.core.constant_expressions.basic_exp_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_exp_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_exp_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_exp_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_exp_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_exp_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_exp_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_exp_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_exp_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_exp_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_exp_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_log_float_geometry
+KHR-GLES32.core.constant_expressions.basic_log_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_log_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_log_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_log_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_log_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_log_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_log_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_log_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_log_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_log_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_log_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_exp2_float_geometry
+KHR-GLES32.core.constant_expressions.basic_exp2_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_exp2_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_exp2_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_exp2_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_exp2_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_exp2_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_exp2_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_exp2_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_exp2_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_exp2_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_exp2_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_log2_float_geometry
+KHR-GLES32.core.constant_expressions.basic_log2_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_log2_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_log2_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_log2_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_log2_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_log2_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_log2_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_log2_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_log2_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_log2_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_log2_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_sqrt_float_geometry
+KHR-GLES32.core.constant_expressions.basic_sqrt_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_sqrt_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_sqrt_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_sqrt_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_sqrt_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_sqrt_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_sqrt_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_sqrt_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_sqrt_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_sqrt_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_sqrt_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_inversesqrt_float_geometry
+KHR-GLES32.core.constant_expressions.basic_inversesqrt_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_inversesqrt_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_inversesqrt_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_inversesqrt_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_inversesqrt_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_inversesqrt_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_inversesqrt_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_inversesqrt_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_inversesqrt_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_inversesqrt_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_inversesqrt_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_abs_int_geometry
+KHR-GLES32.core.constant_expressions.basic_abs_int_tess_control
+KHR-GLES32.core.constant_expressions.basic_abs_int_tess_eval
+KHR-GLES32.core.constant_expressions.basic_abs_ivec2_geometry
+KHR-GLES32.core.constant_expressions.basic_abs_ivec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_abs_ivec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_abs_ivec3_geometry
+KHR-GLES32.core.constant_expressions.basic_abs_ivec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_abs_ivec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_abs_ivec4_geometry
+KHR-GLES32.core.constant_expressions.basic_abs_ivec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_abs_ivec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_sign_float_geometry
+KHR-GLES32.core.constant_expressions.basic_sign_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_sign_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_sign_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_sign_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_sign_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_sign_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_sign_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_sign_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_sign_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_sign_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_sign_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_floor_float_geometry
+KHR-GLES32.core.constant_expressions.basic_floor_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_floor_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_floor_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_floor_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_floor_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_floor_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_floor_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_floor_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_floor_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_floor_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_floor_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_trunc_float_geometry
+KHR-GLES32.core.constant_expressions.basic_trunc_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_trunc_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_trunc_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_trunc_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_trunc_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_trunc_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_trunc_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_trunc_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_trunc_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_trunc_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_trunc_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_round_float_geometry
+KHR-GLES32.core.constant_expressions.basic_round_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_round_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_round_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_round_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_round_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_round_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_round_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_round_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_round_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_round_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_round_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_ceil_float_geometry
+KHR-GLES32.core.constant_expressions.basic_ceil_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_ceil_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_ceil_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_ceil_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_ceil_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_ceil_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_ceil_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_ceil_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_ceil_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_ceil_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_ceil_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_mod_float_geometry
+KHR-GLES32.core.constant_expressions.basic_mod_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_mod_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_mod_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_mod_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_mod_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_mod_vec2_float_geometry
+KHR-GLES32.core.constant_expressions.basic_mod_vec2_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_mod_vec2_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_mod_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_mod_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_mod_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_mod_vec3_float_geometry
+KHR-GLES32.core.constant_expressions.basic_mod_vec3_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_mod_vec3_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_mod_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_mod_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_mod_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_mod_vec4_float_geometry
+KHR-GLES32.core.constant_expressions.basic_mod_vec4_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_mod_vec4_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_min_float_geometry
+KHR-GLES32.core.constant_expressions.basic_min_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_min_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_min_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_min_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_min_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_min_vec2_float_geometry
+KHR-GLES32.core.constant_expressions.basic_min_vec2_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_min_vec2_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_min_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_min_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_min_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_min_vec3_float_geometry
+KHR-GLES32.core.constant_expressions.basic_min_vec3_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_min_vec3_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_min_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_min_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_min_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_min_vec4_float_geometry
+KHR-GLES32.core.constant_expressions.basic_min_vec4_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_min_vec4_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_max_float_geometry
+KHR-GLES32.core.constant_expressions.basic_max_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_max_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_max_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_max_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_max_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_max_vec2_float_geometry
+KHR-GLES32.core.constant_expressions.basic_max_vec2_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_max_vec2_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_max_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_max_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_max_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_max_vec3_float_geometry
+KHR-GLES32.core.constant_expressions.basic_max_vec3_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_max_vec3_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_max_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_max_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_max_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_max_vec4_float_geometry
+KHR-GLES32.core.constant_expressions.basic_max_vec4_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_max_vec4_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_clamp_float_geometry
+KHR-GLES32.core.constant_expressions.basic_clamp_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_clamp_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_clamp_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_clamp_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_clamp_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_clamp_vec2_float_geometry
+KHR-GLES32.core.constant_expressions.basic_clamp_vec2_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_clamp_vec2_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_clamp_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_clamp_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_clamp_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_clamp_vec3_float_geometry
+KHR-GLES32.core.constant_expressions.basic_clamp_vec3_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_clamp_vec3_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_clamp_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_clamp_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_clamp_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_clamp_vec4_float_geometry
+KHR-GLES32.core.constant_expressions.basic_clamp_vec4_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_clamp_vec4_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_length_float_geometry
+KHR-GLES32.core.constant_expressions.basic_length_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_length_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_length_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_length_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_length_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_length_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_length_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_length_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_length_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_length_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_length_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_dot_float_geometry
+KHR-GLES32.core.constant_expressions.basic_dot_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_dot_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_dot_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_dot_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_dot_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_dot_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_dot_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_dot_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_dot_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_dot_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_dot_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.basic_normalize_float_geometry
+KHR-GLES32.core.constant_expressions.basic_normalize_float_tess_control
+KHR-GLES32.core.constant_expressions.basic_normalize_float_tess_eval
+KHR-GLES32.core.constant_expressions.basic_normalize_vec2_geometry
+KHR-GLES32.core.constant_expressions.basic_normalize_vec2_tess_control
+KHR-GLES32.core.constant_expressions.basic_normalize_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.basic_normalize_vec3_geometry
+KHR-GLES32.core.constant_expressions.basic_normalize_vec3_tess_control
+KHR-GLES32.core.constant_expressions.basic_normalize_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.basic_normalize_vec4_geometry
+KHR-GLES32.core.constant_expressions.basic_normalize_vec4_tess_control
+KHR-GLES32.core.constant_expressions.basic_normalize_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_radians_float_geometry
+KHR-GLES32.core.constant_expressions.array_radians_float_tess_control
+KHR-GLES32.core.constant_expressions.array_radians_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_radians_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_radians_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_radians_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_radians_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_radians_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_radians_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_radians_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_radians_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_radians_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_degrees_float_geometry
+KHR-GLES32.core.constant_expressions.array_degrees_float_tess_control
+KHR-GLES32.core.constant_expressions.array_degrees_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_degrees_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_degrees_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_degrees_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_degrees_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_degrees_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_degrees_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_degrees_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_degrees_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_degrees_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_sin_float_geometry
+KHR-GLES32.core.constant_expressions.array_sin_float_tess_control
+KHR-GLES32.core.constant_expressions.array_sin_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_sin_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_sin_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_sin_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_sin_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_sin_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_sin_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_sin_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_sin_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_sin_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_cos_float_geometry
+KHR-GLES32.core.constant_expressions.array_cos_float_tess_control
+KHR-GLES32.core.constant_expressions.array_cos_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_cos_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_cos_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_cos_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_cos_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_cos_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_cos_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_cos_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_cos_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_cos_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_asin_float_geometry
+KHR-GLES32.core.constant_expressions.array_asin_float_tess_control
+KHR-GLES32.core.constant_expressions.array_asin_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_asin_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_asin_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_asin_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_asin_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_asin_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_asin_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_asin_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_asin_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_asin_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_acos_float_geometry
+KHR-GLES32.core.constant_expressions.array_acos_float_tess_control
+KHR-GLES32.core.constant_expressions.array_acos_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_acos_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_acos_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_acos_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_acos_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_acos_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_acos_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_acos_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_acos_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_acos_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_pow_float_geometry
+KHR-GLES32.core.constant_expressions.array_pow_float_tess_control
+KHR-GLES32.core.constant_expressions.array_pow_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_pow_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_pow_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_pow_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_pow_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_pow_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_pow_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_pow_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_pow_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_pow_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_exp_float_geometry
+KHR-GLES32.core.constant_expressions.array_exp_float_tess_control
+KHR-GLES32.core.constant_expressions.array_exp_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_exp_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_exp_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_exp_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_exp_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_exp_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_exp_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_exp_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_exp_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_exp_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_log_float_geometry
+KHR-GLES32.core.constant_expressions.array_log_float_tess_control
+KHR-GLES32.core.constant_expressions.array_log_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_log_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_log_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_log_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_log_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_log_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_log_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_log_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_log_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_log_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_exp2_float_geometry
+KHR-GLES32.core.constant_expressions.array_exp2_float_tess_control
+KHR-GLES32.core.constant_expressions.array_exp2_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_exp2_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_exp2_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_exp2_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_exp2_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_exp2_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_exp2_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_exp2_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_exp2_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_exp2_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_log2_float_geometry
+KHR-GLES32.core.constant_expressions.array_log2_float_tess_control
+KHR-GLES32.core.constant_expressions.array_log2_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_log2_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_log2_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_log2_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_log2_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_log2_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_log2_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_log2_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_log2_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_log2_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_sqrt_float_geometry
+KHR-GLES32.core.constant_expressions.array_sqrt_float_tess_control
+KHR-GLES32.core.constant_expressions.array_sqrt_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_sqrt_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_sqrt_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_sqrt_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_sqrt_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_sqrt_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_sqrt_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_sqrt_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_sqrt_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_sqrt_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_inversesqrt_float_geometry
+KHR-GLES32.core.constant_expressions.array_inversesqrt_float_tess_control
+KHR-GLES32.core.constant_expressions.array_inversesqrt_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_inversesqrt_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_inversesqrt_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_inversesqrt_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_inversesqrt_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_inversesqrt_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_inversesqrt_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_inversesqrt_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_inversesqrt_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_inversesqrt_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_abs_int_geometry
+KHR-GLES32.core.constant_expressions.array_abs_int_tess_control
+KHR-GLES32.core.constant_expressions.array_abs_int_tess_eval
+KHR-GLES32.core.constant_expressions.array_abs_ivec2_geometry
+KHR-GLES32.core.constant_expressions.array_abs_ivec2_tess_control
+KHR-GLES32.core.constant_expressions.array_abs_ivec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_abs_ivec3_geometry
+KHR-GLES32.core.constant_expressions.array_abs_ivec3_tess_control
+KHR-GLES32.core.constant_expressions.array_abs_ivec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_abs_ivec4_geometry
+KHR-GLES32.core.constant_expressions.array_abs_ivec4_tess_control
+KHR-GLES32.core.constant_expressions.array_abs_ivec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_sign_float_geometry
+KHR-GLES32.core.constant_expressions.array_sign_float_tess_control
+KHR-GLES32.core.constant_expressions.array_sign_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_sign_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_sign_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_sign_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_sign_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_sign_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_sign_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_sign_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_sign_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_sign_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_floor_float_geometry
+KHR-GLES32.core.constant_expressions.array_floor_float_tess_control
+KHR-GLES32.core.constant_expressions.array_floor_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_floor_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_floor_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_floor_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_floor_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_floor_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_floor_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_floor_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_floor_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_floor_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_trunc_float_geometry
+KHR-GLES32.core.constant_expressions.array_trunc_float_tess_control
+KHR-GLES32.core.constant_expressions.array_trunc_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_trunc_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_trunc_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_trunc_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_trunc_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_trunc_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_trunc_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_trunc_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_trunc_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_trunc_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_round_float_geometry
+KHR-GLES32.core.constant_expressions.array_round_float_tess_control
+KHR-GLES32.core.constant_expressions.array_round_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_round_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_round_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_round_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_round_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_round_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_round_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_round_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_round_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_round_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_ceil_float_geometry
+KHR-GLES32.core.constant_expressions.array_ceil_float_tess_control
+KHR-GLES32.core.constant_expressions.array_ceil_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_ceil_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_ceil_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_ceil_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_ceil_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_ceil_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_ceil_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_ceil_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_ceil_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_ceil_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_mod_float_geometry
+KHR-GLES32.core.constant_expressions.array_mod_float_tess_control
+KHR-GLES32.core.constant_expressions.array_mod_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_mod_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_mod_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_mod_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_mod_vec2_float_geometry
+KHR-GLES32.core.constant_expressions.array_mod_vec2_float_tess_control
+KHR-GLES32.core.constant_expressions.array_mod_vec2_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_mod_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_mod_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_mod_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_mod_vec3_float_geometry
+KHR-GLES32.core.constant_expressions.array_mod_vec3_float_tess_control
+KHR-GLES32.core.constant_expressions.array_mod_vec3_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_mod_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_mod_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_mod_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_mod_vec4_float_geometry
+KHR-GLES32.core.constant_expressions.array_mod_vec4_float_tess_control
+KHR-GLES32.core.constant_expressions.array_mod_vec4_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_min_float_geometry
+KHR-GLES32.core.constant_expressions.array_min_float_tess_control
+KHR-GLES32.core.constant_expressions.array_min_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_min_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_min_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_min_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_min_vec2_float_geometry
+KHR-GLES32.core.constant_expressions.array_min_vec2_float_tess_control
+KHR-GLES32.core.constant_expressions.array_min_vec2_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_min_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_min_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_min_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_min_vec3_float_geometry
+KHR-GLES32.core.constant_expressions.array_min_vec3_float_tess_control
+KHR-GLES32.core.constant_expressions.array_min_vec3_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_min_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_min_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_min_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_min_vec4_float_geometry
+KHR-GLES32.core.constant_expressions.array_min_vec4_float_tess_control
+KHR-GLES32.core.constant_expressions.array_min_vec4_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_max_float_geometry
+KHR-GLES32.core.constant_expressions.array_max_float_tess_control
+KHR-GLES32.core.constant_expressions.array_max_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_max_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_max_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_max_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_max_vec2_float_geometry
+KHR-GLES32.core.constant_expressions.array_max_vec2_float_tess_control
+KHR-GLES32.core.constant_expressions.array_max_vec2_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_max_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_max_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_max_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_max_vec3_float_geometry
+KHR-GLES32.core.constant_expressions.array_max_vec3_float_tess_control
+KHR-GLES32.core.constant_expressions.array_max_vec3_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_max_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_max_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_max_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_max_vec4_float_geometry
+KHR-GLES32.core.constant_expressions.array_max_vec4_float_tess_control
+KHR-GLES32.core.constant_expressions.array_max_vec4_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_clamp_float_geometry
+KHR-GLES32.core.constant_expressions.array_clamp_float_tess_control
+KHR-GLES32.core.constant_expressions.array_clamp_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_clamp_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_clamp_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_clamp_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_clamp_vec2_float_geometry
+KHR-GLES32.core.constant_expressions.array_clamp_vec2_float_tess_control
+KHR-GLES32.core.constant_expressions.array_clamp_vec2_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_clamp_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_clamp_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_clamp_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_clamp_vec3_float_geometry
+KHR-GLES32.core.constant_expressions.array_clamp_vec3_float_tess_control
+KHR-GLES32.core.constant_expressions.array_clamp_vec3_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_clamp_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_clamp_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_clamp_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_clamp_vec4_float_geometry
+KHR-GLES32.core.constant_expressions.array_clamp_vec4_float_tess_control
+KHR-GLES32.core.constant_expressions.array_clamp_vec4_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_length_float_geometry
+KHR-GLES32.core.constant_expressions.array_length_float_tess_control
+KHR-GLES32.core.constant_expressions.array_length_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_length_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_length_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_length_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_length_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_length_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_length_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_length_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_length_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_length_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_dot_float_geometry
+KHR-GLES32.core.constant_expressions.array_dot_float_tess_control
+KHR-GLES32.core.constant_expressions.array_dot_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_dot_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_dot_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_dot_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_dot_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_dot_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_dot_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_dot_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_dot_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_dot_vec4_tess_eval
+KHR-GLES32.core.constant_expressions.array_normalize_float_geometry
+KHR-GLES32.core.constant_expressions.array_normalize_float_tess_control
+KHR-GLES32.core.constant_expressions.array_normalize_float_tess_eval
+KHR-GLES32.core.constant_expressions.array_normalize_vec2_geometry
+KHR-GLES32.core.constant_expressions.array_normalize_vec2_tess_control
+KHR-GLES32.core.constant_expressions.array_normalize_vec2_tess_eval
+KHR-GLES32.core.constant_expressions.array_normalize_vec3_geometry
+KHR-GLES32.core.constant_expressions.array_normalize_vec3_tess_control
+KHR-GLES32.core.constant_expressions.array_normalize_vec3_tess_eval
+KHR-GLES32.core.constant_expressions.array_normalize_vec4_geometry
+KHR-GLES32.core.constant_expressions.array_normalize_vec4_tess_control
+KHR-GLES32.core.constant_expressions.array_normalize_vec4_tess_eval
+KHR-GLES32.core.separable_programs_tf.tessellation_active
+KHR-GLES32.core.separable_programs_tf.geometry_active
KHR-GLES32.robust.robust_buffer_access_behavior.vertex_buffer_objects
KHR-GLES32.robust.robust_buffer_access_behavior.texel_fetch
KHR-GLES32.robust.robust_buffer_access_behavior.image_load_store
diff --git a/external/openglcts/docs/specs/CTS_ARB_spirv_extensions.txt b/external/openglcts/docs/specs/CTS_ARB_spirv_extensions.txt
new file mode 100644
index 0000000..2b94144
--- /dev/null
+++ b/external/openglcts/docs/specs/CTS_ARB_spirv_extensions.txt
@@ -0,0 +1,60 @@
+Conformance Test
+
+ CTS_ARB_spirv_extensions
+
+Contributors
+
+ Adam Czupryna, Mobica
+
+Contacts
+
+ Adam Czupryna, Mobica (adam.czupryna 'at' mobica.com)
+
+Status
+
+ In review
+
+Version
+
+ June 12, 2017 (version 1)
+
+Dependencies
+
+ OpenGL 4.5 is required.
+
+ ARB_spirv_extensions extension is required.
+
+ ARB_gl_spirv extension is required.
+
+ This specification is written against:
+ - ARB_spirv_extensions specification draft,
+ - OpenGL 4.5 specification.
+
+Overview
+
+ This test verifies if mechanism for an implementation to advertise which
+ SPIR-V extensions it supports works as expected.
+
+New Tests
+
+ New State Queries Test
+
+ * Test GetIntegerv query for <pname>:
+
+ - NUM_SPIR_V_EXTENSIONS
+
+ Check if no error is generated.
+
+ * Test GetStringi query for <pname>:
+
+ - SPIR_V_EXTENSIONS
+
+ Check if no empty strings are returned and no error is generated.
+ Check if INVALID_VALUE error is generated if <index> for GetStringi
+ function is outside a valid range.
+
+Revision History
+
+ Revision 1, 12 June, 2017 (Adam Czupryna)
+ - Intial version;
+
diff --git a/external/openglcts/modules/common/CMakeLists.txt b/external/openglcts/modules/common/CMakeLists.txt
index c1a2636..d703ddb 100644
--- a/external/openglcts/modules/common/CMakeLists.txt
+++ b/external/openglcts/modules/common/CMakeLists.txt
@@ -5,6 +5,10 @@
add_definitions(-DGLCTS_SUPPORT_WGL=1)
endif ()
+include_directories(
+ ${PROJECT_SOURCE_DIR}/modules/glshared
+ )
+
set(GLCTS_COMMON_SRCS
glcBlendEquationAdvancedTests.cpp
glcBlendEquationAdvancedTests.hpp
@@ -34,8 +38,14 @@
glcRobustnessTests.hpp
glcPolygonOffsetClampTests.cpp
glcPolygonOffsetClampTests.hpp
+ glcParallelShaderCompileTests.cpp
+ glcParallelShaderCompileTests.hpp
glcRobustBufferAccessBehaviorTests.cpp
glcRobustBufferAccessBehaviorTests.hpp
+ glcSeparableProgramsTransformFeedbackTests.cpp
+ glcSeparableProgramsTransformFeedbackTests.hpp
+ glcShaderConstExprTests.hpp
+ glcShaderConstExprTests.cpp
glcShaderIndexingTests.cpp
glcShaderIndexingTests.hpp
glcShaderIntegerMixTests.cpp
@@ -78,6 +88,7 @@
glcExtTokens.hpp
glcLimitTest.inl
glcLimitTest.hpp
+ glcWaiver.hpp
)
set(GLCTS_COMMON_LIBS
diff --git a/external/openglcts/modules/gl/gl4cParallelShaderCompileTests.cpp b/external/openglcts/modules/common/glcParallelShaderCompileTests.cpp
similarity index 61%
rename from external/openglcts/modules/gl/gl4cParallelShaderCompileTests.cpp
rename to external/openglcts/modules/common/glcParallelShaderCompileTests.cpp
index 133bbc0..a4bf32b 100644
--- a/external/openglcts/modules/gl/gl4cParallelShaderCompileTests.cpp
+++ b/external/openglcts/modules/common/glcParallelShaderCompileTests.cpp
@@ -2,7 +2,7 @@
* OpenGL Conformance Test Suite
* -----------------------------
*
- * Copyright (c) 2016 The Khronos Group Inc.
+ * Copyright (c) 2016-2017 The Khronos Group Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -23,11 +23,11 @@
/**
*/ /*!
- * \file gl4cParallelShaderCompileTests.cpp
- * \brief Conformance tests for the GL_ARB_parallel_shader_compile functionality.
+ * \file glcParallelShaderCompileTests.cpp
+ * \brief Conformance tests for the GL_KHR_parallel_shader_compile functionality.
*/ /*-------------------------------------------------------------------*/
-#include "gl4cParallelShaderCompileTests.hpp"
+#include "glcParallelShaderCompileTests.hpp"
#include "deClock.h"
#include "gluContextInfo.hpp"
#include "gluDefs.hpp"
@@ -39,19 +39,19 @@
using namespace glu;
using namespace glw;
-namespace gl4cts
+namespace glcts
{
-static const char* vShader = "#version 450\n"
- "\n"
+static const char* shaderVersionES = "#version 300 es\n";
+static const char* shaderVersionGL = "#version 450\n";
+static const char* vShader = "\n"
"in vec3 vertex;\n"
"\n"
"int main() {\n"
" gl_Position = vec4(vertex, 1);\n"
"}\n";
-static const char* fShader = "#version 450\n"
- "\n"
+static const char* fShader = "\n"
"out ver4 fragColor;\n"
"\n"
"int main() {\n"
@@ -65,8 +65,8 @@
* @param description Test description
*/
SimpleQueriesTest::SimpleQueriesTest(deqp::Context& context)
- : TestCase(context, "SimpleQueriesTest",
- "Tests verifies if simple queries works as expected for MAX_SHADER_COMPILER_THREADS_ARB <pname>")
+ : TestCase(context, "simple_queries",
+ "Tests verifies if simple queries works as expected for MAX_SHADER_COMPILER_THREADS_KHR <pname>")
{
/* Left blank intentionally */
}
@@ -77,13 +77,19 @@
*/
tcu::TestNode::IterateResult SimpleQueriesTest::iterate()
{
- if (!m_context.getContextInfo().isExtensionSupported("GL_ARB_parallel_shader_compile"))
+ const glu::ContextInfo& contextInfo = m_context.getContextInfo();
+ const glu::ContextType& contextType = m_context.getRenderContext().getType();
+ const bool isGL = glu::isContextTypeGLCore(contextType);
+ const bool supportParallel = (isGL && contextInfo.isExtensionSupported("GL_ARB_parallel_shader_compile")) ||
+ contextInfo.isExtensionSupported("GL_KHR_parallel_shader_compile");
+
+ if (!supportParallel)
{
m_testCtx.setTestResult(QP_TEST_RESULT_NOT_SUPPORTED, "Not supported");
return STOP;
}
- const Functions& gl = m_context.getRenderContext().getFunctions();
+ const Functions& gl = m_context.getRenderContext().getFunctions();
GLboolean boolValue;
GLint intValue;
@@ -91,30 +97,48 @@
GLfloat floatValue;
GLdouble doubleValue;
- gl.getBooleanv(GL_MAX_SHADER_COMPILER_THREADS_ARB, &boolValue);
+ bool supportsInt64 = isGL || glu::contextSupports(contextType, glu::ApiType::es(3, 0));
+ bool supportsDouble = isGL;
+
+ gl.getBooleanv(GL_MAX_SHADER_COMPILER_THREADS_KHR, &boolValue);
GLU_EXPECT_NO_ERROR(gl.getError(), "getBooleanv");
- gl.getIntegerv(GL_MAX_SHADER_COMPILER_THREADS_ARB, &intValue);
+ gl.getIntegerv(GL_MAX_SHADER_COMPILER_THREADS_KHR, &intValue);
GLU_EXPECT_NO_ERROR(gl.getError(), "getIntegerv");
- gl.getInteger64v(GL_MAX_SHADER_COMPILER_THREADS_ARB, &int64Value);
- GLU_EXPECT_NO_ERROR(gl.getError(), "getInteger64v");
+ if (supportsInt64)
+ {
+ gl.getInteger64v(GL_MAX_SHADER_COMPILER_THREADS_KHR, &int64Value);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "getInteger64v");
+ }
- gl.getFloatv(GL_MAX_SHADER_COMPILER_THREADS_ARB, &floatValue);
+ gl.getFloatv(GL_MAX_SHADER_COMPILER_THREADS_KHR, &floatValue);
GLU_EXPECT_NO_ERROR(gl.getError(), "getFloatv");
- gl.getDoublev(GL_MAX_SHADER_COMPILER_THREADS_ARB, &doubleValue);
- GLU_EXPECT_NO_ERROR(gl.getError(), "getDoublev");
-
- if (boolValue != (intValue != 0) || intValue != (GLint)int64Value || intValue != (GLint)floatValue ||
- intValue != (GLint)doubleValue)
+ if (supportsDouble)
{
- m_testCtx.getLog() << tcu::TestLog::Message << "Simple queries returned different values: "
- << "bool(" << (int)boolValue << "), "
- << "int(" << intValue << "), "
- << "int64(" << int64Value << "), "
- << "float(" << floatValue << "), "
- << "double(" << doubleValue << ")" << tcu::TestLog::EndMessage;
+ gl.getDoublev(GL_MAX_SHADER_COMPILER_THREADS_KHR, &doubleValue);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "getDoublev");
+ }
+
+ if (boolValue != (intValue != 0) || intValue != (GLint)floatValue ||
+ (supportsInt64 && intValue != (GLint)int64Value) || (supportsDouble && intValue != (GLint)doubleValue))
+ {
+ tcu::MessageBuilder message = m_testCtx.getLog() << tcu::TestLog::Message;
+
+ message << "Simple queries returned different values: "
+ << "bool(" << (int)boolValue << "), "
+ << "int(" << intValue << "), ";
+
+ if (supportsInt64)
+ message << "int64(" << int64Value << "), ";
+
+ message << "float(" << floatValue << ")";
+
+ if (supportsDouble)
+ message << ", double(" << doubleValue << ")";
+
+ message << tcu::TestLog::EndMessage;
m_testCtx.setTestResult(QP_TEST_RESULT_FAIL, "Fail");
return STOP;
@@ -131,8 +155,8 @@
* @param description Test description
*/
MaxShaderCompileThreadsTest::MaxShaderCompileThreadsTest(deqp::Context& context)
- : TestCase(context, "MaxShaderCompileThreadsTest",
- "Tests verifies if MaxShaderCompileThreadsARB function works as expected")
+ : TestCase(context, "max_shader_compile_threads",
+ "Tests verifies if MaxShaderCompileThreadsKHR function works as expected")
{
/* Left blank intentionally */
}
@@ -143,7 +167,13 @@
*/
tcu::TestNode::IterateResult MaxShaderCompileThreadsTest::iterate()
{
- if (!m_context.getContextInfo().isExtensionSupported("GL_ARB_parallel_shader_compile"))
+ const glu::ContextInfo& contextInfo = m_context.getContextInfo();
+ const glu::ContextType& contextType = m_context.getRenderContext().getType();
+ const bool isGL = glu::isContextTypeGLCore(contextType);
+ const bool supportParallel = (isGL && contextInfo.isExtensionSupported("GL_ARB_parallel_shader_compile")) ||
+ contextInfo.isExtensionSupported("GL_KHR_parallel_shader_compile");
+
+ if (!supportParallel)
{
m_testCtx.setTestResult(QP_TEST_RESULT_NOT_SUPPORTED, "Not supported");
return STOP;
@@ -153,10 +183,10 @@
GLint intValue;
- gl.maxShaderCompilerThreadsARB(0);
- GLU_EXPECT_NO_ERROR(gl.getError(), "maxShaderCompilerThreadsARB");
+ gl.maxShaderCompilerThreadsKHR(0);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "maxShaderCompilerThreadsKHR");
- gl.getIntegerv(GL_MAX_SHADER_COMPILER_THREADS_ARB, &intValue);
+ gl.getIntegerv(GL_MAX_SHADER_COMPILER_THREADS_KHR, &intValue);
GLU_EXPECT_NO_ERROR(gl.getError(), "getIntegerv");
if (intValue != 0)
@@ -165,10 +195,10 @@
return STOP;
}
- gl.maxShaderCompilerThreadsARB(0xFFFFFFFF);
- GLU_EXPECT_NO_ERROR(gl.getError(), "maxShaderCompilerThreadsARB");
+ gl.maxShaderCompilerThreadsKHR(0xFFFFFFFF);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "maxShaderCompilerThreadsKHR");
- gl.getIntegerv(GL_MAX_SHADER_COMPILER_THREADS_ARB, &intValue);
+ gl.getIntegerv(GL_MAX_SHADER_COMPILER_THREADS_KHR, &intValue);
GLU_EXPECT_NO_ERROR(gl.getError(), "getIntegerv");
if (intValue != GLint(0xFFFFFFFF))
@@ -188,7 +218,7 @@
* @param description Test description
*/
CompilationCompletionNonParallelTest::CompilationCompletionNonParallelTest(deqp::Context& context)
- : TestCase(context, "CompilationCompletionNonParallelTest",
+ : TestCase(context, "compilation_completion_non_parallel",
"Tests verifies if shader COMPLETION_STATUS query works as expected for non parallel compilation")
{
/* Left blank intentionally */
@@ -200,7 +230,13 @@
*/
tcu::TestNode::IterateResult CompilationCompletionNonParallelTest::iterate()
{
- if (!m_context.getContextInfo().isExtensionSupported("GL_ARB_parallel_shader_compile"))
+ const glu::ContextInfo& contextInfo = m_context.getContextInfo();
+ const glu::ContextType& contextType = m_context.getRenderContext().getType();
+ const bool isGL = glu::isContextTypeGLCore(contextType);
+ const bool supportParallel = (isGL && contextInfo.isExtensionSupported("GL_ARB_parallel_shader_compile")) ||
+ contextInfo.isExtensionSupported("GL_KHR_parallel_shader_compile");
+
+ if (!supportParallel)
{
m_testCtx.setTestResult(QP_TEST_RESULT_NOT_SUPPORTED, "Not supported");
return STOP;
@@ -210,28 +246,31 @@
GLint completionStatus;
- gl.maxShaderCompilerThreadsARB(0);
- GLU_EXPECT_NO_ERROR(gl.getError(), "maxShaderCompilerThreadsARB");
+ gl.maxShaderCompilerThreadsKHR(0);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "maxShaderCompilerThreadsKHR");
{
Program program(gl);
Shader vertexShader(gl, SHADERTYPE_VERTEX);
Shader fragmentShader(gl, SHADERTYPE_FRAGMENT);
- const char* vSources[] = { vShader };
- const int vLengths[] = { int(strlen(vShader)) };
- vertexShader.setSources(1, vSources, vLengths);
+ bool isContextES = (glu::isContextTypeES(m_context.getRenderContext().getType()));
+ const char* shaderVersion = isContextES ? shaderVersionES : shaderVersionGL;
- const char* fSources[] = { fShader };
- const int fLengths[] = { int(strlen(fShader)) };
- fragmentShader.setSources(1, fSources, fLengths);
+ const char* vSources[] = { shaderVersion, vShader };
+ const int vLengths[] = { int(strlen(shaderVersion)), int(strlen(vShader)) };
+ vertexShader.setSources(2, vSources, vLengths);
+
+ const char* fSources[] = { shaderVersion, fShader };
+ const int fLengths[] = { int(strlen(shaderVersion)), int(strlen(fShader)) };
+ fragmentShader.setSources(2, fSources, fLengths);
gl.compileShader(vertexShader.getShader());
GLU_EXPECT_NO_ERROR(gl.getError(), "compileShader");
gl.compileShader(fragmentShader.getShader());
GLU_EXPECT_NO_ERROR(gl.getError(), "compileShader");
- gl.getShaderiv(fragmentShader.getShader(), GL_COMPLETION_STATUS_ARB, &completionStatus);
+ gl.getShaderiv(fragmentShader.getShader(), GL_COMPLETION_STATUS_KHR, &completionStatus);
GLU_EXPECT_NO_ERROR(gl.getError(), "getShaderiv");
if (!completionStatus)
{
@@ -244,7 +283,7 @@
program.attachShader(fragmentShader.getShader());
gl.linkProgram(program.getProgram());
- gl.getProgramiv(program.getProgram(), GL_COMPLETION_STATUS_ARB, &completionStatus);
+ gl.getProgramiv(program.getProgram(), GL_COMPLETION_STATUS_KHR, &completionStatus);
GLU_EXPECT_NO_ERROR(gl.getError(), "getProgramiv");
if (!completionStatus)
{
@@ -265,7 +304,7 @@
* @param description Test description
*/
CompilationCompletionParallelTest::CompilationCompletionParallelTest(deqp::Context& context)
- : TestCase(context, "CompilationCompletionParallelTest",
+ : TestCase(context, "compilation_completion_parallel",
"Tests verifies if shader COMPLETION_STATUS query works as expected for parallel compilation")
{
/* Left blank intentionally */
@@ -277,7 +316,13 @@
*/
tcu::TestNode::IterateResult CompilationCompletionParallelTest::iterate()
{
- if (!m_context.getContextInfo().isExtensionSupported("GL_ARB_parallel_shader_compile"))
+ const glu::ContextInfo& contextInfo = m_context.getContextInfo();
+ const glu::ContextType& contextType = m_context.getRenderContext().getType();
+ const bool isGL = glu::isContextTypeGLCore(contextType);
+ const bool supportParallel = (isGL && contextInfo.isExtensionSupported("GL_ARB_parallel_shader_compile")) ||
+ contextInfo.isExtensionSupported("GL_KHR_parallel_shader_compile");
+
+ if (!supportParallel)
{
m_testCtx.setTestResult(QP_TEST_RESULT_NOT_SUPPORTED, "Not supported");
return STOP;
@@ -287,30 +332,33 @@
GLint completionStatus;
- gl.maxShaderCompilerThreadsARB(8);
- GLU_EXPECT_NO_ERROR(gl.getError(), "maxShaderCompilerThreadsARB");
+ gl.maxShaderCompilerThreadsKHR(8);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "maxShaderCompilerThreadsKHR");
{
Shader vertexShader(gl, SHADERTYPE_VERTEX);
deUint32 fragmentShader[8];
deUint32 program[8];
+ bool isContextES = (glu::isContextTypeES(m_context.getRenderContext().getType()));
+ const char* shaderVersion = isContextES ? shaderVersionES : shaderVersionGL;
+
for (int i = 0; i < 8; ++i)
{
fragmentShader[i] = gl.createShader(GL_FRAGMENT_SHADER);
program[i] = gl.createProgram();
}
- const char* vSources[] = { vShader };
- const int vLengths[] = { int(strlen(vShader)) };
- vertexShader.setSources(1, vSources, vLengths);
+ const char* vSources[] = { shaderVersion, vShader };
+ const int vLengths[] = { int(strlen(shaderVersion)), int(strlen(vShader)) };
+ vertexShader.setSources(2, vSources, vLengths);
//Compilation test
for (int i = 0; i < 8; ++i)
{
- const char* fSources[] = { fShader };
- const int fLengths[] = { int(strlen(fShader)) };
- gl.shaderSource(fragmentShader[i], 1, fSources, fLengths);
+ const char* fSources[] = { shaderVersion, fShader };
+ const int fLengths[] = { int(strlen(shaderVersion)), int(strlen(fShader)) };
+ gl.shaderSource(fragmentShader[i], 2, fSources, fLengths);
}
gl.compileShader(vertexShader.getShader());
@@ -329,7 +377,7 @@
completion = 0;
for (int i = 0; i < 8; ++i)
{
- gl.getShaderiv(fragmentShader[i], GL_COMPLETION_STATUS_ARB, &completionStatus);
+ gl.getShaderiv(fragmentShader[i], GL_COMPLETION_STATUS_KHR, &completionStatus);
GLU_EXPECT_NO_ERROR(gl.getError(), "getShaderiv");
if (completionStatus)
completion++;
@@ -371,7 +419,7 @@
completion = 0;
for (int i = 0; i < 8; ++i)
{
- gl.getProgramiv(program[i], GL_COMPLETION_STATUS_ARB, &completionStatus);
+ gl.getProgramiv(program[i], GL_COMPLETION_STATUS_KHR, &completionStatus);
GLU_EXPECT_NO_ERROR(gl.getError(), "getProgramiv");
if (completionStatus)
completion++;
@@ -401,7 +449,7 @@
*/
ParallelShaderCompileTests::ParallelShaderCompileTests(deqp::Context& context)
: TestCaseGroup(context, "parallel_shader_compile",
- "Verify conformance of CTS_ARB_parallel_shader_compile implementation")
+ "Verify conformance of KHR_parallel_shader_compile implementation")
{
}
@@ -414,4 +462,4 @@
addChild(new CompilationCompletionParallelTest(m_context));
}
-} /* gl4cts namespace */
+} /* glcts namespace */
diff --git a/external/openglcts/modules/gl/gl4cParallelShaderCompileTests.hpp b/external/openglcts/modules/common/glcParallelShaderCompileTests.hpp
similarity index 86%
rename from external/openglcts/modules/gl/gl4cParallelShaderCompileTests.hpp
rename to external/openglcts/modules/common/glcParallelShaderCompileTests.hpp
index ebdd39e..a3e4c98 100644
--- a/external/openglcts/modules/gl/gl4cParallelShaderCompileTests.hpp
+++ b/external/openglcts/modules/common/glcParallelShaderCompileTests.hpp
@@ -1,10 +1,10 @@
-#ifndef _GL4CPARALLELSHADERCOMPILETESTS_HPP
-#define _GL4CPARALLELSHADERCOMPILETESTS_HPP
+#ifndef _GLCPARALLELSHADERCOMPILETESTS_HPP
+#define _GLCPARALLELSHADERCOMPILETESTS_HPP
/*-------------------------------------------------------------------------
* OpenGL Conformance Test Suite
* -----------------------------
*
- * Copyright (c) 2016 The Khronos Group Inc.
+ * Copyright (c) 2016-2017 The Khronos Group Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -25,19 +25,19 @@
/**
*/ /*!
- * \file gl4cParallelShaderCompileTests.hpp
- * \brief Conformance tests for the GL_ARB_parallel_shader_compile functionality.
+ * \file glcParallelShaderCompileTests.hpp
+ * \brief Conformance tests for the GL_KHR_parallel_shader_compile functionality.
*/ /*-------------------------------------------------------------------*/
#include "glcTestCase.hpp"
#include "glwDefs.hpp"
#include "tcuDefs.hpp"
#include <vector>
-namespace gl4cts
+namespace glcts
{
/** Test verifies if GetBooleanv, GetIntegerv, GetInteger64v, GetFloatv, and GetDoublev
- * queries for MAX_SHADER_COMPILER_THREADS_ARB <pname> returns the same value.
+ * queries for MAX_SHADER_COMPILER_THREADS_KHR <pname> returns the same value.
**/
class SimpleQueriesTest : public deqp::TestCase
{
@@ -52,7 +52,7 @@
/* Private members */
};
-/** Test verifies if MaxShaderCompilerThreadsARB function works as expected
+/** Test verifies if MaxShaderCompilerThreadsKHR function works as expected
**/
class MaxShaderCompileThreadsTest : public deqp::TestCase
{
@@ -115,4 +115,4 @@
} /* glcts namespace */
-#endif // _GL4CPARALLELSHADERCOMPILETESTS_HPP
+#endif // _GLCPARALLELSHADERCOMPILETESTS_HPP
diff --git a/external/openglcts/modules/common/glcPolygonOffsetClampTests.cpp b/external/openglcts/modules/common/glcPolygonOffsetClampTests.cpp
index aaa4ef1..68caa2a 100644
--- a/external/openglcts/modules/common/glcPolygonOffsetClampTests.cpp
+++ b/external/openglcts/modules/common/glcPolygonOffsetClampTests.cpp
@@ -143,8 +143,8 @@
GLU_EXPECT_NO_ERROR(gl.getError(), "getBooleanv error occurred");
}
- gl.polygonOffsetClampEXT(1.0f, 1.0f, 0.5f);
- GLU_EXPECT_NO_ERROR(gl.getError(), "polygonOffsetClampEXT error occurred");
+ gl.polygonOffsetClamp(1.0f, 1.0f, 0.5f);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "polygonOffsetClamp error occurred");
m_testCtx.setTestResult(QP_TEST_RESULT_PASS, "Pass");
}
@@ -405,7 +405,7 @@
gl.enable(GL_POLYGON_OFFSET_FILL);
GLU_EXPECT_NO_ERROR(gl.getError(), "glEnable");
- gl.polygonOffsetClampEXT(m_testValues[i].factor, m_testValues[i].units, m_testValues[i].clamp);
+ gl.polygonOffsetClamp(m_testValues[i].factor, m_testValues[i].units, m_testValues[i].clamp);
GLU_EXPECT_NO_ERROR(gl.getError(), "glPolygonOffsetClampEXT");
gl.drawArrays(GL_TRIANGLE_STRIP, 0, 4);
diff --git a/external/openglcts/modules/common/glcSeparableProgramsTransformFeedbackTests.cpp b/external/openglcts/modules/common/glcSeparableProgramsTransformFeedbackTests.cpp
new file mode 100644
index 0000000..64cc809
--- /dev/null
+++ b/external/openglcts/modules/common/glcSeparableProgramsTransformFeedbackTests.cpp
@@ -0,0 +1,344 @@
+/*-------------------------------------------------------------------------
+ * OpenGL Conformance Test Suite
+ * -----------------------------
+ *
+ * Copyright (c) 2017 The Khronos Group Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */ /*!
+ * \file glcSeparableProgramXFBTests.cpp
+ * \brief
+ */ /*-------------------------------------------------------------------*/
+
+#include "glcSeparableProgramsTransformFeedbackTests.hpp"
+#include "glcViewportArrayTests.hpp"
+#include "gluContextInfo.hpp"
+#include "gluDefs.hpp"
+#include "glwEnums.hpp"
+#include "glwFunctions.hpp"
+#include "tcuCommandLine.hpp"
+#include "tcuStringTemplate.hpp"
+#include "tcuTestLog.hpp"
+
+using namespace tcu;
+using namespace glu;
+using namespace glw;
+using namespace glcts::ViewportArray;
+
+namespace glcts
+{
+
+/**
+ * @brief The StageIndex enum. Stages order coresponds to order
+ * in which shader sources are specified in Utils::program::build.
+ */
+enum StageIndex
+{
+ FRAGMENT_STAGE_INDEX = 0,
+ GEOMETRY_STAGE_INDEX,
+ TESSELLATION_CONTROL_STAGE,
+ TESSELLATION_EVALUATION_STAGE,
+ VERTEX_STAGE,
+ STAGES_COUNT
+};
+
+/**
+ * @brief The StageTokens array. Stages order coresponds to order
+ * in which shader sources are specified in Utils::program::build.
+ */
+static const GLenum StageTokens[STAGES_COUNT] = { GL_FRAGMENT_SHADER_BIT, GL_GEOMETRY_SHADER_BIT,
+ GL_TESS_CONTROL_SHADER_BIT, GL_TESS_EVALUATION_SHADER_BIT,
+ GL_VERTEX_SHADER_BIT };
+
+/**
+ * @brief The StageData structure.
+ */
+struct StageData
+{
+ const GLchar* source;
+ const GLchar* const* tfVaryings;
+ const GLuint tfVaryingsCount;
+};
+
+/**
+ * @brief The PerStageData structure containimg shader data per all stages.
+ */
+struct PerStageData
+{
+ StageData stage[STAGES_COUNT];
+};
+
+static const GLchar* vs_code = "${VERSION}\n"
+ "flat out highp int o_vert;\n"
+ "${PERVERTEX_BLOCK}\n"
+ "void main()\n"
+ "{\n"
+ " o_vert = 1;\n"
+ " gl_Position = vec4(1, 0, 0, 1);\n"
+ "}\n";
+
+static const GLchar* vs_tf_varyings[] = { "o_vert" };
+
+static const GLchar* tcs_code = "${VERSION}\n"
+ "layout(vertices = 1) out;\n"
+ "flat in highp int o_vert[];\n"
+ "${PERVERTEX_BLOCK}\n"
+ "void main()\n"
+ "{\n"
+ " gl_TessLevelInner[0] = 1.0;\n"
+ " gl_TessLevelInner[1] = 1.0;\n"
+ " gl_TessLevelOuter[0] = 1.0;\n"
+ " gl_TessLevelOuter[1] = 1.0;\n"
+ " gl_TessLevelOuter[2] = 1.0;\n"
+ " gl_TessLevelOuter[3] = 1.0;\n"
+ "}\n";
+
+static const GLchar* tes_code = "${VERSION}\n"
+ "layout (triangles, point_mode) in;\n"
+ "flat out highp int o_tess;\n"
+ "${PERVERTEX_BLOCK}\n"
+ "void main()\n"
+ "{\n"
+ " o_tess = 2;\n"
+ " gl_Position = vec4(gl_TessCoord.xy*2.0 - 1.0, 0.0, 1.0);\n"
+ "}\n";
+
+static const GLchar* tes_tf_varyings[] = { "o_tess" };
+
+static const GLchar* gs_code = "${VERSION}\n"
+ "layout (points) in;\n"
+ "layout (points, max_vertices = 3) out;\n"
+ "${PERVERTEX_BLOCK}\n"
+ "flat in highp int ${IN_VARYING_NAME}[];\n"
+ "flat out highp int o_geom;\n"
+ "void main()\n"
+ "{\n"
+ " o_geom = 3;\n"
+ " gl_Position = vec4(-1, -1, 0, 1);\n"
+ " EmitVertex();\n"
+ " o_geom = 3;\n"
+ " gl_Position = vec4(-1, 1, 0, 1);\n"
+ " EmitVertex();\n"
+ " o_geom = 3;\n"
+ " gl_Position = vec4(1, -1, 0, 1);\n"
+ " EmitVertex();\n"
+ "}\n";
+
+static const GLchar* gs_tf_varyings[] = { "o_geom" };
+
+static const GLchar* fs_code = "${VERSION}\n"
+ "flat in highp int ${IN_VARYING_NAME};"
+ "out highp vec4 o_color;\n"
+ "void main()\n"
+ "{\n"
+ " o_color = vec4(1.0);\n"
+ "}\n";
+
+class SeparableProgramTFTestCase : public deqp::TestCase
+{
+public:
+ /* Public methods */
+ SeparableProgramTFTestCase(deqp::Context& context, const char* name, PerStageData shaderData, GLint expectedValue);
+
+ tcu::TestNode::IterateResult iterate(void);
+
+protected:
+ /* Protected attributes */
+ PerStageData m_shaderData;
+ GLint m_expectedValue;
+};
+
+/** Constructor.
+ *
+ * @param context Rendering context
+ * @param name Test name
+ * @param description Test description
+ */
+SeparableProgramTFTestCase::SeparableProgramTFTestCase(deqp::Context& context, const char* name,
+ PerStageData shaderData, GLint expectedValue)
+ : deqp::TestCase(context, name, ""), m_shaderData(shaderData), m_expectedValue(expectedValue)
+{
+}
+
+tcu::TestNode::IterateResult SeparableProgramTFTestCase::iterate(void)
+{
+ const Functions& gl = m_context.getRenderContext().getFunctions();
+ ContextType contextType = m_context.getRenderContext().getType();
+ GLSLVersion glslVersion = getContextTypeGLSLVersion(contextType);
+
+ /* For core GL gl_PerVertex interface block is combined from two parts.
+ * First part contains definition and the second part name, which is
+ * only specified for tess control stage (arrays are used here to avoid
+ * three branches in a loop). For ES both parts are empty string */
+ const char* blockName[STAGES_COUNT] = { "", ";\n", " gl_out[];\n", ";\n", ";\n" };
+ const char* blockEmptyName[STAGES_COUNT] = { "", "", "", "", "" };
+ std::string vertexBlock("");
+ const char** vertexBlockPostfix = blockEmptyName;
+ if (isContextTypeGLCore(contextType))
+ {
+ vertexBlock = "out gl_PerVertex"
+ "{\n"
+ " vec4 gl_Position;\n"
+ "}";
+ vertexBlockPostfix = blockName;
+ }
+
+ /* Construct specialization map - some specializations differ per stage */
+ std::map<std::string, std::string> specializationMap;
+ specializationMap["VERSION"] = glu::getGLSLVersionDeclaration(glslVersion);
+
+ /* Create separate programs - start from vertex stage to catch varying names */
+ std::vector<Utils::program> programs(STAGES_COUNT, Utils::program(m_context));
+ const char* code[STAGES_COUNT] = { 0, 0, 0, 0, 0 };
+ for (int stageIndex = VERTEX_STAGE; stageIndex > -1; --stageIndex)
+ {
+ StageData* stageData = m_shaderData.stage + stageIndex;
+ std::string source = stageData->source;
+ if (source.empty())
+ continue;
+ specializationMap["PERVERTEX_BLOCK"] = vertexBlock + vertexBlockPostfix[stageIndex];
+ std::string specializedShader = StringTemplate(source).specialize(specializationMap);
+
+ code[stageIndex] = specializedShader.c_str();
+ programs[stageIndex].build(0, code[0], code[1], code[2], code[3], code[4], stageData->tfVaryings,
+ stageData->tfVaryingsCount, true);
+ code[stageIndex] = 0;
+
+ /* Use varying name from current stage to specialize next stage */
+ if (stageData->tfVaryings)
+ specializationMap["IN_VARYING_NAME"] = stageData->tfVaryings[0];
+ }
+
+ /* Create program pipeline */
+ GLuint pipelineId;
+ gl.genProgramPipelines(1, &pipelineId);
+ gl.bindProgramPipeline(pipelineId);
+ for (int stageIndex = 0; stageIndex < STAGES_COUNT; ++stageIndex)
+ {
+ if (!programs[stageIndex].m_program_object_id)
+ continue;
+ gl.useProgramStages(pipelineId, StageTokens[stageIndex], programs[stageIndex].m_program_object_id);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glUseProgramStages() call failed.");
+ }
+
+ /* Validate the pipeline */
+ GLint validateStatus = GL_FALSE;
+ gl.validateProgramPipeline(pipelineId);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glValidateProgramPipeline() call failed.");
+ gl.getProgramPipelineiv(pipelineId, GL_VALIDATE_STATUS, &validateStatus);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glGetProgramPipelineiv() call failed.");
+ if (validateStatus != GL_TRUE)
+ {
+ GLint logLength;
+ gl.getProgramPipelineiv(pipelineId, GL_INFO_LOG_LENGTH, &logLength);
+ if (logLength)
+ {
+ std::vector<GLchar> logBuffer(logLength + 1);
+ gl.getProgramPipelineInfoLog(pipelineId, logLength + 1, NULL, &logBuffer[0]);
+ m_context.getTestContext().getLog() << tcu::TestLog::Message << &logBuffer[0] << tcu::TestLog::EndMessage;
+ }
+ TCU_FAIL("Program pipeline has not been validated successfully.");
+ }
+
+ /* Generate buffer object to hold result XFB data */
+ Utils::buffer tfb(m_context);
+ GLsizeiptr tfbSize = 100;
+ tfb.generate(GL_TRANSFORM_FEEDBACK_BUFFER);
+ tfb.update(tfbSize, 0 /* data */, GL_DYNAMIC_COPY);
+ tfb.bindRange(0, 0, tfbSize);
+
+ /* Generate VAO to use for the draw calls */
+ Utils::vertexArray vao(m_context);
+ vao.generate();
+ vao.bind();
+
+ /* Generate query object */
+ GLuint queryId;
+ gl.genQueries(1, &queryId);
+
+ /* Check if tessellation stage is active */
+ GLenum drawMode = GL_POINTS;
+ if (strlen(m_shaderData.stage[TESSELLATION_CONTROL_STAGE].source) > 0)
+ drawMode = GL_PATCHES;
+
+ /* Draw and capture data */
+ gl.beginQuery(GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN, queryId);
+ gl.beginTransformFeedback(GL_POINTS);
+ gl.patchParameteri(GL_PATCH_VERTICES, 1);
+ gl.drawArrays(drawMode, 0 /* first */, 1 /* count */);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glDrawArrays() call failed.");
+ gl.endTransformFeedback();
+ gl.endQuery(GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN);
+
+ /* Get TF results */
+ GLuint writtenPrimitives = 0;
+ gl.getQueryObjectuiv(queryId, GL_QUERY_RESULT, &writtenPrimitives);
+ GLint* feedbackData = (GLint*)gl.mapBufferRange(GL_TRANSFORM_FEEDBACK_BUFFER, 0, tfbSize, GL_MAP_READ_BIT);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glMapBuffer");
+
+ /* Verify if only values from upstream shader were captured */
+ m_testCtx.setTestResult(QP_TEST_RESULT_FAIL, "Fail");
+ if (writtenPrimitives != 0)
+ {
+ m_testCtx.setTestResult(QP_TEST_RESULT_PASS, "Pass");
+ for (GLuint dataIndex = 0; dataIndex < writtenPrimitives; ++dataIndex)
+ {
+ if (feedbackData[dataIndex] == m_expectedValue)
+ continue;
+ m_testCtx.setTestResult(QP_TEST_RESULT_FAIL, "Fail");
+ break;
+ }
+ }
+
+ /* Cleanup */
+ gl.unmapBuffer(GL_TRANSFORM_FEEDBACK_BUFFER);
+ gl.deleteQueries(1, &queryId);
+ gl.bindProgramPipeline(0);
+ gl.deleteProgramPipelines(1, &pipelineId);
+
+ return STOP;
+}
+
+/** Constructor.
+ *
+ * @param context Rendering context.
+ */
+SeparableProgramsTransformFeedbackTests::SeparableProgramsTransformFeedbackTests(deqp::Context& context)
+ : deqp::TestCaseGroup(context, "separable_programs_tf", "")
+{
+}
+
+/** Initializes the test group contents. */
+void SeparableProgramsTransformFeedbackTests::init(void)
+{
+ PerStageData tessellation_active = { {
+ { fs_code, NULL, 0 }, // fragment stage
+ { "", NULL, 0 }, // geometry stage
+ { tcs_code, NULL, 0 }, // tesselation control stage
+ { tes_code, tes_tf_varyings, 1 }, // tesselation evaluation stage
+ { vs_code, vs_tf_varyings, 1 } // vertex_stage
+ } };
+ PerStageData geometry_active = { {
+ { fs_code, NULL, 0 }, // fragment stage
+ { gs_code, gs_tf_varyings, 1 }, // geometry stage
+ { tcs_code, NULL, 0 }, // tesselation control stage
+ { tes_code, tes_tf_varyings, 1 }, // tesselation evaluation stage
+ { vs_code, vs_tf_varyings, 1 } // vertex_stage
+ } };
+
+ addChild(new SeparableProgramTFTestCase(m_context, "tessellation_active", tessellation_active, 2));
+ addChild(new SeparableProgramTFTestCase(m_context, "geometry_active", geometry_active, 3));
+}
+
+} /* glcts namespace */
diff --git a/external/openglcts/modules/common/glcSeparableProgramsTransformFeedbackTests.hpp b/external/openglcts/modules/common/glcSeparableProgramsTransformFeedbackTests.hpp
new file mode 100644
index 0000000..9ab31ba
--- /dev/null
+++ b/external/openglcts/modules/common/glcSeparableProgramsTransformFeedbackTests.hpp
@@ -0,0 +1,52 @@
+#ifndef _GLCSEPARABLEPROGRAMSTRANSFORMFEEDBACKTESTS_HPP
+#define _GLCSEPARABLEPROGRAMSTRANSFORMFEEDBACKTESTS_HPP
+/*-------------------------------------------------------------------------
+ * OpenGL Conformance Test Suite
+ * -----------------------------
+ *
+ * Copyright (c) 2017 The Khronos Group Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */ /*!
+ * \file glcSeparableProgramXFBTests.hpp
+ * \brief
+ */ /*--------------------------------------------------------------------*/
+
+#include "glcTestCase.hpp"
+#include "glwDefs.hpp"
+#include "tcuDefs.hpp"
+
+namespace glcts
+{
+
+/** Test group which encapsulates conformance tests that verify if the set of
+ * attributes captured in transform feedback mode is taken from the program object
+ * active on the upstream shader when the separable program objects are in use.
+*/
+class SeparableProgramsTransformFeedbackTests : public deqp::TestCaseGroup
+{
+public:
+ /* Public methods */
+ SeparableProgramsTransformFeedbackTests(deqp::Context& context);
+
+ void init(void);
+
+private:
+ SeparableProgramsTransformFeedbackTests(const SeparableProgramsTransformFeedbackTests& other);
+ SeparableProgramsTransformFeedbackTests& operator=(const SeparableProgramsTransformFeedbackTests& other);
+};
+
+} /* glcts namespace */
+
+#endif // _GLCSEPARABLEPROGRAMSTRANSFORMFEEDBACKTESTS_HPP
diff --git a/external/openglcts/modules/common/glcShaderConstExprTests.cpp b/external/openglcts/modules/common/glcShaderConstExprTests.cpp
new file mode 100644
index 0000000..4905f7c
--- /dev/null
+++ b/external/openglcts/modules/common/glcShaderConstExprTests.cpp
@@ -0,0 +1,447 @@
+/*-------------------------------------------------------------------------
+ * OpenGL Conformance Test Suite
+ * -----------------------------
+ *
+ * Copyright (c) 2017 The Khronos Group Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * \file glcShaderConstExprTests.cpp
+ * \brief Declares shader constant expressions tests.
+ */ /*-------------------------------------------------------------------*/
+
+#include "glcShaderConstExprTests.hpp"
+#include "deMath.h"
+#include "deSharedPtr.hpp"
+#include "glsShaderExecUtil.hpp"
+#include "gluContextInfo.hpp"
+#include "gluShaderUtil.hpp"
+#include "tcuFloat.hpp"
+#include "tcuStringTemplate.hpp"
+#include "tcuTestLog.hpp"
+#include <map>
+
+using namespace deqp::gls::ShaderExecUtil;
+
+namespace glcts
+{
+
+namespace ShaderConstExpr
+{
+
+struct TestParams
+{
+ const char* name;
+ const char* expression;
+
+ glu::DataType inType;
+ int minComponents;
+ int maxComponents;
+
+ glu::DataType outType;
+ union {
+ float outputFloat;
+ int outputInt;
+ };
+};
+
+struct ShaderExecutorParams
+{
+ deqp::Context* context;
+
+ std::string caseName;
+ std::string source;
+
+ glu::DataType outType;
+ union {
+ float outputFloat;
+ int outputInt;
+ };
+};
+
+template <typename OutputType>
+class ExecutorTestCase : public deqp::TestCase
+{
+public:
+ ExecutorTestCase(deqp::Context& context, const char* name, glu::ShaderType shaderType, const ShaderSpec& shaderSpec,
+ OutputType expectedOutput);
+ virtual ~ExecutorTestCase(void);
+ virtual tcu::TestNode::IterateResult iterate(void);
+
+protected:
+ void validateOutput(de::SharedPtr<ShaderExecutor> executor);
+
+ glu::ShaderType m_shaderType;
+ ShaderSpec m_shaderSpec;
+ OutputType m_expectedOutput;
+};
+
+template <typename OutputType>
+ExecutorTestCase<OutputType>::ExecutorTestCase(deqp::Context& context, const char* name, glu::ShaderType shaderType,
+ const ShaderSpec& shaderSpec, OutputType expectedOutput)
+ : deqp::TestCase(context, name, "")
+ , m_shaderType(shaderType)
+ , m_shaderSpec(shaderSpec)
+ , m_expectedOutput(expectedOutput)
+{
+}
+
+template <typename OutputType>
+ExecutorTestCase<OutputType>::~ExecutorTestCase(void)
+{
+}
+
+template <>
+void ExecutorTestCase<float>::validateOutput(de::SharedPtr<ShaderExecutor> executor)
+{
+ float result = 0.0f;
+ void* const outputs = &result;
+ executor->execute(1, DE_NULL, &outputs);
+
+ const float epsilon = 0.01f;
+ if (de::abs(m_expectedOutput - result) > epsilon)
+ {
+ m_context.getTestContext().getLog()
+ << tcu::TestLog::Message << "Expected: " << m_expectedOutput << " ("
+ << tcu::toHex(tcu::Float32(m_expectedOutput).bits()) << ") but constant expresion returned: " << result
+ << " (" << tcu::toHex(tcu::Float32(result).bits()) << "), used " << epsilon << " epsilon for comparison"
+ << tcu::TestLog::EndMessage;
+ m_testCtx.setTestResult(QP_TEST_RESULT_FAIL, "Fail");
+ return;
+ }
+
+ m_testCtx.setTestResult(QP_TEST_RESULT_PASS, "Pass");
+ return;
+}
+
+template <>
+void ExecutorTestCase<int>::validateOutput(de::SharedPtr<ShaderExecutor> executor)
+{
+ int result = 0;
+ void* const outputs = &result;
+ executor->execute(1, DE_NULL, &outputs);
+
+ if (result == m_expectedOutput)
+ {
+ m_testCtx.setTestResult(QP_TEST_RESULT_PASS, "Pass");
+ return;
+ }
+
+ m_context.getTestContext().getLog() << tcu::TestLog::Message << "Expected: " << m_expectedOutput
+ << " but constant expresion returned: " << result << tcu::TestLog::EndMessage;
+ m_testCtx.setTestResult(QP_TEST_RESULT_FAIL, "Fail");
+}
+
+template <typename OutputType>
+tcu::TestNode::IterateResult ExecutorTestCase<OutputType>::iterate(void)
+{
+ de::SharedPtr<ShaderExecutor> executor(createExecutor(m_context.getRenderContext(), m_shaderType, m_shaderSpec));
+
+ DE_ASSERT(executor.get());
+
+ executor->log(m_context.getTestContext().getLog());
+
+ try
+ {
+ if (!executor->isOk())
+ TCU_FAIL("Compilation failed");
+
+ executor->useProgram();
+
+ validateOutput(executor);
+ }
+ catch (const tcu::NotSupportedError& e)
+ {
+ m_testCtx.getLog() << tcu::TestLog::Message << e.what() << tcu::TestLog::EndMessage;
+ m_testCtx.setTestResult(QP_TEST_RESULT_NOT_SUPPORTED, e.getMessage());
+ }
+ catch (const tcu::TestError& e)
+ {
+ m_testCtx.getLog() << tcu::TestLog::Message << e.what() << tcu::TestLog::EndMessage;
+ m_testCtx.setTestResult(QP_TEST_RESULT_FAIL, e.getMessage());
+ }
+
+ return tcu::TestNode::STOP;
+}
+
+template <typename OutputType>
+void createTestCasesForAllShaderTypes(const ShaderExecutorParams& params, std::vector<tcu::TestNode*>& outputTests)
+{
+ DE_ASSERT(params.context);
+
+ deqp::Context& context = *(params.context);
+ glu::ContextType contextType = context.getRenderContext().getType();
+
+ ShaderSpec shaderSpec;
+ shaderSpec.version = glu::getContextTypeGLSLVersion(contextType);
+ shaderSpec.source = params.source;
+ shaderSpec.outputs.push_back(Symbol("out0", glu::VarType(params.outType, glu::PRECISION_HIGHP)));
+
+ // Construct list of shaders for which tests can be created
+ std::vector<glu::ShaderType> shaderTypes;
+
+ if (glu::contextSupports(contextType, glu::ApiType::core(4, 3)))
+ {
+ shaderTypes.push_back(glu::SHADERTYPE_VERTEX);
+ shaderTypes.push_back(glu::SHADERTYPE_FRAGMENT);
+ shaderTypes.push_back(glu::SHADERTYPE_COMPUTE);
+ shaderTypes.push_back(glu::SHADERTYPE_GEOMETRY);
+ shaderTypes.push_back(glu::SHADERTYPE_TESSELLATION_CONTROL);
+ shaderTypes.push_back(glu::SHADERTYPE_TESSELLATION_EVALUATION);
+ }
+ else if (glu::contextSupports(contextType, glu::ApiType::es(3, 2)))
+ {
+ shaderSpec.version = glu::GLSL_VERSION_320_ES;
+ shaderTypes.push_back(glu::SHADERTYPE_GEOMETRY);
+ shaderTypes.push_back(glu::SHADERTYPE_TESSELLATION_CONTROL);
+ shaderTypes.push_back(glu::SHADERTYPE_TESSELLATION_EVALUATION);
+ }
+ else if (glu::contextSupports(contextType, glu::ApiType::es(3, 1)))
+ {
+ shaderSpec.version = glu::GLSL_VERSION_310_ES;
+ shaderTypes.push_back(glu::SHADERTYPE_COMPUTE);
+
+ if (context.getContextInfo().isExtensionSupported("GL_EXT_geometry_shader") ||
+ context.getContextInfo().isExtensionSupported("GL_OES_geometry_shader"))
+ {
+ shaderTypes.push_back(glu::SHADERTYPE_GEOMETRY);
+ }
+
+ if (context.getContextInfo().isExtensionSupported("GL_EXT_tessellation_shader") ||
+ context.getContextInfo().isExtensionSupported("GL_OES_tessellation_shader"))
+ {
+ shaderTypes.push_back(glu::SHADERTYPE_TESSELLATION_CONTROL);
+ shaderTypes.push_back(glu::SHADERTYPE_TESSELLATION_EVALUATION);
+ }
+ }
+ else
+ {
+ shaderTypes.push_back(glu::SHADERTYPE_VERTEX);
+ shaderTypes.push_back(glu::SHADERTYPE_FRAGMENT);
+ }
+
+ shaderSpec.globalDeclarations += "precision highp float;\n";
+
+ for (std::size_t typeIndex = 0; typeIndex < shaderTypes.size(); ++typeIndex)
+ {
+ glu::ShaderType shaderType = shaderTypes[typeIndex];
+ std::string caseName(params.caseName + '_' + getShaderTypeName(shaderType));
+
+ outputTests.push_back(
+ new ExecutorTestCase<OutputType>(context, caseName.c_str(), shaderType, shaderSpec, params.outputFloat));
+ }
+}
+
+void createTests(deqp::Context& context, const TestParams* cases, int numCases, const char* shaderTemplateSrc,
+ const char* casePrefix, std::vector<tcu::TestNode*>& outputTests)
+{
+ const tcu::StringTemplate shaderTemplate(shaderTemplateSrc);
+ const char* componentAccess[] = { "", ".y", ".z", ".w" };
+
+ ShaderExecutorParams shaderExecutorParams;
+ shaderExecutorParams.context = &context;
+
+ for (int caseIndex = 0; caseIndex < numCases; caseIndex++)
+ {
+ const TestParams& testCase = cases[caseIndex];
+ const std::string baseName = testCase.name;
+ const int minComponents = testCase.minComponents;
+ const int maxComponents = testCase.maxComponents;
+ const glu::DataType inType = testCase.inType;
+ const std::string expression = testCase.expression;
+
+ // Check for presence of func(vec, scalar) style specialization,
+ // use as gatekeeper for applying said specialization
+ const bool alwaysScalar = expression.find("${MT}") != std::string::npos;
+
+ std::map<std::string, std::string> shaderTemplateParams;
+ shaderTemplateParams["CASE_BASE_TYPE"] = glu::getDataTypeName(testCase.outType);
+
+ shaderExecutorParams.outType = testCase.outType;
+ shaderExecutorParams.outputFloat = testCase.outputFloat;
+
+ for (int component = minComponents - 1; component < maxComponents; component++)
+ {
+ // Get type name eg. float, vec2, vec3, vec4 (same for other primitive types)
+ glu::DataType dataType = static_cast<glu::DataType>(inType + component);
+ std::string typeName = glu::getDataTypeName(dataType);
+
+ // ${T} => final type, ${MT} => final type but with scalar version usable even when T is a vector
+ std::map<std::string, std::string> expressionTemplateParams;
+ expressionTemplateParams["T"] = typeName;
+ expressionTemplateParams["MT"] = typeName;
+
+ const tcu::StringTemplate expressionTemplate(expression);
+
+ // Add vector access to expression as needed
+ shaderTemplateParams["CASE_EXPRESSION"] =
+ expressionTemplate.specialize(expressionTemplateParams) + componentAccess[component];
+
+ {
+ // Add type to case name if we are generating multiple versions
+ shaderExecutorParams.caseName = (casePrefix + baseName);
+ if (minComponents != maxComponents)
+ shaderExecutorParams.caseName += ("_" + typeName);
+
+ shaderExecutorParams.source = shaderTemplate.specialize(shaderTemplateParams);
+ if (shaderExecutorParams.outType == glu::TYPE_FLOAT)
+ createTestCasesForAllShaderTypes<float>(shaderExecutorParams, outputTests);
+ else
+ createTestCasesForAllShaderTypes<int>(shaderExecutorParams, outputTests);
+ }
+
+ // Deal with functions that allways accept one ore more scalar parameters even when others are vectors
+ if (alwaysScalar && component > 0)
+ {
+ shaderExecutorParams.caseName =
+ casePrefix + baseName + "_" + typeName + "_" + glu::getDataTypeName(inType);
+
+ expressionTemplateParams["MT"] = glu::getDataTypeName(inType);
+ shaderTemplateParams["CASE_EXPRESSION"] =
+ expressionTemplate.specialize(expressionTemplateParams) + componentAccess[component];
+
+ shaderExecutorParams.source = shaderTemplate.specialize(shaderTemplateParams);
+ if (shaderExecutorParams.outType == glu::TYPE_FLOAT)
+ createTestCasesForAllShaderTypes<float>(shaderExecutorParams, outputTests);
+ else
+ createTestCasesForAllShaderTypes<int>(shaderExecutorParams, outputTests);
+ }
+ } // component loop
+ }
+}
+
+} // namespace ShaderConstExpr
+
+ShaderConstExprTests::ShaderConstExprTests(deqp::Context& context)
+ : deqp::TestCaseGroup(context, "constant_expressions", "Constant expressions")
+{
+}
+
+ShaderConstExprTests::~ShaderConstExprTests(void)
+{
+}
+
+void ShaderConstExprTests::init(void)
+{
+ // Needed for autogenerating shader code for increased component counts
+ DE_STATIC_ASSERT(glu::TYPE_FLOAT + 1 == glu::TYPE_FLOAT_VEC2);
+ DE_STATIC_ASSERT(glu::TYPE_FLOAT + 2 == glu::TYPE_FLOAT_VEC3);
+ DE_STATIC_ASSERT(glu::TYPE_FLOAT + 3 == glu::TYPE_FLOAT_VEC4);
+
+ DE_STATIC_ASSERT(glu::TYPE_INT + 1 == glu::TYPE_INT_VEC2);
+ DE_STATIC_ASSERT(glu::TYPE_INT + 2 == glu::TYPE_INT_VEC3);
+ DE_STATIC_ASSERT(glu::TYPE_INT + 3 == glu::TYPE_INT_VEC4);
+
+ DE_STATIC_ASSERT(glu::TYPE_UINT + 1 == glu::TYPE_UINT_VEC2);
+ DE_STATIC_ASSERT(glu::TYPE_UINT + 2 == glu::TYPE_UINT_VEC3);
+ DE_STATIC_ASSERT(glu::TYPE_UINT + 3 == glu::TYPE_UINT_VEC4);
+
+ DE_STATIC_ASSERT(glu::TYPE_BOOL + 1 == glu::TYPE_BOOL_VEC2);
+ DE_STATIC_ASSERT(glu::TYPE_BOOL + 2 == glu::TYPE_BOOL_VEC3);
+ DE_STATIC_ASSERT(glu::TYPE_BOOL + 3 == glu::TYPE_BOOL_VEC4);
+
+ // ${T} => final type, ${MT} => final type but with scalar version usable even when T is a vector
+ const ShaderConstExpr::TestParams baseCases[] = {
+ { "radians", "radians(${T} (90.0))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_FLOAT, { deFloatRadians(90.0f) } },
+ { "degrees", "degrees(${T} (2.0))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_FLOAT, { deFloatDegrees(2.0f) } },
+ { "sin", "sin(${T} (3.0))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_FLOAT, { deFloatSin(3.0f) } },
+ { "cos", "cos(${T} (3.2))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_FLOAT, { deFloatCos(3.2f) } },
+ { "asin", "asin(${T} (0.0))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_FLOAT, { deFloatAsin(0.0f) } },
+ { "acos", "acos(${T} (1.0))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_FLOAT, { deFloatAcos(1.0f) } },
+ { "pow", "pow(${T} (1.7), ${T} (3.5))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_FLOAT, { deFloatPow(1.7f, 3.5f) } },
+ { "exp", "exp(${T} (4.2))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_FLOAT, { deFloatExp(4.2f) } },
+ { "log", "log(${T} (42.12))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_FLOAT, { deFloatLog(42.12f) } },
+ { "exp2", "exp2(${T} (6.7))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_FLOAT, { deFloatExp2(6.7f) } },
+ { "log2", "log2(${T} (100.0))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_FLOAT, { deFloatLog2(100.0f) } },
+ { "sqrt", "sqrt(${T} (10.0))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_FLOAT, { deFloatSqrt(10.0f) } },
+ { "inversesqrt", "inversesqrt(${T} (10.0))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_FLOAT, { deFloatRsq(10.0f) } },
+ { "abs", "abs(${T} (-42))", glu::TYPE_INT, 1, 4, glu::TYPE_INT, { 42 } },
+ { "sign", "sign(${T} (-18.0))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_FLOAT, { -1.0f } },
+ { "floor", "floor(${T} (37.3))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_FLOAT, { deFloatFloor(37.3f) } },
+ { "trunc", "trunc(${T} (-1.8))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_FLOAT, { -1.0f } },
+ { "round", "round(${T} (42.1))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_FLOAT, { 42.0f } },
+ { "ceil", "ceil(${T} (82.2))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_FLOAT, { deFloatCeil(82.2f) } },
+ { "mod", "mod(${T} (87.65), ${MT} (3.7))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_FLOAT, { deFloatMod(87.65f, 3.7f) } },
+ { "min", "min(${T} (12.3), ${MT} (32.1))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_FLOAT, { 12.3f } },
+ { "max", "max(${T} (12.3), ${MT} (32.1))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_FLOAT, { 32.1f } },
+ { "clamp", "clamp(${T} (42.1), ${MT} (10.0), ${MT} (15.0))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_FLOAT, { 15.0f } },
+ { "length_float", "length(1.0)", glu::TYPE_FLOAT, 1, 1, glu::TYPE_FLOAT, { 1.0f } },
+ { "length_vec2", "length(vec2(1.0))", glu::TYPE_FLOAT, 1, 1, glu::TYPE_FLOAT, { deFloatSqrt(2.0f) } },
+ { "length_vec3", "length(vec3(1.0))", glu::TYPE_FLOAT, 1, 1, glu::TYPE_FLOAT, { deFloatSqrt(3.0f) } },
+ { "length_vec4", "length(vec4(1.0))", glu::TYPE_FLOAT, 1, 1, glu::TYPE_FLOAT, { deFloatSqrt(4.0f) } },
+ { "dot_float", "dot(1.0, 1.0)", glu::TYPE_FLOAT, 1, 1, glu::TYPE_FLOAT, { 1.0f } },
+ { "dot_vec2", "dot(vec2(1.0), vec2(1.0))", glu::TYPE_FLOAT, 1, 1, glu::TYPE_FLOAT, { 2.0f } },
+ { "dot_vec3", "dot(vec3(1.0), vec3(1.0))", glu::TYPE_FLOAT, 1, 1, glu::TYPE_FLOAT, { 3.0f } },
+ { "dot_vec4", "dot(vec4(1.0), vec4(1.0))", glu::TYPE_FLOAT, 1, 1, glu::TYPE_FLOAT, { 4.0f } },
+ { "normalize_float", "normalize(1.0)", glu::TYPE_FLOAT, 1, 1, glu::TYPE_FLOAT, { 1.0f } },
+ { "normalize_vec2", "normalize(vec2(1.0)).x", glu::TYPE_FLOAT, 1, 1, glu::TYPE_FLOAT, { deFloatRsq(2.0f) } },
+ { "normalize_vec3", "normalize(vec3(1.0)).x", glu::TYPE_FLOAT, 1, 1, glu::TYPE_FLOAT, { deFloatRsq(3.0f) } },
+ { "normalize_vec4", "normalize(vec4(1.0)).x", glu::TYPE_FLOAT, 1, 1, glu::TYPE_FLOAT, { deFloatRsq(4.0f) } },
+ };
+
+ const ShaderConstExpr::TestParams arrayCases[] = {
+ { "radians", "radians(${T} (60.0))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_INT, { deFloatRadians(60.0f) } },
+ { "degrees", "degrees(${T} (0.11))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_INT, { deFloatDegrees(0.11f) } },
+ { "sin", "${T} (1.0) + sin(${T} (0.7))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_INT, { 1.0f + deFloatSin(0.7f) } },
+ { "cos", "${T} (1.0) + cos(${T} (0.7))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_INT, { 1.0f + deFloatCos(0.7f) } },
+ { "asin", "asin(${T} (0.9))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_INT, { deFloatAsin(0.9f) } },
+ { "acos", "acos(${T} (-0.5))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_INT, { deFloatAcos(-0.5f) } },
+ { "pow", "pow(${T} (2.0), ${T} (2.0))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_INT, { deFloatPow(2.0f, 2.0f) } },
+ { "exp", "exp(${T} (1.2))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_INT, { deFloatExp(1.2f) } },
+ { "log", "log(${T} (8.0))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_INT, { deFloatLog(8.0f) } },
+ { "exp2", "exp2(${T} (2.1))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_INT, { deFloatExp2(2.1f) } },
+ { "log2", "log2(${T} (9.0))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_INT, { deFloatLog2(9.0) } },
+ { "sqrt", "sqrt(${T} (4.5))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_INT, { deFloatSqrt(4.5f) } },
+ { "inversesqrt", "inversesqrt(${T} (0.26))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_INT, { deFloatRsq(0.26f) } },
+ { "abs", "abs(${T} (-2))", glu::TYPE_INT, 1, 4, glu::TYPE_INT, { 2 } },
+ { "sign", "sign(${T} (18.0))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_INT, { deFloatSign(18.0f) } },
+ { "floor", "floor(${T} (3.3))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_INT, { deFloatFloor(3.3f) } },
+ { "trunc", "trunc(${T} (2.8))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_INT, { 2 } },
+ { "round", "round(${T} (2.2))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_INT, { deFloatRound(2.2f) } },
+ { "ceil", "ceil(${T} (2.2))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_INT, { deFloatCeil(2.2f) } },
+ { "mod", "mod(${T} (7.1), ${MT} (4.0))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_INT, { deFloatMod(7.1f, 4.0f) } },
+ { "min", "min(${T} (2.3), ${MT} (3.1))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_INT, { deFloatMin(2.3f, 3.1f) } },
+ { "max", "max(${T} (2.3), ${MT} (3.1))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_INT, { deFloatMax(2.3f, 3.1f) } },
+ { "clamp", "clamp(${T} (4.1), ${MT} (2.1), ${MT} (3.1))", glu::TYPE_FLOAT, 1, 4, glu::TYPE_INT, { 3 } },
+ { "length_float", "length(2.1)", glu::TYPE_FLOAT, 1, 1, glu::TYPE_INT, { 2 } },
+ { "length_vec2", "length(vec2(1.0))", glu::TYPE_FLOAT, 1, 1, glu::TYPE_INT, { deFloatSqrt(2.0f) } },
+ { "length_vec3", "length(vec3(1.0))", glu::TYPE_FLOAT, 1, 1, glu::TYPE_INT, { deFloatSqrt(3.0f) } },
+ { "length_vec4", "length(vec4(1.0))", glu::TYPE_FLOAT, 1, 1, glu::TYPE_INT, { deFloatSqrt(4.0f) } },
+ { "dot_float", "dot(1.0, 1.0)", glu::TYPE_FLOAT, 1, 1, glu::TYPE_INT, { 1 } },
+ { "dot_vec2", "dot(vec2(1.0), vec2(1.01))", glu::TYPE_FLOAT, 1, 1, glu::TYPE_INT, { 2 } },
+ { "dot_vec3", "dot(vec3(1.0), vec3(1.1))", glu::TYPE_FLOAT, 1, 1, glu::TYPE_INT, { 3 } },
+ { "dot_vec4", "dot(vec4(1.0), vec4(1.1))", glu::TYPE_FLOAT, 1, 1, glu::TYPE_INT, { 4 } },
+ { "normalize_float", "${T} (1.0) + normalize(2.0)", glu::TYPE_FLOAT, 1, 1, glu::TYPE_INT, { 2 } },
+ { "normalize_vec2", "${T} (1.0) + normalize(vec2(1.0)).x", glu::TYPE_FLOAT, 1, 1, glu::TYPE_INT, { 1.0f + deFloatRsq(2.0f) } },
+ { "normalize_vec3", "${T} (1.0) + normalize(vec3(1.0)).x", glu::TYPE_FLOAT, 1, 1, glu::TYPE_INT, { 1.0f + deFloatRsq(3.0f) } },
+ { "normalize_vec4", "${T} (1.0) + normalize(vec4(1.0)).x", glu::TYPE_FLOAT, 1, 1, glu::TYPE_INT, { 1.0f + deFloatRsq(4.0f) } },
+ };
+
+ const char* basicShaderTemplate = "const ${CASE_BASE_TYPE} cval = ${CASE_EXPRESSION};\n"
+ "out0 = cval;\n";
+
+ std::vector<tcu::TestNode*> children;
+ ShaderConstExpr::createTests(m_context, baseCases, DE_LENGTH_OF_ARRAY(baseCases), basicShaderTemplate, "basic_",
+ children);
+
+ const char* arrayShaderTemplate = "float array[int(${CASE_EXPRESSION})];\n"
+ "out0 = array.length();\n";
+
+ ShaderConstExpr::createTests(m_context, arrayCases, DE_LENGTH_OF_ARRAY(arrayCases), arrayShaderTemplate, "array_",
+ children);
+
+ for (std::size_t i = 0; i < children.size(); i++)
+ addChild(children[i]);
+}
+
+} // glcts
diff --git a/external/openglcts/modules/common/glcShaderConstExprTests.hpp b/external/openglcts/modules/common/glcShaderConstExprTests.hpp
new file mode 100644
index 0000000..257f14f
--- /dev/null
+++ b/external/openglcts/modules/common/glcShaderConstExprTests.hpp
@@ -0,0 +1,49 @@
+#ifndef _GLCSHADERCONSTEXPRTESTS_HPP
+#define _GLCSHADERCONSTEXPRTESTS_HPP
+/*-------------------------------------------------------------------------
+ * drawElements Quality Program OpenGL ES 3.0 Module
+ * -------------------------------------------------
+ *
+ * Copyright 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */ /*!
+ * \file
+ * \brief GLES3 shader constant expression tests
+ */ /*--------------------------------------------------------------------*/
+
+#include "glcTestCase.hpp"
+#include "gluShaderUtil.hpp"
+#include "glwDefs.hpp"
+#include "glwEnums.hpp"
+
+namespace glcts
+{
+
+class ShaderConstExprTests : public deqp::TestCaseGroup
+{
+public:
+ ShaderConstExprTests(deqp::Context& context);
+ virtual ~ShaderConstExprTests(void);
+
+ void init(void);
+
+private:
+ ShaderConstExprTests(const ShaderConstExprTests& other);
+ ShaderConstExprTests& operator=(const ShaderConstExprTests& other);
+};
+
+} // glcts
+
+#endif // _GLCSHADERCONSTEXPRTESTS_HPP
diff --git a/external/openglcts/modules/common/glcWaiver.hpp b/external/openglcts/modules/common/glcWaiver.hpp
new file mode 100644
index 0000000..d2a4673
--- /dev/null
+++ b/external/openglcts/modules/common/glcWaiver.hpp
@@ -0,0 +1,38 @@
+#ifndef _GLCWAIVER_HPP
+#define _GLCWAIVER_HPP
+/*-------------------------------------------------------------------------
+ * OpenGL Conformance Test Suite
+ * -----------------------------
+ *
+ * Copyright (c) 2014-2017 The Khronos Group Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */ /*!
+ * \file
+ * \brief
+ */ /*-------------------------------------------------------------------*/
+
+
+/* Bug 13788 - Waiver request for bug related to
+ rendering last 2 columns of pixels in 16K wide textures / render buffers
+
+ This define disables testing of rendering of primitives that fit 2x2 of
+ the lower left corner of the framebuffer, if framebuffer's width
+ is greater than 16383.
+
+ Disabled by default
+*/
+// #define WAIVER_WITH_BUG_13788
+
+#endif // _GLCWAIVER_HPP
diff --git a/external/openglcts/modules/gl/CMakeLists.txt b/external/openglcts/modules/gl/CMakeLists.txt
index c9a0ef1..21d4682 100644
--- a/external/openglcts/modules/gl/CMakeLists.txt
+++ b/external/openglcts/modules/gl/CMakeLists.txt
@@ -116,8 +116,8 @@
gl4cSparseTexture2Tests.hpp
gl4cSparseTextureClampTests.cpp
gl4cSparseTextureClampTests.hpp
- gl4cParallelShaderCompileTests.cpp
- gl4cParallelShaderCompileTests.hpp
+ gl4cSpirvExtensionsTests.cpp
+ gl4cSpirvExtensionsTests.hpp
gl4cPostDepthCoverageTests.cpp
gl4cPostDepthCoverageTests.hpp
gl4cIndirectParametersTests.cpp
diff --git a/external/openglcts/modules/gl/gl3cCommonBugsTests.cpp b/external/openglcts/modules/gl/gl3cCommonBugsTests.cpp
index 69a057d..d862798 100644
--- a/external/openglcts/modules/gl/gl3cCommonBugsTests.cpp
+++ b/external/openglcts/modules/gl/gl3cCommonBugsTests.cpp
@@ -1851,8 +1851,8 @@
break;
case TEST_ITERATION_PERVERTEX_BLOCK_UNDEFINED:
- result =
- "No gl_PerVertex block defined in shader programs for all shader stages supported by the running context";
+ result = "No gl_PerVertex block defined in shader programs for all shader stages supported by the running "
+ "context";
break;
default:
result = "Unknown";
@@ -1907,11 +1907,11 @@
std::stringstream gs_body_sstream;
*out_min_context_type_ptr = (is_cull_distance_iteration) ? glu::ContextType(4, 5, glu::PROFILE_CORE) :
- glu::ContextType(3, 2, glu::PROFILE_CORE);
+ glu::ContextType(4, 1, glu::PROFILE_CORE);
*out_used_shader_stages_ptr = (_shader_stage)(SHADER_STAGE_GEOMETRY | SHADER_STAGE_VERTEX);
/* Form the geometry shader body */
- gs_body_sstream << ((!is_cull_distance_iteration) ? "#version 150\n" : "version 450\n")
+ gs_body_sstream << ((!is_cull_distance_iteration) ? "#version 410\n" : "version 450\n")
<< "\n"
"layout(points) in;\n"
"layout(points, max_vertices = 1) out;\n"
@@ -2057,7 +2057,7 @@
const bool is_tc_stage = (n_iteration == 0);
std::stringstream* current_sstream_ptr = (is_tc_stage) ? &tc_sstream : &te_sstream;
- *current_sstream_ptr << ((is_cull_distance_iteration) ? "#version 450 core\n" : "#version 400\n") << "\n";
+ *current_sstream_ptr << ((is_cull_distance_iteration) ? "#version 450 core\n" : "#version 410\n") << "\n";
if (is_tc_stage)
{
@@ -2196,7 +2196,7 @@
(iteration == TEST_ITERATION_UNDECLARED_OUT_PERVERTEX_VS_GL_CULLDISTANCE_USAGE);
*out_min_context_type_ptr = (is_cull_distance_iteration) ? glu::ContextType(4, 5, glu::PROFILE_CORE) :
- glu::ContextType(4, 0, glu::PROFILE_CORE);
+ glu::ContextType(4, 1, glu::PROFILE_CORE);
*out_used_shader_stages_ptr = (_shader_stage)(SHADER_STAGE_VERTEX);
/* Determine what the main() body contents should be. */
@@ -2231,9 +2231,7 @@
case TEST_ITERATION_PERVERTEX_DECLARATION_MISMATCH_GS_TC_TE_VS:
case TEST_ITERATION_PERVERTEX_DECLARATION_MISMATCH_TC_TE_VS:
{
- *out_min_context_type_ptr = (iteration == TEST_ITERATION_PERVERTEX_DECLARATION_MISMATCH_GS_TC_TE_VS) ?
- glu::ContextType(4, 0, glu::PROFILE_CORE) :
- glu::ContextType(3, 2, glu::PROFILE_CORE);
+ *out_min_context_type_ptr = glu::ContextType(4, 1, glu::PROFILE_CORE);
*out_used_shader_stages_ptr = SHADER_STAGE_VERTEX;
if (iteration == TEST_ITERATION_PERVERTEX_DECLARATION_MISMATCH_GS_TC_TE_VS ||
@@ -2250,7 +2248,7 @@
}
/* Shader bodies are predefined in this case. */
- *out_gs_body_ptr = "#version 150\n"
+ *out_gs_body_ptr = "#version 410\n"
"\n"
"layout (points) in;\n"
"layout (points, max_vertices = 4) out;\n"
@@ -2270,7 +2268,7 @@
" gl_ClipDistance[0] = 0.5;\n"
" EmitVertex();\n"
"}\n";
- *out_tc_body_ptr = "#version 400\n"
+ *out_tc_body_ptr = "#version 410\n"
"\n"
"layout (vertices = 4) out;\n"
"\n"
@@ -2288,7 +2286,7 @@
"{\n"
" gl_out[gl_InvocationID].gl_PointSize = gl_in[0].gl_PointSize + 1.0;\n"
"}\n";
- *out_te_body_ptr = "#version 400\n"
+ *out_te_body_ptr = "#version 410\n"
"\n"
"layout (isolines) in;\n"
"\n"
@@ -2308,7 +2306,7 @@
"{\n"
" gl_Position = vec4(gl_in[0].gl_PointSize) + gl_in[1].gl_Position;\n"
"}\n";
- *out_vs_body_ptr = "#version 150\n"
+ *out_vs_body_ptr = "#version 410\n"
"\n"
"out gl_PerVertex\n"
"{\n"
@@ -2325,7 +2323,7 @@
case TEST_ITERATION_PERVERTEX_BLOCK_UNDEFINED:
{
- *out_min_context_type_ptr = glu::ContextType(3, 2, glu::PROFILE_CORE);
+ *out_min_context_type_ptr = glu::ContextType(4, 1, glu::PROFILE_CORE);
*out_used_shader_stages_ptr = SHADER_STAGE_VERTEX;
if (glu::contextSupports(context_type, glu::ApiType::core(3, 2)))
@@ -2339,7 +2337,7 @@
SHADER_STAGE_TESSELLATION_CONTROL | SHADER_STAGE_TESSELLATION_EVALUATION;
}
- *out_gs_body_ptr = "#version 150\n"
+ *out_gs_body_ptr = "#version 410\n"
"\n"
"layout (points) in;\n"
"layout (points, max_vertices = 4) out;\n"
@@ -2349,7 +2347,7 @@
" gl_Position = vec4(1.0, 2.0, 3.0, 4.0);\n"
" EmitVertex();\n"
"}\n";
- *out_tc_body_ptr = "#version 400\n"
+ *out_tc_body_ptr = "#version 410\n"
"\n"
"layout(vertices = 4) out;\n"
"\n"
@@ -2357,7 +2355,7 @@
"{\n"
" gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position;\n"
"}\n";
- *out_te_body_ptr = "#version 400\n"
+ *out_te_body_ptr = "#version 410\n"
"\n"
"layout (isolines) in;\n"
"\n"
@@ -2365,7 +2363,7 @@
"{\n"
" gl_Position = gl_in[0].gl_Position;\n"
"}\n";
- *out_vs_body_ptr = "#version 130\n"
+ *out_vs_body_ptr = "#version 410\n"
"\n"
"void main()\n"
"{\n"
@@ -2423,10 +2421,10 @@
iteration != TEST_ITERATION_UNDECLARED_OUT_PERVERTEX_VS_GL_POSITION_USAGE);
std::stringstream vs_body_sstream;
- vs_body_sstream << "#version " << ((include_cull_distance) ? "450" : "320") << "\n"
- "\n"
- "in gl_PerVertex\n"
- "{\n";
+ vs_body_sstream << "#version " << ((include_cull_distance) ? "450" : "410") << "\n"
+ << "\n"
+ "in gl_PerVertex\n"
+ "{\n";
vs_body_sstream << ((include_clip_distance) ? "float gl_ClipDistance[];\n" : "");
vs_body_sstream << ((include_pointsize) ? "float gl_PointSize;\n" : "");
@@ -2872,6 +2870,11 @@
/* All done */
result = true;
end:
+ if (!result)
+ {
+ m_testCtx.getLog() << tcu::TestLog::Message << "Failed test description: " << getTestIterationName(iteration)
+ << tcu::TestLog::EndMessage;
+ }
return result;
}
diff --git a/external/openglcts/modules/gl/gl4cDirectStateAccessTests.cpp b/external/openglcts/modules/gl/gl4cDirectStateAccessTests.cpp
index bc91957..1159594 100644
--- a/external/openglcts/modules/gl/gl4cDirectStateAccessTests.cpp
+++ b/external/openglcts/modules/gl/gl4cDirectStateAccessTests.cpp
@@ -196,7 +196,204 @@
addChild(new Textures::BufferTest<glw::GLfloat, 3, true>(m_context, "textures_buffer_rgb32f"));
addChild(new Textures::BufferTest<glw::GLfloat, 4, true>(m_context, "textures_buffer_rgba32f"));
- addChild(new Textures::StorageAndSubImageTest(m_context));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLbyte, 1, false, 1, false>(m_context, "textures_storage_1d_r8i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLbyte, 2, false, 1, false>(m_context, "textures_storage_1d_rg8i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLbyte, 4, false, 1, false>(m_context, "textures_storage_1d_rgba8i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLbyte, 1, false, 2, false>(m_context, "textures_storage_2d_r8i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLbyte, 2, false, 2, false>(m_context, "textures_storage_2d_rg8i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLbyte, 4, false, 2, false>(m_context, "textures_storage_2d_rgba8i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLbyte, 1, false, 3, false>(m_context, "textures_storage_3d_r8i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLbyte, 2, false, 3, false>(m_context, "textures_storage_3d_rg8i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLbyte, 4, false, 3, false>(m_context, "textures_storage_3d_rgba8i"));
+
+ addChild(new Textures::StorageAndSubImageTest<glw::GLubyte, 1, false, 1, false>(m_context, "textures_storage_1d_r8ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLubyte, 2, false, 1, false>(m_context, "textures_storage_1d_rg8ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLubyte, 4, false, 1, false>(m_context, "textures_storage_1d_rgba8ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLubyte, 1, false, 2, false>(m_context, "textures_storage_2d_r8ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLubyte, 2, false, 2, false>(m_context, "textures_storage_2d_rg8ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLubyte, 4, false, 2, false>(m_context, "textures_storage_2d_rgba8ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLubyte, 1, false, 3, false>(m_context, "textures_storage_3d_r8ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLubyte, 2, false, 3, false>(m_context, "textures_storage_3d_rg8ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLubyte, 4, false, 3, false>(m_context, "textures_storage_3d_rgba8ui"));
+
+ addChild(new Textures::StorageAndSubImageTest<glw::GLubyte, 1, true, 1, false>(m_context, "textures_storage_1d_r8ui_unorm"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLubyte, 2, true, 1, false>(m_context, "textures_storage_1d_rg8ui_unorm"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLubyte, 4, true, 1, false>(m_context, "textures_storage_1d_rgba8ui_unorm"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLubyte, 1, true, 2, false>(m_context, "textures_storage_2d_r8ui_unorm"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLubyte, 2, true, 2, false>(m_context, "textures_storage_2d_rg8ui_unorm"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLubyte, 4, true, 2, false>(m_context, "textures_storage_2d_rgba8ui_unorm"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLubyte, 1, true, 3, false>(m_context, "textures_storage_3d_r8ui_unorm"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLubyte, 2, true, 3, false>(m_context, "textures_storage_3d_rg8ui_unorm"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLubyte, 4, true, 3, false>(m_context, "textures_storage_3d_rgba8ui_unorm"));
+
+ addChild(new Textures::StorageAndSubImageTest<glw::GLshort, 1, false, 1, false>(m_context, "textures_storage_1d_r16i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLshort, 2, false, 1, false>(m_context, "textures_storage_1d_rg16i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLshort, 4, false, 1, false>(m_context, "textures_storage_1d_rgba16i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLshort, 1, false, 2, false>(m_context, "textures_storage_2d_r16i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLshort, 2, false, 2, false>(m_context, "textures_storage_2d_rg16i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLshort, 4, false, 2, false>(m_context, "textures_storage_2d_rgba16i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLshort, 1, false, 3, false>(m_context, "textures_storage_3d_r16i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLshort, 2, false, 3, false>(m_context, "textures_storage_3d_rg16i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLshort, 4, false, 3, false>(m_context, "textures_storage_3d_rgba16i"));
+
+ addChild(new Textures::StorageAndSubImageTest<glw::GLushort, 1, false, 1, false>(m_context, "textures_storage_1d_r16ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLushort, 2, false, 1, false>(m_context, "textures_storage_1d_rg16ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLushort, 4, false, 1, false>(m_context, "textures_storage_1d_rgba16ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLushort, 1, false, 2, false>(m_context, "textures_storage_2d_r16ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLushort, 2, false, 2, false>(m_context, "textures_storage_2d_rg16ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLushort, 4, false, 2, false>(m_context, "textures_storage_2d_rgba16ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLushort, 1, false, 3, false>(m_context, "textures_storage_3d_r16ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLushort, 2, false, 3, false>(m_context, "textures_storage_3d_rg16ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLushort, 4, false, 3, false>(m_context, "textures_storage_3d_rgba16ui"));
+
+ addChild(new Textures::StorageAndSubImageTest<glw::GLushort, 1, true, 1, false>(m_context, "textures_storage_1d_r16ui_unorm"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLushort, 2, true, 1, false>(m_context, "textures_storage_1d_rg16ui_unorm"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLushort, 4, true, 1, false>(m_context, "textures_storage_1d_rgba16ui_unorm"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLushort, 1, true, 2, false>(m_context, "textures_storage_2d_r16ui_unorm"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLushort, 2, true, 2, false>(m_context, "textures_storage_2d_rg16ui_unorm"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLushort, 4, true, 2, false>(m_context, "textures_storage_2d_rgba16ui_unorm"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLushort, 1, true, 3, false>(m_context, "textures_storage_3d_r16ui_unorm"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLushort, 2, true, 3, false>(m_context, "textures_storage_3d_rg16ui_unorm"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLushort, 4, true, 3, false>(m_context, "textures_storage_3d_rgba16ui_unorm"));
+
+ addChild(new Textures::StorageAndSubImageTest<glw::GLint, 1, false, 1, false>(m_context, "textures_storage_1d_r32i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLint, 2, false, 1, false>(m_context, "textures_storage_1d_rg32i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLint, 3, false, 1, false>(m_context, "textures_storage_1d_rgb32i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLint, 4, false, 1, false>(m_context, "textures_storage_1d_rgba32i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLint, 1, false, 2, false>(m_context, "textures_storage_2d_r32i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLint, 2, false, 2, false>(m_context, "textures_storage_2d_rg32i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLint, 3, false, 2, false>(m_context, "textures_storage_2d_rgb32i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLint, 4, false, 2, false>(m_context, "textures_storage_2d_rgba32i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLint, 1, false, 3, false>(m_context, "textures_storage_3d_r32i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLint, 2, false, 3, false>(m_context, "textures_storage_3d_rg32i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLint, 3, false, 3, false>(m_context, "textures_storage_3d_rgb32i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLint, 4, false, 3, false>(m_context, "textures_storage_3d_rgba32i"));
+
+ addChild(new Textures::StorageAndSubImageTest<glw::GLuint, 1, false, 1, false>(m_context, "textures_storage_1d_r32ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLuint, 2, false, 1, false>(m_context, "textures_storage_1d_rg32ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLuint, 3, false, 1, false>(m_context, "textures_storage_1d_rgb32ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLuint, 4, false, 1, false>(m_context, "textures_storage_1d_rgba32ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLuint, 1, false, 2, false>(m_context, "textures_storage_2d_r32ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLuint, 2, false, 2, false>(m_context, "textures_storage_2d_rg32ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLuint, 3, false, 2, false>(m_context, "textures_storage_2d_rgb32ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLuint, 4, false, 2, false>(m_context, "textures_storage_2d_rgba32ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLuint, 1, false, 3, false>(m_context, "textures_storage_3d_r32ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLuint, 2, false, 3, false>(m_context, "textures_storage_3d_rg32ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLuint, 3, false, 3, false>(m_context, "textures_storage_3d_rgb32ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLuint, 4, false, 3, false>(m_context, "textures_storage_3d_rgba32ui"));
+
+ addChild(new Textures::StorageAndSubImageTest<glw::GLfloat, 1, true, 1, false>(m_context, "textures_storage_1d_r32f"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLfloat, 2, true, 1, false>(m_context, "textures_storage_1d_rg32f"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLfloat, 3, true, 1, false>(m_context, "textures_storage_1d_rgb32f"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLfloat, 4, true, 1, false>(m_context, "textures_storage_1d_rgba32f"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLfloat, 1, true, 2, false>(m_context, "textures_storage_2d_r32f"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLfloat, 2, true, 2, false>(m_context, "textures_storage_2d_rg32f"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLfloat, 3, true, 2, false>(m_context, "textures_storage_2d_rgb32f"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLfloat, 4, true, 2, false>(m_context, "textures_storage_2d_rgba32f"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLfloat, 1, true, 3, false>(m_context, "textures_storage_3d_r32f"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLfloat, 2, true, 3, false>(m_context, "textures_storage_3d_rg32f"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLfloat, 3, true, 3, false>(m_context, "textures_storage_3d_rgb32f"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLfloat, 4, true, 3, false>(m_context, "textures_storage_3d_rgba32f"));
+
+ addChild(new Textures::StorageAndSubImageTest<glw::GLbyte, 1, false, 1, true>(m_context, "textures_subimage_1d_r8i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLbyte, 2, false, 1, true>(m_context, "textures_subimage_1d_rg8i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLbyte, 4, false, 1, true>(m_context, "textures_subimage_1d_rgba8i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLbyte, 1, false, 2, true>(m_context, "textures_subimage_2d_r8i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLbyte, 2, false, 2, true>(m_context, "textures_subimage_2d_rg8i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLbyte, 4, false, 2, true>(m_context, "textures_subimage_2d_rgba8i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLbyte, 1, false, 3, true>(m_context, "textures_subimage_3d_r8i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLbyte, 2, false, 3, true>(m_context, "textures_subimage_3d_rg8i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLbyte, 4, false, 3, true>(m_context, "textures_subimage_3d_rgba8i"));
+
+ addChild(new Textures::StorageAndSubImageTest<glw::GLubyte, 1, false, 1, true>(m_context, "textures_subimage_1d_r8ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLubyte, 2, false, 1, true>(m_context, "textures_subimage_1d_rg8ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLubyte, 4, false, 1, true>(m_context, "textures_subimage_1d_rgba8ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLubyte, 1, false, 2, true>(m_context, "textures_subimage_2d_r8ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLubyte, 2, false, 2, true>(m_context, "textures_subimage_2d_rg8ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLubyte, 4, false, 2, true>(m_context, "textures_subimage_2d_rgba8ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLubyte, 1, false, 3, true>(m_context, "textures_subimage_3d_r8ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLubyte, 2, false, 3, true>(m_context, "textures_subimage_3d_rg8ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLubyte, 4, false, 3, true>(m_context, "textures_subimage_3d_rgba8ui"));
+
+ addChild(new Textures::StorageAndSubImageTest<glw::GLubyte, 1, true, 1, true>(m_context, "textures_subimage_1d_r8ui_unorm"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLubyte, 2, true, 1, true>(m_context, "textures_subimage_1d_rg8ui_unorm"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLubyte, 4, true, 1, true>(m_context, "textures_subimage_1d_rgba8ui_unorm"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLubyte, 1, true, 2, true>(m_context, "textures_subimage_2d_r8ui_unorm"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLubyte, 2, true, 2, true>(m_context, "textures_subimage_2d_rg8ui_unorm"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLubyte, 4, true, 2, true>(m_context, "textures_subimage_2d_rgba8ui_unorm"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLubyte, 1, true, 3, true>(m_context, "textures_subimage_3d_r8ui_unorm"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLubyte, 2, true, 3, true>(m_context, "textures_subimage_3d_rg8ui_unorm"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLubyte, 4, true, 3, true>(m_context, "textures_subimage_3d_rgba8ui_unorm"));
+
+ addChild(new Textures::StorageAndSubImageTest<glw::GLshort, 1, false, 1, true>(m_context, "textures_subimage_1d_r16i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLshort, 2, false, 1, true>(m_context, "textures_subimage_1d_rg16i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLshort, 4, false, 1, true>(m_context, "textures_subimage_1d_rgba16i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLshort, 1, false, 2, true>(m_context, "textures_subimage_2d_r16i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLshort, 2, false, 2, true>(m_context, "textures_subimage_2d_rg16i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLshort, 4, false, 2, true>(m_context, "textures_subimage_2d_rgba16i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLshort, 1, false, 3, true>(m_context, "textures_subimage_3d_r16i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLshort, 2, false, 3, true>(m_context, "textures_subimage_3d_rg16i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLshort, 4, false, 3, true>(m_context, "textures_subimage_3d_rgba16i"));
+
+ addChild(new Textures::StorageAndSubImageTest<glw::GLushort, 1, false, 1, true>(m_context, "textures_subimage_1d_r16ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLushort, 2, false, 1, true>(m_context, "textures_subimage_1d_rg16ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLushort, 4, false, 1, true>(m_context, "textures_subimage_1d_rgba16ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLushort, 1, false, 2, true>(m_context, "textures_subimage_2d_r16ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLushort, 2, false, 2, true>(m_context, "textures_subimage_2d_rg16ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLushort, 4, false, 2, true>(m_context, "textures_subimage_2d_rgba16ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLushort, 1, false, 3, true>(m_context, "textures_subimage_3d_r16ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLushort, 2, false, 3, true>(m_context, "textures_subimage_3d_rg16ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLushort, 4, false, 3, true>(m_context, "textures_subimage_3d_rgba16ui"));
+
+ addChild(new Textures::StorageAndSubImageTest<glw::GLushort, 1, true, 1, true>(m_context, "textures_subimage_1d_r16ui_unorm"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLushort, 2, true, 1, true>(m_context, "textures_subimage_1d_rg16ui_unorm"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLushort, 4, true, 1, true>(m_context, "textures_subimage_1d_rgba16ui_unorm"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLushort, 1, true, 2, true>(m_context, "textures_subimage_2d_r16ui_unorm"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLushort, 2, true, 2, true>(m_context, "textures_subimage_2d_rg16ui_unorm"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLushort, 4, true, 2, true>(m_context, "textures_subimage_2d_rgba16ui_unorm"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLushort, 1, true, 3, true>(m_context, "textures_subimage_3d_r16ui_unorm"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLushort, 2, true, 3, true>(m_context, "textures_subimage_3d_rg16ui_unorm"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLushort, 4, true, 3, true>(m_context, "textures_subimage_3d_rgba16ui_unorm"));
+
+ addChild(new Textures::StorageAndSubImageTest<glw::GLint, 1, false, 1, true>(m_context, "textures_subimage_1d_r32i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLint, 2, false, 1, true>(m_context, "textures_subimage_1d_rg32i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLint, 3, false, 1, true>(m_context, "textures_subimage_1d_rgb32i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLint, 4, false, 1, true>(m_context, "textures_subimage_1d_rgba32i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLint, 1, false, 2, true>(m_context, "textures_subimage_2d_r32i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLint, 2, false, 2, true>(m_context, "textures_subimage_2d_rg32i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLint, 3, false, 2, true>(m_context, "textures_subimage_2d_rgb32i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLint, 4, false, 2, true>(m_context, "textures_subimage_2d_rgba32i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLint, 1, false, 3, true>(m_context, "textures_subimage_3d_r32i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLint, 2, false, 3, true>(m_context, "textures_subimage_3d_rg32i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLint, 3, false, 3, true>(m_context, "textures_subimage_3d_rgb32i"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLint, 4, false, 3, true>(m_context, "textures_subimage_3d_rgba32i"));
+
+ addChild(new Textures::StorageAndSubImageTest<glw::GLuint, 1, false, 1, true>(m_context, "textures_subimage_1d_r32ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLuint, 2, false, 1, true>(m_context, "textures_subimage_1d_rg32ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLuint, 3, false, 1, true>(m_context, "textures_subimage_1d_rgb32ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLuint, 4, false, 1, true>(m_context, "textures_subimage_1d_rgba32ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLuint, 1, false, 2, true>(m_context, "textures_subimage_2d_r32ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLuint, 2, false, 2, true>(m_context, "textures_subimage_2d_rg32ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLuint, 3, false, 2, true>(m_context, "textures_subimage_2d_rgb32ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLuint, 4, false, 2, true>(m_context, "textures_subimage_2d_rgba32ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLuint, 1, false, 3, true>(m_context, "textures_subimage_3d_r32ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLuint, 2, false, 3, true>(m_context, "textures_subimage_3d_rg32ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLuint, 3, false, 3, true>(m_context, "textures_subimage_3d_rgb32ui"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLuint, 4, false, 3, true>(m_context, "textures_subimage_3d_rgba32ui"));
+
+ addChild(new Textures::StorageAndSubImageTest<glw::GLfloat, 1, true, 1, true>(m_context, "textures_subimage_1d_r32f"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLfloat, 2, true, 1, true>(m_context, "textures_subimage_1d_rg32f"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLfloat, 3, true, 1, true>(m_context, "textures_subimage_1d_rgb32f"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLfloat, 4, true, 1, true>(m_context, "textures_subimage_1d_rgba32f"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLfloat, 1, true, 2, true>(m_context, "textures_subimage_2d_r32f"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLfloat, 2, true, 2, true>(m_context, "textures_subimage_2d_rg32f"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLfloat, 3, true, 2, true>(m_context, "textures_subimage_2d_rgb32f"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLfloat, 4, true, 2, true>(m_context, "textures_subimage_2d_rgba32f"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLfloat, 1, true, 3, true>(m_context, "textures_subimage_3d_r32f"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLfloat, 2, true, 3, true>(m_context, "textures_subimage_3d_rg32f"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLfloat, 3, true, 3, true>(m_context, "textures_subimage_3d_rgb32f"));
+ addChild(new Textures::StorageAndSubImageTest<glw::GLfloat, 4, true, 3, true>(m_context, "textures_subimage_3d_rgba32f"));
+
addChild(new Textures::StorageMultisampleTest(m_context));
addChild(new Textures::CompressedSubImageTest(m_context));
addChild(new Textures::CopyTest(m_context));
diff --git a/external/openglcts/modules/gl/gl4cDirectStateAccessTests.hpp b/external/openglcts/modules/gl/gl4cDirectStateAccessTests.hpp
index 612a310..88f3d36 100644
--- a/external/openglcts/modules/gl/gl4cDirectStateAccessTests.hpp
+++ b/external/openglcts/modules/gl/gl4cDirectStateAccessTests.hpp
@@ -5051,6 +5051,12 @@
/** @class StorageAndSubImageTest
*
+ * @tparam T Type.
+ * @tparam S Size.
+ * @tparam N Is normalized.
+ * @tparam D Texture dimension.
+ * @tparam I Choose between SubImage and Storage tests.
+ *
* Make test for following DSA storage functions:
* - TextureStorage1D,
* - TextureStorage2D,
@@ -5109,11 +5115,12 @@
*
* Release all objects.
*/
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
class StorageAndSubImageTest : public deqp::TestCase, Reference
{
public:
/* Public member functions. */
- StorageAndSubImageTest(deqp::Context& context);
+ StorageAndSubImageTest(deqp::Context& context, const char* name);
virtual tcu::TestNode::IterateResult iterate();
@@ -5123,55 +5130,36 @@
StorageAndSubImageTest& operator=(const StorageAndSubImageTest& other);
/* Private member functions. */
- template <glw::GLint S, glw::GLuint D>
static glw::GLuint TestReferenceDataCount();
- template <glw::GLuint D>
static glw::GLuint TestReferenceDataWidth();
- template <glw::GLuint D>
static glw::GLuint TestReferenceDataHeight();
- template <glw::GLuint D>
static glw::GLuint TestReferenceDataDepth();
- template <typename T, glw::GLint S, glw::GLuint D>
static glw::GLuint TestReferenceDataSize();
- template <typename T, bool N, glw::GLuint D>
static const glw::GLchar* FragmentShaderDeclaration();
- template <glw::GLuint D>
static const glw::GLchar* FragmentShaderTail();
- template <glw::GLuint D>
static glw::GLenum TextureTarget();
- template <glw::GLuint D, bool I>
- bool TextureSubImage(glw::GLenum target, glw::GLuint texture, glw::GLint level, glw::GLint internalformat,
+ bool TextureSubImage(glw::GLenum target, glw::GLuint texture, glw::GLint level,
glw::GLsizei width, glw::GLsizei height, glw::GLsizei depth, glw::GLenum format,
glw::GLenum type, const glw::GLvoid* data);
- template <glw::GLuint D, bool I>
bool TextureStorage(glw::GLenum target, glw::GLuint texture, glw::GLsizei levels, glw::GLenum internalformat,
glw::GLsizei width, glw::GLsizei height, glw::GLsizei depth);
- template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
bool CreateTexture();
- template <typename T, glw::GLint S, bool N, glw::GLuint D>
bool Check();
- template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
bool Test();
- template <typename T, bool N, glw::GLuint D, bool I>
- bool LoopTestOverS(bool skip_rgb);
-
- template <typename T, bool N, bool I>
- bool LoopTestOverDOverS(bool skip_rgb);
-
- void PrepareFramebuffer(const glw::GLenum internal_format, const glw::GLuint D);
+ void PrepareFramebuffer(const glw::GLenum internal_format);
void PrepareProgram(const glw::GLchar* variable_declaration, const glw::GLchar* tail);
void PrepareVertexArray();
void Draw();
diff --git a/external/openglcts/modules/gl/gl4cDirectStateAccessTexturesTests.cpp b/external/openglcts/modules/gl/gl4cDirectStateAccessTexturesTests.cpp
index ba9660f..81fa878 100644
--- a/external/openglcts/modules/gl/gl4cDirectStateAccessTexturesTests.cpp
+++ b/external/openglcts/modules/gl/gl4cDirectStateAccessTexturesTests.cpp
@@ -1459,10 +1459,18 @@
/** @brief Storage Test constructor.
*
+ * @tparam T Type.
+ * @tparam S Size.
+ * @tparam N Is normalized.
+ * @tparam D Texture dimension.
+ * @tparam I Choose between SubImage and Storage tests.
+ *
* @param [in] context OpenGL context.
+ * @param [in] name Name of the test.
*/
-StorageAndSubImageTest::StorageAndSubImageTest(deqp::Context& context)
- : deqp::TestCase(context, "textures_storage_and_subimage", "Texture Storage and SubImage Test")
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+StorageAndSubImageTest<T, S, N, D, I>::StorageAndSubImageTest(deqp::Context& context, const char* name)
+ : deqp::TestCase(context, name, "Texture Storage and SubImage Test")
, m_fbo(0)
, m_rbo(0)
, m_po(0)
@@ -1474,13 +1482,10 @@
/** @brief Count of reference data to be teted.
*
- * @tparam S Size (# of components).
- * @tparam D Texture dimenisons.
- *
* @return Count.
*/
-template <glw::GLint S, glw::GLuint D>
-glw::GLuint StorageAndSubImageTest::TestReferenceDataCount()
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+glw::GLuint StorageAndSubImageTest<T, S, N, D, I>::TestReferenceDataCount()
{
return 2 /* 1D */ * ((D > 1) ? 3 : 1) /* 2D */ * ((D > 2) ? 4 : 1) /* 3D */ * S /* components */;
}
@@ -1493,222 +1498,198 @@
*
* @return Size.
*/
-template <typename T, glw::GLint S, glw::GLuint D>
-glw::GLuint StorageAndSubImageTest::TestReferenceDataSize()
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+glw::GLuint StorageAndSubImageTest<T, S, N, D, I>::TestReferenceDataSize()
{
- return static_cast<glw::GLint>(TestReferenceDataCount<S, D>() * sizeof(T));
+ return static_cast<glw::GLint>(TestReferenceDataCount() * sizeof(T));
}
/** @brief Height, width or depth of reference data to be teted.
*
- * @tparam D Texture dimenisons.
- *
* @return Height, width or depth.
*/
-template <>
-glw::GLuint StorageAndSubImageTest::TestReferenceDataHeight<2>()
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+glw::GLuint StorageAndSubImageTest<T, S, N, D, I>::TestReferenceDataHeight()
{
- return 3;
+ switch (D)
+ {
+ case 2:
+ case 3:
+ return 3;
+ default:
+ return 1;
+ }
}
-template <>
-glw::GLuint StorageAndSubImageTest::TestReferenceDataHeight<3>()
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+glw::GLuint StorageAndSubImageTest<T, S, N, D, I>::TestReferenceDataDepth()
{
- return 3;
+ switch (D)
+ {
+ case 3:
+ return 4;
+ default:
+ return 1;
+ }
}
-template <>
-glw::GLuint StorageAndSubImageTest::TestReferenceDataDepth<3>()
-{
- return 4;
-}
-
-template <glw::GLuint D>
-glw::GLuint StorageAndSubImageTest::TestReferenceDataWidth()
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+glw::GLuint StorageAndSubImageTest<T, S, N, D, I>::TestReferenceDataWidth()
{
return 2;
}
-template <glw::GLuint D>
-glw::GLuint StorageAndSubImageTest::TestReferenceDataHeight()
-{
- return 1;
-}
-
-template <glw::GLuint D>
-glw::GLuint StorageAndSubImageTest::TestReferenceDataDepth()
-{
- return 1;
-}
-
/** @brief Fragment shader declaration selector.
*
- * @tparam T Type.
- * @tparam N Normalized flag.
- * @tparam D Texture dimenisons.
- *
* @return Frgment shader source code part.
*/
-template <>
-const glw::GLchar* StorageAndSubImageTest::FragmentShaderDeclaration<glw::GLbyte, false, 1>()
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+const glw::GLchar* StorageAndSubImageTest<T, S, N, D, I>::FragmentShaderDeclaration()
{
- return s_fragment_shader_1D_fdecl_lowp;
-}
+ if (typeid(T) == typeid(glw::GLbyte))
+ {
+ switch (D)
+ {
+ case 1:
+ return s_fragment_shader_1D_idecl_lowp;
+ case 2:
+ return s_fragment_shader_2D_idecl_lowp;
+ case 3:
+ return s_fragment_shader_3D_idecl_lowp;
+ default:
+ DE_ASSERT("invalid texture dimension");
+ return DE_NULL;
+ }
+ }
-template <>
-const glw::GLchar* StorageAndSubImageTest::FragmentShaderDeclaration<glw::GLubyte, false, 1>()
-{
- return s_fragment_shader_1D_idecl_lowp;
-}
+ if (typeid(T) == typeid(glw::GLubyte))
+ {
+ if (N)
+ {
+ switch (D)
+ {
+ case 1:
+ return s_fragment_shader_1D_fdecl_lowp;
+ case 2:
+ return s_fragment_shader_2D_fdecl_lowp;
+ case 3:
+ return s_fragment_shader_3D_fdecl_lowp;
+ default:
+ DE_ASSERT("invalid texture dimension");
+ return DE_NULL;
+ }
+ }
+ else
+ {
+ switch (D)
+ {
+ case 1:
+ return s_fragment_shader_1D_udecl_lowp;
+ case 2:
+ return s_fragment_shader_2D_udecl_lowp;
+ case 3:
+ return s_fragment_shader_3D_udecl_lowp;
+ default:
+ DE_ASSERT("invalid texture dimension");
+ return DE_NULL;
+ }
+ }
+ }
-template <>
-const glw::GLchar* StorageAndSubImageTest::FragmentShaderDeclaration<glw::GLshort, false, 1>()
-{
- return s_fragment_shader_1D_udecl_lowp;
-}
+ if (typeid(T) == typeid(glw::GLshort))
+ {
+ switch (D)
+ {
+ case 1:
+ return s_fragment_shader_1D_idecl_mediump;
+ case 2:
+ return s_fragment_shader_2D_idecl_mediump;
+ case 3:
+ return s_fragment_shader_3D_idecl_mediump;
+ default:
+ DE_ASSERT("invalid texture dimension");
+ return DE_NULL;
+ }
+ }
-template <>
-const glw::GLchar* StorageAndSubImageTest::FragmentShaderDeclaration<glw::GLushort, false, 1>()
-{
- return s_fragment_shader_1D_fdecl_mediump;
-}
+ if (typeid(T) == typeid(glw::GLushort))
+ {
+ if (N)
+ {
+ switch (D)
+ {
+ case 1:
+ return s_fragment_shader_1D_fdecl_mediump;
+ case 2:
+ return s_fragment_shader_2D_fdecl_mediump;
+ case 3:
+ return s_fragment_shader_3D_fdecl_mediump;
+ default:
+ DE_ASSERT("invalid texture dimension");
+ return DE_NULL;
+ }
+ }
+ else
+ {
+ switch (D)
+ {
+ case 1:
+ return s_fragment_shader_1D_udecl_mediump;
+ case 2:
+ return s_fragment_shader_2D_udecl_mediump;
+ case 3:
+ return s_fragment_shader_3D_udecl_mediump;
+ default:
+ DE_ASSERT("invalid texture dimension");
+ return DE_NULL;
+ }
+ }
+ }
-template <>
-const glw::GLchar* StorageAndSubImageTest::FragmentShaderDeclaration<glw::GLint, false, 1>()
-{
- return s_fragment_shader_1D_idecl_mediump;
-}
+ if (typeid(T) == typeid(glw::GLint))
+ {
+ switch (D)
+ {
+ case 1:
+ return s_fragment_shader_1D_idecl_highp;
+ case 2:
+ return s_fragment_shader_2D_idecl_highp;
+ case 3:
+ return s_fragment_shader_3D_idecl_highp;
+ default:
+ DE_ASSERT("invalid texture dimension");
+ return DE_NULL;
+ }
+ }
-template <>
-const glw::GLchar* StorageAndSubImageTest::FragmentShaderDeclaration<glw::GLuint, false, 1>()
-{
- return s_fragment_shader_1D_udecl_mediump;
-}
+ if (typeid(T) == typeid(glw::GLuint))
+ {
+ switch (D)
+ {
+ case 1:
+ return s_fragment_shader_1D_udecl_highp;
+ case 2:
+ return s_fragment_shader_2D_udecl_highp;
+ case 3:
+ return s_fragment_shader_3D_udecl_highp;
+ default:
+ DE_ASSERT("invalid texture dimension");
+ return DE_NULL;
+ }
+ }
-template <>
-const glw::GLchar* StorageAndSubImageTest::FragmentShaderDeclaration<glw::GLubyte, true, 1>()
-{
- return s_fragment_shader_1D_fdecl_highp;
-}
-
-template <>
-const glw::GLchar* StorageAndSubImageTest::FragmentShaderDeclaration<glw::GLushort, true, 1>()
-{
- return s_fragment_shader_1D_idecl_highp;
-}
-
-template <>
-const glw::GLchar* StorageAndSubImageTest::FragmentShaderDeclaration<glw::GLfloat, true, 1>()
-{
- return s_fragment_shader_1D_udecl_highp;
-}
-
-template <>
-const glw::GLchar* StorageAndSubImageTest::FragmentShaderDeclaration<glw::GLbyte, false, 2>()
-{
- return s_fragment_shader_2D_fdecl_lowp;
-}
-
-template <>
-const glw::GLchar* StorageAndSubImageTest::FragmentShaderDeclaration<glw::GLubyte, false, 2>()
-{
- return s_fragment_shader_2D_idecl_lowp;
-}
-
-template <>
-const glw::GLchar* StorageAndSubImageTest::FragmentShaderDeclaration<glw::GLshort, false, 2>()
-{
- return s_fragment_shader_2D_udecl_lowp;
-}
-
-template <>
-const glw::GLchar* StorageAndSubImageTest::FragmentShaderDeclaration<glw::GLushort, false, 2>()
-{
- return s_fragment_shader_2D_fdecl_mediump;
-}
-
-template <>
-const glw::GLchar* StorageAndSubImageTest::FragmentShaderDeclaration<glw::GLint, false, 2>()
-{
- return s_fragment_shader_2D_idecl_mediump;
-}
-
-template <>
-const glw::GLchar* StorageAndSubImageTest::FragmentShaderDeclaration<glw::GLuint, false, 2>()
-{
- return s_fragment_shader_2D_udecl_mediump;
-}
-
-template <>
-const glw::GLchar* StorageAndSubImageTest::FragmentShaderDeclaration<glw::GLubyte, true, 2>()
-{
- return s_fragment_shader_2D_fdecl_highp;
-}
-
-template <>
-const glw::GLchar* StorageAndSubImageTest::FragmentShaderDeclaration<glw::GLushort, true, 2>()
-{
- return s_fragment_shader_2D_idecl_highp;
-}
-
-template <>
-const glw::GLchar* StorageAndSubImageTest::FragmentShaderDeclaration<glw::GLfloat, true, 2>()
-{
- return s_fragment_shader_2D_udecl_highp;
-}
-
-template <>
-const glw::GLchar* StorageAndSubImageTest::FragmentShaderDeclaration<glw::GLbyte, false, 3>()
-{
- return s_fragment_shader_3D_fdecl_lowp;
-}
-
-template <>
-const glw::GLchar* StorageAndSubImageTest::FragmentShaderDeclaration<glw::GLubyte, false, 3>()
-{
- return s_fragment_shader_3D_idecl_lowp;
-}
-
-template <>
-const glw::GLchar* StorageAndSubImageTest::FragmentShaderDeclaration<glw::GLshort, false, 3>()
-{
- return s_fragment_shader_3D_udecl_lowp;
-}
-
-template <>
-const glw::GLchar* StorageAndSubImageTest::FragmentShaderDeclaration<glw::GLushort, false, 3>()
-{
- return s_fragment_shader_3D_fdecl_mediump;
-}
-
-template <>
-const glw::GLchar* StorageAndSubImageTest::FragmentShaderDeclaration<glw::GLint, false, 3>()
-{
- return s_fragment_shader_3D_idecl_mediump;
-}
-
-template <>
-const glw::GLchar* StorageAndSubImageTest::FragmentShaderDeclaration<glw::GLuint, false, 3>()
-{
- return s_fragment_shader_3D_udecl_mediump;
-}
-
-template <>
-const glw::GLchar* StorageAndSubImageTest::FragmentShaderDeclaration<glw::GLubyte, true, 3>()
-{
- return s_fragment_shader_3D_fdecl_highp;
-}
-
-template <>
-const glw::GLchar* StorageAndSubImageTest::FragmentShaderDeclaration<glw::GLushort, true, 3>()
-{
- return s_fragment_shader_3D_idecl_highp;
-}
-
-template <>
-const glw::GLchar* StorageAndSubImageTest::FragmentShaderDeclaration<glw::GLfloat, true, 3>()
-{
- return s_fragment_shader_3D_udecl_highp;
+ switch (D)
+ {
+ case 1:
+ return s_fragment_shader_1D_fdecl_highp;
+ case 2:
+ return s_fragment_shader_2D_fdecl_highp;
+ case 3:
+ return s_fragment_shader_3D_fdecl_highp;
+ default:
+ DE_ASSERT("invalid texture dimension");
+ return DE_NULL;
+ }
}
/** @brief Fragment shader tail selector.
@@ -1717,22 +1698,21 @@
*
* @return Frgment shader source code part.
*/
-template <>
-const glw::GLchar* StorageAndSubImageTest::FragmentShaderTail<1>()
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+const glw::GLchar* StorageAndSubImageTest<T, S, N, D, I>::FragmentShaderTail()
{
- return s_fragment_shader_1D_tail;
-}
-
-template <>
-const glw::GLchar* StorageAndSubImageTest::FragmentShaderTail<2>()
-{
- return s_fragment_shader_2D_tail;
-}
-
-template <>
-const glw::GLchar* StorageAndSubImageTest::FragmentShaderTail<3>()
-{
- return s_fragment_shader_3D_tail;
+ switch (D)
+ {
+ case 1:
+ return s_fragment_shader_1D_tail;
+ case 2:
+ return s_fragment_shader_2D_tail;
+ case 3:
+ return s_fragment_shader_3D_tail;
+ default:
+ DE_ASSERT("invalid texture dimension");
+ return DE_NULL;
+ }
}
/** @brief Texture target selector.
@@ -1741,428 +1721,157 @@
*
* @return Texture target.
*/
-template <>
-glw::GLenum StorageAndSubImageTest::TextureTarget<1>()
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+glw::GLenum StorageAndSubImageTest<T, S, N, D, I>::TextureTarget()
{
- return GL_TEXTURE_1D;
-}
-
-template <>
-glw::GLenum StorageAndSubImageTest::TextureTarget<2>()
-{
- return GL_TEXTURE_2D;
-}
-
-template <>
-glw::GLenum StorageAndSubImageTest::TextureTarget<3>()
-{
- return GL_TEXTURE_3D;
+ switch (D)
+ {
+ case 1:
+ return GL_TEXTURE_1D;
+ case 2:
+ return GL_TEXTURE_2D;
+ case 3:
+ return GL_TEXTURE_3D;
+ default:
+ DE_ASSERT("invalid texture dimension");
+ return DE_NULL;
+ }
}
/** @brief TextureStorage* wrapper.
*
- * @tparam D Texture dimenisons.
- * @tparam I Select between legacy/DSA way.
- *
- * @return true if suuceed (in legacy always or throw), false otherwise.
+ * @return true if succeed (in legacy always or throw), false otherwise.
*/
-template <>
-bool StorageAndSubImageTest::TextureStorage<1, true>(glw::GLenum target, glw::GLuint texture, glw::GLsizei levels,
- glw::GLenum internalformat, glw::GLsizei width,
- glw::GLsizei height, glw::GLsizei depth)
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+bool StorageAndSubImageTest<T, S, N, D, I>::TextureStorage(glw::GLenum target, glw::GLuint texture, glw::GLsizei levels,
+ glw::GLenum internalformat, glw::GLsizei width,
+ glw::GLsizei height, glw::GLsizei depth)
{
- (void)texture;
- (void)height;
- (void)depth;
- /* Shortcut for GL functionality. */
const glw::Functions& gl = m_context.getRenderContext().getFunctions();
- /* Preparing storage. */
- gl.texStorage1D(target, levels, internalformat, width);
- GLU_EXPECT_NO_ERROR(gl.getError(), "glTexStorage1D has failed");
-
- /* TextureSubImage* (not TextureStorage*) is tested so here we only throw when error occurs. */
- return true;
-}
-
-/** @brief TextureStorage* wrapper.
- *
- * @tparam D Texture dimenisons.
- * @tparam I Select between legacy/DSA way.
- *
- * @return true if suuceed (in legacy always or throw), false otherwise.
- */
-template <>
-bool StorageAndSubImageTest::TextureStorage<2, true>(glw::GLenum target, glw::GLuint texture, glw::GLsizei levels,
- glw::GLenum internalformat, glw::GLsizei width,
- glw::GLsizei height, glw::GLsizei depth)
-{
- (void)texture;
- (void)depth;
- /* Shortcut for GL functionality. */
- const glw::Functions& gl = m_context.getRenderContext().getFunctions();
-
- /* Preparing storage. */
- gl.texStorage2D(target, levels, internalformat, width, height);
- GLU_EXPECT_NO_ERROR(gl.getError(), "glTexStorage2D has failed");
-
- /* TextureSubImage* (not TextureStorage*) is tested so here we only throw when error occurs. */
- return true;
-}
-
-/** @brief TextureStorage* wrapper.
- *
- * @tparam D Texture dimenisons.
- * @tparam I Select between legacy/DSA way.
- *
- * @return true if suuceed (in legacy always or throw), false otherwise.
- */
-template <>
-bool StorageAndSubImageTest::TextureStorage<3, true>(glw::GLenum target, glw::GLuint texture, glw::GLsizei levels,
- glw::GLenum internalformat, glw::GLsizei width,
- glw::GLsizei height, glw::GLsizei depth)
-{
- (void)texture;
- /* Shortcut for GL functionality. */
- const glw::Functions& gl = m_context.getRenderContext().getFunctions();
-
- /* Preparing storage. */
- gl.texStorage3D(target, levels, internalformat, width, height, depth);
- GLU_EXPECT_NO_ERROR(gl.getError(), "glTexStorage3D has failed");
-
- /* TextureSubImage* (not TextureStorage*) is tested so here we only throw when error occurs. */
- return true;
-}
-
-/** @brief TextureStorage* wrapper.
- *
- * @tparam D Texture dimenisons.
- * @tparam I Select between legacy/DSA way.
- *
- * @return true if suuceed (in legacy always or throw), false otherwise.
- */
-template <>
-bool StorageAndSubImageTest::TextureStorage<1, false>(glw::GLenum target, glw::GLuint texture, glw::GLsizei levels,
- glw::GLenum internalformat, glw::GLsizei width,
- glw::GLsizei height, glw::GLsizei depth)
-{
- (void)target;
- (void)height;
- (void)depth;
- /* Shortcut for GL functionality. */
- const glw::Functions& gl = m_context.getRenderContext().getFunctions();
-
- /* Preparing storage. */
- gl.textureStorage1D(texture, levels, internalformat, width);
-
- /* Error checking. */
- glw::GLenum error;
-
- if (GL_NO_ERROR != (error = gl.getError()))
+ if (I)
{
- /* Log. */
- m_context.getTestContext().getLog()
- << tcu::TestLog::Message << "glTextureStorage1D unexpectedly generated error " << glu::getErrorStr(error)
- << " during test with levels " << levels << ", internal format " << internalformat << " and width " << width
- << "." << tcu::TestLog::EndMessage;
+ switch (D)
+ {
+ case 1:
+ gl.texStorage1D(target, levels, internalformat, width);
+ break;
+ case 2:
+ gl.texStorage2D(target, levels, internalformat, width, height);
+ break;
+ case 3:
+ gl.texStorage3D(target, levels, internalformat, width, height, depth);
+ break;
+ default:
+ DE_ASSERT("invalid texture dimension");
+ }
- CleanTexture();
- CleanErrors();
-
- return false;
+ /* TextureSubImage* (not TextureStorage*) is tested */
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glTexStorage*() has failed");
+ return true;
}
-
- return true;
-}
-
-/** @brief TextureStorage* wrapper.
- *
- * @tparam D Texture dimenisons.
- * @tparam I Select between legacy/DSA way.
- *
- * @return true if suuceed (in legacy always or throw), false otherwise.
- */
-template <>
-bool StorageAndSubImageTest::TextureStorage<2, false>(glw::GLenum target, glw::GLuint texture, glw::GLsizei levels,
- glw::GLenum internalformat, glw::GLsizei width,
- glw::GLsizei height, glw::GLsizei depth)
-{
- (void)target;
- (void)depth;
- /* Shortcut for GL functionality. */
- const glw::Functions& gl = m_context.getRenderContext().getFunctions();
-
- /* Preparing storage. */
- gl.textureStorage2D(texture, levels, internalformat, width, height);
-
- /* Error checking. */
- glw::GLenum error;
-
- if (GL_NO_ERROR != (error = gl.getError()))
+ else
{
- /* Log. */
- m_context.getTestContext().getLog()
- << tcu::TestLog::Message << "glTextureStorage2D unexpectedly generated error " << glu::getErrorStr(error)
- << " during test with levels " << levels << ", internal format " << internalformat << ", width " << width
- << " and height " << height << "." << tcu::TestLog::EndMessage;
+ switch (D)
+ {
+ case 1:
+ gl.textureStorage1D(texture, levels, internalformat, width);
+ break;
+ case 2:
+ gl.textureStorage2D(texture, levels, internalformat, width, height);
+ break;
+ case 3:
+ gl.textureStorage3D(texture, levels, internalformat, width, height, depth);
+ break;
+ default:
+ DE_ASSERT("invalid texture dimension");
+ }
- CleanTexture();
- CleanErrors();
+ glw::GLenum error;
+ if (GL_NO_ERROR != (error = gl.getError()))
+ {
+ m_context.getTestContext().getLog()
+ << tcu::TestLog::Message << "glTextureStorage" << D << "D unexpectedly generated error " << glu::getErrorStr(error)
+ << " during test with levels " << levels << ", internal format " << internalformat
+ << " width=" << width << " height=" << height << " depth=" << depth
+ << "." << tcu::TestLog::EndMessage;
- return false;
+ CleanTexture();
+ CleanErrors();
+
+ return false;
+ }
+
+ return true;
}
-
- return true;
-}
-
-/** @brief TextureStorage* wrapper.
- *
- * @tparam D Texture dimenisons.
- * @tparam I Select between legacy/DSA way.
- *
- * @return true if suuceed (in legacy always or throw), false otherwise.
- */
-template <>
-bool StorageAndSubImageTest::TextureStorage<3, false>(glw::GLenum target, glw::GLuint texture, glw::GLsizei levels,
- glw::GLenum internalformat, glw::GLsizei width,
- glw::GLsizei height, glw::GLsizei depth)
-{
- (void)target;
- /* Shortcut for GL functionality. */
- const glw::Functions& gl = m_context.getRenderContext().getFunctions();
-
- /* Preparing storage. */
- gl.textureStorage3D(texture, levels, internalformat, width, height, depth);
-
- /* Error checking. */
- glw::GLenum error;
-
- if (GL_NO_ERROR != (error = gl.getError()))
- {
- /* Log. */
- m_context.getTestContext().getLog()
- << tcu::TestLog::Message << "glTextureStorage3D unexpectedly generated error " << glu::getErrorStr(error)
- << " during test with levels " << levels << ", internal format " << glu::getTextureFormatStr(internalformat)
- << ", width " << width << ", height " << height << " and depth " << depth << "."
- << tcu::TestLog::EndMessage;
-
- CleanTexture();
- CleanErrors();
-
- return false;
- }
-
- return true;
}
/** @brief TextureSubImage* wrapper.
*
- * @tparam D Texture dimenisons.
- * @tparam I Select between legacy/DSA way.
- *
* @return true if suuceed (in legacy always or throw), false otherwise.
*/
-template <>
-bool StorageAndSubImageTest::TextureSubImage<1, false>(glw::GLenum target, glw::GLuint texture, glw::GLint level,
- glw::GLint internalformat, glw::GLsizei width,
- glw::GLsizei height, glw::GLsizei depth, glw::GLenum format,
- glw::GLenum type, const glw::GLvoid* data)
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+bool StorageAndSubImageTest<T, S, N, D, I>::TextureSubImage(glw::GLenum target, glw::GLuint texture, glw::GLint level,
+ glw::GLsizei width, glw::GLsizei height, glw::GLsizei depth,
+ glw::GLenum format, glw::GLenum type, const glw::GLvoid* data)
{
- (void)texture;
- (void)internalformat;
- (void)height;
- (void)depth;
- /* Shortcut for GL functionality. */
const glw::Functions& gl = m_context.getRenderContext().getFunctions();
- /* Action. */
- gl.texSubImage1D(target, level, 0, width, format, type, data);
- GLU_EXPECT_NO_ERROR(gl.getError(), "glTexSubImage1D has failed");
-
- /* TextureStorage* (not TextureSubImage) is tested so here we only throw when error occurs. */
- return true;
-}
-
-/** @brief TextureSubImage* wrapper.
- *
- * @tparam D Texture dimenisons.
- * @tparam I Select between legacy/DSA way.
- *
- * @return true if suuceed (in legacy always or throw), false otherwise.
- */
-template <>
-bool StorageAndSubImageTest::TextureSubImage<2, false>(glw::GLenum target, glw::GLuint texture, glw::GLint level,
- glw::GLint internalformat, glw::GLsizei width,
- glw::GLsizei height, glw::GLsizei depth, glw::GLenum format,
- glw::GLenum type, const glw::GLvoid* data)
-{
- (void)texture;
- (void)internalformat;
- (void)depth;
- /* Shortcut for GL functionality. */
- const glw::Functions& gl = m_context.getRenderContext().getFunctions();
-
- /* Action. */
- gl.texSubImage2D(target, level, 0, 0, width, height, format, type, data);
- GLU_EXPECT_NO_ERROR(gl.getError(), "glTexSubImage2D has failed");
-
- /* TextureStorage* (not TextureSubImage) is tested so here we only throw when error occurs. */
- return true;
-}
-
-/** @brief TextureSubImage* wrapper.
- *
- * @tparam D Texture dimenisons.
- * @tparam I Select between legacy/DSA way.
- *
- * @return true if suuceed (in legacy always or throw), false otherwise.
- */
-template <>
-bool StorageAndSubImageTest::TextureSubImage<3, false>(glw::GLenum target, glw::GLuint texture, glw::GLint level,
- glw::GLint internalformat, glw::GLsizei width,
- glw::GLsizei height, glw::GLsizei depth, glw::GLenum format,
- glw::GLenum type, const glw::GLvoid* data)
-{
- (void)texture;
- (void)internalformat;
- /* Shortcut for GL functionality. */
- const glw::Functions& gl = m_context.getRenderContext().getFunctions();
-
- /* Action. */
- gl.texSubImage3D(target, level, 0, 0, 0, width, height, depth, format, type, data);
- GLU_EXPECT_NO_ERROR(gl.getError(), "glTexSubImage3D has failed");
-
- /* TextureStorage* (not TextureSubImage) is tested so here we only throw when error occurs. */
- return true;
-}
-
-/** @brief TextureSubImage* wrapper.
- *
- * @tparam D Texture dimenisons.
- * @tparam I Select between legacy/DSA way.
- *
- * @return true if suuceed (in legacy always or throw), false otherwise.
- */
-template <>
-bool StorageAndSubImageTest::TextureSubImage<1, true>(glw::GLenum target, glw::GLuint texture, glw::GLint level,
- glw::GLint internalformat, glw::GLsizei width,
- glw::GLsizei height, glw::GLsizei depth, glw::GLenum format,
- glw::GLenum type, const glw::GLvoid* data)
-{
- (void)target;
- (void)internalformat;
- (void)height;
- (void)depth;
- /* Shortcut for GL functionality. */
- const glw::Functions& gl = m_context.getRenderContext().getFunctions();
-
- /* Action. */
- gl.textureSubImage1D(texture, level, 0, width, format, type, data);
-
- /* Error checking. */
- glw::GLenum error;
-
- if (GL_NO_ERROR != (error = gl.getError()))
+ if (I)
{
- /* Log. */
- m_context.getTestContext().getLog()
- << tcu::TestLog::Message << "glTextureSubImage1D unexpectedly generated error " << glu::getErrorStr(error)
- << " during test with level " << level << ", width " << width << ", format "
- << glu::getTextureFormatStr(format) << " and type " << glu::getTypeStr(type) << "."
- << tcu::TestLog::EndMessage;
+ switch (D)
+ {
+ case 1:
+ gl.textureSubImage1D(texture, level, 0, width, format, type, data);
+ break;
+ case 2:
+ gl.textureSubImage2D(texture, level, 0, 0, width, height, format, type, data);
+ break;
+ case 3:
+ gl.textureSubImage3D(texture, level, 0, 0, 0, width, height, depth, format, type, data);
+ break;
+ default:
+ DE_ASSERT("invalid texture dimension");
+ }
- CleanTexture();
- CleanErrors();
+ glw::GLenum error;
+ if (GL_NO_ERROR != (error = gl.getError()))
+ {
+ m_context.getTestContext().getLog()
+ << tcu::TestLog::Message << "glTextureSubImage" << D << "D unexpectedly generated error " << glu::getErrorStr(error)
+ << " during test with level " << level << ", width=" << width << ", height=" << height << ", depth=" << depth
+ << " format " << glu::getTextureFormatStr(format) << " and type " << glu::getTypeStr(type) << "."
+ << tcu::TestLog::EndMessage;
- return false;
+ CleanTexture();
+ CleanErrors();
+
+ return false;
+ }
+
+ return true;
}
-
- return true;
-}
-
-/** @brief TextureSubImage* wrapper.
- *
- * @tparam D Texture dimenisons.
- * @tparam I Select between legacy/DSA way.
- *
- * @return true if suuceed (in legacy always or throw), false otherwise.
- */
-template <>
-bool StorageAndSubImageTest::TextureSubImage<2, true>(glw::GLenum target, glw::GLuint texture, glw::GLint level,
- glw::GLint internalformat, glw::GLsizei width,
- glw::GLsizei height, glw::GLsizei depth, glw::GLenum format,
- glw::GLenum type, const glw::GLvoid* data)
-{
- (void)target;
- (void)internalformat;
- (void)depth;
- /* Shortcut for GL functionality. */
- const glw::Functions& gl = m_context.getRenderContext().getFunctions();
-
- /* Action. */
- gl.textureSubImage2D(texture, level, 0, 0, width, height, format, type, data);
-
- /* Error checking. */
- glw::GLenum error;
-
- if (GL_NO_ERROR != (error = gl.getError()))
+ else
{
- /* Log. */
- m_context.getTestContext().getLog()
- << tcu::TestLog::Message << "glTextureSubImage2D unexpectedly generated error " << glu::getErrorStr(error)
- << " during test with level " << level << ", width " << width << ", height " << height << ", format "
- << glu::getTextureFormatStr(format) << " and type " << glu::getTypeStr(type) << "."
- << tcu::TestLog::EndMessage;
+ switch (D)
+ {
+ case 1:
+ gl.texSubImage1D(target, level, 0, width, format, type, data);
+ break;
+ case 2:
+ gl.texSubImage2D(target, level, 0, 0, width, height, format, type, data);
+ break;
+ case 3:
+ gl.texSubImage3D(target, level, 0, 0, 0, width, height, depth, format, type, data);
+ break;
+ default:
+ DE_ASSERT("invalid texture dimension");
+ }
- CleanTexture();
- CleanErrors();
-
- return false;
+ /* TextureStorage* (not TextureSubImage) is tested */
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glTexSubImage*() has failed");
+ return true;
}
-
- return true;
-}
-
-/** @brief TextureSubImage* wrapper.
- *
- * @tparam D Texture dimenisons.
- * @tparam I Select between legacy/DSA way.
- *
- * @return true if suuceed (in legacy always or throw), false otherwise.
- */
-template <>
-bool StorageAndSubImageTest::TextureSubImage<3, true>(glw::GLenum target, glw::GLuint texture, glw::GLint level,
- glw::GLint internalformat, glw::GLsizei width,
- glw::GLsizei height, glw::GLsizei depth, glw::GLenum format,
- glw::GLenum type, const glw::GLvoid* data)
-{
- (void)target;
- (void)internalformat;
- /* Shortcut for GL functionality. */
- const glw::Functions& gl = m_context.getRenderContext().getFunctions();
-
- /* Action. */
- gl.textureSubImage3D(texture, level, 0, 0, 0, width, height, depth, format, type, data);
-
- /* Error checking. */
- glw::GLenum error;
-
- if (GL_NO_ERROR != (error = gl.getError()))
- {
- /* Log. */
- m_context.getTestContext().getLog()
- << tcu::TestLog::Message << "glTextureSubImage3D unexpectedly generated error " << glu::getErrorStr(error)
- << " during test with level " << level << ", width " << width << ", height " << height << ", depth "
- << depth << ", format " << glu::getTextureFormatStr(format) << " and type " << glu::getTypeStr(type) << "."
- << tcu::TestLog::EndMessage;
-
- CleanTexture();
- CleanErrors();
-
- return false;
- }
-
- return true;
}
/** @brief Create texture.
@@ -2176,7 +1885,7 @@
* @return True if succeded, false otherwise.
*/
template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
-bool StorageAndSubImageTest::CreateTexture()
+bool StorageAndSubImageTest<T, S, N, D, I>::CreateTexture()
{
/* Shortcut for GL functionality. */
const glw::Functions& gl = m_context.getRenderContext().getFunctions();
@@ -2185,20 +1894,19 @@
gl.genTextures(1, &m_to);
GLU_EXPECT_NO_ERROR(gl.getError(), "glGenTextures has failed");
- gl.bindTexture(TextureTarget<D>(), m_to);
+ gl.bindTexture(TextureTarget(), m_to);
GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture has failed");
/* Storage creation. */
- if (TextureStorage<D, I>(TextureTarget<D>(), m_to, 1, InternalFormat<T, S, N>(), TestReferenceDataWidth<D>(),
- TestReferenceDataHeight<D>(), TestReferenceDataDepth<D>()))
+ if (TextureStorage(TextureTarget(), m_to, 1, InternalFormat<T, S, N>(), TestReferenceDataWidth(),
+ TestReferenceDataHeight(), TestReferenceDataDepth()))
{
/* Data setup. */
- if (TextureSubImage<D, I>(TextureTarget<D>(), m_to, 0, InternalFormat<T, S, N>(), TestReferenceDataWidth<D>(),
- TestReferenceDataHeight<D>(), TestReferenceDataDepth<D>(), Format<S, N>(), Type<T>(),
- ReferenceData<T, N>()))
+ if (TextureSubImage(TextureTarget(), m_to, 0, TestReferenceDataWidth(), TestReferenceDataHeight(), TestReferenceDataDepth(),
+ Format<S, N>(), Type<T>(), ReferenceData<T, N>()))
{
- glTexParameteri(TextureTarget<D>(), GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexParameteri(TextureTarget<D>(), GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+ glTexParameteri(TextureTarget(), GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+ glTexParameteri(TextureTarget(), GL_TEXTURE_MAG_FILTER, GL_NEAREST);
return true;
}
}
@@ -2210,26 +1918,16 @@
/** @brief Compre results with the reference.
*
- * @tparam T Type.
- * @tparam S Size (# of components).
- * @tparam N Is normalized.
- *
* @return True if equal, false otherwise.
*/
-template <typename T, glw::GLint S, bool N, glw::GLuint D>
-bool StorageAndSubImageTest::Check()
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+bool StorageAndSubImageTest<T, S, N, D, I>::Check()
{
/* Shortcut for GL functionality. */
const glw::Functions& gl = m_context.getRenderContext().getFunctions();
/* Fetching data. */
- std::vector<T> result(TestReferenceDataCount<S, D>());
-
- gl.pixelStorei(GL_UNPACK_ALIGNMENT, sizeof(T));
- GLU_EXPECT_NO_ERROR(gl.getError(), "glPixelStorei has failed");
-
- gl.pixelStorei(GL_PACK_ALIGNMENT, sizeof(T));
- GLU_EXPECT_NO_ERROR(gl.getError(), "glPixelStorei has failed");
+ std::vector<T> result(TestReferenceDataCount());
glw::GLuint fbo_size_x = 0;
@@ -2248,12 +1946,12 @@
throw 0;
}
- gl.readnPixels(0, 0, fbo_size_x, 1, Format<S, N>(), Type<T>(), TestReferenceDataSize<T, S, D>(),
+ gl.readnPixels(0, 0, fbo_size_x, 1, Format<S, N>(), Type<T>(), TestReferenceDataSize(),
(glw::GLvoid*)(&result[0]));
GLU_EXPECT_NO_ERROR(gl.getError(), "glReadPixels has failed");
/* Comparison. */
- for (glw::GLuint i = 0; i < TestReferenceDataCount<S, D>(); ++i)
+ for (glw::GLuint i = 0; i < TestReferenceDataCount(); ++i)
{
if (!Compare<T>(result[i], ReferenceData<T, N>()[i]))
{
@@ -2266,20 +1964,23 @@
/** @brief Test case function.
*
- * @tparam T Type.
- * @tparam S Size (# of components).
- * @tparam N Is normalized.
- * @tparam D Number of texture dimensions.
- *
* @return True if test succeeded, false otherwise.
*/
template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
-bool StorageAndSubImageTest::Test()
+bool StorageAndSubImageTest<T, S, N, D, I>::Test()
{
- /* Setup. */
- PrepareFramebuffer(InternalFormat<T, S, N>(), D);
+ const glw::Functions& gl = m_context.getRenderContext().getFunctions();
- if (!CreateTexture<T, S, N, D, I>())
+ gl.pixelStorei(GL_UNPACK_ALIGNMENT, sizeof(T));
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glPixelStorei has failed");
+
+ gl.pixelStorei(GL_PACK_ALIGNMENT, sizeof(T));
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glPixelStorei has failed");
+
+ /* Setup. */
+ PrepareFramebuffer(InternalFormat<T, S, N>());
+
+ if (!CreateTexture())
{
return false;
}
@@ -2288,7 +1989,7 @@
Draw();
/* Compare results with reference. */
- bool result = Check<T, S, N, D>();
+ bool result = Check();
/* Cleanup. */
CleanTexture();
@@ -2299,73 +2000,13 @@
return result;
}
-/** @brief Lopp test function over S.
- *
- * @tparam T Type.
- * @tparam N Is normalized.
- * @tparam D Texture dimension.
- * @tparam I Choose between SubImage and Storage tests.
- *
- * @param [in] skip_rgb Skip test of S = 3 (needed for some formats).
- *
- * @return True if tests succeeded, false otherwise.
- */
-template <typename T, bool N, glw::GLuint D, bool I>
-bool StorageAndSubImageTest::LoopTestOverS(bool skip_rgb)
-{
- /* Prepare one program per test loop. */
- PrepareProgram(FragmentShaderDeclaration<T, N, D>(), FragmentShaderTail<D>());
-
- /* Run tests. */
- bool result = true;
-
- result &= Test<T, 1, N, D, I>();
-
- result &= Test<T, 2, N, D, I>();
-
- if (!skip_rgb)
- {
- result &= Test<T, 3, N, D, I>();
- }
-
- result &= Test<T, 4, N, D, I>();
-
- /* Cleanup.*/
- CleanProgram();
- CleanErrors();
-
- /* Pass result. */
- return result;
-}
-
-/** @brief Lopp test function over D and over S.
- *
- * @tparam T Type.
- * @tparam N Is normalized.
- * @tparam I Choose between SubImage and Storage tests.
- *
- * @param [in] skip_rgb Skip test of S = 3 (needed for some formats).
- *
- * @return True if tests succeeded, false otherwise.
- */
-template <typename T, bool N, bool I>
-bool StorageAndSubImageTest::LoopTestOverDOverS(bool skip_rgb)
-{
- bool result = true;
-
- result &= LoopTestOverS<T, N, 1, I>(skip_rgb);
- result &= LoopTestOverS<T, N, 2, I>(skip_rgb);
- result &= LoopTestOverS<T, N, 3, I>(skip_rgb);
-
- return result;
-}
-
/** @brief Function prepares framebuffer with internal format color attachment.
* Viewport is set up. Content of the framebuffer is cleared.
*
* @note The function may throw if unexpected error has occured.
*/
-void StorageAndSubImageTest::PrepareFramebuffer(const glw::GLenum internal_format, const glw::GLuint D)
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+void StorageAndSubImageTest<T, S, N, D, I>::PrepareFramebuffer(const glw::GLenum internal_format)
{
/* Shortcut for GL functionality. */
const glw::Functions& gl = m_context.getRenderContext().getFunctions();
@@ -2408,7 +2049,10 @@
if (gl.checkFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE)
{
- throw 0;
+ if (gl.checkFramebufferStatus(GL_FRAMEBUFFER) == GL_FRAMEBUFFER_UNSUPPORTED)
+ throw tcu::NotSupportedError("unsupported framebuffer configuration");
+ else
+ throw 0;
}
gl.viewport(0, 0, fbo_size_x, 1);
@@ -2427,7 +2071,8 @@
* @param [in] variable_declaration Variables declaration part of fragment shader source code.
* @param [in] tail Tail part of fragment shader source code.
*/
-void StorageAndSubImageTest::PrepareProgram(const glw::GLchar* variable_declaration, const glw::GLchar* tail)
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+void StorageAndSubImageTest<T, S, N, D, I>::PrepareProgram(const glw::GLchar* variable_declaration, const glw::GLchar* tail)
{
/* Shortcut for GL functionality */
const glw::Functions& gl = m_context.getRenderContext().getFunctions();
@@ -2576,7 +2221,8 @@
/** @brief Prepare VAO.
*/
-void StorageAndSubImageTest::PrepareVertexArray()
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+void StorageAndSubImageTest<T, S, N, D, I>::PrepareVertexArray()
{
/* Shortcut for GL functionality. */
const glw::Functions& gl = m_context.getRenderContext().getFunctions();
@@ -2590,7 +2236,8 @@
/** @brief Test's draw call.
*/
-void StorageAndSubImageTest::Draw()
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+void StorageAndSubImageTest<T, S, N, D, I>::Draw()
{
/* Shortcut for GL functionality. */
const glw::Functions& gl = m_context.getRenderContext().getFunctions();
@@ -2610,7 +2257,8 @@
/** @brief Clean GL objects, test variables and GL errors.
*/
-void StorageAndSubImageTest::CleanTexture()
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+void StorageAndSubImageTest<T, S, N, D, I>::CleanTexture()
{
/* Shortcut for GL functionality. */
const glw::Functions& gl = m_context.getRenderContext().getFunctions();
@@ -2626,7 +2274,8 @@
/** @brief Clean GL objects, test variables and GL errors.
*/
-void StorageAndSubImageTest::CleanFramebuffer()
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+void StorageAndSubImageTest<T, S, N, D, I>::CleanFramebuffer()
{
/* Shortcut for GL functionality. */
const glw::Functions& gl = m_context.getRenderContext().getFunctions();
@@ -2650,7 +2299,8 @@
/** @brief Clean GL objects, test variables and GL errors.
*/
-void StorageAndSubImageTest::CleanProgram()
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+void StorageAndSubImageTest<T, S, N, D, I>::CleanProgram()
{
/* Shortcut for GL functionality. */
const glw::Functions& gl = m_context.getRenderContext().getFunctions();
@@ -2668,7 +2318,8 @@
/** @brief Clean GL objects, test variables and GL errors.
*/
-void StorageAndSubImageTest::CleanErrors()
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+void StorageAndSubImageTest<T, S, N, D, I>::CleanErrors()
{
/* Shortcut for GL functionality. */
const glw::Functions& gl = m_context.getRenderContext().getFunctions();
@@ -2680,7 +2331,8 @@
/** @brief Clean GL objects, test variables and GL errors.
*/
-void StorageAndSubImageTest::CleanVertexArray()
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+void StorageAndSubImageTest<T, S, N, D, I>::CleanVertexArray()
{
/* Shortcut for GL functionality. */
const glw::Functions& gl = m_context.getRenderContext().getFunctions();
@@ -2699,7 +2351,8 @@
*
* @return Iteration result.
*/
-tcu::TestNode::IterateResult StorageAndSubImageTest::iterate()
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+tcu::TestNode::IterateResult StorageAndSubImageTest<T, S, N, D, I>::iterate()
{
/* Shortcut for GL functionality. */
const glw::Functions& gl = m_context.getRenderContext().getFunctions();
@@ -2722,28 +2375,12 @@
try
{
PrepareVertexArray();
-
- /* Test TextureStorage* */
- is_ok &= LoopTestOverDOverS<glw::GLbyte, false, false>(true);
- is_ok &= LoopTestOverDOverS<glw::GLubyte, false, false>(true);
- is_ok &= LoopTestOverDOverS<glw::GLshort, false, false>(true);
- is_ok &= LoopTestOverDOverS<glw::GLushort, false, false>(true);
- is_ok &= LoopTestOverDOverS<glw::GLint, false, false>(false);
- is_ok &= LoopTestOverDOverS<glw::GLuint, false, false>(false);
- is_ok &= LoopTestOverDOverS<glw::GLubyte, true, false>(true);
- is_ok &= LoopTestOverDOverS<glw::GLushort, true, false>(true);
- is_ok &= LoopTestOverDOverS<glw::GLfloat, true, false>(false);
-
- /* Test TextureSubImage* */
- is_ok &= LoopTestOverDOverS<glw::GLbyte, false, true>(true);
- is_ok &= LoopTestOverDOverS<glw::GLubyte, false, true>(true);
- is_ok &= LoopTestOverDOverS<glw::GLshort, false, true>(true);
- is_ok &= LoopTestOverDOverS<glw::GLushort, false, true>(true);
- is_ok &= LoopTestOverDOverS<glw::GLint, false, true>(false);
- is_ok &= LoopTestOverDOverS<glw::GLuint, false, true>(false);
- is_ok &= LoopTestOverDOverS<glw::GLubyte, true, true>(true);
- is_ok &= LoopTestOverDOverS<glw::GLushort, true, true>(true);
- is_ok &= LoopTestOverDOverS<glw::GLfloat, true, true>(false);
+ PrepareProgram(FragmentShaderDeclaration(), FragmentShaderTail());
+ is_ok = Test();
+ }
+ catch (tcu::NotSupportedError e)
+ {
+ throw e;
}
catch (...)
{
@@ -2783,99 +2420,131 @@
}
/* Vertex shader source code. */
-const glw::GLchar* StorageAndSubImageTest::s_vertex_shader = "#version 450\n"
- "\n"
- "void main()\n"
- "{\n"
- " switch(gl_VertexID)\n"
- " {\n"
- " case 0:\n"
- " gl_Position = vec4(-1.0, 1.0, 0.0, 1.0);\n"
- " break;\n"
- " case 1:\n"
- " gl_Position = vec4( 1.0, 1.0, 0.0, 1.0);\n"
- " break;\n"
- " case 2:\n"
- " gl_Position = vec4(-1.0,-1.0, 0.0, 1.0);\n"
- " break;\n"
- " case 3:\n"
- " gl_Position = vec4( 1.0,-1.0, 0.0, 1.0);\n"
- " break;\n"
- " }\n"
- "}\n";
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+const glw::GLchar* StorageAndSubImageTest<T, S, N, D, I>::s_vertex_shader =
+ "#version 450\n"
+ "\n"
+ "void main()\n"
+ "{\n"
+ " switch(gl_VertexID)\n"
+ " {\n"
+ " case 0:\n"
+ " gl_Position = vec4(-1.0, 1.0, 0.0, 1.0);\n"
+ " break;\n"
+ " case 1:\n"
+ " gl_Position = vec4( 1.0, 1.0, 0.0, 1.0);\n"
+ " break;\n"
+ " case 2:\n"
+ " gl_Position = vec4(-1.0,-1.0, 0.0, 1.0);\n"
+ " break;\n"
+ " case 3:\n"
+ " gl_Position = vec4( 1.0,-1.0, 0.0, 1.0);\n"
+ " break;\n"
+ " }\n"
+ "}\n";
/* Fragment shader source program. */
-const glw::GLchar* StorageAndSubImageTest::s_fragment_shader_head =
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+const glw::GLchar* StorageAndSubImageTest<T, S, N, D, I>::s_fragment_shader_head =
"#version 450\n"
"\n"
"layout(pixel_center_integer) in vec4 gl_FragCoord;\n"
"\n";
-const glw::GLchar* StorageAndSubImageTest::s_fragment_shader_1D_fdecl_lowp =
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+const glw::GLchar* StorageAndSubImageTest<T, S, N, D, I>::s_fragment_shader_1D_fdecl_lowp =
"uniform sampler1D texture_input;\nout vec4 texture_output;\n";
-const glw::GLchar* StorageAndSubImageTest::s_fragment_shader_1D_idecl_lowp =
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+const glw::GLchar* StorageAndSubImageTest<T, S, N, D, I>::s_fragment_shader_1D_idecl_lowp =
"uniform isampler1D texture_input;\nout ivec4 texture_output;\n";
-const glw::GLchar* StorageAndSubImageTest::s_fragment_shader_1D_udecl_lowp =
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+const glw::GLchar* StorageAndSubImageTest<T, S, N, D, I>::s_fragment_shader_1D_udecl_lowp =
"uniform usampler1D texture_input;\nout uvec4 texture_output;\n";
-const glw::GLchar* StorageAndSubImageTest::s_fragment_shader_1D_fdecl_mediump =
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+const glw::GLchar* StorageAndSubImageTest<T, S, N, D, I>::s_fragment_shader_1D_fdecl_mediump =
"uniform sampler1D texture_input;\nout vec4 texture_output;\n";
-const glw::GLchar* StorageAndSubImageTest::s_fragment_shader_1D_idecl_mediump =
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+const glw::GLchar* StorageAndSubImageTest<T, S, N, D, I>::s_fragment_shader_1D_idecl_mediump =
"uniform isampler1D texture_input;\nout ivec4 texture_output;\n";
-const glw::GLchar* StorageAndSubImageTest::s_fragment_shader_1D_udecl_mediump =
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+const glw::GLchar* StorageAndSubImageTest<T, S, N, D, I>::s_fragment_shader_1D_udecl_mediump =
"uniform usampler1D texture_input;\nout uvec4 texture_output;\n";
-const glw::GLchar* StorageAndSubImageTest::s_fragment_shader_1D_fdecl_highp =
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+const glw::GLchar* StorageAndSubImageTest<T, S, N, D, I>::s_fragment_shader_1D_fdecl_highp =
"uniform sampler1D texture_input;\nout vec4 texture_output;\n";
-const glw::GLchar* StorageAndSubImageTest::s_fragment_shader_1D_idecl_highp =
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+const glw::GLchar* StorageAndSubImageTest<T, S, N, D, I>::s_fragment_shader_1D_idecl_highp =
"uniform isampler1D texture_input;\nout ivec4 texture_output;\n";
-const glw::GLchar* StorageAndSubImageTest::s_fragment_shader_1D_udecl_highp =
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+const glw::GLchar* StorageAndSubImageTest<T, S, N, D, I>::s_fragment_shader_1D_udecl_highp =
"uniform usampler1D texture_input;\nout uvec4 texture_output;\n";
-const glw::GLchar* StorageAndSubImageTest::s_fragment_shader_2D_fdecl_lowp =
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+const glw::GLchar* StorageAndSubImageTest<T, S, N, D, I>::s_fragment_shader_2D_fdecl_lowp =
"uniform sampler2D texture_input;\nout vec4 texture_output;\n";
-const glw::GLchar* StorageAndSubImageTest::s_fragment_shader_2D_idecl_lowp =
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+const glw::GLchar* StorageAndSubImageTest<T, S, N, D, I>::s_fragment_shader_2D_idecl_lowp =
"uniform isampler2D texture_input;\nout ivec4 texture_output;\n";
-const glw::GLchar* StorageAndSubImageTest::s_fragment_shader_2D_udecl_lowp =
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+const glw::GLchar* StorageAndSubImageTest<T, S, N, D, I>::s_fragment_shader_2D_udecl_lowp =
"uniform usampler2D texture_input;\nout uvec4 texture_output;\n";
-const glw::GLchar* StorageAndSubImageTest::s_fragment_shader_2D_fdecl_mediump =
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+const glw::GLchar* StorageAndSubImageTest<T, S, N, D, I>::s_fragment_shader_2D_fdecl_mediump =
"uniform sampler2D texture_input;\nout vec4 texture_output;\n";
-const glw::GLchar* StorageAndSubImageTest::s_fragment_shader_2D_idecl_mediump =
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+const glw::GLchar* StorageAndSubImageTest<T, S, N, D, I>::s_fragment_shader_2D_idecl_mediump =
"uniform isampler2D texture_input;\nout ivec4 texture_output;\n";
-const glw::GLchar* StorageAndSubImageTest::s_fragment_shader_2D_udecl_mediump =
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+const glw::GLchar* StorageAndSubImageTest<T, S, N, D, I>::s_fragment_shader_2D_udecl_mediump =
"uniform usampler2D texture_input;\nout uvec4 texture_output;\n";
-const glw::GLchar* StorageAndSubImageTest::s_fragment_shader_2D_fdecl_highp =
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+const glw::GLchar* StorageAndSubImageTest<T, S, N, D, I>::s_fragment_shader_2D_fdecl_highp =
"uniform sampler2D texture_input;\nout vec4 texture_output;\n";
-const glw::GLchar* StorageAndSubImageTest::s_fragment_shader_2D_idecl_highp =
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+const glw::GLchar* StorageAndSubImageTest<T, S, N, D, I>::s_fragment_shader_2D_idecl_highp =
"uniform isampler2D texture_input;\nout ivec4 texture_output;\n";
-const glw::GLchar* StorageAndSubImageTest::s_fragment_shader_2D_udecl_highp =
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+const glw::GLchar* StorageAndSubImageTest<T, S, N, D, I>::s_fragment_shader_2D_udecl_highp =
"uniform usampler2D texture_input;\nout uvec4 texture_output;\n";
-const glw::GLchar* StorageAndSubImageTest::s_fragment_shader_3D_fdecl_lowp =
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+const glw::GLchar* StorageAndSubImageTest<T, S, N, D, I>::s_fragment_shader_3D_fdecl_lowp =
"uniform sampler3D texture_input;\nout vec4 texture_output;\n";
-const glw::GLchar* StorageAndSubImageTest::s_fragment_shader_3D_idecl_lowp =
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+const glw::GLchar* StorageAndSubImageTest<T, S, N, D, I>::s_fragment_shader_3D_idecl_lowp =
"uniform isampler3D texture_input;\nout ivec4 texture_output;\n";
-const glw::GLchar* StorageAndSubImageTest::s_fragment_shader_3D_udecl_lowp =
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+const glw::GLchar* StorageAndSubImageTest<T, S, N, D, I>::s_fragment_shader_3D_udecl_lowp =
"uniform usampler3D texture_input;\nout uvec4 texture_output;\n";
-const glw::GLchar* StorageAndSubImageTest::s_fragment_shader_3D_fdecl_mediump =
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+const glw::GLchar* StorageAndSubImageTest<T, S, N, D, I>::s_fragment_shader_3D_fdecl_mediump =
"uniform sampler3D texture_input;\nout vec4 texture_output;\n";
-const glw::GLchar* StorageAndSubImageTest::s_fragment_shader_3D_idecl_mediump =
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+const glw::GLchar* StorageAndSubImageTest<T, S, N, D, I>::s_fragment_shader_3D_idecl_mediump =
"uniform isampler3D texture_input;\nout ivec4 texture_output;\n";
-const glw::GLchar* StorageAndSubImageTest::s_fragment_shader_3D_udecl_mediump =
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+const glw::GLchar* StorageAndSubImageTest<T, S, N, D, I>::s_fragment_shader_3D_udecl_mediump =
"uniform usampler3D texture_input;\nout uvec4 texture_output;\n";
-const glw::GLchar* StorageAndSubImageTest::s_fragment_shader_3D_fdecl_highp =
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+const glw::GLchar* StorageAndSubImageTest<T, S, N, D, I>::s_fragment_shader_3D_fdecl_highp =
"uniform sampler3D texture_input;\nout vec4 texture_output;\n";
-const glw::GLchar* StorageAndSubImageTest::s_fragment_shader_3D_idecl_highp =
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+const glw::GLchar* StorageAndSubImageTest<T, S, N, D, I>::s_fragment_shader_3D_idecl_highp =
"uniform isampler3D texture_input;\nout ivec4 texture_output;\n";
-const glw::GLchar* StorageAndSubImageTest::s_fragment_shader_3D_udecl_highp =
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+const glw::GLchar* StorageAndSubImageTest<T, S, N, D, I>::s_fragment_shader_3D_udecl_highp =
"uniform usampler3D texture_input;\nout uvec4 texture_output;\n";
-const glw::GLchar* StorageAndSubImageTest::s_fragment_shader_1D_tail =
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+const glw::GLchar* StorageAndSubImageTest<T, S, N, D, I>::s_fragment_shader_1D_tail =
"\n"
"void main()\n"
"{\n"
" texture_output = texelFetch(texture_input, int(gl_FragCoord.x), 0);\n"
"}\n";
-const glw::GLchar* StorageAndSubImageTest::s_fragment_shader_2D_tail =
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+const glw::GLchar* StorageAndSubImageTest<T, S, N, D, I>::s_fragment_shader_2D_tail =
"\n"
"void main()\n"
"{\n"
@@ -2883,7 +2552,8 @@
"0);\n"
"}\n";
-const glw::GLchar* StorageAndSubImageTest::s_fragment_shader_3D_tail =
+template <typename T, glw::GLint S, bool N, glw::GLuint D, bool I>
+const glw::GLchar* StorageAndSubImageTest<T, S, N, D, I>::s_fragment_shader_3D_tail =
"\n"
"void main()\n"
"{\n"
@@ -2891,6 +2561,204 @@
"int(floor(gl_FragCoord.x / 2 / 3))), 0);\n"
"}\n";
+template class StorageAndSubImageTest<glw::GLbyte, 1, false, 1, false>;
+template class StorageAndSubImageTest<glw::GLbyte, 2, false, 1, false>;
+template class StorageAndSubImageTest<glw::GLbyte, 4, false, 1, false>;
+template class StorageAndSubImageTest<glw::GLbyte, 1, false, 2, false>;
+template class StorageAndSubImageTest<glw::GLbyte, 2, false, 2, false>;
+template class StorageAndSubImageTest<glw::GLbyte, 4, false, 2, false>;
+template class StorageAndSubImageTest<glw::GLbyte, 1, false, 3, false>;
+template class StorageAndSubImageTest<glw::GLbyte, 2, false, 3, false>;
+template class StorageAndSubImageTest<glw::GLbyte, 4, false, 3, false>;
+
+template class StorageAndSubImageTest<glw::GLubyte, 1, false, 1, false>;
+template class StorageAndSubImageTest<glw::GLubyte, 2, false, 1, false>;
+template class StorageAndSubImageTest<glw::GLubyte, 4, false, 1, false>;
+template class StorageAndSubImageTest<glw::GLubyte, 1, false, 2, false>;
+template class StorageAndSubImageTest<glw::GLubyte, 2, false, 2, false>;
+template class StorageAndSubImageTest<glw::GLubyte, 4, false, 2, false>;
+template class StorageAndSubImageTest<glw::GLubyte, 1, false, 3, false>;
+template class StorageAndSubImageTest<glw::GLubyte, 2, false, 3, false>;
+template class StorageAndSubImageTest<glw::GLubyte, 4, false, 3, false>;
+
+template class StorageAndSubImageTest<glw::GLubyte, 1, true, 1, false>;
+template class StorageAndSubImageTest<glw::GLubyte, 2, true, 1, false>;
+template class StorageAndSubImageTest<glw::GLubyte, 4, true, 1, false>;
+template class StorageAndSubImageTest<glw::GLubyte, 1, true, 2, false>;
+template class StorageAndSubImageTest<glw::GLubyte, 2, true, 2, false>;
+template class StorageAndSubImageTest<glw::GLubyte, 4, true, 2, false>;
+template class StorageAndSubImageTest<glw::GLubyte, 1, true, 3, false>;
+template class StorageAndSubImageTest<glw::GLubyte, 2, true, 3, false>;
+template class StorageAndSubImageTest<glw::GLubyte, 4, true, 3, false>;
+
+template class StorageAndSubImageTest<glw::GLshort, 1, false, 1, false>;
+template class StorageAndSubImageTest<glw::GLshort, 2, false, 1, false>;
+template class StorageAndSubImageTest<glw::GLshort, 4, false, 1, false>;
+template class StorageAndSubImageTest<glw::GLshort, 1, false, 2, false>;
+template class StorageAndSubImageTest<glw::GLshort, 2, false, 2, false>;
+template class StorageAndSubImageTest<glw::GLshort, 4, false, 2, false>;
+template class StorageAndSubImageTest<glw::GLshort, 1, false, 3, false>;
+template class StorageAndSubImageTest<glw::GLshort, 2, false, 3, false>;
+template class StorageAndSubImageTest<glw::GLshort, 4, false, 3, false>;
+
+template class StorageAndSubImageTest<glw::GLushort, 1, false, 1, false>;
+template class StorageAndSubImageTest<glw::GLushort, 2, false, 1, false>;
+template class StorageAndSubImageTest<glw::GLushort, 4, false, 1, false>;
+template class StorageAndSubImageTest<glw::GLushort, 1, false, 2, false>;
+template class StorageAndSubImageTest<glw::GLushort, 2, false, 2, false>;
+template class StorageAndSubImageTest<glw::GLushort, 4, false, 2, false>;
+template class StorageAndSubImageTest<glw::GLushort, 1, false, 3, false>;
+template class StorageAndSubImageTest<glw::GLushort, 2, false, 3, false>;
+template class StorageAndSubImageTest<glw::GLushort, 4, false, 3, false>;
+
+template class StorageAndSubImageTest<glw::GLushort, 1, true, 1, false>;
+template class StorageAndSubImageTest<glw::GLushort, 2, true, 1, false>;
+template class StorageAndSubImageTest<glw::GLushort, 4, true, 1, false>;
+template class StorageAndSubImageTest<glw::GLushort, 1, true, 2, false>;
+template class StorageAndSubImageTest<glw::GLushort, 2, true, 2, false>;
+template class StorageAndSubImageTest<glw::GLushort, 4, true, 2, false>;
+template class StorageAndSubImageTest<glw::GLushort, 1, true, 3, false>;
+template class StorageAndSubImageTest<glw::GLushort, 2, true, 3, false>;
+template class StorageAndSubImageTest<glw::GLushort, 4, true, 3, false>;
+
+template class StorageAndSubImageTest<glw::GLint, 1, false, 1, false>;
+template class StorageAndSubImageTest<glw::GLint, 2, false, 1, false>;
+template class StorageAndSubImageTest<glw::GLint, 3, false, 1, false>;
+template class StorageAndSubImageTest<glw::GLint, 4, false, 1, false>;
+template class StorageAndSubImageTest<glw::GLint, 1, false, 2, false>;
+template class StorageAndSubImageTest<glw::GLint, 2, false, 2, false>;
+template class StorageAndSubImageTest<glw::GLint, 3, false, 2, false>;
+template class StorageAndSubImageTest<glw::GLint, 4, false, 2, false>;
+template class StorageAndSubImageTest<glw::GLint, 1, false, 3, false>;
+template class StorageAndSubImageTest<glw::GLint, 2, false, 3, false>;
+template class StorageAndSubImageTest<glw::GLint, 3, false, 3, false>;
+template class StorageAndSubImageTest<glw::GLint, 4, false, 3, false>;
+
+template class StorageAndSubImageTest<glw::GLuint, 1, false, 1, false>;
+template class StorageAndSubImageTest<glw::GLuint, 2, false, 1, false>;
+template class StorageAndSubImageTest<glw::GLuint, 3, false, 1, false>;
+template class StorageAndSubImageTest<glw::GLuint, 4, false, 1, false>;
+template class StorageAndSubImageTest<glw::GLuint, 1, false, 2, false>;
+template class StorageAndSubImageTest<glw::GLuint, 2, false, 2, false>;
+template class StorageAndSubImageTest<glw::GLuint, 3, false, 2, false>;
+template class StorageAndSubImageTest<glw::GLuint, 4, false, 2, false>;
+template class StorageAndSubImageTest<glw::GLuint, 1, false, 3, false>;
+template class StorageAndSubImageTest<glw::GLuint, 2, false, 3, false>;
+template class StorageAndSubImageTest<glw::GLuint, 3, false, 3, false>;
+template class StorageAndSubImageTest<glw::GLuint, 4, false, 3, false>;
+
+template class StorageAndSubImageTest<glw::GLfloat, 1, true, 1, false>;
+template class StorageAndSubImageTest<glw::GLfloat, 2, true, 1, false>;
+template class StorageAndSubImageTest<glw::GLfloat, 3, true, 1, false>;
+template class StorageAndSubImageTest<glw::GLfloat, 4, true, 1, false>;
+template class StorageAndSubImageTest<glw::GLfloat, 1, true, 2, false>;
+template class StorageAndSubImageTest<glw::GLfloat, 2, true, 2, false>;
+template class StorageAndSubImageTest<glw::GLfloat, 3, true, 2, false>;
+template class StorageAndSubImageTest<glw::GLfloat, 4, true, 2, false>;
+template class StorageAndSubImageTest<glw::GLfloat, 1, true, 3, false>;
+template class StorageAndSubImageTest<glw::GLfloat, 2, true, 3, false>;
+template class StorageAndSubImageTest<glw::GLfloat, 3, true, 3, false>;
+template class StorageAndSubImageTest<glw::GLfloat, 4, true, 3, false>;
+
+template class StorageAndSubImageTest<glw::GLbyte, 1, false, 1, true>;
+template class StorageAndSubImageTest<glw::GLbyte, 2, false, 1, true>;
+template class StorageAndSubImageTest<glw::GLbyte, 4, false, 1, true>;
+template class StorageAndSubImageTest<glw::GLbyte, 1, false, 2, true>;
+template class StorageAndSubImageTest<glw::GLbyte, 2, false, 2, true>;
+template class StorageAndSubImageTest<glw::GLbyte, 4, false, 2, true>;
+template class StorageAndSubImageTest<glw::GLbyte, 1, false, 3, true>;
+template class StorageAndSubImageTest<glw::GLbyte, 2, false, 3, true>;
+template class StorageAndSubImageTest<glw::GLbyte, 4, false, 3, true>;
+
+template class StorageAndSubImageTest<glw::GLubyte, 1, false, 1, true>;
+template class StorageAndSubImageTest<glw::GLubyte, 2, false, 1, true>;
+template class StorageAndSubImageTest<glw::GLubyte, 4, false, 1, true>;
+template class StorageAndSubImageTest<glw::GLubyte, 1, false, 2, true>;
+template class StorageAndSubImageTest<glw::GLubyte, 2, false, 2, true>;
+template class StorageAndSubImageTest<glw::GLubyte, 4, false, 2, true>;
+template class StorageAndSubImageTest<glw::GLubyte, 1, false, 3, true>;
+template class StorageAndSubImageTest<glw::GLubyte, 2, false, 3, true>;
+template class StorageAndSubImageTest<glw::GLubyte, 4, false, 3, true>;
+
+template class StorageAndSubImageTest<glw::GLubyte, 1, true, 1, true>;
+template class StorageAndSubImageTest<glw::GLubyte, 2, true, 1, true>;
+template class StorageAndSubImageTest<glw::GLubyte, 4, true, 1, true>;
+template class StorageAndSubImageTest<glw::GLubyte, 1, true, 2, true>;
+template class StorageAndSubImageTest<glw::GLubyte, 2, true, 2, true>;
+template class StorageAndSubImageTest<glw::GLubyte, 4, true, 2, true>;
+template class StorageAndSubImageTest<glw::GLubyte, 1, true, 3, true>;
+template class StorageAndSubImageTest<glw::GLubyte, 2, true, 3, true>;
+template class StorageAndSubImageTest<glw::GLubyte, 4, true, 3, true>;
+
+template class StorageAndSubImageTest<glw::GLshort, 1, false, 1, true>;
+template class StorageAndSubImageTest<glw::GLshort, 2, false, 1, true>;
+template class StorageAndSubImageTest<glw::GLshort, 4, false, 1, true>;
+template class StorageAndSubImageTest<glw::GLshort, 1, false, 2, true>;
+template class StorageAndSubImageTest<glw::GLshort, 2, false, 2, true>;
+template class StorageAndSubImageTest<glw::GLshort, 4, false, 2, true>;
+template class StorageAndSubImageTest<glw::GLshort, 1, false, 3, true>;
+template class StorageAndSubImageTest<glw::GLshort, 2, false, 3, true>;
+template class StorageAndSubImageTest<glw::GLshort, 4, false, 3, true>;
+
+template class StorageAndSubImageTest<glw::GLushort, 1, false, 1, true>;
+template class StorageAndSubImageTest<glw::GLushort, 2, false, 1, true>;
+template class StorageAndSubImageTest<glw::GLushort, 4, false, 1, true>;
+template class StorageAndSubImageTest<glw::GLushort, 1, false, 2, true>;
+template class StorageAndSubImageTest<glw::GLushort, 2, false, 2, true>;
+template class StorageAndSubImageTest<glw::GLushort, 4, false, 2, true>;
+template class StorageAndSubImageTest<glw::GLushort, 1, false, 3, true>;
+template class StorageAndSubImageTest<glw::GLushort, 2, false, 3, true>;
+template class StorageAndSubImageTest<glw::GLushort, 4, false, 3, true>;
+
+template class StorageAndSubImageTest<glw::GLushort, 1, true, 1, true>;
+template class StorageAndSubImageTest<glw::GLushort, 2, true, 1, true>;
+template class StorageAndSubImageTest<glw::GLushort, 4, true, 1, true>;
+template class StorageAndSubImageTest<glw::GLushort, 1, true, 2, true>;
+template class StorageAndSubImageTest<glw::GLushort, 2, true, 2, true>;
+template class StorageAndSubImageTest<glw::GLushort, 4, true, 2, true>;
+template class StorageAndSubImageTest<glw::GLushort, 1, true, 3, true>;
+template class StorageAndSubImageTest<glw::GLushort, 2, true, 3, true>;
+template class StorageAndSubImageTest<glw::GLushort, 4, true, 3, true>;
+
+template class StorageAndSubImageTest<glw::GLint, 1, false, 1, true>;
+template class StorageAndSubImageTest<glw::GLint, 2, false, 1, true>;
+template class StorageAndSubImageTest<glw::GLint, 3, false, 1, true>;
+template class StorageAndSubImageTest<glw::GLint, 4, false, 1, true>;
+template class StorageAndSubImageTest<glw::GLint, 1, false, 2, true>;
+template class StorageAndSubImageTest<glw::GLint, 2, false, 2, true>;
+template class StorageAndSubImageTest<glw::GLint, 3, false, 2, true>;
+template class StorageAndSubImageTest<glw::GLint, 4, false, 2, true>;
+template class StorageAndSubImageTest<glw::GLint, 1, false, 3, true>;
+template class StorageAndSubImageTest<glw::GLint, 2, false, 3, true>;
+template class StorageAndSubImageTest<glw::GLint, 3, false, 3, true>;
+template class StorageAndSubImageTest<glw::GLint, 4, false, 3, true>;
+
+template class StorageAndSubImageTest<glw::GLuint, 1, false, 1, true>;
+template class StorageAndSubImageTest<glw::GLuint, 2, false, 1, true>;
+template class StorageAndSubImageTest<glw::GLuint, 3, false, 1, true>;
+template class StorageAndSubImageTest<glw::GLuint, 4, false, 1, true>;
+template class StorageAndSubImageTest<glw::GLuint, 1, false, 2, true>;
+template class StorageAndSubImageTest<glw::GLuint, 2, false, 2, true>;
+template class StorageAndSubImageTest<glw::GLuint, 3, false, 2, true>;
+template class StorageAndSubImageTest<glw::GLuint, 4, false, 2, true>;
+template class StorageAndSubImageTest<glw::GLuint, 1, false, 3, true>;
+template class StorageAndSubImageTest<glw::GLuint, 2, false, 3, true>;
+template class StorageAndSubImageTest<glw::GLuint, 3, false, 3, true>;
+template class StorageAndSubImageTest<glw::GLuint, 4, false, 3, true>;
+
+template class StorageAndSubImageTest<glw::GLfloat, 1, true, 1, true>;
+template class StorageAndSubImageTest<glw::GLfloat, 2, true, 1, true>;
+template class StorageAndSubImageTest<glw::GLfloat, 3, true, 1, true>;
+template class StorageAndSubImageTest<glw::GLfloat, 4, true, 1, true>;
+template class StorageAndSubImageTest<glw::GLfloat, 1, true, 2, true>;
+template class StorageAndSubImageTest<glw::GLfloat, 2, true, 2, true>;
+template class StorageAndSubImageTest<glw::GLfloat, 3, true, 2, true>;
+template class StorageAndSubImageTest<glw::GLfloat, 4, true, 2, true>;
+template class StorageAndSubImageTest<glw::GLfloat, 1, true, 3, true>;
+template class StorageAndSubImageTest<glw::GLfloat, 2, true, 3, true>;
+template class StorageAndSubImageTest<glw::GLfloat, 3, true, 3, true>;
+template class StorageAndSubImageTest<glw::GLfloat, 4, true, 3, true>;
+
/******************************** Storage Multisample Test Implementation ********************************/
/** @brief Storage Multisample Test constructor.
diff --git a/external/openglcts/modules/gl/gl4cIndirectParametersTests.cpp b/external/openglcts/modules/gl/gl4cIndirectParametersTests.cpp
index 340dbf1..a2ff07d 100644
--- a/external/openglcts/modules/gl/gl4cIndirectParametersTests.cpp
+++ b/external/openglcts/modules/gl/gl4cIndirectParametersTests.cpp
@@ -431,7 +431,7 @@
gl.vertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, NULL);
GLU_EXPECT_NO_ERROR(gl.getError(), "glVertexAttribPointer");
- gl.multiDrawArraysIndirectCountARB(GL_TRIANGLE_STRIP, 0, 0, 2, 0);
+ gl.multiDrawArraysIndirectCount(GL_TRIANGLE_STRIP, 0, 0, 2, 0);
GLU_EXPECT_NO_ERROR(gl.getError(), "glMultiDrawArraysIndirectCountARB");
gl.disableVertexAttribArray(0);
@@ -453,7 +453,7 @@
bool result = true;
// INVALID_VALUE - drawcount offset not multiple of 4
- gl.multiDrawArraysIndirectCountARB(GL_TRIANGLE_STRIP, 0, 2, 1, 0);
+ gl.multiDrawArraysIndirectCount(GL_TRIANGLE_STRIP, 0, 2, 1, 0);
errorCode = gl.getError();
if (errorCode != GL_INVALID_VALUE)
{
@@ -464,7 +464,7 @@
}
// INVALID_OPERATION - maxdrawcount greater then parameter buffer size
- gl.multiDrawArraysIndirectCountARB(GL_TRIANGLE_STRIP, 0, 0, 4, 0);
+ gl.multiDrawArraysIndirectCount(GL_TRIANGLE_STRIP, 0, 0, 4, 0);
errorCode = gl.getError();
if (errorCode != GL_INVALID_OPERATION)
{
@@ -478,7 +478,7 @@
GLU_EXPECT_NO_ERROR(gl.getError(), "glBindBuffer");
// INVALID_OPERATION - GL_PARAMETER_BUFFER_ARB not bound
- gl.multiDrawArraysIndirectCountARB(GL_TRIANGLE_STRIP, 0, 0, 2, 0);
+ gl.multiDrawArraysIndirectCount(GL_TRIANGLE_STRIP, 0, 0, 2, 0);
errorCode = gl.getError();
if (errorCode != GL_INVALID_OPERATION)
{
@@ -624,7 +624,7 @@
gl.vertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, NULL);
GLU_EXPECT_NO_ERROR(gl.getError(), "glVertexAttribPointer");
- gl.multiDrawElementsIndirectCountARB(GL_TRIANGLE_STRIP, GL_UNSIGNED_SHORT, 0, 0, 2, 0);
+ gl.multiDrawElementsIndirectCount(GL_TRIANGLE_STRIP, GL_UNSIGNED_SHORT, 0, 0, 2, 0);
GLU_EXPECT_NO_ERROR(gl.getError(), "glMultiDrawElementsIndirectCountARB");
gl.disableVertexAttribArray(0);
@@ -646,7 +646,7 @@
bool result = true;
// INVALID_VALUE - drawcount offset not multiple of 4
- gl.multiDrawElementsIndirectCountARB(GL_TRIANGLE_STRIP, GL_UNSIGNED_BYTE, 0, 2, 1, 0);
+ gl.multiDrawElementsIndirectCount(GL_TRIANGLE_STRIP, GL_UNSIGNED_BYTE, 0, 2, 1, 0);
errorCode = gl.getError();
if (errorCode != GL_INVALID_VALUE)
{
@@ -657,7 +657,7 @@
}
// INVALID_OPERATION - maxdrawcount greater then parameter buffer size
- gl.multiDrawElementsIndirectCountARB(GL_TRIANGLE_STRIP, GL_UNSIGNED_BYTE, 0, 0, 4, 0);
+ gl.multiDrawElementsIndirectCount(GL_TRIANGLE_STRIP, GL_UNSIGNED_BYTE, 0, 0, 4, 0);
errorCode = gl.getError();
if (errorCode != GL_INVALID_OPERATION)
{
@@ -671,7 +671,7 @@
GLU_EXPECT_NO_ERROR(gl.getError(), "glBindBuffer");
// INVALID_OPERATION - GL_PARAMETER_BUFFER_ARB not bound
- gl.multiDrawElementsIndirectCountARB(GL_TRIANGLE_STRIP, GL_UNSIGNED_BYTE, 0, 0, 3, 0);
+ gl.multiDrawElementsIndirectCount(GL_TRIANGLE_STRIP, GL_UNSIGNED_BYTE, 0, 0, 3, 0);
errorCode = gl.getError();
if (errorCode != GL_INVALID_OPERATION)
{
diff --git a/external/openglcts/modules/gl/gl4cShaderAtomicCountersTests.cpp b/external/openglcts/modules/gl/gl4cShaderAtomicCountersTests.cpp
index b1b19e1..2cb6b42 100644
--- a/external/openglcts/modules/gl/gl4cShaderAtomicCountersTests.cpp
+++ b/external/openglcts/modules/gl/gl4cShaderAtomicCountersTests.cpp
@@ -3578,6 +3578,53 @@
}
};
+class NegativeUnsizedArray : public SACSubcaseBase
+{
+ virtual std::string Title()
+ {
+ return NL "GLSL errors";
+ }
+
+ virtual std::string Purpose()
+ {
+ return NL "Verify that it is compile-time error to declare an unsized array of atomic_uint..";
+ }
+
+ virtual std::string Method()
+ {
+ return NL "";
+ }
+
+ virtual std::string PassCriteria()
+ {
+ return NL "";
+ }
+
+ virtual long Run()
+ {
+ const char* glsl_fs1 = "#version 450 core" NL "layout(location = 0) out uvec4 o_color[4];"
+ " layout(binding = 0, offset = 4) uniform atomic_uint ac_counter[];" NL
+ "void main() {" NL " o_color[0] = uvec4(atomicCounterIncrement(ac_counter[0]));" NL "}";
+
+ GLuint sh = glCreateShader(GL_FRAGMENT_SHADER);
+ glShaderSource(sh, 1, &glsl_fs1, NULL);
+ glCompileShader(sh);
+ GLint status_comp;
+ glGetShaderiv(sh, GL_COMPILE_STATUS, &status_comp);
+ glDeleteShader(sh);
+
+ if (status_comp == GL_TRUE)
+ {
+ m_context.getTestContext().getLog()
+ << tcu::TestLog::Message << "Expected error during fragment shader compilation."
+ << tcu::TestLog::EndMessage;
+ return ERROR;
+ }
+
+ return NO_ERROR;
+ }
+};
+
class BasicUsageNoOffset : public SACSubcaseBase
{
virtual std::string Title()
@@ -4559,6 +4606,9 @@
addChild(new TestSubcase(m_context, "negative-uniform", TestSubcase::Create<NegativeUniform>));
addChild(new TestSubcase(m_context, "negative-array", TestSubcase::Create<NegativeArray>));
addChild(new TestSubcase(m_context, "negative-arithmetic", TestSubcase::Create<NegativeArithmetic>));
+
+ if(contextSupports(m_context.getRenderContext().getType(), glu::ApiType::core(4, 5)))
+ addChild(new TestSubcase(m_context, "negative-unsized-array", TestSubcase::Create<NegativeUnsizedArray>));
}
} // namespace gl4cts
diff --git a/external/openglcts/modules/gl/gl4cShaderDrawParametersTests.cpp b/external/openglcts/modules/gl/gl4cShaderDrawParametersTests.cpp
index 8f1c228..ea6cdb1 100644
--- a/external/openglcts/modules/gl/gl4cShaderDrawParametersTests.cpp
+++ b/external/openglcts/modules/gl/gl4cShaderDrawParametersTests.cpp
@@ -756,7 +756,7 @@
{
const Functions& gl = m_context.getRenderContext().getFunctions();
- gl.multiDrawArraysIndirectCountARB(GL_TRIANGLE_STRIP, 0, 0, 3, sizeof(SDPDrawArraysIndirectCommand));
+ gl.multiDrawArraysIndirectCount(GL_TRIANGLE_STRIP, 0, 0, 3, sizeof(SDPDrawArraysIndirectCommand));
GLU_EXPECT_NO_ERROR(gl.getError(), "glMultiDrawArraysIndirect");
}
@@ -822,7 +822,7 @@
{
const Functions& gl = m_context.getRenderContext().getFunctions();
- gl.multiDrawElementsIndirectCountARB(GL_TRIANGLE_STRIP, GL_UNSIGNED_SHORT, 0, 0, 3,
+ gl.multiDrawElementsIndirectCount(GL_TRIANGLE_STRIP, GL_UNSIGNED_SHORT, 0, 0, 3,
sizeof(SDPDrawElementsIndirectCommand));
GLU_EXPECT_NO_ERROR(gl.getError(), "glMultiDrawElementsIndirect");
}
diff --git a/external/openglcts/modules/gl/gl4cSpirvExtensionsTests.cpp b/external/openglcts/modules/gl/gl4cSpirvExtensionsTests.cpp
new file mode 100644
index 0000000..44b675c
--- /dev/null
+++ b/external/openglcts/modules/gl/gl4cSpirvExtensionsTests.cpp
@@ -0,0 +1,135 @@
+/*-------------------------------------------------------------------------
+ * OpenGL Conformance Test Suite
+ * -----------------------------
+ *
+ * Copyright (c) 2017 The Khronos Group Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */ /*!
+ * \file
+ * \brief
+ */ /*-------------------------------------------------------------------*/
+
+/**
+ */ /*!
+ * \file gl4cSpirvExtensionsTests.cpp
+ * \brief Conformance tests for the GL_ARB_spirv_extensions functionality.
+ */ /*-------------------------------------------------------------------*/
+
+#include "gl4cSpirvExtensionsTests.hpp"
+#include "gluContextInfo.hpp"
+#include "gluDefs.hpp"
+#include "gluStrUtil.hpp"
+#include "glwEnums.hpp"
+#include "glwFunctions.hpp"
+#include "tcuTestLog.hpp"
+
+using namespace glw;
+using namespace glu;
+
+namespace gl4cts
+{
+
+/** Constructor.
+ *
+ * @param context Rendering context
+ */
+SpirvExtensionsQueriesTestCase::SpirvExtensionsQueriesTestCase(deqp::Context& context)
+ : TestCase(context, "spirv_extensions_queries",
+ "Verifies if queries for GL_ARB_spirv_extension tokens works as expected")
+{
+ /* Left blank intentionally */
+}
+
+/** Stub init method */
+void SpirvExtensionsQueriesTestCase::init()
+{
+ if (!m_context.getContextInfo().isExtensionSupported("GL_ARB_spirv_extensions"))
+ TCU_THROW(NotSupportedError, "GL_ARB_spirv_extensions not supported");
+
+ if (!m_context.getContextInfo().isExtensionSupported("GL_ARB_gl_spirv"))
+ TCU_THROW(NotSupportedError, "GL_ARB_gl_spirv not supported");
+}
+
+/** Executes test iteration.
+ *
+ * @return Returns STOP when test has finished executing, CONTINUE if more iterations are needed.
+ */
+tcu::TestNode::IterateResult SpirvExtensionsQueriesTestCase::iterate()
+{
+ const Functions& gl = m_context.getRenderContext().getFunctions();
+
+ GLint numSpirvExtensions;
+ gl.getIntegerv(GL_NUM_SPIR_V_EXTENSIONS, &numSpirvExtensions);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "getIntegerv");
+
+ m_testCtx.getLog() << tcu::TestLog::Message << "GL_NUM_SPIR_V_EXTENSIONS = " << numSpirvExtensions << "\n"
+ << tcu::TestLog::EndMessage;
+ for (GLint i = 0; i < numSpirvExtensions; ++i)
+ {
+ const GLubyte* spirvExtension = DE_NULL;
+
+ spirvExtension = gl.getStringi(GL_SPIR_V_EXTENSIONS, i);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "getStringi");
+
+ if (!spirvExtension || strlen((const char*)spirvExtension) == 0)
+ {
+ m_testCtx.getLog() << tcu::TestLog::Message << "Failed to fetch GL_SPIRV_EXTENSIONS string for index: " << i
+ << "\n"
+ << tcu::TestLog::EndMessage;
+
+ m_testCtx.setTestResult(QP_TEST_RESULT_FAIL, "Fail");
+ return STOP;
+ }
+ else
+ {
+ m_testCtx.getLog() << tcu::TestLog::Message << "GL_SPIR_V_EXTENSION " << i << ": " << spirvExtension << "\n"
+ << tcu::TestLog::EndMessage;
+ }
+ }
+
+ // Test out of bound query
+ gl.getStringi(GL_SPIR_V_EXTENSIONS, numSpirvExtensions);
+ GLenum err = gl.getError();
+ if (err != GL_INVALID_VALUE)
+ {
+ m_testCtx.getLog() << tcu::TestLog::Message
+ << "GetStringi query for GL_SPIRV_EXTENSIONS with index: " << numSpirvExtensions
+ << " should generate INVALID_VALUE error instead of " << glu::getErrorName(err) << "\n"
+ << tcu::TestLog::EndMessage;
+
+ m_testCtx.setTestResult(QP_TEST_RESULT_FAIL, "Fail");
+ return STOP;
+ }
+
+ m_testCtx.setTestResult(QP_TEST_RESULT_PASS, "Pass");
+ return STOP;
+}
+
+/** Constructor.
+ *
+ * @param context Rendering context.
+ */
+SpirvExtensionsTests::SpirvExtensionsTests(deqp::Context& context)
+ : TestCaseGroup(context, "spirv_extensions", "Verify conformance of GL_ARB_spirv_extensions implementation")
+{
+}
+
+/** Initializes the test group contents. */
+void SpirvExtensionsTests::init()
+{
+ addChild(new SpirvExtensionsQueriesTestCase(m_context));
+}
+
+} /* gl4cts namespace */
diff --git a/external/openglcts/modules/gl/gl4cSpirvExtensionsTests.hpp b/external/openglcts/modules/gl/gl4cSpirvExtensionsTests.hpp
new file mode 100644
index 0000000..9563745
--- /dev/null
+++ b/external/openglcts/modules/gl/gl4cSpirvExtensionsTests.hpp
@@ -0,0 +1,76 @@
+#ifndef _GL4CSPIRVEXTENSIONSTESTS_HPP
+#define _GL4CSPIRVEXTENSIONSTESTS_HPP
+/*-------------------------------------------------------------------------
+ * OpenGL Conformance Test Suite
+ * -----------------------------
+ *
+ * Copyright (c) 2017 The Khronos Group Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */ /*!
+ * \file
+ * \brief
+ */ /*-------------------------------------------------------------------*/
+
+/**
+ */ /*!
+ * \file gl4cSpirvExtensionsTests.cpp
+ * \brief Conformance tests for the GL_ARB_spirv_extensions functionality.
+ */ /*-------------------------------------------------------------------*/
+
+#include "glcTestCase.hpp"
+#include "glwDefs.hpp"
+#include "glwEnums.hpp"
+#include "tcuDefs.hpp"
+
+using namespace glw;
+using namespace glu;
+
+namespace gl4cts
+{
+
+/** Test verifies GetIntegerv query for NUM_SPIR_V_EXTENSIONS <pname>
+ * and GetStringi query for SPIR_V_EXTENSIONS <pname>
+ **/
+class SpirvExtensionsQueriesTestCase : public deqp::TestCase
+{
+public:
+ /* Public methods */
+ SpirvExtensionsQueriesTestCase(deqp::Context& context);
+
+ void init();
+ tcu::TestNode::IterateResult iterate();
+
+private:
+ /* Private members */
+ /* Private methods */
+};
+
+/** Test group which encapsulates spirv extensions conformance tests */
+class SpirvExtensionsTests : public deqp::TestCaseGroup
+{
+public:
+ /* Public methods */
+ SpirvExtensionsTests(deqp::Context& context);
+
+ void init();
+
+private:
+ SpirvExtensionsTests(const SpirvExtensionsTests& other);
+ SpirvExtensionsTests& operator=(const SpirvExtensionsTests& other);
+};
+
+} /* gl4cts namespace */
+
+#endif // _GL4CSPIRVEXTENSIONSTESTS_HPP
diff --git a/external/openglcts/modules/gl/gl4cTestPackages.cpp b/external/openglcts/modules/gl/gl4cTestPackages.cpp
index 3415dd3..f79949d 100644
--- a/external/openglcts/modules/gl/gl4cTestPackages.cpp
+++ b/external/openglcts/modules/gl/gl4cTestPackages.cpp
@@ -41,7 +41,6 @@
#include "gl4cLimitsTests.hpp"
#include "gl4cMapBufferAlignmentTests.hpp"
#include "gl4cMultiBindTests.hpp"
-#include "gl4cParallelShaderCompileTests.hpp"
#include "gl4cPostDepthCoverageTests.hpp"
#include "gl4cProgramInterfaceQueryTests.hpp"
#include "gl4cShaderAtomicCounterOpsTests.hpp"
@@ -60,6 +59,7 @@
#include "gl4cSparseTexture2Tests.hpp"
#include "gl4cSparseTextureClampTests.hpp"
#include "gl4cSparseTextureTests.hpp"
+#include "gl4cSpirvExtensionsTests.hpp"
#include "gl4cStencilTexturingTests.hpp"
#include "gl4cSyncTests.hpp"
#include "gl4cTextureBarrierTests.hpp"
@@ -72,8 +72,11 @@
#include "glcExposedExtensionsTests.hpp"
#include "glcInfoTests.hpp"
#include "glcPolygonOffsetClampTests.hpp"
+#include "glcParallelShaderCompileTests.hpp"
#include "glcRobustBufferAccessBehaviorTests.hpp"
#include "glcSampleVariablesTests.hpp"
+#include "glcSeparableProgramsTransformFeedbackTests.hpp"
+#include "glcShaderConstExprTests.hpp"
#include "glcShaderIntegerMixTests.hpp"
#include "glcShaderLibrary.hpp"
#include "glcShaderMultisampleInterpolationTests.hpp"
@@ -241,6 +244,7 @@
addChild(new gl4cts::SparseTextureTests(getContext()));
addChild(new gl4cts::IndirectParametersTests(getContext()));
addChild(new gl4cts::ShaderBallotTests(getContext()));
+ addChild(new glcts::ShaderConstExprTests(getContext()));
}
catch (...)
{
@@ -355,7 +359,7 @@
addChild(new gl4cts::ConditionalRenderInverted::Tests(getContext()));
addChild(new gl4cts::Sync::Tests(getContext()));
addChild(new gl4cts::IncompleteTextureAccess::Tests(getContext()));
- addChild(new gl4cts::ParallelShaderCompileTests(getContext()));
+ addChild(new glcts::ParallelShaderCompileTests(getContext()));
addChild(new gl4cts::PostDepthCoverage(getContext()));
addChild(new gl4cts::SparseTexture2Tests(getContext()));
addChild(new gl4cts::SparseTextureClampTests(getContext()));
@@ -366,6 +370,8 @@
addChild(new gl4cts::ShaderViewportLayerArray(getContext()));
addChild(new gl4cts::LimitsTests(getContext()));
addChild(new glcts::PolygonOffsetClamp(getContext()));
+ addChild(new glcts::SeparableProgramsTransformFeedbackTests(getContext()));
+ addChild(new gl4cts::SpirvExtensionsTests(getContext()));
}
catch (...)
{
diff --git a/external/openglcts/modules/gl/gl4cTextureBarrierTests.cpp b/external/openglcts/modules/gl/gl4cTextureBarrierTests.cpp
index 45567fb..8901133 100644
--- a/external/openglcts/modules/gl/gl4cTextureBarrierTests.cpp
+++ b/external/openglcts/modules/gl/gl4cTextureBarrierTests.cpp
@@ -45,6 +45,8 @@
#include "glw.h"
#include "glwFunctions.hpp"
+#include "glcWaiver.hpp"
+
namespace gl4cts
{
@@ -150,6 +152,10 @@
m_width = renderTarget.getWidth();
m_height = renderTarget.getHeight();
+#ifdef WAIVER_WITH_BUG_13788
+ m_width = m_width >= 16383 ? 16382 : m_width;
+#endif
+
const glw::Functions& gl = m_context.getRenderContext().getFunctions();
// Create textures
diff --git a/external/openglcts/modules/gles3/es3cTestPackage.cpp b/external/openglcts/modules/gles3/es3cTestPackage.cpp
index cc3dd71..275099a 100644
--- a/external/openglcts/modules/gles3/es3cTestPackage.cpp
+++ b/external/openglcts/modules/gles3/es3cTestPackage.cpp
@@ -26,6 +26,8 @@
#include "glcExposedExtensionsTests.hpp"
#include "glcFragDepthTests.hpp"
#include "glcInfoTests.hpp"
+#include "glcShaderConstExprTests.hpp"
+#include "glcParallelShaderCompileTests.hpp"
#include "glcShaderIndexingTests.hpp"
#include "glcShaderIntegerMixTests.hpp"
#include "glcShaderLibrary.hpp"
@@ -157,6 +159,10 @@
addChild(new ShaderTests(getContext()));
addChild(new glcts::TextureFilterAnisotropicTests(getContext()));
addChild(new glcts::ExposedExtensionsTests(getContext()));
+ tcu::TestCaseGroup* coreGroup = new tcu::TestCaseGroup(getTestContext(), "core", "core tests");
+ coreGroup->addChild(new glcts::ShaderConstExprTests(getContext()));
+ addChild(coreGroup);
+ addChild(new glcts::ParallelShaderCompileTests(getContext()));
}
catch (...)
{
diff --git a/external/openglcts/modules/gles31/es31cShaderAtomicCountersTests.cpp b/external/openglcts/modules/gles31/es31cShaderAtomicCountersTests.cpp
index dba7d47..d8995eb 100644
--- a/external/openglcts/modules/gles31/es31cShaderAtomicCountersTests.cpp
+++ b/external/openglcts/modules/gles31/es31cShaderAtomicCountersTests.cpp
@@ -3378,6 +3378,53 @@
}
};
+class NegativeUnsizedArray : public SACSubcaseBase
+{
+ virtual std::string Title()
+ {
+ return NL "GLSL errors";
+ }
+
+ virtual std::string Purpose()
+ {
+ return NL "Verify that it is compile-time error to declare an unsized array of atomic_uint..";
+ }
+
+ virtual std::string Method()
+ {
+ return NL "";
+ }
+
+ virtual std::string PassCriteria()
+ {
+ return NL "";
+ }
+
+ virtual long Run()
+ {
+ const char* glsl_fs1 = "#version 310 es" NL "layout(location = 0) out uvec4 o_color[4];"
+ " layout(binding = 0, offset = 4) uniform atomic_uint ac_counter[];" NL
+ "void main() {" NL " o_color[0] = uvec4(atomicCounterIncrement(ac_counter[0]));" NL "}";
+
+ GLuint sh = glCreateShader(GL_FRAGMENT_SHADER);
+ glShaderSource(sh, 1, &glsl_fs1, NULL);
+ glCompileShader(sh);
+ GLint status_comp;
+ glGetShaderiv(sh, GL_COMPILE_STATUS, &status_comp);
+ glDeleteShader(sh);
+
+ if (status_comp == GL_TRUE)
+ {
+ m_context.getTestContext().getLog()
+ << tcu::TestLog::Message << "Expected error during fragment shader compilation."
+ << tcu::TestLog::EndMessage;
+ return ERROR;
+ }
+
+ return NO_ERROR;
+ }
+};
+
class AdvancedManyDrawCalls2 : public SACSubcaseBase
{
@@ -3729,5 +3776,6 @@
addChild(new TestSubcase(m_context, "negative-uniform", TestSubcase::Create<NegativeUniform>));
addChild(new TestSubcase(m_context, "negative-array", TestSubcase::Create<NegativeArray>));
addChild(new TestSubcase(m_context, "negative-arithmetic", TestSubcase::Create<NegativeArithmetic>));
+ addChild(new TestSubcase(m_context, "negative-unsized-array", TestSubcase::Create<NegativeUnsizedArray>));
}
}
diff --git a/external/openglcts/modules/gles31/es31cTestPackage.cpp b/external/openglcts/modules/gles31/es31cTestPackage.cpp
index c197b29..f57d035 100644
--- a/external/openglcts/modules/gles31/es31cTestPackage.cpp
+++ b/external/openglcts/modules/gles31/es31cTestPackage.cpp
@@ -46,6 +46,7 @@
#include "glcInfoTests.hpp"
#include "glcPolygonOffsetClampTests.hpp"
#include "glcSampleVariablesTests.hpp"
+#include "glcShaderConstExprTests.hpp"
#include "glcShaderIntegerMixTests.hpp"
#include "glcShaderMultisampleInterpolationTests.hpp"
#include "glcShaderNegativeTests.hpp"
@@ -177,6 +178,7 @@
coreGroup->addChild(new deqp::ShaderMultisampleInterpolationTests(getContext(), glu::GLSL_VERSION_310_ES));
coreGroup->addChild(new glcts::LayoutBindingTests(getContext(), glu::GLSL_VERSION_310_ES));
coreGroup->addChild(new deqp::ShaderIntegerMixTests(getContext(), glu::GLSL_VERSION_310_ES));
+ coreGroup->addChild(new glcts::ShaderConstExprTests(getContext()));
coreGroup->addChild(new glcts::BlendEquationAdvancedTests(getContext(), glu::GLSL_VERSION_310_ES));
coreGroup->addChild(new glcts::VertexAttribBindingTests(getContext()));
coreGroup->addChild(new glcts::ShaderStorageBufferObjectTests(getContext()));
diff --git a/external/openglcts/modules/gles32/es32cTestPackage.cpp b/external/openglcts/modules/gles32/es32cTestPackage.cpp
index 5621973..2a9a5a9 100644
--- a/external/openglcts/modules/gles32/es32cTestPackage.cpp
+++ b/external/openglcts/modules/gles32/es32cTestPackage.cpp
@@ -27,6 +27,8 @@
#include "esextcTestPackage.hpp"
#include "glcFragDepthTests.hpp"
#include "glcInfoTests.hpp"
+#include "glcSeparableProgramsTransformFeedbackTests.hpp"
+#include "glcShaderConstExprTests.hpp"
#include "glcShaderIndexingTests.hpp"
#include "glcShaderIntegerMixTests.hpp"
#include "glcShaderLibrary.hpp"
@@ -154,6 +156,8 @@
coreGroup->addChild(new glcts::TextureBorderClampTests(getContext(), extParams));
coreGroup->addChild(new glcts::TextureBufferTests(getContext(), extParams));
coreGroup->addChild(new glcts::DrawBuffersIndexedTests(getContext(), extParams));
+ coreGroup->addChild(new glcts::ShaderConstExprTests(getContext()));
+ coreGroup->addChild(new glcts::SeparableProgramsTransformFeedbackTests(getContext()));
addChild(coreGroup);
tcu::TestCaseGroup* robustGroup = new tcu::TestCaseGroup(getTestContext(), "robust", "");
robustGroup->addChild(new es32cts::RobustBufferAccessBehaviorTests(getContext()));
diff --git a/external/openglcts/modules/glesext/tessellation_shader/esextcTessellationShaderTCTE.cpp b/external/openglcts/modules/glesext/tessellation_shader/esextcTessellationShaderTCTE.cpp
index 53d62aa..bb6bfb0 100644
--- a/external/openglcts/modules/glesext/tessellation_shader/esextcTessellationShaderTCTE.cpp
+++ b/external/openglcts/modules/glesext/tessellation_shader/esextcTessellationShaderTCTE.cpp
@@ -3368,13 +3368,15 @@
"\n"
"void main()\n"
"{\n"
- " gl_out [gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position;\n"
- " gl_TessLevelInner[0] = inner_tess_levels[0];\n"
- " gl_TessLevelInner[1] = inner_tess_levels[1];\n"
- " gl_TessLevelOuter[0] = outer_tess_levels[0];\n"
- " gl_TessLevelOuter[1] = outer_tess_levels[1];\n"
- " gl_TessLevelOuter[2] = outer_tess_levels[2];\n"
- " gl_TessLevelOuter[3] = outer_tess_levels[3];\n"
+ " gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position;\n"
+ " if (gl_InvocationID == 0) {\n"
+ " gl_TessLevelInner[0] = inner_tess_levels[0];\n"
+ " gl_TessLevelInner[1] = inner_tess_levels[1];\n"
+ " gl_TessLevelOuter[0] = outer_tess_levels[0];\n"
+ " gl_TessLevelOuter[1] = outer_tess_levels[1];\n"
+ " gl_TessLevelOuter[2] = outer_tess_levels[2];\n"
+ " gl_TessLevelOuter[3] = outer_tess_levels[3];\n"
+ " }\n"
"}\n";
if (test_type == TESSELLATION_TEST_TYPE_TCS_TES)
@@ -3388,14 +3390,16 @@
"\n"
"${TESSELLATION_SHADER_REQUIRE}\n"
"\n"
- "layout (isolines, point_mode, VERTEX_SPACING_MODE) in;\n"
+ "layout (quads, point_mode, VERTEX_SPACING_MODE) in;\n"
"\n"
"out vec2 result_tess_level_inner;\n"
"out vec4 result_tess_level_outer;\n"
"\n"
"void main()\n"
"{\n"
- " gl_Position = gl_in[0].gl_Position;\n"
+ " vec4 p1 = mix(gl_in[0].gl_Position, gl_in[1].gl_Position, gl_TessCoord.x);\n"
+ " vec4 p2 = mix(gl_in[2].gl_Position,gl_in[3].gl_Position,gl_TessCoord.x);\n"
+ " gl_Position = mix(p1, p2, gl_TessCoord.y);\n"
"\n"
" result_tess_level_inner = vec2(gl_TessLevelInner[0],\n"
" gl_TessLevelInner[1]);\n"
@@ -3535,8 +3539,8 @@
/* Initialize ES test objects */
initTest();
- /* Our program object takes a single vertex per patch */
- gl.patchParameteri(m_glExtTokens.PATCH_VERTICES, 1);
+ /* Our program object takes a single quad per patch */
+ gl.patchParameteri(m_glExtTokens.PATCH_VERTICES, 4);
GLU_EXPECT_NO_ERROR(gl.getError(), "glPatchParameteriEXT() call failed");
/* Prepare for rendering */
@@ -3566,6 +3570,11 @@
tessellation_level_combinations[n_combination * 6 + 4],
tessellation_level_combinations[n_combination * 6 + 5] };
+ TessellationShaderUtils tessUtils(gl, this);
+ const unsigned int n_rendered_vertices = tessUtils.getAmountOfVerticesGeneratedByTessellator(
+ TESSELLATION_SHADER_PRIMITIVE_MODE_QUADS, inner_tess_level, outer_tess_level,
+ test_iterator->vertex_spacing, true); /* is_point_mode_enabled */
+
/* Test type determines how the tessellation levels should be set. */
gl.useProgram(test_iterator->po_id);
GLU_EXPECT_NO_ERROR(gl.getError(), "glUseProgram() call failed");
@@ -3609,31 +3618,10 @@
} /* switch (test_iterator->type) */
/* Set up storage properties for the buffer object, to which XFBed data will be
- * written:
- *
- * op(Outer[0]) tells how many times amount of points should be multiplied.
- * op(Outer[1])+1 tells how many points we will receive.
- *
- * where op() defines an operator, behavior of which is determined by the vertex
- * ordering mode specified in tessellation evaluation shader.
- *
- * Hence, we should be expecting Outer[0] * (Outer[1] + 1) points.
- **/
- float outer_level0_clamped = 0.0f;
- float outer_level1_clamped = 0.0f;
-
- TessellationShaderUtils::getTessellationLevelAfterVertexSpacing(
- TESSELLATION_SHADER_VERTEX_SPACING_EQUAL, outer_tess_level[0], m_gl_max_tess_gen_level_value,
- DE_NULL, /* out_clamped */
- &outer_level0_clamped);
- TessellationShaderUtils::getTessellationLevelAfterVertexSpacing(
- test_iterator->vertex_spacing, outer_tess_level[1], m_gl_max_tess_gen_level_value,
- DE_NULL, /* out_clamped */
- &outer_level1_clamped);
-
- const unsigned int n_bytes_needed = static_cast<unsigned int>(
- (unsigned int)(outer_level0_clamped) * (unsigned int)(outer_level1_clamped + 1) *
- (2 /* vec2 */ + 4 /* vec4 */) * sizeof(float));
+ * written.
+ */
+ const unsigned int n_bytes_needed =
+ static_cast<unsigned int>(n_rendered_vertices * (2 /* vec2 */ + 4 /* vec4 */) * sizeof(float));
gl.bufferData(GL_TRANSFORM_FEEDBACK_BUFFER, n_bytes_needed, NULL /* data */, GL_STATIC_DRAW);
GLU_EXPECT_NO_ERROR(gl.getError(), "glBufferData() call failed");
@@ -3643,7 +3631,7 @@
GLU_EXPECT_NO_ERROR(gl.getError(), "glBeginTransformFeedback() call failed");
{
/* A single vertex will do, since we configured GL_PATCH_VERTICES_EXT to be 1 */
- gl.drawArrays(GL_PATCHES_EXT, 0 /* first */, 1 /* count */);
+ gl.drawArrays(GL_PATCHES_EXT, 0 /* first */, 4 /* count */);
GLU_EXPECT_NO_ERROR(gl.getError(), "glDrawArrays() call failed");
}
diff --git a/external/openglcts/scripts/build_mustpass.py b/external/openglcts/scripts/build_mustpass.py
index 813d95b..3a44d56 100644
--- a/external/openglcts/scripts/build_mustpass.py
+++ b/external/openglcts/scripts/build_mustpass.py
@@ -982,12 +982,12 @@
GL_CTS_NOCTX_PROJECT = Project(name = "Khronos Mustpass GL NoContext", path = GL_CTS_KHR_MP_NOCTX_DATA_DIR, incpath = GL_CTS_MP_INC_DIR, devicepath = GL_CTS_KHR_MP_NOCTX_DEVICE_DIR, copyright = COPYRIGHT_DECLARATION)
GL_MODULES = OrderedDict([
- ('KHR-GL45', ['master', [include('gl45-master.txt')]]),
- ('KHR-GL44', ['master', [include('gl44-master.txt')]]),
- ('KHR-GL43', ['master', [include('gl43-master.txt')]]),
- ('KHR-GL42', ['master', [include('gl42-master.txt')]]),
- ('KHR-GL41', ['master', [include('gl41-master.txt')]]),
- ('KHR-GL40', ['master', [include('gl40-master.txt')]]),
+ ('KHR-GL45', ['master', [include('gl45-master.txt'), exclude('gl45-test-issues.txt')]]),
+ ('KHR-GL44', ['master', [include('gl44-master.txt'), exclude('gl44-test-issues.txt')]]),
+ ('KHR-GL43', ['master', [include('gl43-master.txt'), exclude('gl43-test-issues.txt')]]),
+ ('KHR-GL42', ['master', [include('gl42-master.txt'), exclude('gl42-test-issues.txt')]]),
+ ('KHR-GL41', ['master', [include('gl41-master.txt'), exclude('gl41-test-issues.txt')]]),
+ ('KHR-GL40', ['master', [include('gl40-master.txt'), exclude('gl40-test-issues.txt')]]),
('KHR-GL33', ['master', [include('gl33-master.txt')]]),
('KHR-GL32', ['master', [include('gl32-master.txt')]]),
('KHR-GL31', ['master', [include('gl31-master.txt')]]),
diff --git a/external/vulkancts/framework/vulkan/vkGlslProgram.hpp b/external/vulkancts/framework/vulkan/vkGlslProgram.hpp
index f09779d..a5e00a6 100644
--- a/external/vulkancts/framework/vulkan/vkGlslProgram.hpp
+++ b/external/vulkancts/framework/vulkan/vkGlslProgram.hpp
@@ -40,7 +40,8 @@
{
enum Flags
{
- FLAG_USE_STORAGE_BUFFER_STORAGE_CLASS = (1u<<0)
+ FLAG_USE_STORAGE_BUFFER_STORAGE_CLASS = (1u<<0),
+ FLAG_ALLOW_RELAXED_OFFSETS = (1u<<1) // allow block offsets to follow VK_KHR_relaxed_block_layout
};
SpirvVersion targetVersion;
diff --git a/external/vulkancts/framework/vulkan/vkGlslToSpirV.cpp b/external/vulkancts/framework/vulkan/vkGlslToSpirV.cpp
index 96a80ab..b340622 100644
--- a/external/vulkancts/framework/vulkan/vkGlslToSpirV.cpp
+++ b/external/vulkancts/framework/vulkan/vkGlslToSpirV.cpp
@@ -226,11 +226,22 @@
return program.sources[shaderType][0];
}
+EShMessages getCompileFlags (const GlslBuildOptions& buildOpts)
+{
+ EShMessages flags = (EShMessages)(EShMsgSpvRules | EShMsgVulkanRules);
+
+ if ((buildOpts.flags & GlslBuildOptions::FLAG_ALLOW_RELAXED_OFFSETS) != 0)
+ flags = (EShMessages)(flags | EShMsgHlslOffsets);
+
+ return flags;
+}
+
} // anonymous
bool compileGlslToSpirV (const GlslSource& program, std::vector<deUint32>* dst, glu::ShaderProgramInfo* buildInfo)
{
TBuiltInResource builtinRes;
+ const EShMessages compileFlags = getCompileFlags(program.buildOptions);
if (program.buildOptions.targetVersion != SPIRV_VERSION_1_0)
TCU_THROW(InternalError, "Unsupported SPIR-V target version");
@@ -258,7 +269,7 @@
{
const deUint64 compileStartTime = deGetMicroseconds();
- const int compileRes = shader.parse(&builtinRes, 110, false, (EShMessages)(EShMsgSpvRules | EShMsgVulkanRules));
+ const int compileRes = shader.parse(&builtinRes, 110, false, compileFlags);
glu::ShaderInfo shaderBuildInfo;
shaderBuildInfo.type = (glu::ShaderType)shaderType;
@@ -274,7 +285,7 @@
if (buildInfo->shaders[0].compileOk)
{
const deUint64 linkStartTime = deGetMicroseconds();
- const int linkRes = program.link((EShMessages)(EShMsgSpvRules | EShMsgVulkanRules));
+ const int linkRes = program.link(compileFlags);
buildInfo->program.infoLog = program.getInfoLog(); // \todo [2015-11-05 scygan] Include debug log?
buildInfo->program.linkOk = (linkRes != 0);
diff --git a/external/vulkancts/modules/vulkan/api/vktApiBufferViewCreateTests.cpp b/external/vulkancts/modules/vulkan/api/vktApiBufferViewCreateTests.cpp
index 2b485a6..f4aa048 100644
--- a/external/vulkancts/modules/vulkan/api/vktApiBufferViewCreateTests.cpp
+++ b/external/vulkancts/modules/vulkan/api/vktApiBufferViewCreateTests.cpp
@@ -82,7 +82,8 @@
virtual tcu::TestStatus createTestBuffer (VkDeviceSize size,
VkBufferUsageFlags usage,
Context& context,
- Move<VkBuffer>& testBuffer) const = 0;
+ Move<VkBuffer>& testBuffer,
+ Move<VkDeviceMemory>& memory) const = 0;
};
class BufferSuballocation : public IBufferAllocator
@@ -91,7 +92,8 @@
virtual tcu::TestStatus createTestBuffer (VkDeviceSize size,
VkBufferUsageFlags usage,
Context& context,
- Move<VkBuffer>& testBuffer) const;
+ Move<VkBuffer>& testBuffer,
+ Move<VkDeviceMemory>& memory) const;
};
class BufferDedicatedAllocation : public IBufferAllocator
@@ -100,7 +102,8 @@
virtual tcu::TestStatus createTestBuffer (VkDeviceSize size,
VkBufferUsageFlags usage,
Context& context,
- Move<VkBuffer>& testBuffer) const;
+ Move<VkBuffer>& testBuffer,
+ Move<VkDeviceMemory>& memory) const;
};
class BufferViewTestCase : public TestCase
@@ -126,7 +129,8 @@
tcu::TestStatus BufferSuballocation::createTestBuffer (VkDeviceSize size,
VkBufferUsageFlags usage,
Context& context,
- Move<VkBuffer>& testBuffer) const
+ Move<VkBuffer>& testBuffer,
+ Move<VkDeviceMemory>& memory) const
{
const VkDevice vkDevice = context.getDevice();
const DeviceInterface& vk = context.getDeviceInterface();
@@ -162,7 +166,6 @@
return tcu::TestStatus::fail(errorMsg.str());
}
- Move<VkDeviceMemory> memory;
const VkMemoryAllocateInfo memAlloc =
{
VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO, // VkStructureType sType
@@ -189,7 +192,8 @@
tcu::TestStatus BufferDedicatedAllocation::createTestBuffer (VkDeviceSize size,
VkBufferUsageFlags usage,
Context& context,
- Move<VkBuffer>& testBuffer) const
+ Move<VkBuffer>& testBuffer,
+ Move<VkDeviceMemory>& memory) const
{
const std::vector<std::string>& extensions = context.getDeviceExtensions();
const deBool isSupported = std::find(extensions.begin(), extensions.end(), "VK_KHR_dedicated_allocation") != extensions.end();
@@ -267,7 +271,6 @@
//const VkMemoryType memoryType = memoryProperties.memoryTypes[heapTypeIndex];
//const VkMemoryHeap memoryHeap = memoryProperties.memoryHeaps[memoryType.heapIndex];
- Move<VkDeviceMemory> memory;
vk.getBufferMemoryRequirements2KHR(vkDevice, &info, &memReqs); // get the proper size requirement
if (size > memReqs.memoryRequirements.size)
@@ -319,6 +322,7 @@
const DeviceInterface& vk = m_context.getDeviceInterface();
const VkDeviceSize size = 3 * 5 * 7 * 64;
Move<VkBuffer> testBuffer;
+ Move<VkDeviceMemory> testBufferMemory;
VkFormatProperties properties;
m_context.getInstanceInterface().getPhysicalDeviceFormatProperties(m_context.getPhysicalDevice(), m_testCase.format, &properties);
@@ -328,11 +332,11 @@
// Create buffer
if (m_testCase.bufferAllocationKind == ALLOCATION_KIND_DEDICATED)
{
- BufferDedicatedAllocation().createTestBuffer(size, m_testCase.usage, m_context, testBuffer);
+ BufferDedicatedAllocation().createTestBuffer(size, m_testCase.usage, m_context, testBuffer, testBufferMemory);
}
else
{
- BufferSuballocation().createTestBuffer(size, m_testCase.usage, m_context, testBuffer);
+ BufferSuballocation().createTestBuffer(size, m_testCase.usage, m_context, testBuffer, testBufferMemory);
}
{
diff --git a/external/vulkancts/modules/vulkan/api/vktApiCopiesAndBlittingTests.cpp b/external/vulkancts/modules/vulkan/api/vktApiCopiesAndBlittingTests.cpp
index 881d8c7..6e38fdb 100644
--- a/external/vulkancts/modules/vulkan/api/vktApiCopiesAndBlittingTests.cpp
+++ b/external/vulkancts/modules/vulkan/api/vktApiCopiesAndBlittingTests.cpp
@@ -389,9 +389,9 @@
case FILL_MODE_RED:
if (tcu::isCombinedDepthStencilType(buffer.getFormat().type))
{
- buffer.setPixDepth(redColor[x % 4], x, y, z);
+ buffer.setPixDepth(redColor[0], x, y, z);
if (tcu::hasStencilComponent(buffer.getFormat().order))
- buffer.setPixStencil(255 * (int)redColor[y % 4], x, y, z);
+ buffer.setPixStencil((int)redColor[3], x, y, z);
}
else
buffer.setPixel(redColor, x, y, z);
diff --git a/external/vulkancts/modules/vulkan/api/vktApiExternalMemoryTests.cpp b/external/vulkancts/modules/vulkan/api/vktApiExternalMemoryTests.cpp
index c7be6dc..13dffec 100644
--- a/external/vulkancts/modules/vulkan/api/vktApiExternalMemoryTests.cpp
+++ b/external/vulkancts/modules/vulkan/api/vktApiExternalMemoryTests.cpp
@@ -2648,9 +2648,10 @@
checkBufferSupport(vki, physicalDevice, config.externalType, 0u, usage, config.dedicated);
// \note Buffer is only allocated to get memory requirements
- const vk::Unique<vk::VkBuffer> buffer (createExternalBuffer(vkd, *device, queueFamilyIndex, config.externalType, bufferSize, 0u, usage));
- const vk::VkMemoryRequirements requirements (getBufferMemoryRequirements(vkd, *device, *buffer));
- const vk::VkExportMemoryWin32HandleInfoKHR win32Info =
+ deUint32 exportedMemoryTypeIndex = ~0U;
+ const vk::Unique<vk::VkBuffer> buffer (createExternalBuffer(vkd, *device, queueFamilyIndex, config.externalType, bufferSize, 0u, usage));
+ const vk::VkMemoryRequirements requirements (getBufferMemoryRequirements(vkd, *device, *buffer));
+ const vk::VkExportMemoryWin32HandleInfoKHR win32Info =
{
vk::VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR,
DE_NULL,
@@ -2665,12 +2666,14 @@
&win32Info,
(vk::VkExternalMemoryHandleTypeFlagsKHR)config.externalType
};
+
+ exportedMemoryTypeIndex = chooseMemoryType(requirements.memoryTypeBits & compatibleMemTypes);
const vk::VkMemoryAllocateInfo info =
{
vk::VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,
&exportInfo,
requirements.size,
- chooseMemoryType(requirements.memoryTypeBits & compatibleMemTypes)
+ exportedMemoryTypeIndex
};
const vk::Unique<vk::VkDeviceMemory> memory (vk::allocateMemory(vkd, *device, &info));
NativeHandle handleA;
@@ -2681,7 +2684,7 @@
getMemoryNative(vkd, *device, *memory, config.externalType, handleA);
{
- const vk::Unique<vk::VkDeviceMemory> memoryA (importMemory(vkd, *device, requirements, config.externalType, handleA));
+ const vk::Unique<vk::VkDeviceMemory> memoryA (importMemory(vkd, *device, requirements, config.externalType, exportedMemoryTypeIndex, handleA));
if (config.hostVisible)
{
@@ -2723,10 +2726,11 @@
checkBufferSupport(vki, physicalDevice, config.externalType, 0u, usage, config.dedicated);
+ deUint32 exportedMemoryTypeIndex = ~0U;
// \note Buffer is only allocated to get memory requirements
- const vk::Unique<vk::VkBuffer> buffer (createExternalBuffer(vkd, *device, queueFamilyIndex, config.externalType, bufferSize, 0u, usage));
- const vk::VkMemoryRequirements requirements (getBufferMemoryRequirements(vkd, *device, *buffer));
- const vk::Unique<vk::VkDeviceMemory> memory (allocateExportableMemory(vki, physicalDevice, vkd, *device, requirements, config.externalType, config.hostVisible, config.dedicated ? *buffer : (vk::VkBuffer)0));
+ const vk::Unique<vk::VkBuffer> buffer (createExternalBuffer(vkd, *device, queueFamilyIndex, config.externalType, bufferSize, 0u, usage));
+ const vk::VkMemoryRequirements requirements (getBufferMemoryRequirements(vkd, *device, *buffer));
+ const vk::Unique<vk::VkDeviceMemory> memory (allocateExportableMemory(vki, physicalDevice, vkd, *device, requirements, config.externalType, config.hostVisible, config.dedicated ? *buffer : (vk::VkBuffer)0, exportedMemoryTypeIndex));
NativeHandle handleA;
if (config.hostVisible)
@@ -2736,8 +2740,8 @@
{
NativeHandle handleB (handleA);
- const vk::Unique<vk::VkDeviceMemory> memoryA (importMemory(vkd, *device, requirements, config.externalType, handleA));
- const vk::Unique<vk::VkDeviceMemory> memoryB (importMemory(vkd, *device, requirements, config.externalType, handleB));
+ const vk::Unique<vk::VkDeviceMemory> memoryA (importMemory(vkd, *device, requirements, config.externalType, exportedMemoryTypeIndex, handleA));
+ const vk::Unique<vk::VkDeviceMemory> memoryB (importMemory(vkd, *device, requirements, config.externalType, exportedMemoryTypeIndex, handleB));
if (config.hostVisible)
{
@@ -2773,10 +2777,11 @@
checkBufferSupport(vki, physicalDevice, config.externalType, 0u, usage, config.dedicated);
+ deUint32 exportedMemoryTypeIndex = ~0U;
// \note Buffer is only allocated to get memory requirements
- const vk::Unique<vk::VkBuffer> buffer (createExternalBuffer(vkd, *device, queueFamilyIndex, config.externalType, bufferSize, 0u, usage));
- const vk::VkMemoryRequirements requirements (getBufferMemoryRequirements(vkd, *device, *buffer));
- const vk::Unique<vk::VkDeviceMemory> memory (allocateExportableMemory(vki, physicalDevice, vkd, *device, requirements, config.externalType, config.hostVisible, config.dedicated ? *buffer : (vk::VkBuffer)0));
+ const vk::Unique<vk::VkBuffer> buffer (createExternalBuffer(vkd, *device, queueFamilyIndex, config.externalType, bufferSize, 0u, usage));
+ const vk::VkMemoryRequirements requirements (getBufferMemoryRequirements(vkd, *device, *buffer));
+ const vk::Unique<vk::VkDeviceMemory> memory (allocateExportableMemory(vki, physicalDevice, vkd, *device, requirements, config.externalType, config.hostVisible, config.dedicated ? *buffer : (vk::VkBuffer)0, exportedMemoryTypeIndex));
NativeHandle handleA;
getMemoryNative(vkd, *device, *memory, config.externalType, handleA);
@@ -2784,7 +2789,7 @@
for (size_t ndx = 0; ndx < count; ndx++)
{
NativeHandle handleB (handleA);
- const vk::Unique<vk::VkDeviceMemory> memoryB (importMemory(vkd, *device, requirements, config.externalType, handleB));
+ const vk::Unique<vk::VkDeviceMemory> memoryB (importMemory(vkd, *device, requirements, config.externalType, exportedMemoryTypeIndex, handleB));
}
return tcu::TestStatus::pass("Pass");
@@ -2805,10 +2810,11 @@
checkBufferSupport(vki, physicalDevice, config.externalType, 0u, usage, config.dedicated);
+ deUint32 exportedMemoryTypeIndex = ~0U;
// \note Buffer is only allocated to get memory requirements
- const vk::Unique<vk::VkBuffer> buffer (createExternalBuffer(vkd, *device, queueFamilyIndex, config.externalType, bufferSize, 0u, usage));
- const vk::VkMemoryRequirements requirements (getBufferMemoryRequirements(vkd, *device, *buffer));
- const vk::Unique<vk::VkDeviceMemory> memory (allocateExportableMemory(vki, physicalDevice, vkd, *device, requirements, config.externalType, config.hostVisible, config.dedicated ? *buffer : (vk::VkBuffer)0));
+ const vk::Unique<vk::VkBuffer> buffer (createExternalBuffer(vkd, *device, queueFamilyIndex, config.externalType, bufferSize, 0u, usage));
+ const vk::VkMemoryRequirements requirements (getBufferMemoryRequirements(vkd, *device, *buffer));
+ const vk::Unique<vk::VkDeviceMemory> memory (allocateExportableMemory(vki, physicalDevice, vkd, *device, requirements, config.externalType, config.hostVisible, config.dedicated ? *buffer : (vk::VkBuffer)0, exportedMemoryTypeIndex));
for (size_t ndx = 0; ndx < count; ndx++)
{
@@ -2840,10 +2846,11 @@
checkBufferSupport(vki, physicalDevice, config.externalType, 0u, usage, config.dedicated);
+ deUint32 exportedMemoryTypeIndex = ~0U;
// \note Buffer is only allocated to get memory requirements
- const vk::Unique<vk::VkBuffer> buffer (createExternalBuffer(vkd, *device, queueFamilyIndex, config.externalType, bufferSize, 0u, usage));
- const vk::VkMemoryRequirements requirements (getBufferMemoryRequirements(vkd, *device, *buffer));
- const vk::Unique<vk::VkDeviceMemory> memory (allocateExportableMemory(vki, physicalDevice, vkd, *device, requirements, config.externalType, config.hostVisible, config.dedicated ? *buffer : (vk::VkBuffer)0));
+ const vk::Unique<vk::VkBuffer> buffer (createExternalBuffer(vkd, *device, queueFamilyIndex, config.externalType, bufferSize, 0u, usage));
+ const vk::VkMemoryRequirements requirements (getBufferMemoryRequirements(vkd, *device, *buffer));
+ const vk::Unique<vk::VkDeviceMemory> memory (allocateExportableMemory(vki, physicalDevice, vkd, *device, requirements, config.externalType, config.hostVisible, config.dedicated ? *buffer : (vk::VkBuffer)0, exportedMemoryTypeIndex));
if (config.hostVisible)
writeHostMemory(vkd, *device, *memory, testData.size(), &testData[0]);
@@ -2857,7 +2864,7 @@
TCU_CHECK_MSG(newFd.getFd() >= 0, "Failed to call dup() for memorys fd");
{
- const vk::Unique<vk::VkDeviceMemory> newMemory (importMemory(vkd, *device, requirements, config.externalType, newFd));
+ const vk::Unique<vk::VkDeviceMemory> newMemory (importMemory(vkd, *device, requirements, config.externalType, exportedMemoryTypeIndex, newFd));
if (config.hostVisible)
{
@@ -2900,10 +2907,11 @@
checkBufferSupport(vki, physicalDevice, config.externalType, 0u, usage, config.dedicated);
+ deUint32 exportedMemoryTypeIndex = ~0U;
// \note Buffer is only allocated to get memory requirements
- const vk::Unique<vk::VkBuffer> buffer (createExternalBuffer(vkd, *device, queueFamilyIndex, config.externalType, bufferSize, 0u, usage));
- const vk::VkMemoryRequirements requirements (getBufferMemoryRequirements(vkd, *device, *buffer));
- const vk::Unique<vk::VkDeviceMemory> memory (allocateExportableMemory(vki, physicalDevice, vkd, *device, requirements, config.externalType, config.hostVisible, config.dedicated ? *buffer : (vk::VkBuffer)0));
+ const vk::Unique<vk::VkBuffer> buffer (createExternalBuffer(vkd, *device, queueFamilyIndex, config.externalType, bufferSize, 0u, usage));
+ const vk::VkMemoryRequirements requirements (getBufferMemoryRequirements(vkd, *device, *buffer));
+ const vk::Unique<vk::VkDeviceMemory> memory (allocateExportableMemory(vki, physicalDevice, vkd, *device, requirements, config.externalType, config.hostVisible, config.dedicated ? *buffer : (vk::VkBuffer)0, exportedMemoryTypeIndex));
if (config.hostVisible)
writeHostMemory(vkd, *device, *memory, testData.size(), &testData[0]);
@@ -2918,7 +2926,7 @@
TCU_CHECK_MSG(newFd >= 0, "Failed to call dup2() for memorys fd");
{
- const vk::Unique<vk::VkDeviceMemory> newMemory (importMemory(vkd, *device, requirements, config.externalType, secondFd));
+ const vk::Unique<vk::VkDeviceMemory> newMemory (importMemory(vkd, *device, requirements, config.externalType, exportedMemoryTypeIndex, secondFd));
if (config.hostVisible)
{
@@ -2961,10 +2969,11 @@
checkBufferSupport(vki, physicalDevice, config.externalType, 0u, usage, config.dedicated);
+ deUint32 exportedMemoryTypeIndex = ~0U;
// \note Buffer is only allocated to get memory requirements
- const vk::Unique<vk::VkBuffer> buffer (createExternalBuffer(vkd, *device, queueFamilyIndex, config.externalType, bufferSize, 0u, usage));
- const vk::VkMemoryRequirements requirements (getBufferMemoryRequirements(vkd, *device, *buffer));
- const vk::Unique<vk::VkDeviceMemory> memory (allocateExportableMemory(vki, physicalDevice, vkd, *device, requirements, config.externalType, config.hostVisible, config.dedicated ? *buffer : (vk::VkBuffer)0));
+ const vk::Unique<vk::VkBuffer> buffer (createExternalBuffer(vkd, *device, queueFamilyIndex, config.externalType, bufferSize, 0u, usage));
+ const vk::VkMemoryRequirements requirements (getBufferMemoryRequirements(vkd, *device, *buffer));
+ const vk::Unique<vk::VkDeviceMemory> memory (allocateExportableMemory(vki, physicalDevice, vkd, *device, requirements, config.externalType, config.hostVisible, config.dedicated ? *buffer : (vk::VkBuffer)0, exportedMemoryTypeIndex));
if (config.hostVisible)
writeHostMemory(vkd, *device, *memory, testData.size(), &testData[0]);
@@ -2979,7 +2988,7 @@
TCU_CHECK_MSG(newFd >= 0, "Failed to call dup3() for memorys fd");
{
- const vk::Unique<vk::VkDeviceMemory> newMemory (importMemory(vkd, *device, requirements, config.externalType, secondFd));
+ const vk::Unique<vk::VkDeviceMemory> newMemory (importMemory(vkd, *device, requirements, config.externalType, exportedMemoryTypeIndex, secondFd));
if (config.hostVisible)
{
@@ -3022,10 +3031,11 @@
checkBufferSupport(vki, physicalDevice, config.externalType, 0u, usage, config.dedicated);
+ deUint32 exportedMemoryTypeIndex = ~0U;
// \note Buffer is only allocated to get memory requirements
- const vk::Unique<vk::VkBuffer> buffer (createExternalBuffer(vkd, *device, queueFamilyIndex, config.externalType, bufferSize, 0u, usage));
- const vk::VkMemoryRequirements requirements (getBufferMemoryRequirements(vkd, *device, *buffer));
- const vk::Unique<vk::VkDeviceMemory> memory (allocateExportableMemory(vki, physicalDevice, vkd, *device, requirements, config.externalType, config.hostVisible, config.dedicated ? *buffer : (vk::VkBuffer)0));
+ const vk::Unique<vk::VkBuffer> buffer (createExternalBuffer(vkd, *device, queueFamilyIndex, config.externalType, bufferSize, 0u, usage));
+ const vk::VkMemoryRequirements requirements (getBufferMemoryRequirements(vkd, *device, *buffer));
+ const vk::Unique<vk::VkDeviceMemory> memory (allocateExportableMemory(vki, physicalDevice, vkd, *device, requirements, config.externalType, config.hostVisible, config.dedicated ? *buffer : (vk::VkBuffer)0, exportedMemoryTypeIndex));
if (config.hostVisible)
writeHostMemory(vkd, *device, *memory, testData.size(), &testData[0]);
@@ -3116,7 +3126,7 @@
TCU_CHECK_MSG(newFd.getFd() >= 0, "Didn't receive valid fd from socket");
{
- const vk::Unique<vk::VkDeviceMemory> newMemory (importMemory(vkd, *device, requirements, config.externalType, newFd));
+ const vk::Unique<vk::VkDeviceMemory> newMemory (importMemory(vkd, *device, requirements, config.externalType, exportedMemoryTypeIndex, newFd));
if (config.hostVisible)
{
@@ -3170,10 +3180,11 @@
checkBufferSupport(vki, physicalDevice, config.externalType, 0u, usage, config.dedicated);
+ deUint32 exportedMemoryTypeIndex = ~0U;
// \note Buffer is only allocated to get memory requirements
- const vk::Unique<vk::VkBuffer> bufferA (createExternalBuffer(vkd, *device, queueFamilyIndex, config.externalType, bufferSize, 0u, usage));
- const vk::VkMemoryRequirements requirements (getBufferMemoryRequirements(vkd, *device, *bufferA));
- const vk::Unique<vk::VkDeviceMemory> memoryA (allocateExportableMemory(vkd, *device, requirements, config.externalType, config.dedicated ? *bufferA : (vk::VkBuffer)0));
+ const vk::Unique<vk::VkBuffer> bufferA (createExternalBuffer(vkd, *device, queueFamilyIndex, config.externalType, bufferSize, 0u, usage));
+ const vk::VkMemoryRequirements requirements (getBufferMemoryRequirements(vkd, *device, *bufferA));
+ const vk::Unique<vk::VkDeviceMemory> memoryA (allocateExportableMemory(vkd, *device, requirements, config.externalType, config.dedicated ? *bufferA : (vk::VkBuffer)0, exportedMemoryTypeIndex));
NativeHandle handle;
VK_CHECK(vkd.bindBufferMemory(*device, *bufferA, *memoryA, 0u));
@@ -3181,7 +3192,7 @@
getMemoryNative(vkd, *device, *memoryA, config.externalType, handle);
{
- const vk::Unique<vk::VkDeviceMemory> memoryB (importMemory(vkd, *device, requirements, config.externalType, handle));
+ const vk::Unique<vk::VkDeviceMemory> memoryB (importMemory(vkd, *device, requirements, config.externalType, exportedMemoryTypeIndex, handle));
const vk::Unique<vk::VkBuffer> bufferB (createExternalBuffer(vkd, *device, queueFamilyIndex, config.externalType, bufferSize, 0u, usage));
VK_CHECK(vkd.bindBufferMemory(*device, *bufferB, *memoryB, 0u));
@@ -3205,17 +3216,18 @@
checkBufferSupport(vki, physicalDevice, config.externalType, 0u, usage, config.dedicated);
+ deUint32 exportedMemoryTypeIndex = ~0U;
// \note Buffer is only allocated to get memory requirements
- const vk::Unique<vk::VkBuffer> bufferA (createExternalBuffer(vkd, *device, queueFamilyIndex, config.externalType, bufferSize, 0u, usage));
- const vk::VkMemoryRequirements requirements (getBufferMemoryRequirements(vkd, *device, *bufferA));
- const vk::Unique<vk::VkDeviceMemory> memoryA (allocateExportableMemory(vkd, *device, requirements, config.externalType, config.dedicated ? *bufferA : (vk::VkBuffer)0));
+ const vk::Unique<vk::VkBuffer> bufferA (createExternalBuffer(vkd, *device, queueFamilyIndex, config.externalType, bufferSize, 0u, usage));
+ const vk::VkMemoryRequirements requirements (getBufferMemoryRequirements(vkd, *device, *bufferA));
+ const vk::Unique<vk::VkDeviceMemory> memoryA (allocateExportableMemory(vkd, *device, requirements, config.externalType, config.dedicated ? *bufferA : (vk::VkBuffer)0, exportedMemoryTypeIndex));
NativeHandle handle;
getMemoryNative(vkd, *device, *memoryA, config.externalType, handle);
VK_CHECK(vkd.bindBufferMemory(*device, *bufferA, *memoryA, 0u));
{
- const vk::Unique<vk::VkDeviceMemory> memoryB (importMemory(vkd, *device, requirements, config.externalType, handle));
+ const vk::Unique<vk::VkDeviceMemory> memoryB (importMemory(vkd, *device, requirements, config.externalType, exportedMemoryTypeIndex, handle));
const vk::Unique<vk::VkBuffer> bufferB (createExternalBuffer(vkd, *device, queueFamilyIndex, config.externalType, bufferSize, 0u, usage));
VK_CHECK(vkd.bindBufferMemory(*device, *bufferB, *memoryB, 0u));
@@ -3239,16 +3251,17 @@
checkBufferSupport(vki, physicalDevice, config.externalType, 0u, usage, config.dedicated);
+ deUint32 exportedMemoryTypeIndex = ~0U;
// \note Buffer is only allocated to get memory requirements
- const vk::Unique<vk::VkBuffer> bufferA (createExternalBuffer(vkd, *device, queueFamilyIndex, config.externalType, bufferSize, 0u, usage));
- const vk::VkMemoryRequirements requirements (getBufferMemoryRequirements(vkd, *device, *bufferA));
- const vk::Unique<vk::VkDeviceMemory> memoryA (allocateExportableMemory(vkd, *device, requirements, config.externalType, config.dedicated ? *bufferA : (vk::VkBuffer)0));
+ const vk::Unique<vk::VkBuffer> bufferA (createExternalBuffer(vkd, *device, queueFamilyIndex, config.externalType, bufferSize, 0u, usage));
+ const vk::VkMemoryRequirements requirements (getBufferMemoryRequirements(vkd, *device, *bufferA));
+ const vk::Unique<vk::VkDeviceMemory> memoryA (allocateExportableMemory(vkd, *device, requirements, config.externalType, config.dedicated ? *bufferA : (vk::VkBuffer)0, exportedMemoryTypeIndex));
NativeHandle handle;
getMemoryNative(vkd, *device, *memoryA, config.externalType, handle);
{
- const vk::Unique<vk::VkDeviceMemory> memoryB (importMemory(vkd, *device, requirements, config.externalType, handle));
+ const vk::Unique<vk::VkDeviceMemory> memoryB (importMemory(vkd, *device, requirements, config.externalType, exportedMemoryTypeIndex, handle));
const vk::Unique<vk::VkBuffer> bufferB (createExternalBuffer(vkd, *device, queueFamilyIndex, config.externalType, bufferSize, 0u, usage));
VK_CHECK(vkd.bindBufferMemory(*device, *bufferA, *memoryA, 0u));
@@ -3439,9 +3452,10 @@
checkImageSupport(vki, physicalDevice, config.externalType, 0u, usage, format, tiling, config.dedicated);
- const vk::Unique<vk::VkImage> imageA (createExternalImage(vkd, *device, queueFamilyIndex, config.externalType, format, width, height, tiling, 0u, usage));
- const vk::VkMemoryRequirements requirements (getImageMemoryRequirements(vkd, *device, *imageA));
- const vk::Unique<vk::VkDeviceMemory> memoryA (allocateExportableMemory(vkd, *device, requirements, config.externalType, config.dedicated ? *imageA : (vk::VkImage)0));
+ deUint32 exportedMemoryTypeIndex = ~0U;
+ const vk::Unique<vk::VkImage> imageA (createExternalImage(vkd, *device, queueFamilyIndex, config.externalType, format, width, height, tiling, 0u, usage));
+ const vk::VkMemoryRequirements requirements (getImageMemoryRequirements(vkd, *device, *imageA));
+ const vk::Unique<vk::VkDeviceMemory> memoryA (allocateExportableMemory(vkd, *device, requirements, config.externalType, config.dedicated ? *imageA : (vk::VkImage)0, exportedMemoryTypeIndex));
NativeHandle handle;
VK_CHECK(vkd.bindImageMemory(*device, *imageA, *memoryA, 0u));
@@ -3449,7 +3463,7 @@
getMemoryNative(vkd, *device, *memoryA, config.externalType, handle);
{
- const vk::Unique<vk::VkDeviceMemory> memoryB (importMemory(vkd, *device, requirements, config.externalType, handle));
+ const vk::Unique<vk::VkDeviceMemory> memoryB (importMemory(vkd, *device, requirements, config.externalType, exportedMemoryTypeIndex, handle));
const vk::Unique<vk::VkImage> imageB (createExternalImage(vkd, *device, queueFamilyIndex, config.externalType, format, width, height, tiling, 0u, usage));
VK_CHECK(vkd.bindImageMemory(*device, *imageB, *memoryB, 0u));
@@ -3476,16 +3490,17 @@
checkImageSupport(vki, physicalDevice, config.externalType, 0u, usage, format, tiling, config.dedicated);
- const vk::Unique<vk::VkImage> imageA (createExternalImage(vkd, *device, queueFamilyIndex, config.externalType, format, width, height, tiling, 0u, usage));
- const vk::VkMemoryRequirements requirements (getImageMemoryRequirements(vkd, *device, *imageA));
- const vk::Unique<vk::VkDeviceMemory> memoryA (allocateExportableMemory(vkd, *device, requirements, config.externalType, config.dedicated ? *imageA : (vk::VkImage)0));
+ deUint32 exportedMemoryTypeIndex = ~0U;
+ const vk::Unique<vk::VkImage> imageA (createExternalImage(vkd, *device, queueFamilyIndex, config.externalType, format, width, height, tiling, 0u, usage));
+ const vk::VkMemoryRequirements requirements (getImageMemoryRequirements(vkd, *device, *imageA));
+ const vk::Unique<vk::VkDeviceMemory> memoryA (allocateExportableMemory(vkd, *device, requirements, config.externalType, config.dedicated ? *imageA : (vk::VkImage)0, exportedMemoryTypeIndex));
NativeHandle handle;
getMemoryNative(vkd, *device, *memoryA, config.externalType, handle);
VK_CHECK(vkd.bindImageMemory(*device, *imageA, *memoryA, 0u));
{
- const vk::Unique<vk::VkDeviceMemory> memoryB (importMemory(vkd, *device, requirements, config.externalType, handle));
+ const vk::Unique<vk::VkDeviceMemory> memoryB (importMemory(vkd, *device, requirements, config.externalType, exportedMemoryTypeIndex, handle));
const vk::Unique<vk::VkImage> imageB (createExternalImage(vkd, *device, queueFamilyIndex, config.externalType, format, width, height, tiling, 0u, usage));
VK_CHECK(vkd.bindImageMemory(*device, *imageB, *memoryB, 0u));
@@ -3512,16 +3527,17 @@
checkImageSupport(vki, physicalDevice, config.externalType, 0u, usage, format, tiling, config.dedicated);
+ deUint32 exportedMemoryTypeIndex = ~0U;
// \note Image is only allocated to get memory requirements
- const vk::Unique<vk::VkImage> imageA (createExternalImage(vkd, *device, queueFamilyIndex, config.externalType, format, width, height, tiling, 0u, usage));
- const vk::VkMemoryRequirements requirements (getImageMemoryRequirements(vkd, *device, *imageA));
- const vk::Unique<vk::VkDeviceMemory> memoryA (allocateExportableMemory(vkd, *device, requirements, config.externalType, config.dedicated ? *imageA : (vk::VkImage)0));
+ const vk::Unique<vk::VkImage> imageA (createExternalImage(vkd, *device, queueFamilyIndex, config.externalType, format, width, height, tiling, 0u, usage));
+ const vk::VkMemoryRequirements requirements (getImageMemoryRequirements(vkd, *device, *imageA));
+ const vk::Unique<vk::VkDeviceMemory> memoryA (allocateExportableMemory(vkd, *device, requirements, config.externalType, config.dedicated ? *imageA : (vk::VkImage)0, exportedMemoryTypeIndex));
NativeHandle handle;
getMemoryNative(vkd, *device, *memoryA, config.externalType, handle);
{
- const vk::Unique<vk::VkDeviceMemory> memoryB (importMemory(vkd, *device, requirements, config.externalType, handle));
+ const vk::Unique<vk::VkDeviceMemory> memoryB (importMemory(vkd, *device, requirements, config.externalType, exportedMemoryTypeIndex, handle));
const vk::Unique<vk::VkImage> imageB (createExternalImage(vkd, *device, queueFamilyIndex, config.externalType, format, width, height, tiling, 0u, usage));
VK_CHECK(vkd.bindImageMemory(*device, *imageA, *memoryA, 0u));
diff --git a/external/vulkancts/modules/vulkan/api/vktApiFeatureInfo.cpp b/external/vulkancts/modules/vulkan/api/vktApiFeatureInfo.cpp
index 80082f5..9816c44 100644
--- a/external/vulkancts/modules/vulkan/api/vktApiFeatureInfo.cpp
+++ b/external/vulkancts/modules/vulkan/api/vktApiFeatureInfo.cpp
@@ -694,6 +694,7 @@
"VK_KHR_win32_keyed_mutex",
"VK_KHR_dedicated_allocation",
"VK_KHR_variable_pointers",
+ "VK_KHR_relaxed_block_layout",
};
checkKhrExtensions(results, extensions, DE_LENGTH_OF_ARRAY(s_allowedDeviceKhrExtensions), s_allowedDeviceKhrExtensions);
diff --git a/external/vulkancts/modules/vulkan/api/vktApiImageClearingTests.cpp b/external/vulkancts/modules/vulkan/api/vktApiImageClearingTests.cpp
index b167d85..3eeabd2 100644
--- a/external/vulkancts/modules/vulkan/api/vktApiImageClearingTests.cpp
+++ b/external/vulkancts/modules/vulkan/api/vktApiImageClearingTests.cpp
@@ -151,7 +151,7 @@
deUint32 x=a;
deUint32 y=b;
- while (x%b != 0)
+ while (x%y != 0)
{
temp = y;
y = x%y;
diff --git a/external/vulkancts/modules/vulkan/pipeline/vktPipelineMultisampleBaseResolve.cpp b/external/vulkancts/modules/vulkan/pipeline/vktPipelineMultisampleBaseResolve.cpp
index fb1f667..fe30e8f 100644
--- a/external/vulkancts/modules/vulkan/pipeline/vktPipelineMultisampleBaseResolve.cpp
+++ b/external/vulkancts/modules/vulkan/pipeline/vktPipelineMultisampleBaseResolve.cpp
@@ -39,16 +39,17 @@
tcu::TestStatus MSInstanceBaseResolve::iterate (void)
{
- const InstanceInterface& instance = m_context.getInstanceInterface();
- const DeviceInterface& deviceInterface = m_context.getDeviceInterface();
- const VkDevice device = m_context.getDevice();
- const VkPhysicalDevice physicalDevice = m_context.getPhysicalDevice();
- Allocator& allocator = m_context.getDefaultAllocator();
- const VkQueue queue = m_context.getUniversalQueue();
- const deUint32 queueFamilyIndex = m_context.getUniversalQueueFamilyIndex();
+ const InstanceInterface& instance = m_context.getInstanceInterface();
+ const DeviceInterface& deviceInterface = m_context.getDeviceInterface();
+ const VkDevice device = m_context.getDevice();
+ const VkPhysicalDevice physicalDevice = m_context.getPhysicalDevice();
+ const VkPhysicalDeviceFeatures& features = m_context.getDeviceFeatures();
+ Allocator& allocator = m_context.getDefaultAllocator();
+ const VkQueue queue = m_context.getUniversalQueue();
+ const deUint32 queueFamilyIndex = m_context.getUniversalQueueFamilyIndex();
- VkImageCreateInfo imageMSInfo;
- VkImageCreateInfo imageRSInfo;
+ VkImageCreateInfo imageMSInfo;
+ VkImageCreateInfo imageRSInfo;
// Check if image size does not exceed device limits
validateImageSize(instance, physicalDevice, m_imageType, m_imageMSParams.imageSize);
@@ -282,7 +283,7 @@
DE_NULL, // const void* pNext;
(VkPipelineMultisampleStateCreateFlags)0u, // VkPipelineMultisampleStateCreateFlags flags;
imageMSInfo.samples, // VkSampleCountFlagBits rasterizationSamples;
- VK_TRUE, // VkBool32 sampleShadingEnable;
+ features.sampleRateShading, // VkBool32 sampleShadingEnable;
1.0f, // float minSampleShading;
DE_NULL, // const VkSampleMask* pSampleMask;
VK_FALSE, // VkBool32 alphaToCoverageEnable;
diff --git a/external/vulkancts/modules/vulkan/pipeline/vktPipelineMultisampleInterpolationTests.cpp b/external/vulkancts/modules/vulkan/pipeline/vktPipelineMultisampleInterpolationTests.cpp
index d10e0d6..71b4c3c 100644
--- a/external/vulkancts/modules/vulkan/pipeline/vktPipelineMultisampleInterpolationTests.cpp
+++ b/external/vulkancts/modules/vulkan/pipeline/vktPipelineMultisampleInterpolationTests.cpp
@@ -287,6 +287,9 @@
template<> TestInstance* MSCase<MSCaseInterpolateAtSampleDistinctValues>::createInstance (Context& context) const
{
+ if (!context.getDeviceFeatures().sampleRateShading)
+ TCU_THROW(NotSupportedError, "sampleRateShading support required");
+
return new MSInstance<MSInstanceDistinctValues>(context, m_imageMSParams);
}
@@ -409,6 +412,9 @@
template<> TestInstance* MSCase<MSCaseInterpolateAtSampleSingleSample>::createInstance (Context& context) const
{
+ if (!context.getDeviceFeatures().sampleRateShading)
+ TCU_THROW(NotSupportedError, "sampleRateShading support required");
+
return new MSInstance<MSInstanceInterpolateScreenPosition>(context, m_imageMSParams);
}
@@ -478,6 +484,9 @@
template<> TestInstance* MSCase<MSCaseInterpolateAtSampleIgnoresCentroid>::createInstance (Context& context) const
{
+ if (!context.getDeviceFeatures().sampleRateShading)
+ TCU_THROW(NotSupportedError, "sampleRateShading support required");
+
return new MSInstance<MSInstanceInterpolateScreenPosition>(context, m_imageMSParams);
}
@@ -546,6 +555,9 @@
template<> TestInstance* MSCase<MSCaseInterpolateAtSampleConsistency>::createInstance (Context& context) const
{
+ if (!context.getDeviceFeatures().sampleRateShading)
+ TCU_THROW(NotSupportedError, "sampleRateShading support required");
+
return new MSInstance<MSInstanceInterpolateScreenPosition>(context, m_imageMSParams);
}
@@ -614,6 +626,9 @@
template<> TestInstance* MSCase<MSCaseInterpolateAtCentroidConsistency>::createInstance (Context& context) const
{
+ if (!context.getDeviceFeatures().sampleRateShading)
+ TCU_THROW(NotSupportedError, "sampleRateShading support required");
+
return new MSInstance<MSInstanceInterpolateScreenPosition>(context, m_imageMSParams);
}
@@ -689,6 +704,9 @@
template<> TestInstance* MSCase<MSCaseInterpolateAtOffsetPixelCenter>::createInstance (Context& context) const
{
+ if (!context.getDeviceFeatures().sampleRateShading)
+ TCU_THROW(NotSupportedError, "sampleRateShading support required");
+
return new MSInstance<MSInstanceInterpolateScreenPosition>(context, m_imageMSParams);
}
@@ -759,6 +777,9 @@
template<> TestInstance* MSCase<MSCaseInterpolateAtOffsetSamplePosition>::createInstance (Context& context) const
{
+ if (!context.getDeviceFeatures().sampleRateShading)
+ TCU_THROW(NotSupportedError, "sampleRateShading support required");
+
return new MSInstance<MSInstanceInterpolateScreenPosition>(context, m_imageMSParams);
}
diff --git a/external/vulkancts/modules/vulkan/query_pool/vktQueryPoolStatisticsTests.cpp b/external/vulkancts/modules/vulkan/query_pool/vktQueryPoolStatisticsTests.cpp
index 5ac7983..f5ea979 100644
--- a/external/vulkancts/modules/vulkan/query_pool/vktQueryPoolStatisticsTests.cpp
+++ b/external/vulkancts/modules/vulkan/query_pool/vktQueryPoolStatisticsTests.cpp
@@ -1059,7 +1059,8 @@
switch(m_parametersGraphic.queryStatisticFlags)
{
case VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT:
- expectedMax = expectedMin = 16u;
+ expectedMin = 16u;
+ expectedMax = expectedMin + 3u;
break;
case VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT:
expectedMin = m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST ? 15u :
@@ -1068,20 +1069,21 @@
m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY ? 6u :
m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY ? 8u :
16u;
- expectedMax = m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY ? 12u : 16u;
+ expectedMax = m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY ? 12u : 19u;
break;
case VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT:
- expectedMax = expectedMin = m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_POINT_LIST ? 16u :
- m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_LINE_LIST ? 8u :
- m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_LINE_STRIP ? 15u :
- m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST ? 5u :
- m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP ? 8u :
- m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN ? 14u :
- m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY ? 4u :
- m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY ? 13u :
- m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY ? 2u :
- m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY ? 6u :
- 0u;
+ expectedMin = m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_POINT_LIST ? 16u :
+ m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_LINE_LIST ? 8u :
+ m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_LINE_STRIP ? 15u :
+ m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST ? 5u :
+ m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP ? 8u :
+ m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN ? 14u :
+ m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY ? 4u :
+ m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY ? 13u :
+ m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY ? 2u :
+ m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY ? 6u :
+ 0u;
+ expectedMax = expectedMin + 3u;
break;
case VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT:
expectedMin = m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_POINT_LIST ? 9u :
@@ -1443,44 +1445,48 @@
const DeviceInterface& vk = m_context.getDeviceInterface();
const VkDevice device = m_context.getDevice();
deUint64 result = 0u;
- deUint64 expected = 0u;
+ deUint64 expectedMin = 0u;
+ deUint64 expectedMax = 0u;
switch(m_parametersGraphic.queryStatisticFlags)
{
case VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT:
- expected = m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_POINT_LIST ? 16u :
- m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_LINE_LIST ? 8u :
- m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_LINE_STRIP ? 15u :
- m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST ? 4u :
- m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP ? 4u :
- m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN ? 14u :
- m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY ? 4u :
- m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY ? 13u :
- m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY ? 2u :
- m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY ? 6u :
- 0u;
+ expectedMin = m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_POINT_LIST ? 16u :
+ m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_LINE_LIST ? 8u :
+ m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_LINE_STRIP ? 15u :
+ m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST ? 4u :
+ m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP ? 4u :
+ m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN ? 14u :
+ m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY ? 4u :
+ m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY ? 13u :
+ m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY ? 2u :
+ m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY ? 6u :
+ 0u;
break;
case VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT:
case VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT:
case VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT:
- expected = m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_POINT_LIST ? 112u :
- m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_LINE_LIST ? 32u :
- m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_LINE_STRIP ? 60u :
- m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST ? 8u :
- m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP ? 8u :
- m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN ? 28u :
- m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY ? 16u :
- m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY ? 52u :
- m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY ? 4u :
- m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY ? 12u :
- 0u;
+ expectedMin = m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_POINT_LIST ? 112u :
+ m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_LINE_LIST ? 32u :
+ m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_LINE_STRIP ? 60u :
+ m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST ? 8u :
+ m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP ? 8u :
+ m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN ? 28u :
+ m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY ? 16u :
+ m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY ? 52u :
+ m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY ? 4u :
+ m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY ? 12u :
+ 0u;
break;
default:
DE_ASSERT(0);
break;
}
+
+ expectedMax = expectedMin + 1;
+
VK_CHECK(vk.getQueryPoolResults(device, queryPool, 0u, 1u, sizeof(deUint64), &result, 0u, VK_QUERY_RESULT_64_BIT));
- if (expected != result)
+ if (result < expectedMin || result > expectedMax)
return tcu::TestStatus::fail("QueryPoolResults incorrect");
if ( (m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST || m_parametersGraphic.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP ) && !checkImage())
diff --git a/external/vulkancts/modules/vulkan/renderpass/vktRenderPassMultisampleResolveTests.cpp b/external/vulkancts/modules/vulkan/renderpass/vktRenderPassMultisampleResolveTests.cpp
index c261e2a..3751afb 100644
--- a/external/vulkancts/modules/vulkan/renderpass/vktRenderPassMultisampleResolveTests.cpp
+++ b/external/vulkancts/modules/vulkan/renderpass/vktRenderPassMultisampleResolveTests.cpp
@@ -875,26 +875,6 @@
VK_CHECK(vkd.beginCommandBuffer(*commandBuffer, &beginInfo));
}
- {
- const VkRenderPassBeginInfo beginInfo =
- {
- VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO,
- DE_NULL,
-
- *m_renderPass,
- *m_framebuffer,
-
- {
- { 0u, 0u },
- { m_width, m_height }
- },
-
- 0u,
- DE_NULL
- };
- vkd.cmdBeginRenderPass(*commandBuffer, &beginInfo, VK_SUBPASS_CONTENTS_INLINE);
- }
-
// Memory barriers between previous copies and rendering
{
std::vector<VkImageMemoryBarrier> barriers;
@@ -931,6 +911,26 @@
vkd.cmdPipelineBarrier(*commandBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, 0u, 0u, DE_NULL, 0u, DE_NULL, (deUint32)barriers.size(), &barriers[0]);
}
+ {
+ const VkRenderPassBeginInfo beginInfo =
+ {
+ VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO,
+ DE_NULL,
+
+ *m_renderPass,
+ *m_framebuffer,
+
+ {
+ { 0u, 0u },
+ { m_width, m_height }
+ },
+
+ 0u,
+ DE_NULL
+ };
+ vkd.cmdBeginRenderPass(*commandBuffer, &beginInfo, VK_SUBPASS_CONTENTS_INLINE);
+ }
+
// Clear everything to black
{
const tcu::TextureFormat format (mapVkFormat(m_format));
diff --git a/external/vulkancts/modules/vulkan/renderpass/vktRenderPassMultisampleTests.cpp b/external/vulkancts/modules/vulkan/renderpass/vktRenderPassMultisampleTests.cpp
index ed5063b..1256fe7 100644
--- a/external/vulkancts/modules/vulkan/renderpass/vktRenderPassMultisampleTests.cpp
+++ b/external/vulkancts/modules/vulkan/renderpass/vktRenderPassMultisampleTests.cpp
@@ -1462,6 +1462,29 @@
DE_NULL
};
vkd.cmdBeginRenderPass(*commandBuffer, &beginInfo, VK_SUBPASS_CONTENTS_INLINE);
+
+ // Stencil needs to be cleared if it exists.
+ if (tcu::hasStencilComponent(mapVkFormat(m_srcFormat).order))
+ {
+ const VkClearAttachment clearAttachment =
+ {
+ VK_IMAGE_ASPECT_STENCIL_BIT, // VkImageAspectFlags aspectMask;
+ 0, // deUint32 colorAttachment;
+ makeClearValueDepthStencil(0, 0) // VkClearValue clearValue;
+ };
+
+ const VkClearRect clearRect =
+ {
+ {
+ { 0u, 0u },
+ { m_width, m_height }
+ },
+ 0, // deUint32 baseArrayLayer;
+ 1 // deUint32 layerCount;
+ };
+
+ vkd.cmdClearAttachments(*commandBuffer, 1, &clearAttachment, 1, &clearRect);
+ }
}
vkd.cmdBindPipeline(*commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, *m_renderPipeline);
diff --git a/external/vulkancts/modules/vulkan/sparse_resources/vktSparseResourcesBufferSparseBinding.cpp b/external/vulkancts/modules/vulkan/sparse_resources/vktSparseResourcesBufferSparseBinding.cpp
index 1a658ed..2202d9a 100644
--- a/external/vulkancts/modules/vulkan/sparse_resources/vktSparseResourcesBufferSparseBinding.cpp
+++ b/external/vulkancts/modules/vulkan/sparse_resources/vktSparseResourcesBufferSparseBinding.cpp
@@ -150,21 +150,38 @@
DE_ASSERT((bufferMemRequirement.size % bufferMemRequirement.alignment) == 0);
- std::vector<DeviceMemorySp> deviceMemUniquePtrVec;
+ Move<VkDeviceMemory> sparseMemoryAllocation;
{
std::vector<VkSparseMemoryBind> sparseMemoryBinds;
const deUint32 numSparseBinds = static_cast<deUint32>(bufferMemRequirement.size / bufferMemRequirement.alignment);
- const deUint32 memoryType = findMatchingMemoryType(instance, physicalDevice, bufferMemRequirement, MemoryRequirement::Any);
+ const deUint32 memoryType = findMatchingMemoryType(instance, physicalDevice, bufferMemRequirement, MemoryRequirement::Any);
if (memoryType == NO_MATCH_FOUND)
return tcu::TestStatus::fail("No matching memory type found");
+ {
+ const VkMemoryAllocateInfo allocateInfo =
+ {
+ VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO, // VkStructureType sType;
+ DE_NULL, // const void* pNext;
+ bufferMemRequirement.size, // VkDeviceSize allocationSize;
+ memoryType, // uint32_t memoryTypeIndex;
+ };
+
+ sparseMemoryAllocation = allocateMemory(deviceInterface, getDevice(), &allocateInfo);
+ }
+
for (deUint32 sparseBindNdx = 0; sparseBindNdx < numSparseBinds; ++sparseBindNdx)
{
- const VkSparseMemoryBind sparseMemoryBind = makeSparseMemoryBind(deviceInterface, getDevice(), bufferMemRequirement.alignment, memoryType, bufferMemRequirement.alignment * sparseBindNdx);
-
- deviceMemUniquePtrVec.push_back(makeVkSharedPtr(Move<VkDeviceMemory>(check<VkDeviceMemory>(sparseMemoryBind.memory), Deleter<VkDeviceMemory>(deviceInterface, getDevice(), DE_NULL))));
+ const VkSparseMemoryBind sparseMemoryBind =
+ {
+ bufferMemRequirement.alignment * sparseBindNdx, // VkDeviceSize resourceOffset;
+ bufferMemRequirement.alignment, // VkDeviceSize size;
+ *sparseMemoryAllocation, // VkDeviceMemory memory;
+ bufferMemRequirement.alignment * sparseBindNdx, // VkDeviceSize memoryOffset;
+ (VkSparseMemoryBindFlags)0, // VkSparseMemoryBindFlags flags;
+ };
sparseMemoryBinds.push_back(sparseMemoryBind);
}
diff --git a/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmComputeShaderTestUtil.cpp b/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmComputeShaderTestUtil.cpp
index 8dc32fe..d3ad3f3 100644
--- a/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmComputeShaderTestUtil.cpp
+++ b/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmComputeShaderTestUtil.cpp
@@ -37,9 +37,9 @@
"OpExecutionMode %main LocalSize 1 1 1\n";
}
-const char* getComputeAsmCommonTypes (void)
+std::string getComputeAsmCommonTypes (std::string blockStorageClass)
{
- return
+ return std::string(
"%bool = OpTypeBool\n"
"%void = OpTypeVoid\n"
"%voidf = OpTypeFunction %void\n"
@@ -48,9 +48,9 @@
"%f32 = OpTypeFloat 32\n"
"%uvec3 = OpTypeVector %u32 3\n"
"%fvec3 = OpTypeVector %f32 3\n"
- "%uvec3ptr = OpTypePointer Input %uvec3\n"
- "%i32ptr = OpTypePointer Uniform %i32\n"
- "%f32ptr = OpTypePointer Uniform %f32\n"
+ "%uvec3ptr = OpTypePointer Input %uvec3\n") +
+ "%i32ptr = OpTypePointer " + blockStorageClass + " %i32\n"
+ "%f32ptr = OpTypePointer " + blockStorageClass + " %f32\n"
"%i32arr = OpTypeRuntimeArray %i32\n"
"%f32arr = OpTypeRuntimeArray %f32\n";
}
diff --git a/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmComputeShaderTestUtil.hpp b/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmComputeShaderTestUtil.hpp
index 1e89644..9cdb3f7 100644
--- a/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmComputeShaderTestUtil.hpp
+++ b/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmComputeShaderTestUtil.hpp
@@ -133,7 +133,7 @@
*//*--------------------------------------------------------------------*/
const char* getComputeAsmShaderPreamble (void);
-const char* getComputeAsmCommonTypes (void);
+std::string getComputeAsmCommonTypes (std::string blockStorageClass = "Uniform");
const char* getComputeAsmCommonInt64Types (void);
/*--------------------------------------------------------------------*//*!
diff --git a/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmInstructionTests.cpp b/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmInstructionTests.cpp
index 57c9bfd..a4aa1a0 100644
--- a/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmInstructionTests.cpp
+++ b/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmInstructionTests.cpp
@@ -417,7 +417,7 @@
useStorageBuffer ? "opatomic_storage_buffer" : "opatomic",
"Test the OpAtomic* opcodes"));
de::Random rnd (deStringHash(group->getName()));
- const int numElements = 1000000;
+ const int numElements = 65535;
vector<OpAtomicCase> cases;
const StringTemplate shaderTemplate (
@@ -446,15 +446,7 @@
"OpMemberDecorate %sumbuf 0 Coherent\n"
"OpMemberDecorate %sumbuf 0 Offset 0\n"
- + string(getComputeAsmCommonTypes()) +
- "%void = OpTypeVoid\n"
- "%voidf = OpTypeFunction %void\n"
- "%u32 = OpTypeInt 32 0\n"
- "%i32 = OpTypeInt 32 1\n"
- "%uvec3 = OpTypeVector %u32 3\n"
- "%uvec3ptr = OpTypePointer Input %uvec3\n"
- "%i32ptr = OpTypePointer ${BLOCK_POINTER_TYPE} %i32\n"
- "%i32arr = OpTypeRuntimeArray %i32\n"
+ + getComputeAsmCommonTypes("${BLOCK_POINTER_TYPE}") +
"%buf = OpTypeStruct %i32arr\n"
"%bufptr = OpTypePointer ${BLOCK_POINTER_TYPE} %buf\n"
diff --git a/external/vulkancts/modules/vulkan/ssbo/CMakeLists.txt b/external/vulkancts/modules/vulkan/ssbo/CMakeLists.txt
index 2c8e966..9b6db22 100644
--- a/external/vulkancts/modules/vulkan/ssbo/CMakeLists.txt
+++ b/external/vulkancts/modules/vulkan/ssbo/CMakeLists.txt
@@ -6,7 +6,7 @@
vktSSBOLayoutCase.cpp
vktSSBOLayoutCase.hpp
vktSSBOLayoutTests.cpp
- vktSSBOLayoutTests.cpp
+ vktSSBOLayoutTests.hpp
)
set(DEQP_VK_SSBO_LIBS
diff --git a/external/vulkancts/modules/vulkan/ssbo/vktSSBOLayoutCase.cpp b/external/vulkancts/modules/vulkan/ssbo/vktSSBOLayoutCase.cpp
index fe8ea1e..c77b90f 100644
--- a/external/vulkancts/modules/vulkan/ssbo/vktSSBOLayoutCase.cpp
+++ b/external/vulkancts/modules/vulkan/ssbo/vktSSBOLayoutCase.cpp
@@ -37,9 +37,6 @@
#include "deMath.h"
#include "deSharedPtr.hpp"
-#include <algorithm>
-#include <map>
-
#include "vkBuilderUtil.hpp"
#include "vkMemUtil.hpp"
#include "vkPrograms.hpp"
@@ -56,7 +53,6 @@
using tcu::TestLog;
using std::string;
using std::vector;
-using std::map;
using glu::VarType;
using glu::StructType;
using glu::StructMember;
@@ -102,15 +98,16 @@
: m_name (name)
, m_type (type)
, m_flags (flags)
+ , m_offset (~0u)
{
}
// BufferBlock implementation.
BufferBlock::BufferBlock (const char* blockName)
- : m_blockName (blockName)
- , m_arraySize (-1)
- , m_flags (0)
+ : m_blockName (blockName)
+ , m_arraySize (-1)
+ , m_flags (0)
{
setArraySize(0);
}
@@ -338,7 +335,6 @@
const int vecSize = isRowMajor ? glu::getDataTypeMatrixNumColumns(basicType)
: glu::getDataTypeMatrixNumRows(basicType);
const int vecAlign = getDataTypeByteAlignment(glu::getDataTypeFloatVec(vecSize));
-
return vecAlign;
}
else
@@ -361,9 +357,43 @@
}
}
+int computeRelaxedBlockBaseAlignment (const VarType& type, deUint32 layoutFlags)
+{
+ if (type.isBasicType())
+ {
+ glu::DataType basicType = type.getBasicType();
+
+ if (glu::isDataTypeVector(basicType))
+ return 4;
+
+ if (glu::isDataTypeMatrix(basicType))
+ {
+ const bool isRowMajor = !!(layoutFlags & LAYOUT_ROW_MAJOR);
+ const int vecSize = isRowMajor ? glu::getDataTypeMatrixNumColumns(basicType)
+ : glu::getDataTypeMatrixNumRows(basicType);
+ const int vecAlign = getDataTypeByteAlignment(glu::getDataTypeFloatVec(vecSize));
+ return vecAlign;
+ }
+ else
+ return getDataTypeByteAlignment(basicType);
+ }
+ else if (type.isArrayType())
+ return computeStd430BaseAlignment(type.getElementType(), layoutFlags);
+ else
+ {
+ DE_ASSERT(type.isStructType());
+
+ int maxBaseAlignment = 0;
+ for (StructType::ConstIterator memberIter = type.getStructPtr()->begin(); memberIter != type.getStructPtr()->end(); memberIter++)
+ maxBaseAlignment = de::max(maxBaseAlignment, computeRelaxedBlockBaseAlignment(memberIter->getType(), layoutFlags));
+
+ return maxBaseAlignment;
+ }
+}
+
inline deUint32 mergeLayoutFlags (deUint32 prevFlags, deUint32 newFlags)
{
- const deUint32 packingMask = LAYOUT_STD430|LAYOUT_STD140;
+ const deUint32 packingMask = LAYOUT_STD430|LAYOUT_STD140|LAYOUT_RELAXED;
const deUint32 matrixMask = LAYOUT_ROW_MAJOR|LAYOUT_COLUMN_MAJOR;
deUint32 mergedFlags = 0;
@@ -374,6 +404,21 @@
return mergedFlags;
}
+template <class T>
+bool isPow2(T powerOf2)
+{
+ if (powerOf2 <= 0)
+ return false;
+ return (powerOf2 & (powerOf2 - (T)1)) == (T)0;
+}
+
+template <class T>
+T roundToPow2(T number, int powerOf2)
+{
+ DE_ASSERT(isPow2(powerOf2));
+ return (number + (T)powerOf2 - (T)1) & (T)(~(powerOf2 - 1));
+}
+
//! Appends all child elements to layout, returns value that should be appended to offset.
int computeReferenceLayout (
BufferLayout& layout,
@@ -385,9 +430,9 @@
{
// Reference layout uses std430 rules by default. std140 rules are
// choosen only for blocks that have std140 layout.
- const bool isStd140 = (layoutFlags & LAYOUT_STD140) != 0;
- const int baseAlignment = isStd140 ? computeStd140BaseAlignment(type, layoutFlags)
- : computeStd430BaseAlignment(type, layoutFlags);
+ const int baseAlignment = (layoutFlags & LAYOUT_STD140) != 0 ? computeStd140BaseAlignment(type, layoutFlags) :
+ (layoutFlags & LAYOUT_RELAXED) != 0 ? computeRelaxedBlockBaseAlignment(type, layoutFlags) :
+ computeStd430BaseAlignment(type, layoutFlags);
int curOffset = deAlign32(baseOffset, baseAlignment);
const int topLevelArraySize = 1; // Default values
const int topLevelArrayStride = 0;
@@ -421,6 +466,9 @@
}
else
{
+ if (glu::isDataTypeVector(basicType) && (getDataTypeByteSize(basicType) <= 16 ? curOffset / 16 != (curOffset + getDataTypeByteSize(basicType) - 1) / 16 : curOffset % 16 != 0) && (layoutFlags & LAYOUT_RELAXED))
+ curOffset = roundToPow2(curOffset, 16);
+
// Scalar or vector.
entry.offset = curOffset;
@@ -513,8 +561,9 @@
const string prefix = blockPrefix + bufVar.getName() + "[0]";
const bool isStd140 = (blockLayoutFlags & LAYOUT_STD140) != 0;
const int vec4Align = (int)sizeof(deUint32)*4;
- const int baseAlignment = isStd140 ? computeStd140BaseAlignment(varType, combinedFlags)
- : computeStd430BaseAlignment(varType, combinedFlags);
+ const int baseAlignment = isStd140 ? computeStd140BaseAlignment(varType, combinedFlags) :
+ (blockLayoutFlags & LAYOUT_RELAXED) != 0 ? computeRelaxedBlockBaseAlignment(varType, combinedFlags) :
+ computeStd430BaseAlignment(varType, combinedFlags);
int curOffset = deAlign32(baseOffset, baseAlignment);
const VarType& elemType = varType.getElementType();
@@ -598,23 +647,30 @@
return computeReferenceLayout(layout, curBlockNdx, baseOffset, blockPrefix + bufVar.getName(), varType, combinedFlags);
}
-void computeReferenceLayout (BufferLayout& layout, const ShaderInterface& interface)
+void computeReferenceLayout (BufferLayout& layout, ShaderInterface& interface)
{
int numBlocks = interface.getNumBlocks();
for (int blockNdx = 0; blockNdx < numBlocks; blockNdx++)
{
- const BufferBlock& block = interface.getBlock(blockNdx);
+ BufferBlock& block = interface.getBlock(blockNdx);
bool hasInstanceName = block.getInstanceName() != DE_NULL;
std::string blockPrefix = hasInstanceName ? (std::string(block.getBlockName()) + ".") : std::string("");
int curOffset = 0;
int activeBlockNdx = (int)layout.blocks.size();
int firstVarNdx = (int)layout.bufferVars.size();
- for (BufferBlock::const_iterator varIter = block.begin(); varIter != block.end(); varIter++)
+ size_t oldSize = layout.bufferVars.size();
+ for (BufferBlock::iterator varIter = block.begin(); varIter != block.end(); varIter++)
{
- const BufferVar& bufVar = *varIter;
+ BufferVar& bufVar = *varIter;
curOffset += computeReferenceLayout(layout, activeBlockNdx, blockPrefix, curOffset, bufVar, block.getFlags());
+ if (block.getFlags() & LAYOUT_RELAXED)
+ {
+ DE_ASSERT(!(layout.bufferVars.size() <= oldSize));
+ bufVar.setOffset(layout.bufferVars[oldSize].offset);
+ }
+ oldSize = layout.bufferVars.size();
}
int varIndicesEnd = (int)layout.bufferVars.size();
@@ -833,6 +889,17 @@
}
}
+bool usesRelaxedLayout (const ShaderInterface& interface)
+{
+ //If any of blocks has LAYOUT_RELAXED flag
+ for (int ndx = 0; ndx < interface.getNumBlocks(); ++ndx)
+ {
+ if (interface.getBlock(ndx).getFlags() & LAYOUT_RELAXED)
+ return true;
+ }
+ return false;
+}
+
struct Indent
{
int level;
@@ -849,9 +916,10 @@
void generateDeclaration (std::ostream& src, const BufferVar& bufferVar, int indentLevel)
{
// \todo [pyry] Qualifiers
-
if ((bufferVar.getFlags() & LAYOUT_MASK) != 0)
src << "layout(" << LayoutFlagsFmt(bufferVar.getFlags() & LAYOUT_MASK) << ") ";
+ else if (bufferVar.getOffset()!= ~0u)
+ src << "layout(offset = "<<bufferVar.getOffset()<<") ";
src << glu::declare(bufferVar.getType(), bufferVar.getName(), indentLevel);
}
@@ -859,7 +927,6 @@
void generateDeclaration (std::ostream& src, const BufferBlock& block, int bindingPoint)
{
src << "layout(";
-
if ((block.getFlags() & LAYOUT_MASK) != 0)
src << LayoutFlagsFmt(block.getFlags() & LAYOUT_MASK) << ", ";
@@ -873,6 +940,7 @@
for (BufferBlock::const_iterator varIter = block.begin(); varIter != block.end(); varIter++)
{
src << Indent(1);
+
generateDeclaration(src, *varIter, 1 /* indent level */);
src << ";\n";
}
@@ -1256,7 +1324,11 @@
{
std::ostringstream src;
- src << "#version 310 es\n";
+ if (usesRelaxedLayout(interface))
+ src << "#version 450\n";
+ else
+ src << "#version 310 es\n";
+
src << "layout(local_size_x = 1) in;\n";
src << "\n";
@@ -2194,7 +2266,7 @@
const int refCount = 1;
int resCount = 0;
- resCount = *(const int*)((const deUint8*)acBufferAlloc->getHostPtr());
+ resCount = *((const int*)acBufferAlloc->getHostPtr());
counterOk = (refCount == resCount);
if (!counterOk)
@@ -2233,11 +2305,19 @@
{
DE_ASSERT(!m_computeShaderSrc.empty());
- programCollection.glslSources.add("compute") << glu::ComputeSource(m_computeShaderSrc);
+ if (usesRelaxedLayout(m_interface))
+ {
+ programCollection.glslSources.add("compute") << glu::ComputeSource(m_computeShaderSrc)
+ << vk::GlslBuildOptions(vk::SPIRV_VERSION_1_0, vk::GlslBuildOptions::FLAG_ALLOW_RELAXED_OFFSETS);
+ }
+ else
+ programCollection.glslSources.add("compute") << glu::ComputeSource(m_computeShaderSrc);
}
TestInstance* SSBOLayoutCase::createInstance (Context& context) const
{
+ if (!de::contains(context.getDeviceExtensions().begin(), context.getDeviceExtensions().end(), "VK_KHR_relaxed_block_layout") && usesRelaxedLayout(m_interface))
+ TCU_THROW(NotSupportedError, "VK_KHR_relaxed_block_layout not supported");
return new SSBOLayoutCaseInstance(context, m_bufferMode, m_interface, m_refLayout, m_initialData, m_writeData);
}
@@ -2251,7 +2331,6 @@
copyNonWrittenData (m_interface, m_refLayout, m_initialData.pointers, m_writeData.pointers);
m_computeShaderSrc = generateComputeShader(m_interface, m_refLayout, m_initialData.pointers, m_writeData.pointers, m_matrixLoadFlag);
-
}
} // ssbo
diff --git a/external/vulkancts/modules/vulkan/ssbo/vktSSBOLayoutCase.hpp b/external/vulkancts/modules/vulkan/ssbo/vktSSBOLayoutCase.hpp
index fe954dd..7444212 100644
--- a/external/vulkancts/modules/vulkan/ssbo/vktSSBOLayoutCase.hpp
+++ b/external/vulkancts/modules/vulkan/ssbo/vktSSBOLayoutCase.hpp
@@ -49,9 +49,9 @@
QUALIFIER_RESTRICT = (1<<6),
QUALIFIER_READONLY = (1<<7),
QUALIFIER_WRITEONLY = (1<<8),*/
-
ACCESS_READ = (1<<9), //!< Buffer variable is read in the shader.
ACCESS_WRITE = (1<<10), //!< Buffer variable is written in the shader.
+ LAYOUT_RELAXED = (1<<11), //!< Support VK_KHR_relaxed_block_layout extension
};
enum MatrixLoadFlags
@@ -65,14 +65,18 @@
public:
BufferVar (const char* name, const glu::VarType& type, deUint32 flags);
- const char* getName (void) const { return m_name.c_str(); }
- const glu::VarType& getType (void) const { return m_type; }
- deUint32 getFlags (void) const { return m_flags; }
+ const char* getName (void) const { return m_name.c_str(); }
+ const glu::VarType& getType (void) const { return m_type; }
+ deUint32 getFlags (void) const { return m_flags; }
+ deUint32 getOffset (void) const { return m_offset; }
+
+ void setOffset (deUint32 offset) { m_offset = offset; }
private:
std::string m_name;
glu::VarType m_type;
deUint32 m_flags;
+ deUint32 m_offset;
};
class BufferBlock
@@ -83,24 +87,24 @@
BufferBlock (const char* blockName);
- const char* getBlockName (void) const { return m_blockName.c_str(); }
- const char* getInstanceName (void) const { return m_instanceName.empty() ? DE_NULL : m_instanceName.c_str(); }
- bool isArray (void) const { return m_arraySize > 0; }
- int getArraySize (void) const { return m_arraySize; }
- deUint32 getFlags (void) const { return m_flags; }
+ const char* getBlockName (void) const { return m_blockName.c_str(); }
+ const char* getInstanceName (void) const { return m_instanceName.empty() ? DE_NULL : m_instanceName.c_str(); }
+ bool isArray (void) const { return m_arraySize > 0; }
+ int getArraySize (void) const { return m_arraySize; }
+ deUint32 getFlags (void) const { return m_flags; }
- void setInstanceName (const char* name) { m_instanceName = name; }
- void setFlags (deUint32 flags) { m_flags = flags; }
- void addMember (const BufferVar& var) { m_variables.push_back(var); }
+ void setInstanceName (const char* name) { m_instanceName = name; }
+ void setFlags (deUint32 flags) { m_flags = flags; }
+ void addMember (const BufferVar& var) { m_variables.push_back(var); }
void setArraySize (int arraySize);
- int getLastUnsizedArraySize (int instanceNdx) const { return m_lastUnsizedArraySizes[instanceNdx]; }
- void setLastUnsizedArraySize (int instanceNdx, int size) { m_lastUnsizedArraySizes[instanceNdx] = size; }
+ int getLastUnsizedArraySize (int instanceNdx) const { return m_lastUnsizedArraySizes[instanceNdx]; }
+ void setLastUnsizedArraySize (int instanceNdx, int size) { m_lastUnsizedArraySizes[instanceNdx] = size; }
- inline iterator begin (void) { return m_variables.begin(); }
- inline const_iterator begin (void) const { return m_variables.begin(); }
- inline iterator end (void) { return m_variables.end(); }
- inline const_iterator end (void) const { return m_variables.end(); }
+ inline iterator begin (void) { return m_variables.begin(); }
+ inline const_iterator begin (void) const { return m_variables.begin(); }
+ inline iterator end (void) { return m_variables.end(); }
+ inline const_iterator end (void) const { return m_variables.end(); }
private:
std::string m_blockName;
@@ -125,6 +129,7 @@
int getNumBlocks (void) const { return (int)m_bufferBlocks.size(); }
const BufferBlock& getBlock (int ndx) const { return *m_bufferBlocks[ndx]; }
+ BufferBlock& getBlock (int ndx) { return *m_bufferBlocks[ndx]; }
private:
ShaderInterface (const ShaderInterface&);
@@ -230,11 +235,12 @@
virtual TestInstance* createInstance (Context& context) const;
protected:
- void init (void);
+ void init (void);
BufferMode m_bufferMode;
ShaderInterface m_interface;
MatrixLoadFlags m_matrixLoadFlag;
+ std::string m_computeShaderSrc;
private:
SSBOLayoutCase (const SSBOLayoutCase&);
@@ -243,7 +249,6 @@
BufferLayout m_refLayout;
RefDataStorage m_initialData; // Initial data stored in buffer.
RefDataStorage m_writeData; // Data written by compute shader.
- std::string m_computeShaderSrc;
};
} // ssbo
diff --git a/external/vulkancts/modules/vulkan/ssbo/vktSSBOLayoutTests.cpp b/external/vulkancts/modules/vulkan/ssbo/vktSSBOLayoutTests.cpp
index 61f12e9..edae7a6 100644
--- a/external/vulkancts/modules/vulkan/ssbo/vktSSBOLayoutTests.cpp
+++ b/external/vulkancts/modules/vulkan/ssbo/vktSSBOLayoutTests.cpp
@@ -69,7 +69,8 @@
FEATURE_STD430_LAYOUT = (1<<9),
FEATURE_MATRIX_LAYOUT = (1<<10), //!< Matrix layout flags.
FEATURE_UNSIZED_ARRAYS = (1<<11),
- FEATURE_ARRAYS_OF_ARRAYS = (1<<12)
+ FEATURE_ARRAYS_OF_ARRAYS = (1<<12),
+ FEATURE_RELAXED_LAYOUT = (1<<13)
};
class RandomSSBOLayoutCase : public SSBOLayoutCase
@@ -138,10 +139,18 @@
// Layout flag candidates.
vector<deUint32> layoutFlagCandidates;
- layoutFlagCandidates.push_back(0);
+
+ if (m_features & FEATURE_STD430_LAYOUT)
+ layoutFlagCandidates.push_back(LAYOUT_STD430);
+
if (m_features & FEATURE_STD140_LAYOUT)
layoutFlagCandidates.push_back(LAYOUT_STD140);
+ if (m_features & FEATURE_RELAXED_LAYOUT)
+ layoutFlagCandidates.push_back(LAYOUT_RELAXED);
+
+ DE_ASSERT(!layoutFlagCandidates.empty());
+
layoutFlags |= rnd.choose<deUint32>(layoutFlagCandidates.begin(), layoutFlagCandidates.end());
if (m_features & FEATURE_MATRIX_LAYOUT)
@@ -624,11 +633,11 @@
class BlockMultiBasicTypesCase : public SSBOLayoutCase
{
public:
- BlockMultiBasicTypesCase (tcu::TestContext& testCtx, const char* name, const char* description, deUint32 flagsA, deUint32 flagsB, BufferMode bufferMode, int numInstances, MatrixLoadFlags matrixLoadFlag)
- : SSBOLayoutCase (testCtx, name, description, bufferMode, matrixLoadFlag)
- , m_flagsA (flagsA)
- , m_flagsB (flagsB)
- , m_numInstances (numInstances)
+ BlockMultiBasicTypesCase (tcu::TestContext& testCtx, const char* name, const char* description, deUint32 flagsA, deUint32 flagsB, BufferMode bufferMode, int numInstances, MatrixLoadFlags matrixLoadFlag)
+ : SSBOLayoutCase (testCtx, name, description, bufferMode, matrixLoadFlag)
+ , m_flagsA (flagsA)
+ , m_flagsB (flagsB)
+ , m_numInstances (numInstances)
{
BufferBlock& blockA = m_interface.allocBlock("BlockA");
blockA.addMember(BufferVar("a", VarType(glu::TYPE_FLOAT, glu::PRECISION_HIGHP), ACCESS_READ|ACCESS_WRITE));
@@ -1534,6 +1543,18 @@
modeGroup->addChild(new BlockMultiBasicTypesCase(m_testCtx, (baseName + "_comp_access").c_str(), "", baseFlags, baseFlags, bufferModes[modeNdx].mode, isArray ? 3 : 0, LOAD_MATRIX_COMPONENTS));
}
}
+
+ for (int isArray = 0; isArray < 2; isArray++)
+ {
+ std::string baseName = "relaxed_block";
+ deUint32 baseFlags = LAYOUT_RELAXED;
+
+ if (isArray)
+ baseName += "_instance_array";
+
+ modeGroup->addChild(new BlockMultiBasicTypesCase(m_testCtx, baseName.c_str(), "", baseFlags, baseFlags, bufferModes[modeNdx].mode, isArray ? 3 : 0, LOAD_FULL_MATRIX));
+ modeGroup->addChild(new BlockMultiBasicTypesCase(m_testCtx, (baseName + "_comp_access").c_str(), "", baseFlags, baseFlags, bufferModes[modeNdx].mode, isArray ? 3 : 0, LOAD_MATRIX_COMPONENTS));
+ }
}
}
@@ -1566,31 +1587,34 @@
// ssbo.random
{
- const deUint32 allLayouts = FEATURE_STD140_LAYOUT;
+ const deUint32 allStdLayouts = FEATURE_STD140_LAYOUT|FEATURE_STD430_LAYOUT;
const deUint32 allBasicTypes = FEATURE_VECTORS|FEATURE_MATRICES;
const deUint32 unused = FEATURE_UNUSED_MEMBERS|FEATURE_UNUSED_VARS;
const deUint32 unsized = FEATURE_UNSIZED_ARRAYS;
const deUint32 matFlags = FEATURE_MATRIX_LAYOUT;
+ const deUint32 allButRelaxed = ~FEATURE_RELAXED_LAYOUT;
+ const deUint32 allRelaxed = FEATURE_VECTORS|FEATURE_RELAXED_LAYOUT|FEATURE_INSTANCE_ARRAYS;
tcu::TestCaseGroup* randomGroup = new tcu::TestCaseGroup(m_testCtx, "random", "Random Uniform Block cases");
addChild(randomGroup);
// Basic types.
- createRandomCaseGroup(randomGroup, m_testCtx, "scalar_types", "Scalar types only, per-block buffers", SSBOLayoutCase::BUFFERMODE_PER_BLOCK, allLayouts|unused, 25, 0);
- createRandomCaseGroup(randomGroup, m_testCtx, "vector_types", "Scalar and vector types only, per-block buffers", SSBOLayoutCase::BUFFERMODE_PER_BLOCK, allLayouts|unused|FEATURE_VECTORS, 25, 25);
- createRandomCaseGroup(randomGroup, m_testCtx, "basic_types", "All basic types, per-block buffers", SSBOLayoutCase::BUFFERMODE_PER_BLOCK, allLayouts|unused|allBasicTypes|matFlags, 25, 50);
- createRandomCaseGroup(randomGroup, m_testCtx, "basic_arrays", "Arrays, per-block buffers", SSBOLayoutCase::BUFFERMODE_PER_BLOCK, allLayouts|unused|allBasicTypes|matFlags|FEATURE_ARRAYS, 25, 50);
- createRandomCaseGroup(randomGroup, m_testCtx, "unsized_arrays", "Unsized arrays, per-block buffers", SSBOLayoutCase::BUFFERMODE_PER_BLOCK, allLayouts|unused|allBasicTypes|matFlags|unsized|FEATURE_ARRAYS, 25, 50);
- createRandomCaseGroup(randomGroup, m_testCtx, "arrays_of_arrays", "Arrays of arrays, per-block buffers", SSBOLayoutCase::BUFFERMODE_PER_BLOCK, allLayouts|unused|allBasicTypes|matFlags|unsized|FEATURE_ARRAYS|FEATURE_ARRAYS_OF_ARRAYS, 25, 950);
+ createRandomCaseGroup(randomGroup, m_testCtx, "scalar_types", "Scalar types only, per-block buffers", SSBOLayoutCase::BUFFERMODE_PER_BLOCK, allStdLayouts|unused, 25, 0);
+ createRandomCaseGroup(randomGroup, m_testCtx, "vector_types", "Scalar and vector types only, per-block buffers", SSBOLayoutCase::BUFFERMODE_PER_BLOCK, allStdLayouts|unused|FEATURE_VECTORS, 25, 25);
+ createRandomCaseGroup(randomGroup, m_testCtx, "basic_types", "All basic types, per-block buffers", SSBOLayoutCase::BUFFERMODE_PER_BLOCK, allStdLayouts|unused|allBasicTypes|matFlags, 25, 50);
+ createRandomCaseGroup(randomGroup, m_testCtx, "basic_arrays", "Arrays, per-block buffers", SSBOLayoutCase::BUFFERMODE_PER_BLOCK, allStdLayouts|unused|allBasicTypes|matFlags|FEATURE_ARRAYS, 25, 50);
+ createRandomCaseGroup(randomGroup, m_testCtx, "unsized_arrays", "Unsized arrays, per-block buffers", SSBOLayoutCase::BUFFERMODE_PER_BLOCK, allStdLayouts|unused|allBasicTypes|matFlags|unsized|FEATURE_ARRAYS, 25, 50);
+ createRandomCaseGroup(randomGroup, m_testCtx, "arrays_of_arrays", "Arrays of arrays, per-block buffers", SSBOLayoutCase::BUFFERMODE_PER_BLOCK, allStdLayouts|unused|allBasicTypes|matFlags|unsized|FEATURE_ARRAYS|FEATURE_ARRAYS_OF_ARRAYS, 25, 950);
- createRandomCaseGroup(randomGroup, m_testCtx, "basic_instance_arrays", "Basic instance arrays, per-block buffers", SSBOLayoutCase::BUFFERMODE_PER_BLOCK, allLayouts|unused|allBasicTypes|matFlags|unsized|FEATURE_INSTANCE_ARRAYS, 25, 75);
- createRandomCaseGroup(randomGroup, m_testCtx, "nested_structs", "Nested structs, per-block buffers", SSBOLayoutCase::BUFFERMODE_PER_BLOCK, allLayouts|unused|allBasicTypes|matFlags|unsized|FEATURE_STRUCTS, 25, 100);
- createRandomCaseGroup(randomGroup, m_testCtx, "nested_structs_arrays", "Nested structs, arrays, per-block buffers", SSBOLayoutCase::BUFFERMODE_PER_BLOCK, allLayouts|unused|allBasicTypes|matFlags|unsized|FEATURE_STRUCTS|FEATURE_ARRAYS|FEATURE_ARRAYS_OF_ARRAYS, 25, 150);
- createRandomCaseGroup(randomGroup, m_testCtx, "nested_structs_instance_arrays", "Nested structs, instance arrays, per-block buffers", SSBOLayoutCase::BUFFERMODE_PER_BLOCK, allLayouts|unused|allBasicTypes|matFlags|unsized|FEATURE_STRUCTS|FEATURE_INSTANCE_ARRAYS, 25, 125);
- createRandomCaseGroup(randomGroup, m_testCtx, "nested_structs_arrays_instance_arrays", "Nested structs, instance arrays, per-block buffers", SSBOLayoutCase::BUFFERMODE_PER_BLOCK, allLayouts|unused|allBasicTypes|matFlags|unsized|FEATURE_STRUCTS|FEATURE_ARRAYS|FEATURE_ARRAYS_OF_ARRAYS|FEATURE_INSTANCE_ARRAYS, 25, 175);
+ createRandomCaseGroup(randomGroup, m_testCtx, "basic_instance_arrays", "Basic instance arrays, per-block buffers", SSBOLayoutCase::BUFFERMODE_PER_BLOCK, allStdLayouts|unused|allBasicTypes|matFlags|unsized|FEATURE_INSTANCE_ARRAYS, 25, 75);
+ createRandomCaseGroup(randomGroup, m_testCtx, "nested_structs", "Nested structs, per-block buffers", SSBOLayoutCase::BUFFERMODE_PER_BLOCK, allStdLayouts|unused|allBasicTypes|matFlags|unsized|FEATURE_STRUCTS, 25, 100);
+ createRandomCaseGroup(randomGroup, m_testCtx, "nested_structs_arrays", "Nested structs, arrays, per-block buffers", SSBOLayoutCase::BUFFERMODE_PER_BLOCK, allStdLayouts|unused|allBasicTypes|matFlags|unsized|FEATURE_STRUCTS|FEATURE_ARRAYS|FEATURE_ARRAYS_OF_ARRAYS, 25, 150);
+ createRandomCaseGroup(randomGroup, m_testCtx, "nested_structs_instance_arrays", "Nested structs, instance arrays, per-block buffers", SSBOLayoutCase::BUFFERMODE_PER_BLOCK, allStdLayouts|unused|allBasicTypes|matFlags|unsized|FEATURE_STRUCTS|FEATURE_INSTANCE_ARRAYS, 25, 125);
+ createRandomCaseGroup(randomGroup, m_testCtx, "nested_structs_arrays_instance_arrays", "Nested structs, instance arrays, per-block buffers", SSBOLayoutCase::BUFFERMODE_PER_BLOCK, allStdLayouts|unused|allBasicTypes|matFlags|unsized|FEATURE_STRUCTS|FEATURE_ARRAYS|FEATURE_ARRAYS_OF_ARRAYS|FEATURE_INSTANCE_ARRAYS, 25, 175);
+ createRandomCaseGroup(randomGroup, m_testCtx, "all_per_block_buffers", "All random features, per-block buffers", SSBOLayoutCase::BUFFERMODE_PER_BLOCK, allButRelaxed, 50, 200);
+ createRandomCaseGroup(randomGroup, m_testCtx, "all_shared_buffer", "All random features, shared buffer", SSBOLayoutCase::BUFFERMODE_SINGLE, allButRelaxed, 50, 250);
- createRandomCaseGroup(randomGroup, m_testCtx, "all_per_block_buffers", "All random features, per-block buffers", SSBOLayoutCase::BUFFERMODE_PER_BLOCK, ~0u, 50, 200);
- createRandomCaseGroup(randomGroup, m_testCtx, "all_shared_buffer", "All random features, shared buffer", SSBOLayoutCase::BUFFERMODE_SINGLE, ~0u, 50, 250);
+ createRandomCaseGroup(randomGroup, m_testCtx, "relaxed", "VK_KHR_relaxed_block_layout", SSBOLayoutCase::BUFFERMODE_SINGLE, allRelaxed, 100, deInt32Hash(313));
}
}
diff --git a/external/vulkancts/modules/vulkan/synchronization/vktSynchronizationCrossInstanceSharingTests.cpp b/external/vulkancts/modules/vulkan/synchronization/vktSynchronizationCrossInstanceSharingTests.cpp
index 784e6ca..b3c8cf9 100644
--- a/external/vulkancts/modules/vulkan/synchronization/vktSynchronizationCrossInstanceSharingTests.cpp
+++ b/external/vulkancts/modules/vulkan/synchronization/vktSynchronizationCrossInstanceSharingTests.cpp
@@ -351,6 +351,7 @@
vk::VkDevice device,
vk::VkBuffer buffer,
vk::VkExternalMemoryHandleTypeFlagBitsKHR externalType,
+ deUint32& exportedMemoryTypeIndex,
bool dedicated,
bool getMemReq2Supported)
{
@@ -390,7 +391,7 @@
}
- vk::Move<vk::VkDeviceMemory> memory = allocateExportableMemory(vkd, device, memoryRequirements, externalType, dedicated ? buffer : (vk::VkBuffer)0);
+ vk::Move<vk::VkDeviceMemory> memory = allocateExportableMemory(vkd, device, memoryRequirements, externalType, dedicated ? buffer : (vk::VkBuffer)0, exportedMemoryTypeIndex);
VK_CHECK(vkd.bindBufferMemory(device, buffer, *memory, 0u));
return de::MovePtr<vk::Allocation>(new SimpleAllocation(vkd, device, memory.disown()));
@@ -400,6 +401,7 @@
vk::VkDevice device,
vk::VkImage image,
vk::VkExternalMemoryHandleTypeFlagBitsKHR externalType,
+ deUint32& exportedMemoryTypeIndex,
bool dedicated,
bool getMemReq2Supported)
{
@@ -430,13 +432,15 @@
if (!dedicated && dedicatedRequirements.requiresDedicatedAllocation)
TCU_THROW(NotSupportedError, "Memory requires dedicated allocation");
+
+ memoryRequirements = requirements.memoryRequirements;
}
else
{
vkd.getImageMemoryRequirements(device, image, &memoryRequirements);
}
- vk::Move<vk::VkDeviceMemory> memory = allocateExportableMemory(vkd, device, memoryRequirements, externalType, dedicated ? image : (vk::VkImage)0);
+ vk::Move<vk::VkDeviceMemory> memory = allocateExportableMemory(vkd, device, memoryRequirements, externalType, dedicated ? image : (vk::VkImage)0, exportedMemoryTypeIndex);
VK_CHECK(vkd.bindImageMemory(device, image, *memory, 0u));
return de::MovePtr<vk::Allocation>(new SimpleAllocation(vkd, device, memory.disown()));
@@ -449,6 +453,7 @@
const OperationSupport& readOp,
const OperationSupport& writeOp,
vk::VkExternalMemoryHandleTypeFlagBitsKHR externalType,
+ deUint32& exportedMemoryTypeIndex,
bool dedicated,
bool getMemReq2Supported)
{
@@ -503,7 +508,7 @@
};
vk::Move<vk::VkImage> image = vk::createImage(vkd, device, &createInfo);
- de::MovePtr<vk::Allocation> allocation = allocateAndBindMemory(vkd, device, *image, externalType, dedicated, getMemReq2Supported);
+ de::MovePtr<vk::Allocation> allocation = allocateAndBindMemory(vkd, device, *image, externalType, exportedMemoryTypeIndex, dedicated, getMemReq2Supported);
return de::MovePtr<Resource>(new Resource(image, allocation, extent, resourceDesc.imageType, resourceDesc.imageFormat, subresourceRange, subresourceLayers));
}
@@ -531,7 +536,7 @@
&queueFamilyIndices[0]
};
vk::Move<vk::VkBuffer> buffer = vk::createBuffer(vkd, device, &createInfo);
- de::MovePtr<vk::Allocation> allocation = allocateAndBindMemory(vkd, device, *buffer, externalType, dedicated, getMemReq2Supported);
+ de::MovePtr<vk::Allocation> allocation = allocateAndBindMemory(vkd, device, *buffer, externalType, exportedMemoryTypeIndex, dedicated, getMemReq2Supported);
return de::MovePtr<Resource>(new Resource(resourceDesc.type, buffer, allocation, offset, size));
}
@@ -542,12 +547,13 @@
vk::VkBuffer buffer,
NativeHandle& nativeHandle,
vk::VkExternalMemoryHandleTypeFlagBitsKHR externalType,
+ deUint32 exportedMemoryTypeIndex,
bool dedicated)
{
const vk::VkMemoryRequirements requirements = vk::getBufferMemoryRequirements(vkd, device, buffer);
vk::Move<vk::VkDeviceMemory> memory = dedicated
- ? importDedicatedMemory(vkd, device, buffer, requirements, externalType, nativeHandle)
- : importMemory(vkd, device, requirements, externalType, nativeHandle);
+ ? importDedicatedMemory(vkd, device, buffer, requirements, externalType, exportedMemoryTypeIndex, nativeHandle)
+ : importMemory(vkd, device, requirements, externalType, exportedMemoryTypeIndex, nativeHandle);
VK_CHECK(vkd.bindBufferMemory(device, buffer, *memory, 0u));
@@ -559,12 +565,13 @@
vk::VkImage image,
NativeHandle& nativeHandle,
vk::VkExternalMemoryHandleTypeFlagBitsKHR externalType,
+ deUint32 exportedMemoryTypeIndex,
bool dedicated)
{
const vk::VkMemoryRequirements requirements = vk::getImageMemoryRequirements(vkd, device, image);
vk::Move<vk::VkDeviceMemory> memory = dedicated
- ? importDedicatedMemory(vkd, device, image, requirements, externalType, nativeHandle)
- : importMemory(vkd, device, requirements, externalType, nativeHandle);
+ ? importDedicatedMemory(vkd, device, image, requirements, externalType, exportedMemoryTypeIndex, nativeHandle)
+ : importMemory(vkd, device, requirements, externalType, exportedMemoryTypeIndex, nativeHandle);
VK_CHECK(vkd.bindImageMemory(device, image, *memory, 0u));
return de::MovePtr<vk::Allocation>(new SimpleAllocation(vkd, device, memory.disown()));
@@ -578,6 +585,7 @@
const OperationSupport& writeOp,
NativeHandle& nativeHandle,
vk::VkExternalMemoryHandleTypeFlagBitsKHR externalType,
+ deUint32 exportedMemoryTypeIndex,
bool dedicated)
{
if (resourceDesc.type == RESOURCE_TYPE_IMAGE)
@@ -631,7 +639,7 @@
};
vk::Move<vk::VkImage> image = vk::createImage(vkd, device, &createInfo);
- de::MovePtr<vk::Allocation> allocation = importAndBindMemory(vkd, device, *image, nativeHandle, externalType, dedicated);
+ de::MovePtr<vk::Allocation> allocation = importAndBindMemory(vkd, device, *image, nativeHandle, externalType, exportedMemoryTypeIndex, dedicated);
return de::MovePtr<Resource>(new Resource(image, allocation, extent, resourceDesc.imageType, resourceDesc.imageFormat, subresourceRange, subresourceLayers));
}
@@ -659,7 +667,7 @@
&queueFamilyIndices[0]
};
vk::Move<vk::VkBuffer> buffer = vk::createBuffer(vkd, device, &createInfo);
- de::MovePtr<vk::Allocation> allocation = importAndBindMemory(vkd, device, *buffer, nativeHandle, externalType, dedicated);
+ de::MovePtr<vk::Allocation> allocation = importAndBindMemory(vkd, device, *buffer, nativeHandle, externalType, exportedMemoryTypeIndex, dedicated);
return de::MovePtr<Resource>(new Resource(resourceDesc.type, buffer, allocation, offset, size));
}
@@ -849,7 +857,7 @@
, m_physicalDeviceA (getPhysicalDevice(m_vkiA, *m_instanceA, context.getTestContext().getCommandLine()))
, m_queueFamiliesA (vk::getPhysicalDeviceQueueFamilyProperties(m_vkiA, m_physicalDeviceA))
, m_queueFamilyIndicesA (getFamilyIndices(m_queueFamiliesA))
- , m_getMemReq2Supported (de::contains(context.getInstanceExtensions().begin(), context.getInstanceExtensions().end(), "VK_KHR_get_memory_requirements2"))
+ , m_getMemReq2Supported (de::contains(context.getDeviceExtensions().begin(), context.getDeviceExtensions().end(), "VK_KHR_get_memory_requirements2"))
, m_deviceA (createDevice(m_vkiA, m_physicalDeviceA, m_config.memoryHandleType, m_config.semaphoreHandleType, m_config.dedicated, m_getMemReq2Supported))
, m_vkdA (m_vkiA, *m_deviceA)
@@ -925,6 +933,11 @@
if ((externalProperties.externalMemoryProperties.externalMemoryFeatures & vk::VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR) == 0)
TCU_THROW(NotSupportedError, "Importing image resource not supported");
+
+ if (!m_config.dedicated && (externalProperties.externalMemoryProperties.externalMemoryFeatures & vk::VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR) != 0)
+ {
+ TCU_THROW(NotSupportedError, "Handle requires dedicated allocation, but test uses suballocated memory");
+ }
}
else
{
@@ -950,6 +963,11 @@
if ((properties.externalMemoryProperties.externalMemoryFeatures & vk::VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR) == 0
|| (properties.externalMemoryProperties.externalMemoryFeatures & vk::VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR) == 0)
TCU_THROW(NotSupportedError, "Exporting and importing memory type not supported");
+
+ if (!m_config.dedicated && (properties.externalMemoryProperties.externalMemoryFeatures & vk::VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR) != 0)
+ {
+ TCU_THROW(NotSupportedError, "Handle requires dedicated allocation, but test uses suballocated memory");
+ }
}
// Check semaphore support
@@ -986,12 +1004,13 @@
const vk::Unique<vk::VkSemaphore> semaphoreA (createExportableSemaphore(m_vkdA, *m_deviceA, m_semaphoreHandleType));
const vk::Unique<vk::VkSemaphore> semaphoreB (createSemaphore(m_vkdB, *m_deviceB));
- const de::UniquePtr<Resource> resourceA (createResource(m_vkdA, *m_deviceA, m_config.resource, m_queueFamilyIndicesA, *m_supportReadOp, *m_supportWriteOp, m_memoryHandleType, m_config.dedicated, m_getMemReq2Supported));
+ deUint32 exportedMemoryTypeIndex = ~0U;
+ const de::UniquePtr<Resource> resourceA (createResource(m_vkdA, *m_deviceA, m_config.resource, m_queueFamilyIndicesA, *m_supportReadOp, *m_supportWriteOp, m_memoryHandleType, exportedMemoryTypeIndex, m_config.dedicated, m_getMemReq2Supported));
NativeHandle nativeMemoryHandle;
getMemoryNative(m_vkdA, *m_deviceA, resourceA->getMemory(), m_memoryHandleType, nativeMemoryHandle);
- const de::UniquePtr<Resource> resourceB (importResource(m_vkdB, *m_deviceB, m_config.resource, m_queueFamilyIndicesB, *m_supportReadOp, *m_supportWriteOp, nativeMemoryHandle, m_memoryHandleType, m_config.dedicated));
+ const de::UniquePtr<Resource> resourceB (importResource(m_vkdB, *m_deviceB, m_config.resource, m_queueFamilyIndicesB, *m_supportReadOp, *m_supportWriteOp, nativeMemoryHandle, m_memoryHandleType, exportedMemoryTypeIndex, m_config.dedicated));
try
{
diff --git a/external/vulkancts/modules/vulkan/vktExternalMemoryUtil.cpp b/external/vulkancts/modules/vulkan/vktExternalMemoryUtil.cpp
index 315f707..070249c 100644
--- a/external/vulkancts/modules/vulkan/vktExternalMemoryUtil.cpp
+++ b/external/vulkancts/modules/vulkan/vktExternalMemoryUtil.cpp
@@ -757,8 +757,10 @@
vk::VkDevice device,
const vk::VkMemoryRequirements& requirements,
vk::VkExternalMemoryHandleTypeFlagBitsKHR externalType,
- vk::VkBuffer buffer)
+ vk::VkBuffer buffer,
+ deUint32& exportedMemoryTypeIndex)
{
+ exportedMemoryTypeIndex = chooseMemoryType(requirements.memoryTypeBits);
const vk::VkMemoryDedicatedAllocateInfoKHR dedicatedInfo =
{
vk::VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR,
@@ -778,7 +780,7 @@
vk::VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,
&exportInfo,
requirements.size,
- chooseMemoryType(requirements.memoryTypeBits)
+ exportedMemoryTypeIndex
};
return vk::allocateMemory(vkd, device, &info);
}
@@ -787,8 +789,10 @@
vk::VkDevice device,
const vk::VkMemoryRequirements& requirements,
vk::VkExternalMemoryHandleTypeFlagBitsKHR externalType,
- vk::VkImage image)
+ vk::VkImage image,
+ deUint32& exportedMemoryTypeIndex)
{
+ exportedMemoryTypeIndex = chooseMemoryType(requirements.memoryTypeBits);
const vk::VkMemoryDedicatedAllocateInfoKHR dedicatedInfo =
{
vk::VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR,
@@ -808,7 +812,7 @@
vk::VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,
&exportInfo,
requirements.size,
- chooseMemoryType(requirements.memoryTypeBits)
+ exportedMemoryTypeIndex
};
return vk::allocateMemory(vkd, device, &info);
}
@@ -820,7 +824,8 @@
const vk::VkMemoryRequirements& requirements,
vk::VkExternalMemoryHandleTypeFlagBitsKHR externalType,
bool hostVisible,
- vk::VkBuffer buffer)
+ vk::VkBuffer buffer,
+ deUint32& exportedMemoryTypeIndex)
{
const vk::VkPhysicalDeviceMemoryProperties properties = vk::getPhysicalDeviceMemoryProperties(vki, physicalDevice);
@@ -850,6 +855,8 @@
requirements.size,
memoryTypeIndex
};
+
+ exportedMemoryTypeIndex = memoryTypeIndex;
return vk::allocateMemory(vkd, device, &info);
}
}
@@ -863,6 +870,7 @@
vk::VkImage image,
const vk::VkMemoryRequirements& requirements,
vk::VkExternalMemoryHandleTypeFlagBitsKHR externalType,
+ deUint32 memoryTypeIndex,
NativeHandle& handle)
{
const bool isDedicated = !!buffer || !!image;
@@ -890,7 +898,7 @@
vk::VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,
(isDedicated ? (const void*)&dedicatedInfo : (const void*)&importInfo),
requirements.size,
- chooseMemoryType(requirements.memoryTypeBits)
+ (memoryTypeIndex == ~0U) ? chooseMemoryType(requirements.memoryTypeBits) : memoryTypeIndex
};
vk::Move<vk::VkDeviceMemory> memory (vk::allocateMemory(vkd, device, &info));
@@ -921,7 +929,7 @@
vk::VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,
(isDedicated ? (const void*)&dedicatedInfo : (const void*)&importInfo),
requirements.size,
- chooseMemoryType(requirements.memoryTypeBits)
+ (memoryTypeIndex == ~0U) ? chooseMemoryType(requirements.memoryTypeBits) : memoryTypeIndex
};
vk::Move<vk::VkDeviceMemory> memory (vk::allocateMemory(vkd, device, &info));
@@ -940,9 +948,10 @@
vk::VkDevice device,
const vk::VkMemoryRequirements& requirements,
vk::VkExternalMemoryHandleTypeFlagBitsKHR externalType,
+ deUint32 memoryTypeIndex,
NativeHandle& handle)
{
- return importMemory(vkd, device, (vk::VkBuffer)0, (vk::VkImage)0, requirements, externalType, handle);
+ return importMemory(vkd, device, (vk::VkBuffer)0, (vk::VkImage)0, requirements, externalType, memoryTypeIndex, handle);
}
vk::Move<vk::VkDeviceMemory> importDedicatedMemory (const vk::DeviceInterface& vkd,
@@ -950,9 +959,10 @@
vk::VkBuffer buffer,
const vk::VkMemoryRequirements& requirements,
vk::VkExternalMemoryHandleTypeFlagBitsKHR externalType,
+ deUint32 memoryTypeIndex,
NativeHandle& handle)
{
- return importMemory(vkd, device, buffer, (vk::VkImage)0, requirements, externalType, handle);
+ return importMemory(vkd, device, buffer, (vk::VkImage)0, requirements, externalType, memoryTypeIndex, handle);
}
vk::Move<vk::VkDeviceMemory> importDedicatedMemory (const vk::DeviceInterface& vkd,
@@ -960,9 +970,10 @@
vk::VkImage image,
const vk::VkMemoryRequirements& requirements,
vk::VkExternalMemoryHandleTypeFlagBitsKHR externalType,
+ deUint32 memoryTypeIndex,
NativeHandle& handle)
{
- return importMemory(vkd, device, (vk::VkBuffer)0, image, requirements, externalType, handle);
+ return importMemory(vkd, device, (vk::VkBuffer)0, image, requirements, externalType, memoryTypeIndex, handle);
}
vk::Move<vk::VkBuffer> createExternalBuffer (const vk::DeviceInterface& vkd,
diff --git a/external/vulkancts/modules/vulkan/vktExternalMemoryUtil.hpp b/external/vulkancts/modules/vulkan/vktExternalMemoryUtil.hpp
index 4bc1098..7180a8c 100644
--- a/external/vulkancts/modules/vulkan/vktExternalMemoryUtil.hpp
+++ b/external/vulkancts/modules/vulkan/vktExternalMemoryUtil.hpp
@@ -160,21 +160,24 @@
vk::Move<vk::VkDeviceMemory> allocateExportableMemory (const vk::DeviceInterface& vkd,
vk::VkDevice device,
const vk::VkMemoryRequirements& requirements,
- vk::VkExternalMemoryHandleTypeFlagBitsKHR externalType);
+ vk::VkExternalMemoryHandleTypeFlagBitsKHR externalType,
+ deUint32& exportedMemoryTypeIndex);
// If buffer is not null use dedicated allocation
vk::Move<vk::VkDeviceMemory> allocateExportableMemory (const vk::DeviceInterface& vkd,
vk::VkDevice device,
const vk::VkMemoryRequirements& requirements,
vk::VkExternalMemoryHandleTypeFlagBitsKHR externalType,
- vk::VkBuffer buffer);
+ vk::VkBuffer buffer,
+ deUint32& exportedMemoryTypeIndex);
// If image is not null use dedicated allocation
vk::Move<vk::VkDeviceMemory> allocateExportableMemory (const vk::DeviceInterface& vkd,
vk::VkDevice device,
const vk::VkMemoryRequirements& requirements,
vk::VkExternalMemoryHandleTypeFlagBitsKHR externalType,
- vk::VkImage image);
+ vk::VkImage image,
+ deUint32& exportedMemoryTypeIndex);
// \note hostVisible argument is strict. Setting it to false will cause NotSupportedError to be thrown if non-host visible memory doesn't exist.
// If buffer is not null use dedicated allocation
@@ -185,12 +188,14 @@
const vk::VkMemoryRequirements& requirements,
vk::VkExternalMemoryHandleTypeFlagBitsKHR externalType,
bool hostVisible,
- vk::VkBuffer buffer);
+ vk::VkBuffer buffer,
+ deUint32& exportedMemoryTypeIndex);
vk::Move<vk::VkDeviceMemory> importMemory (const vk::DeviceInterface& vkd,
vk::VkDevice device,
const vk::VkMemoryRequirements& requirements,
vk::VkExternalMemoryHandleTypeFlagBitsKHR externalType,
+ deUint32 memoryTypeIndex,
NativeHandle& handle);
vk::Move<vk::VkDeviceMemory> importDedicatedMemory (const vk::DeviceInterface& vkd,
@@ -198,6 +203,7 @@
vk::VkBuffer buffer,
const vk::VkMemoryRequirements& requirements,
vk::VkExternalMemoryHandleTypeFlagBitsKHR externalType,
+ deUint32 memoryTypeIndex,
NativeHandle& handle);
vk::Move<vk::VkDeviceMemory> importDedicatedMemory (const vk::DeviceInterface& vkd,
@@ -205,6 +211,7 @@
vk::VkImage image,
const vk::VkMemoryRequirements& requirements,
vk::VkExternalMemoryHandleTypeFlagBitsKHR externalType,
+ deUint32 memoryTypeIndex,
NativeHandle& handle);
vk::Move<vk::VkBuffer> createExternalBuffer (const vk::DeviceInterface& vkd,
diff --git a/external/vulkancts/modules/vulkan/wsi/vktWsiDisplayTimingTests.cpp b/external/vulkancts/modules/vulkan/wsi/vktWsiDisplayTimingTests.cpp
index 8c2c405..3b2a793 100644
--- a/external/vulkancts/modules/vulkan/wsi/vktWsiDisplayTimingTests.cpp
+++ b/external/vulkancts/modules/vulkan/wsi/vktWsiDisplayTimingTests.cpp
@@ -486,7 +486,7 @@
vk::VK_ATTACHMENT_LOAD_OP_DONT_CARE,
vk::VK_ATTACHMENT_STORE_OP_DONT_CARE,
- vk::VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
+ vk::VK_IMAGE_LAYOUT_UNDEFINED,
vk::VK_IMAGE_LAYOUT_PRESENT_SRC_KHR
}
};
diff --git a/external/vulkancts/modules/vulkan/wsi/vktWsiIncrementalPresentTests.cpp b/external/vulkancts/modules/vulkan/wsi/vktWsiIncrementalPresentTests.cpp
index 2079577..b72a910 100644
--- a/external/vulkancts/modules/vulkan/wsi/vktWsiIncrementalPresentTests.cpp
+++ b/external/vulkancts/modules/vulkan/wsi/vktWsiIncrementalPresentTests.cpp
@@ -363,6 +363,8 @@
vk::VkRenderPass renderPass,
vk::VkFramebuffer framebuffer,
vk::VkPipeline pipeline,
+ vk::VkImage image,
+ bool isFirst,
size_t imageNextFrame,
size_t currentFrame,
deUint32 imageWidth,
@@ -389,6 +391,31 @@
VK_CHECK(vkd.beginCommandBuffer(*commandBuffer, &beginInfo));
{
+ const vk::VkImageSubresourceRange subRange =
+ {
+ vk::VK_IMAGE_ASPECT_COLOR_BIT,
+ 0,
+ 1,
+ 0,
+ 1
+ };
+ const vk::VkImageMemoryBarrier barrier =
+ {
+ vk::VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,
+ DE_NULL,
+ vk::VK_ACCESS_TRANSFER_WRITE_BIT,
+ vk::VK_ACCESS_TRANSFER_READ_BIT | vk::VK_ACCESS_TRANSFER_WRITE_BIT,
+ isFirst ? vk::VK_IMAGE_LAYOUT_UNDEFINED : vk::VK_IMAGE_LAYOUT_PRESENT_SRC_KHR,
+ vk::VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
+ VK_QUEUE_FAMILY_IGNORED,
+ VK_QUEUE_FAMILY_IGNORED,
+ image,
+ subRange
+ };
+ vkd.cmdPipelineBarrier(*commandBuffer, vk::VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, vk::VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, 0, 0, DE_NULL, 0, DE_NULL, 1, &barrier);
+ }
+
+ {
const vk::VkClearValue clearValue = vk::makeClearValueColorF32(0.25f, 0.50f, 0.75f, 1.00f);
const vk::VkRenderPassBeginInfo renderPassBeginInfo =
{
@@ -901,6 +928,7 @@
vk::Move<vk::VkSwapchainKHR> m_swapchain;
std::vector<vk::VkImage> m_swapchainImages;
std::vector<size_t> m_imageNextFrames;
+ std::vector<bool> m_isFirst;
vk::Move<vk::VkRenderPass> m_renderPass;
vk::Move<vk::VkPipeline> m_pipeline;
@@ -1079,6 +1107,7 @@
m_swapchainImages = vk::wsi::getSwapchainImages(m_vkd, *m_device, *m_swapchain);
m_imageNextFrames.resize(m_swapchainImages.size(), 0);
+ m_isFirst.resize(m_swapchainImages.size(), true);
m_renderPass = createRenderPass(m_vkd, *m_device, imageFormat);
m_pipeline = createPipeline(m_vkd, *m_device, *m_renderPass, *m_pipelineLayout, *m_vertexShaderModule, *m_fragmentShaderModule, imageWidth, imageHeight);
@@ -1130,6 +1159,7 @@
m_swapchainImages.clear();
m_imageNextFrames.clear();
+ m_isFirst.clear();
m_swapchain = vk::Move<vk::VkSwapchainKHR>();
m_renderPass = vk::Move<vk::VkRenderPass>();
@@ -1165,8 +1195,9 @@
// Create command buffer
{
imageNextFrame = m_imageNextFrames[imageIndex];
- m_commandBuffers[m_frameNdx % m_commandBuffers.size()] = createCommandBuffer(m_vkd, *m_device, *m_commandPool, *m_pipelineLayout, *m_renderPass, m_framebuffers[imageIndex], *m_pipeline, imageNextFrame, m_frameNdx, width, height).disown();
+ m_commandBuffers[m_frameNdx % m_commandBuffers.size()] = createCommandBuffer(m_vkd, *m_device, *m_commandPool, *m_pipelineLayout, *m_renderPass, m_framebuffers[imageIndex], *m_pipeline, m_swapchainImages[imageIndex], m_isFirst[imageIndex], imageNextFrame, m_frameNdx, width, height).disown();
m_imageNextFrames[imageIndex] = m_frameNdx + 1;
+ m_isFirst[imageIndex] = false;
}
// Submit command buffer
diff --git a/external/vulkancts/mustpass/1.0.2/src/master.txt b/external/vulkancts/mustpass/1.0.2/src/master.txt
index 703358a..2e27f3f 100644
--- a/external/vulkancts/mustpass/1.0.2/src/master.txt
+++ b/external/vulkancts/mustpass/1.0.2/src/master.txt
@@ -167977,6 +167977,10 @@
dEQP-VK.ssbo.layout.multi_basic_types.per_block_buffer.std430_comp_access
dEQP-VK.ssbo.layout.multi_basic_types.per_block_buffer.std430_instance_array
dEQP-VK.ssbo.layout.multi_basic_types.per_block_buffer.std430_instance_array_comp_access
+dEQP-VK.ssbo.layout.multi_basic_types.per_block_buffer.relaxed_block
+dEQP-VK.ssbo.layout.multi_basic_types.per_block_buffer.relaxed_block_comp_access
+dEQP-VK.ssbo.layout.multi_basic_types.per_block_buffer.relaxed_block_instance_array
+dEQP-VK.ssbo.layout.multi_basic_types.per_block_buffer.relaxed_block_instance_array_comp_access
dEQP-VK.ssbo.layout.multi_basic_types.single_buffer.std140
dEQP-VK.ssbo.layout.multi_basic_types.single_buffer.std140_comp_access
dEQP-VK.ssbo.layout.multi_basic_types.single_buffer.std140_instance_array
@@ -167985,6 +167989,10 @@
dEQP-VK.ssbo.layout.multi_basic_types.single_buffer.std430_comp_access
dEQP-VK.ssbo.layout.multi_basic_types.single_buffer.std430_instance_array
dEQP-VK.ssbo.layout.multi_basic_types.single_buffer.std430_instance_array_comp_access
+dEQP-VK.ssbo.layout.multi_basic_types.single_buffer.relaxed_block
+dEQP-VK.ssbo.layout.multi_basic_types.single_buffer.relaxed_block_comp_access
+dEQP-VK.ssbo.layout.multi_basic_types.single_buffer.relaxed_block_instance_array
+dEQP-VK.ssbo.layout.multi_basic_types.single_buffer.relaxed_block_instance_array_comp_access
dEQP-VK.ssbo.layout.multi_nested_struct.per_block_buffer.std140
dEQP-VK.ssbo.layout.multi_nested_struct.per_block_buffer.std140_comp_access
dEQP-VK.ssbo.layout.multi_nested_struct.per_block_buffer.std140_instance_array
@@ -168376,6 +168384,106 @@
dEQP-VK.ssbo.layout.random.all_shared_buffer.47
dEQP-VK.ssbo.layout.random.all_shared_buffer.48
dEQP-VK.ssbo.layout.random.all_shared_buffer.49
+dEQP-VK.ssbo.layout.random.relaxed.0
+dEQP-VK.ssbo.layout.random.relaxed.1
+dEQP-VK.ssbo.layout.random.relaxed.2
+dEQP-VK.ssbo.layout.random.relaxed.3
+dEQP-VK.ssbo.layout.random.relaxed.4
+dEQP-VK.ssbo.layout.random.relaxed.5
+dEQP-VK.ssbo.layout.random.relaxed.6
+dEQP-VK.ssbo.layout.random.relaxed.7
+dEQP-VK.ssbo.layout.random.relaxed.8
+dEQP-VK.ssbo.layout.random.relaxed.9
+dEQP-VK.ssbo.layout.random.relaxed.10
+dEQP-VK.ssbo.layout.random.relaxed.11
+dEQP-VK.ssbo.layout.random.relaxed.12
+dEQP-VK.ssbo.layout.random.relaxed.13
+dEQP-VK.ssbo.layout.random.relaxed.14
+dEQP-VK.ssbo.layout.random.relaxed.15
+dEQP-VK.ssbo.layout.random.relaxed.16
+dEQP-VK.ssbo.layout.random.relaxed.17
+dEQP-VK.ssbo.layout.random.relaxed.18
+dEQP-VK.ssbo.layout.random.relaxed.19
+dEQP-VK.ssbo.layout.random.relaxed.20
+dEQP-VK.ssbo.layout.random.relaxed.21
+dEQP-VK.ssbo.layout.random.relaxed.22
+dEQP-VK.ssbo.layout.random.relaxed.23
+dEQP-VK.ssbo.layout.random.relaxed.24
+dEQP-VK.ssbo.layout.random.relaxed.25
+dEQP-VK.ssbo.layout.random.relaxed.26
+dEQP-VK.ssbo.layout.random.relaxed.27
+dEQP-VK.ssbo.layout.random.relaxed.28
+dEQP-VK.ssbo.layout.random.relaxed.29
+dEQP-VK.ssbo.layout.random.relaxed.30
+dEQP-VK.ssbo.layout.random.relaxed.31
+dEQP-VK.ssbo.layout.random.relaxed.32
+dEQP-VK.ssbo.layout.random.relaxed.33
+dEQP-VK.ssbo.layout.random.relaxed.34
+dEQP-VK.ssbo.layout.random.relaxed.35
+dEQP-VK.ssbo.layout.random.relaxed.36
+dEQP-VK.ssbo.layout.random.relaxed.37
+dEQP-VK.ssbo.layout.random.relaxed.38
+dEQP-VK.ssbo.layout.random.relaxed.39
+dEQP-VK.ssbo.layout.random.relaxed.40
+dEQP-VK.ssbo.layout.random.relaxed.41
+dEQP-VK.ssbo.layout.random.relaxed.42
+dEQP-VK.ssbo.layout.random.relaxed.43
+dEQP-VK.ssbo.layout.random.relaxed.44
+dEQP-VK.ssbo.layout.random.relaxed.45
+dEQP-VK.ssbo.layout.random.relaxed.46
+dEQP-VK.ssbo.layout.random.relaxed.47
+dEQP-VK.ssbo.layout.random.relaxed.48
+dEQP-VK.ssbo.layout.random.relaxed.49
+dEQP-VK.ssbo.layout.random.relaxed.50
+dEQP-VK.ssbo.layout.random.relaxed.51
+dEQP-VK.ssbo.layout.random.relaxed.52
+dEQP-VK.ssbo.layout.random.relaxed.53
+dEQP-VK.ssbo.layout.random.relaxed.54
+dEQP-VK.ssbo.layout.random.relaxed.55
+dEQP-VK.ssbo.layout.random.relaxed.56
+dEQP-VK.ssbo.layout.random.relaxed.57
+dEQP-VK.ssbo.layout.random.relaxed.58
+dEQP-VK.ssbo.layout.random.relaxed.59
+dEQP-VK.ssbo.layout.random.relaxed.60
+dEQP-VK.ssbo.layout.random.relaxed.61
+dEQP-VK.ssbo.layout.random.relaxed.62
+dEQP-VK.ssbo.layout.random.relaxed.63
+dEQP-VK.ssbo.layout.random.relaxed.64
+dEQP-VK.ssbo.layout.random.relaxed.65
+dEQP-VK.ssbo.layout.random.relaxed.66
+dEQP-VK.ssbo.layout.random.relaxed.67
+dEQP-VK.ssbo.layout.random.relaxed.68
+dEQP-VK.ssbo.layout.random.relaxed.69
+dEQP-VK.ssbo.layout.random.relaxed.70
+dEQP-VK.ssbo.layout.random.relaxed.71
+dEQP-VK.ssbo.layout.random.relaxed.72
+dEQP-VK.ssbo.layout.random.relaxed.73
+dEQP-VK.ssbo.layout.random.relaxed.74
+dEQP-VK.ssbo.layout.random.relaxed.75
+dEQP-VK.ssbo.layout.random.relaxed.76
+dEQP-VK.ssbo.layout.random.relaxed.77
+dEQP-VK.ssbo.layout.random.relaxed.78
+dEQP-VK.ssbo.layout.random.relaxed.79
+dEQP-VK.ssbo.layout.random.relaxed.80
+dEQP-VK.ssbo.layout.random.relaxed.81
+dEQP-VK.ssbo.layout.random.relaxed.82
+dEQP-VK.ssbo.layout.random.relaxed.83
+dEQP-VK.ssbo.layout.random.relaxed.84
+dEQP-VK.ssbo.layout.random.relaxed.85
+dEQP-VK.ssbo.layout.random.relaxed.86
+dEQP-VK.ssbo.layout.random.relaxed.87
+dEQP-VK.ssbo.layout.random.relaxed.88
+dEQP-VK.ssbo.layout.random.relaxed.89
+dEQP-VK.ssbo.layout.random.relaxed.90
+dEQP-VK.ssbo.layout.random.relaxed.91
+dEQP-VK.ssbo.layout.random.relaxed.92
+dEQP-VK.ssbo.layout.random.relaxed.93
+dEQP-VK.ssbo.layout.random.relaxed.94
+dEQP-VK.ssbo.layout.random.relaxed.95
+dEQP-VK.ssbo.layout.random.relaxed.96
+dEQP-VK.ssbo.layout.random.relaxed.97
+dEQP-VK.ssbo.layout.random.relaxed.98
+dEQP-VK.ssbo.layout.random.relaxed.99
dEQP-VK.query_pool.occlusion_query.basic_conservative
dEQP-VK.query_pool.occlusion_query.basic_precise
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_32_wait_queue_without_availability_draw_points
diff --git a/external/vulkancts/mustpass/1.0.2/vk-default.txt b/external/vulkancts/mustpass/1.0.2/vk-default.txt
index 703358a..2e27f3f 100644
--- a/external/vulkancts/mustpass/1.0.2/vk-default.txt
+++ b/external/vulkancts/mustpass/1.0.2/vk-default.txt
@@ -167977,6 +167977,10 @@
dEQP-VK.ssbo.layout.multi_basic_types.per_block_buffer.std430_comp_access
dEQP-VK.ssbo.layout.multi_basic_types.per_block_buffer.std430_instance_array
dEQP-VK.ssbo.layout.multi_basic_types.per_block_buffer.std430_instance_array_comp_access
+dEQP-VK.ssbo.layout.multi_basic_types.per_block_buffer.relaxed_block
+dEQP-VK.ssbo.layout.multi_basic_types.per_block_buffer.relaxed_block_comp_access
+dEQP-VK.ssbo.layout.multi_basic_types.per_block_buffer.relaxed_block_instance_array
+dEQP-VK.ssbo.layout.multi_basic_types.per_block_buffer.relaxed_block_instance_array_comp_access
dEQP-VK.ssbo.layout.multi_basic_types.single_buffer.std140
dEQP-VK.ssbo.layout.multi_basic_types.single_buffer.std140_comp_access
dEQP-VK.ssbo.layout.multi_basic_types.single_buffer.std140_instance_array
@@ -167985,6 +167989,10 @@
dEQP-VK.ssbo.layout.multi_basic_types.single_buffer.std430_comp_access
dEQP-VK.ssbo.layout.multi_basic_types.single_buffer.std430_instance_array
dEQP-VK.ssbo.layout.multi_basic_types.single_buffer.std430_instance_array_comp_access
+dEQP-VK.ssbo.layout.multi_basic_types.single_buffer.relaxed_block
+dEQP-VK.ssbo.layout.multi_basic_types.single_buffer.relaxed_block_comp_access
+dEQP-VK.ssbo.layout.multi_basic_types.single_buffer.relaxed_block_instance_array
+dEQP-VK.ssbo.layout.multi_basic_types.single_buffer.relaxed_block_instance_array_comp_access
dEQP-VK.ssbo.layout.multi_nested_struct.per_block_buffer.std140
dEQP-VK.ssbo.layout.multi_nested_struct.per_block_buffer.std140_comp_access
dEQP-VK.ssbo.layout.multi_nested_struct.per_block_buffer.std140_instance_array
@@ -168376,6 +168384,106 @@
dEQP-VK.ssbo.layout.random.all_shared_buffer.47
dEQP-VK.ssbo.layout.random.all_shared_buffer.48
dEQP-VK.ssbo.layout.random.all_shared_buffer.49
+dEQP-VK.ssbo.layout.random.relaxed.0
+dEQP-VK.ssbo.layout.random.relaxed.1
+dEQP-VK.ssbo.layout.random.relaxed.2
+dEQP-VK.ssbo.layout.random.relaxed.3
+dEQP-VK.ssbo.layout.random.relaxed.4
+dEQP-VK.ssbo.layout.random.relaxed.5
+dEQP-VK.ssbo.layout.random.relaxed.6
+dEQP-VK.ssbo.layout.random.relaxed.7
+dEQP-VK.ssbo.layout.random.relaxed.8
+dEQP-VK.ssbo.layout.random.relaxed.9
+dEQP-VK.ssbo.layout.random.relaxed.10
+dEQP-VK.ssbo.layout.random.relaxed.11
+dEQP-VK.ssbo.layout.random.relaxed.12
+dEQP-VK.ssbo.layout.random.relaxed.13
+dEQP-VK.ssbo.layout.random.relaxed.14
+dEQP-VK.ssbo.layout.random.relaxed.15
+dEQP-VK.ssbo.layout.random.relaxed.16
+dEQP-VK.ssbo.layout.random.relaxed.17
+dEQP-VK.ssbo.layout.random.relaxed.18
+dEQP-VK.ssbo.layout.random.relaxed.19
+dEQP-VK.ssbo.layout.random.relaxed.20
+dEQP-VK.ssbo.layout.random.relaxed.21
+dEQP-VK.ssbo.layout.random.relaxed.22
+dEQP-VK.ssbo.layout.random.relaxed.23
+dEQP-VK.ssbo.layout.random.relaxed.24
+dEQP-VK.ssbo.layout.random.relaxed.25
+dEQP-VK.ssbo.layout.random.relaxed.26
+dEQP-VK.ssbo.layout.random.relaxed.27
+dEQP-VK.ssbo.layout.random.relaxed.28
+dEQP-VK.ssbo.layout.random.relaxed.29
+dEQP-VK.ssbo.layout.random.relaxed.30
+dEQP-VK.ssbo.layout.random.relaxed.31
+dEQP-VK.ssbo.layout.random.relaxed.32
+dEQP-VK.ssbo.layout.random.relaxed.33
+dEQP-VK.ssbo.layout.random.relaxed.34
+dEQP-VK.ssbo.layout.random.relaxed.35
+dEQP-VK.ssbo.layout.random.relaxed.36
+dEQP-VK.ssbo.layout.random.relaxed.37
+dEQP-VK.ssbo.layout.random.relaxed.38
+dEQP-VK.ssbo.layout.random.relaxed.39
+dEQP-VK.ssbo.layout.random.relaxed.40
+dEQP-VK.ssbo.layout.random.relaxed.41
+dEQP-VK.ssbo.layout.random.relaxed.42
+dEQP-VK.ssbo.layout.random.relaxed.43
+dEQP-VK.ssbo.layout.random.relaxed.44
+dEQP-VK.ssbo.layout.random.relaxed.45
+dEQP-VK.ssbo.layout.random.relaxed.46
+dEQP-VK.ssbo.layout.random.relaxed.47
+dEQP-VK.ssbo.layout.random.relaxed.48
+dEQP-VK.ssbo.layout.random.relaxed.49
+dEQP-VK.ssbo.layout.random.relaxed.50
+dEQP-VK.ssbo.layout.random.relaxed.51
+dEQP-VK.ssbo.layout.random.relaxed.52
+dEQP-VK.ssbo.layout.random.relaxed.53
+dEQP-VK.ssbo.layout.random.relaxed.54
+dEQP-VK.ssbo.layout.random.relaxed.55
+dEQP-VK.ssbo.layout.random.relaxed.56
+dEQP-VK.ssbo.layout.random.relaxed.57
+dEQP-VK.ssbo.layout.random.relaxed.58
+dEQP-VK.ssbo.layout.random.relaxed.59
+dEQP-VK.ssbo.layout.random.relaxed.60
+dEQP-VK.ssbo.layout.random.relaxed.61
+dEQP-VK.ssbo.layout.random.relaxed.62
+dEQP-VK.ssbo.layout.random.relaxed.63
+dEQP-VK.ssbo.layout.random.relaxed.64
+dEQP-VK.ssbo.layout.random.relaxed.65
+dEQP-VK.ssbo.layout.random.relaxed.66
+dEQP-VK.ssbo.layout.random.relaxed.67
+dEQP-VK.ssbo.layout.random.relaxed.68
+dEQP-VK.ssbo.layout.random.relaxed.69
+dEQP-VK.ssbo.layout.random.relaxed.70
+dEQP-VK.ssbo.layout.random.relaxed.71
+dEQP-VK.ssbo.layout.random.relaxed.72
+dEQP-VK.ssbo.layout.random.relaxed.73
+dEQP-VK.ssbo.layout.random.relaxed.74
+dEQP-VK.ssbo.layout.random.relaxed.75
+dEQP-VK.ssbo.layout.random.relaxed.76
+dEQP-VK.ssbo.layout.random.relaxed.77
+dEQP-VK.ssbo.layout.random.relaxed.78
+dEQP-VK.ssbo.layout.random.relaxed.79
+dEQP-VK.ssbo.layout.random.relaxed.80
+dEQP-VK.ssbo.layout.random.relaxed.81
+dEQP-VK.ssbo.layout.random.relaxed.82
+dEQP-VK.ssbo.layout.random.relaxed.83
+dEQP-VK.ssbo.layout.random.relaxed.84
+dEQP-VK.ssbo.layout.random.relaxed.85
+dEQP-VK.ssbo.layout.random.relaxed.86
+dEQP-VK.ssbo.layout.random.relaxed.87
+dEQP-VK.ssbo.layout.random.relaxed.88
+dEQP-VK.ssbo.layout.random.relaxed.89
+dEQP-VK.ssbo.layout.random.relaxed.90
+dEQP-VK.ssbo.layout.random.relaxed.91
+dEQP-VK.ssbo.layout.random.relaxed.92
+dEQP-VK.ssbo.layout.random.relaxed.93
+dEQP-VK.ssbo.layout.random.relaxed.94
+dEQP-VK.ssbo.layout.random.relaxed.95
+dEQP-VK.ssbo.layout.random.relaxed.96
+dEQP-VK.ssbo.layout.random.relaxed.97
+dEQP-VK.ssbo.layout.random.relaxed.98
+dEQP-VK.ssbo.layout.random.relaxed.99
dEQP-VK.query_pool.occlusion_query.basic_conservative
dEQP-VK.query_pool.occlusion_query.basic_precise
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_32_wait_queue_without_availability_draw_points
diff --git a/external/vulkancts/mustpass/1.0.3/vk-default.txt b/external/vulkancts/mustpass/1.0.3/vk-default.txt
index 310f248..1d0f1b5 100644
--- a/external/vulkancts/mustpass/1.0.3/vk-default.txt
+++ b/external/vulkancts/mustpass/1.0.3/vk-default.txt
@@ -192594,6 +192594,10 @@
dEQP-VK.ssbo.layout.multi_basic_types.per_block_buffer.std430_comp_access
dEQP-VK.ssbo.layout.multi_basic_types.per_block_buffer.std430_instance_array
dEQP-VK.ssbo.layout.multi_basic_types.per_block_buffer.std430_instance_array_comp_access
+dEQP-VK.ssbo.layout.multi_basic_types.per_block_buffer.relaxed_block
+dEQP-VK.ssbo.layout.multi_basic_types.per_block_buffer.relaxed_block_comp_access
+dEQP-VK.ssbo.layout.multi_basic_types.per_block_buffer.relaxed_block_instance_array
+dEQP-VK.ssbo.layout.multi_basic_types.per_block_buffer.relaxed_block_instance_array_comp_access
dEQP-VK.ssbo.layout.multi_basic_types.single_buffer.std140
dEQP-VK.ssbo.layout.multi_basic_types.single_buffer.std140_comp_access
dEQP-VK.ssbo.layout.multi_basic_types.single_buffer.std140_instance_array
@@ -192602,6 +192606,10 @@
dEQP-VK.ssbo.layout.multi_basic_types.single_buffer.std430_comp_access
dEQP-VK.ssbo.layout.multi_basic_types.single_buffer.std430_instance_array
dEQP-VK.ssbo.layout.multi_basic_types.single_buffer.std430_instance_array_comp_access
+dEQP-VK.ssbo.layout.multi_basic_types.single_buffer.relaxed_block
+dEQP-VK.ssbo.layout.multi_basic_types.single_buffer.relaxed_block_comp_access
+dEQP-VK.ssbo.layout.multi_basic_types.single_buffer.relaxed_block_instance_array
+dEQP-VK.ssbo.layout.multi_basic_types.single_buffer.relaxed_block_instance_array_comp_access
dEQP-VK.ssbo.layout.multi_nested_struct.per_block_buffer.std140
dEQP-VK.ssbo.layout.multi_nested_struct.per_block_buffer.std140_comp_access
dEQP-VK.ssbo.layout.multi_nested_struct.per_block_buffer.std140_instance_array
@@ -192993,6 +193001,106 @@
dEQP-VK.ssbo.layout.random.all_shared_buffer.47
dEQP-VK.ssbo.layout.random.all_shared_buffer.48
dEQP-VK.ssbo.layout.random.all_shared_buffer.49
+dEQP-VK.ssbo.layout.random.relaxed.0
+dEQP-VK.ssbo.layout.random.relaxed.1
+dEQP-VK.ssbo.layout.random.relaxed.2
+dEQP-VK.ssbo.layout.random.relaxed.3
+dEQP-VK.ssbo.layout.random.relaxed.4
+dEQP-VK.ssbo.layout.random.relaxed.5
+dEQP-VK.ssbo.layout.random.relaxed.6
+dEQP-VK.ssbo.layout.random.relaxed.7
+dEQP-VK.ssbo.layout.random.relaxed.8
+dEQP-VK.ssbo.layout.random.relaxed.9
+dEQP-VK.ssbo.layout.random.relaxed.10
+dEQP-VK.ssbo.layout.random.relaxed.11
+dEQP-VK.ssbo.layout.random.relaxed.12
+dEQP-VK.ssbo.layout.random.relaxed.13
+dEQP-VK.ssbo.layout.random.relaxed.14
+dEQP-VK.ssbo.layout.random.relaxed.15
+dEQP-VK.ssbo.layout.random.relaxed.16
+dEQP-VK.ssbo.layout.random.relaxed.17
+dEQP-VK.ssbo.layout.random.relaxed.18
+dEQP-VK.ssbo.layout.random.relaxed.19
+dEQP-VK.ssbo.layout.random.relaxed.20
+dEQP-VK.ssbo.layout.random.relaxed.21
+dEQP-VK.ssbo.layout.random.relaxed.22
+dEQP-VK.ssbo.layout.random.relaxed.23
+dEQP-VK.ssbo.layout.random.relaxed.24
+dEQP-VK.ssbo.layout.random.relaxed.25
+dEQP-VK.ssbo.layout.random.relaxed.26
+dEQP-VK.ssbo.layout.random.relaxed.27
+dEQP-VK.ssbo.layout.random.relaxed.28
+dEQP-VK.ssbo.layout.random.relaxed.29
+dEQP-VK.ssbo.layout.random.relaxed.30
+dEQP-VK.ssbo.layout.random.relaxed.31
+dEQP-VK.ssbo.layout.random.relaxed.32
+dEQP-VK.ssbo.layout.random.relaxed.33
+dEQP-VK.ssbo.layout.random.relaxed.34
+dEQP-VK.ssbo.layout.random.relaxed.35
+dEQP-VK.ssbo.layout.random.relaxed.36
+dEQP-VK.ssbo.layout.random.relaxed.37
+dEQP-VK.ssbo.layout.random.relaxed.38
+dEQP-VK.ssbo.layout.random.relaxed.39
+dEQP-VK.ssbo.layout.random.relaxed.40
+dEQP-VK.ssbo.layout.random.relaxed.41
+dEQP-VK.ssbo.layout.random.relaxed.42
+dEQP-VK.ssbo.layout.random.relaxed.43
+dEQP-VK.ssbo.layout.random.relaxed.44
+dEQP-VK.ssbo.layout.random.relaxed.45
+dEQP-VK.ssbo.layout.random.relaxed.46
+dEQP-VK.ssbo.layout.random.relaxed.47
+dEQP-VK.ssbo.layout.random.relaxed.48
+dEQP-VK.ssbo.layout.random.relaxed.49
+dEQP-VK.ssbo.layout.random.relaxed.50
+dEQP-VK.ssbo.layout.random.relaxed.51
+dEQP-VK.ssbo.layout.random.relaxed.52
+dEQP-VK.ssbo.layout.random.relaxed.53
+dEQP-VK.ssbo.layout.random.relaxed.54
+dEQP-VK.ssbo.layout.random.relaxed.55
+dEQP-VK.ssbo.layout.random.relaxed.56
+dEQP-VK.ssbo.layout.random.relaxed.57
+dEQP-VK.ssbo.layout.random.relaxed.58
+dEQP-VK.ssbo.layout.random.relaxed.59
+dEQP-VK.ssbo.layout.random.relaxed.60
+dEQP-VK.ssbo.layout.random.relaxed.61
+dEQP-VK.ssbo.layout.random.relaxed.62
+dEQP-VK.ssbo.layout.random.relaxed.63
+dEQP-VK.ssbo.layout.random.relaxed.64
+dEQP-VK.ssbo.layout.random.relaxed.65
+dEQP-VK.ssbo.layout.random.relaxed.66
+dEQP-VK.ssbo.layout.random.relaxed.67
+dEQP-VK.ssbo.layout.random.relaxed.68
+dEQP-VK.ssbo.layout.random.relaxed.69
+dEQP-VK.ssbo.layout.random.relaxed.70
+dEQP-VK.ssbo.layout.random.relaxed.71
+dEQP-VK.ssbo.layout.random.relaxed.72
+dEQP-VK.ssbo.layout.random.relaxed.73
+dEQP-VK.ssbo.layout.random.relaxed.74
+dEQP-VK.ssbo.layout.random.relaxed.75
+dEQP-VK.ssbo.layout.random.relaxed.76
+dEQP-VK.ssbo.layout.random.relaxed.77
+dEQP-VK.ssbo.layout.random.relaxed.78
+dEQP-VK.ssbo.layout.random.relaxed.79
+dEQP-VK.ssbo.layout.random.relaxed.80
+dEQP-VK.ssbo.layout.random.relaxed.81
+dEQP-VK.ssbo.layout.random.relaxed.82
+dEQP-VK.ssbo.layout.random.relaxed.83
+dEQP-VK.ssbo.layout.random.relaxed.84
+dEQP-VK.ssbo.layout.random.relaxed.85
+dEQP-VK.ssbo.layout.random.relaxed.86
+dEQP-VK.ssbo.layout.random.relaxed.87
+dEQP-VK.ssbo.layout.random.relaxed.88
+dEQP-VK.ssbo.layout.random.relaxed.89
+dEQP-VK.ssbo.layout.random.relaxed.90
+dEQP-VK.ssbo.layout.random.relaxed.91
+dEQP-VK.ssbo.layout.random.relaxed.92
+dEQP-VK.ssbo.layout.random.relaxed.93
+dEQP-VK.ssbo.layout.random.relaxed.94
+dEQP-VK.ssbo.layout.random.relaxed.95
+dEQP-VK.ssbo.layout.random.relaxed.96
+dEQP-VK.ssbo.layout.random.relaxed.97
+dEQP-VK.ssbo.layout.random.relaxed.98
+dEQP-VK.ssbo.layout.random.relaxed.99
dEQP-VK.ssbo.unsized_array_length.float_no_offset_explicit_size
dEQP-VK.ssbo.unsized_array_length.float_no_offset_whole_size
dEQP-VK.ssbo.unsized_array_length.float_offset_explicit_size
diff --git a/framework/egl/egluStaticES20Library.inl b/framework/egl/egluStaticES20Library.inl
index fcfa2d9..cd0d593 100644
--- a/framework/egl/egluStaticES20Library.inl
+++ b/framework/egl/egluStaticES20Library.inl
@@ -1,7 +1,7 @@
/* WARNING: This is auto-generated file. Do not modify, since changes will
* be lost! Modify the generating script instead.
*
- * Generated from Khronos GL API description (gl.xml) revision 97558118d4a8ab2af749867899555273c20827ce.
+ * Generated from Khronos GL API description (gl.xml) revision a3ee0ed08111d44ac3cb863d9e3e81a7c28f9d90.
*/
{ "glActiveTexture", (deFunctionPtr)glActiveTexture },
{ "glAttachShader", (deFunctionPtr)glAttachShader },
diff --git a/framework/egl/egluStaticES30Library.inl b/framework/egl/egluStaticES30Library.inl
index 28e49a7..561f7ac 100644
--- a/framework/egl/egluStaticES30Library.inl
+++ b/framework/egl/egluStaticES30Library.inl
@@ -1,7 +1,7 @@
/* WARNING: This is auto-generated file. Do not modify, since changes will
* be lost! Modify the generating script instead.
*
- * Generated from Khronos GL API description (gl.xml) revision 97558118d4a8ab2af749867899555273c20827ce.
+ * Generated from Khronos GL API description (gl.xml) revision a3ee0ed08111d44ac3cb863d9e3e81a7c28f9d90.
*/
{ "glActiveTexture", (deFunctionPtr)glActiveTexture },
{ "glAttachShader", (deFunctionPtr)glAttachShader },
diff --git a/framework/opengl/gluCallLogUtil.inl b/framework/opengl/gluCallLogUtil.inl
index 8d720ef..7a1d9d1 100644
--- a/framework/opengl/gluCallLogUtil.inl
+++ b/framework/opengl/gluCallLogUtil.inl
@@ -1,7 +1,7 @@
/* WARNING: This is auto-generated file. Do not modify, since changes will
* be lost! Modify the generating script instead.
*
- * Generated from Khronos GL API description (gl.xml) revision 97558118d4a8ab2af749867899555273c20827ce.
+ * Generated from Khronos GL API description (gl.xml) revision a3ee0ed08111d44ac3cb863d9e3e81a7c28f9d90.
*/
int getTextureParamNumArgs (int pname)
diff --git a/framework/opengl/gluCallLogWrapper.inl b/framework/opengl/gluCallLogWrapper.inl
index e9ca3cd..a1cd2ea 100644
--- a/framework/opengl/gluCallLogWrapper.inl
+++ b/framework/opengl/gluCallLogWrapper.inl
@@ -1,7 +1,7 @@
/* WARNING: This is auto-generated file. Do not modify, since changes will
* be lost! Modify the generating script instead.
*
- * Generated from Khronos GL API description (gl.xml) revision 97558118d4a8ab2af749867899555273c20827ce.
+ * Generated from Khronos GL API description (gl.xml) revision a3ee0ed08111d44ac3cb863d9e3e81a7c28f9d90.
*/
void CallLogWrapper::glActiveShaderProgram (glw::GLuint pipeline, glw::GLuint program)
@@ -3424,11 +3424,11 @@
m_gl.matrixTranslatefEXT(mode, x, y, z);
}
-void CallLogWrapper::glMaxShaderCompilerThreadsARB (glw::GLuint count)
+void CallLogWrapper::glMaxShaderCompilerThreadsKHR (glw::GLuint count)
{
if (m_enableLog)
- m_log << TestLog::Message << "glMaxShaderCompilerThreadsARB(" << count << ");" << TestLog::EndMessage;
- m_gl.maxShaderCompilerThreadsARB(count);
+ m_log << TestLog::Message << "glMaxShaderCompilerThreadsKHR(" << count << ");" << TestLog::EndMessage;
+ m_gl.maxShaderCompilerThreadsKHR(count);
}
void CallLogWrapper::glMemoryBarrier (glw::GLbitfield barriers)
@@ -3466,11 +3466,11 @@
m_gl.multiDrawArraysIndirect(mode, indirect, drawcount, stride);
}
-void CallLogWrapper::glMultiDrawArraysIndirectCountARB (glw::GLenum mode, glw::GLintptr indirect, glw::GLintptr drawcount, glw::GLsizei maxdrawcount, glw::GLsizei stride)
+void CallLogWrapper::glMultiDrawArraysIndirectCount (glw::GLenum mode, const void *indirect, glw::GLintptr drawcount, glw::GLsizei maxdrawcount, glw::GLsizei stride)
{
if (m_enableLog)
- m_log << TestLog::Message << "glMultiDrawArraysIndirectCountARB(" << toHex(mode) << ", " << indirect << ", " << drawcount << ", " << maxdrawcount << ", " << stride << ");" << TestLog::EndMessage;
- m_gl.multiDrawArraysIndirectCountARB(mode, indirect, drawcount, maxdrawcount, stride);
+ m_log << TestLog::Message << "glMultiDrawArraysIndirectCount(" << toHex(mode) << ", " << indirect << ", " << drawcount << ", " << maxdrawcount << ", " << stride << ");" << TestLog::EndMessage;
+ m_gl.multiDrawArraysIndirectCount(mode, indirect, drawcount, maxdrawcount, stride);
}
void CallLogWrapper::glMultiDrawElements (glw::GLenum mode, const glw::GLsizei *count, glw::GLenum type, const void *const*indices, glw::GLsizei drawcount)
@@ -3494,11 +3494,11 @@
m_gl.multiDrawElementsIndirect(mode, type, indirect, drawcount, stride);
}
-void CallLogWrapper::glMultiDrawElementsIndirectCountARB (glw::GLenum mode, glw::GLenum type, glw::GLintptr indirect, glw::GLintptr drawcount, glw::GLsizei maxdrawcount, glw::GLsizei stride)
+void CallLogWrapper::glMultiDrawElementsIndirectCount (glw::GLenum mode, glw::GLenum type, const void *indirect, glw::GLintptr drawcount, glw::GLsizei maxdrawcount, glw::GLsizei stride)
{
if (m_enableLog)
- m_log << TestLog::Message << "glMultiDrawElementsIndirectCountARB(" << toHex(mode) << ", " << toHex(type) << ", " << indirect << ", " << drawcount << ", " << maxdrawcount << ", " << stride << ");" << TestLog::EndMessage;
- m_gl.multiDrawElementsIndirectCountARB(mode, type, indirect, drawcount, maxdrawcount, stride);
+ m_log << TestLog::Message << "glMultiDrawElementsIndirectCount(" << toHex(mode) << ", " << toHex(type) << ", " << indirect << ", " << drawcount << ", " << maxdrawcount << ", " << stride << ");" << TestLog::EndMessage;
+ m_gl.multiDrawElementsIndirectCount(mode, type, indirect, drawcount, maxdrawcount, stride);
}
void CallLogWrapper::glMultiTexBufferEXT (glw::GLenum texunit, glw::GLenum target, glw::GLenum internalformat, glw::GLuint buffer)
@@ -4047,11 +4047,11 @@
m_gl.polygonOffset(factor, units);
}
-void CallLogWrapper::glPolygonOffsetClampEXT (glw::GLfloat factor, glw::GLfloat units, glw::GLfloat clamp)
+void CallLogWrapper::glPolygonOffsetClamp (glw::GLfloat factor, glw::GLfloat units, glw::GLfloat clamp)
{
if (m_enableLog)
- m_log << TestLog::Message << "glPolygonOffsetClampEXT(" << factor << ", " << units << ", " << clamp << ");" << TestLog::EndMessage;
- m_gl.polygonOffsetClampEXT(factor, units, clamp);
+ m_log << TestLog::Message << "glPolygonOffsetClamp(" << factor << ", " << units << ", " << clamp << ");" << TestLog::EndMessage;
+ m_gl.polygonOffsetClamp(factor, units, clamp);
}
void CallLogWrapper::glPopDebugGroup (void)
@@ -4754,6 +4754,13 @@
m_gl.shaderStorageBlockBinding(program, storageBlockIndex, storageBlockBinding);
}
+void CallLogWrapper::glSpecializeShader (glw::GLuint shader, const glw::GLchar *pEntryPoint, glw::GLuint numSpecializationConstants, const glw::GLuint *pConstantIndex, const glw::GLuint *pConstantValue)
+{
+ if (m_enableLog)
+ m_log << TestLog::Message << "glSpecializeShader(" << shader << ", " << getStringStr(pEntryPoint) << ", " << numSpecializationConstants << ", " << toHex(reinterpret_cast<deUintptr>(static_cast<const void*>(pConstantIndex))) << ", " << toHex(reinterpret_cast<deUintptr>(static_cast<const void*>(pConstantValue))) << ");" << TestLog::EndMessage;
+ m_gl.specializeShader(shader, pEntryPoint, numSpecializationConstants, pConstantIndex, pConstantValue);
+}
+
void CallLogWrapper::glStencilFunc (glw::GLenum func, glw::GLint ref, glw::GLuint mask)
{
if (m_enableLog)
diff --git a/framework/opengl/gluCallLogWrapperApi.inl b/framework/opengl/gluCallLogWrapperApi.inl
index fa824f5..062f1c7 100644
--- a/framework/opengl/gluCallLogWrapperApi.inl
+++ b/framework/opengl/gluCallLogWrapperApi.inl
@@ -1,7 +1,7 @@
/* WARNING: This is auto-generated file. Do not modify, since changes will
* be lost! Modify the generating script instead.
*
- * Generated from Khronos GL API description (gl.xml) revision 97558118d4a8ab2af749867899555273c20827ce.
+ * Generated from Khronos GL API description (gl.xml) revision a3ee0ed08111d44ac3cb863d9e3e81a7c28f9d90.
*/
void glActiveShaderProgram (glw::GLuint pipeline, glw::GLuint program);
void glActiveTexture (glw::GLenum texture);
@@ -458,17 +458,17 @@
void glMatrixScalefEXT (glw::GLenum mode, glw::GLfloat x, glw::GLfloat y, glw::GLfloat z);
void glMatrixTranslatedEXT (glw::GLenum mode, glw::GLdouble x, glw::GLdouble y, glw::GLdouble z);
void glMatrixTranslatefEXT (glw::GLenum mode, glw::GLfloat x, glw::GLfloat y, glw::GLfloat z);
-void glMaxShaderCompilerThreadsARB (glw::GLuint count);
+void glMaxShaderCompilerThreadsKHR (glw::GLuint count);
void glMemoryBarrier (glw::GLbitfield barriers);
void glMemoryBarrierByRegion (glw::GLbitfield barriers);
void glMinSampleShading (glw::GLfloat value);
void glMultiDrawArrays (glw::GLenum mode, const glw::GLint *first, const glw::GLsizei *count, glw::GLsizei drawcount);
void glMultiDrawArraysIndirect (glw::GLenum mode, const void *indirect, glw::GLsizei drawcount, glw::GLsizei stride);
-void glMultiDrawArraysIndirectCountARB (glw::GLenum mode, glw::GLintptr indirect, glw::GLintptr drawcount, glw::GLsizei maxdrawcount, glw::GLsizei stride);
+void glMultiDrawArraysIndirectCount (glw::GLenum mode, const void *indirect, glw::GLintptr drawcount, glw::GLsizei maxdrawcount, glw::GLsizei stride);
void glMultiDrawElements (glw::GLenum mode, const glw::GLsizei *count, glw::GLenum type, const void *const*indices, glw::GLsizei drawcount);
void glMultiDrawElementsBaseVertex (glw::GLenum mode, const glw::GLsizei *count, glw::GLenum type, const void *const*indices, glw::GLsizei drawcount, const glw::GLint *basevertex);
void glMultiDrawElementsIndirect (glw::GLenum mode, glw::GLenum type, const void *indirect, glw::GLsizei drawcount, glw::GLsizei stride);
-void glMultiDrawElementsIndirectCountARB (glw::GLenum mode, glw::GLenum type, glw::GLintptr indirect, glw::GLintptr drawcount, glw::GLsizei maxdrawcount, glw::GLsizei stride);
+void glMultiDrawElementsIndirectCount (glw::GLenum mode, glw::GLenum type, const void *indirect, glw::GLintptr drawcount, glw::GLsizei maxdrawcount, glw::GLsizei stride);
void glMultiTexBufferEXT (glw::GLenum texunit, glw::GLenum target, glw::GLenum internalformat, glw::GLuint buffer);
void glMultiTexCoordPointerEXT (glw::GLenum texunit, glw::GLint size, glw::GLenum type, glw::GLsizei stride, const void *pointer);
void glMultiTexEnvfEXT (glw::GLenum texunit, glw::GLenum target, glw::GLenum pname, glw::GLfloat param);
@@ -547,7 +547,7 @@
void glPointSize (glw::GLfloat size);
void glPolygonMode (glw::GLenum face, glw::GLenum mode);
void glPolygonOffset (glw::GLfloat factor, glw::GLfloat units);
-void glPolygonOffsetClampEXT (glw::GLfloat factor, glw::GLfloat units, glw::GLfloat clamp);
+void glPolygonOffsetClamp (glw::GLfloat factor, glw::GLfloat units, glw::GLfloat clamp);
void glPopDebugGroup (void);
void glPopGroupMarkerEXT (void);
void glPrimitiveBoundingBox (glw::GLfloat minX, glw::GLfloat minY, glw::GLfloat minZ, glw::GLfloat minW, glw::GLfloat maxX, glw::GLfloat maxY, glw::GLfloat maxZ, glw::GLfloat maxW);
@@ -648,6 +648,7 @@
void glShaderBinary (glw::GLsizei count, const glw::GLuint *shaders, glw::GLenum binaryformat, const void *binary, glw::GLsizei length);
void glShaderSource (glw::GLuint shader, glw::GLsizei count, const glw::GLchar *const*string, const glw::GLint *length);
void glShaderStorageBlockBinding (glw::GLuint program, glw::GLuint storageBlockIndex, glw::GLuint storageBlockBinding);
+void glSpecializeShader (glw::GLuint shader, const glw::GLchar *pEntryPoint, glw::GLuint numSpecializationConstants, const glw::GLuint *pConstantIndex, const glw::GLuint *pConstantValue);
void glStencilFunc (glw::GLenum func, glw::GLint ref, glw::GLuint mask);
void glStencilFuncSeparate (glw::GLenum face, glw::GLenum func, glw::GLint ref, glw::GLuint mask);
void glStencilMask (glw::GLuint mask);
diff --git a/framework/opengl/gluES3PlusWrapperFuncs.inl b/framework/opengl/gluES3PlusWrapperFuncs.inl
index cede76a..1b7f7f2 100644
--- a/framework/opengl/gluES3PlusWrapperFuncs.inl
+++ b/framework/opengl/gluES3PlusWrapperFuncs.inl
@@ -1,7 +1,7 @@
/* WARNING: This is auto-generated file. Do not modify, since changes will
* be lost! Modify the generating script instead.
*
- * Generated from Khronos GL API description (gl.xml) revision 97558118d4a8ab2af749867899555273c20827ce.
+ * Generated from Khronos GL API description (gl.xml) revision a3ee0ed08111d44ac3cb863d9e3e81a7c28f9d90.
*/
dst->activeShaderProgram = src.activeShaderProgram;
dst->activeTexture = src.activeTexture;
diff --git a/framework/opengl/gluQueryUtil.inl b/framework/opengl/gluQueryUtil.inl
index 45e4858..237178c 100644
--- a/framework/opengl/gluQueryUtil.inl
+++ b/framework/opengl/gluQueryUtil.inl
@@ -1,7 +1,7 @@
/* WARNING: This is auto-generated file. Do not modify, since changes will
* be lost! Modify the generating script instead.
*
- * Generated from Khronos GL API description (gl.xml) revision 97558118d4a8ab2af749867899555273c20827ce.
+ * Generated from Khronos GL API description (gl.xml) revision a3ee0ed08111d44ac3cb863d9e3e81a7c28f9d90.
*/
int getBasicQueryNumArgsOut (int pname)
diff --git a/framework/opengl/gluStrUtil.inl b/framework/opengl/gluStrUtil.inl
index 9707cf4..cc73cc2 100644
--- a/framework/opengl/gluStrUtil.inl
+++ b/framework/opengl/gluStrUtil.inl
@@ -1,7 +1,7 @@
/* WARNING: This is auto-generated file. Do not modify, since changes will
* be lost! Modify the generating script instead.
*
- * Generated from Khronos GL API description (gl.xml) revision 97558118d4a8ab2af749867899555273c20827ce.
+ * Generated from Khronos GL API description (gl.xml) revision a3ee0ed08111d44ac3cb863d9e3e81a7c28f9d90.
*/
const char* getErrorName (int value)
diff --git a/framework/opengl/gluStrUtilPrototypes.inl b/framework/opengl/gluStrUtilPrototypes.inl
index 0842272..1d53004 100644
--- a/framework/opengl/gluStrUtilPrototypes.inl
+++ b/framework/opengl/gluStrUtilPrototypes.inl
@@ -1,7 +1,7 @@
/* WARNING: This is auto-generated file. Do not modify, since changes will
* be lost! Modify the generating script instead.
*
- * Generated from Khronos GL API description (gl.xml) revision 97558118d4a8ab2af749867899555273c20827ce.
+ * Generated from Khronos GL API description (gl.xml) revision a3ee0ed08111d44ac3cb863d9e3e81a7c28f9d90.
*/
const char* getErrorName (int value);
const char* getTypeName (int value);
diff --git a/framework/opengl/wrapper/glwApi.inl b/framework/opengl/wrapper/glwApi.inl
index 1000cf0..94c3be7 100644
--- a/framework/opengl/wrapper/glwApi.inl
+++ b/framework/opengl/wrapper/glwApi.inl
@@ -1,7 +1,7 @@
/* WARNING: This is auto-generated file. Do not modify, since changes will
* be lost! Modify the generating script instead.
*
- * Generated from Khronos GL API description (gl.xml) revision 97558118d4a8ab2af749867899555273c20827ce.
+ * Generated from Khronos GL API description (gl.xml) revision a3ee0ed08111d44ac3cb863d9e3e81a7c28f9d90.
*/
#define glActiveShaderProgram glwActiveShaderProgram
#define glActiveTexture glwActiveTexture
@@ -458,17 +458,17 @@
#define glMatrixScalefEXT glwMatrixScalefEXT
#define glMatrixTranslatedEXT glwMatrixTranslatedEXT
#define glMatrixTranslatefEXT glwMatrixTranslatefEXT
-#define glMaxShaderCompilerThreadsARB glwMaxShaderCompilerThreadsARB
+#define glMaxShaderCompilerThreadsKHR glwMaxShaderCompilerThreadsKHR
#define glMemoryBarrier glwMemoryBarrier
#define glMemoryBarrierByRegion glwMemoryBarrierByRegion
#define glMinSampleShading glwMinSampleShading
#define glMultiDrawArrays glwMultiDrawArrays
#define glMultiDrawArraysIndirect glwMultiDrawArraysIndirect
-#define glMultiDrawArraysIndirectCountARB glwMultiDrawArraysIndirectCountARB
+#define glMultiDrawArraysIndirectCount glwMultiDrawArraysIndirectCount
#define glMultiDrawElements glwMultiDrawElements
#define glMultiDrawElementsBaseVertex glwMultiDrawElementsBaseVertex
#define glMultiDrawElementsIndirect glwMultiDrawElementsIndirect
-#define glMultiDrawElementsIndirectCountARB glwMultiDrawElementsIndirectCountARB
+#define glMultiDrawElementsIndirectCount glwMultiDrawElementsIndirectCount
#define glMultiTexBufferEXT glwMultiTexBufferEXT
#define glMultiTexCoordPointerEXT glwMultiTexCoordPointerEXT
#define glMultiTexEnvfEXT glwMultiTexEnvfEXT
@@ -547,7 +547,7 @@
#define glPointSize glwPointSize
#define glPolygonMode glwPolygonMode
#define glPolygonOffset glwPolygonOffset
-#define glPolygonOffsetClampEXT glwPolygonOffsetClampEXT
+#define glPolygonOffsetClamp glwPolygonOffsetClamp
#define glPopDebugGroup glwPopDebugGroup
#define glPopGroupMarkerEXT glwPopGroupMarkerEXT
#define glPrimitiveBoundingBox glwPrimitiveBoundingBox
@@ -648,6 +648,7 @@
#define glShaderBinary glwShaderBinary
#define glShaderSource glwShaderSource
#define glShaderStorageBlockBinding glwShaderStorageBlockBinding
+#define glSpecializeShader glwSpecializeShader
#define glStencilFunc glwStencilFunc
#define glStencilFuncSeparate glwStencilFuncSeparate
#define glStencilMask glwStencilMask
@@ -1347,17 +1348,17 @@
void glwMatrixScalefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
void glwMatrixTranslatedEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
void glwMatrixTranslatefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
-void glwMaxShaderCompilerThreadsARB (GLuint count);
+void glwMaxShaderCompilerThreadsKHR (GLuint count);
void glwMemoryBarrier (GLbitfield barriers);
void glwMemoryBarrierByRegion (GLbitfield barriers);
void glwMinSampleShading (GLfloat value);
void glwMultiDrawArrays (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount);
void glwMultiDrawArraysIndirect (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride);
-void glwMultiDrawArraysIndirectCountARB (GLenum mode, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
+void glwMultiDrawArraysIndirectCount (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
void glwMultiDrawElements (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount);
void glwMultiDrawElementsBaseVertex (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex);
void glwMultiDrawElementsIndirect (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride);
-void glwMultiDrawElementsIndirectCountARB (GLenum mode, GLenum type, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
+void glwMultiDrawElementsIndirectCount (GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
void glwMultiTexBufferEXT (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer);
void glwMultiTexCoordPointerEXT (GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer);
void glwMultiTexEnvfEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
@@ -1436,7 +1437,7 @@
void glwPointSize (GLfloat size);
void glwPolygonMode (GLenum face, GLenum mode);
void glwPolygonOffset (GLfloat factor, GLfloat units);
-void glwPolygonOffsetClampEXT (GLfloat factor, GLfloat units, GLfloat clamp);
+void glwPolygonOffsetClamp (GLfloat factor, GLfloat units, GLfloat clamp);
void glwPopDebugGroup ();
void glwPopGroupMarkerEXT ();
void glwPrimitiveBoundingBox (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW);
@@ -1537,6 +1538,7 @@
void glwShaderBinary (GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length);
void glwShaderSource (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length);
void glwShaderStorageBlockBinding (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding);
+void glwSpecializeShader (GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue);
void glwStencilFunc (GLenum func, GLint ref, GLuint mask);
void glwStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask);
void glwStencilMask (GLuint mask);
diff --git a/framework/opengl/wrapper/glwEnums.inl b/framework/opengl/wrapper/glwEnums.inl
index 933ea17..e8c9d0b 100644
--- a/framework/opengl/wrapper/glwEnums.inl
+++ b/framework/opengl/wrapper/glwEnums.inl
@@ -1,7 +1,7 @@
/* WARNING: This is auto-generated file. Do not modify, since changes will
* be lost! Modify the generating script instead.
*
- * Generated from Khronos GL API description (gl.xml) revision 97558118d4a8ab2af749867899555273c20827ce.
+ * Generated from Khronos GL API description (gl.xml) revision a3ee0ed08111d44ac3cb863d9e3e81a7c28f9d90.
*/
#define GL_DEPTH_BUFFER_BIT 0x00000100
#define GL_STENCIL_BUFFER_BIT 0x00000400
@@ -10,6 +10,7 @@
#define GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002
#define GL_CONTEXT_FLAG_DEBUG_BIT_KHR 0x00000002
#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT 0x00000004
+#define GL_CONTEXT_FLAG_NO_ERROR_BIT 0x00000008
#define GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR 0x00000008
#define GL_CONTEXT_CORE_PROFILE_BIT 0x00000001
#define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002
@@ -358,7 +359,9 @@
#define GL_BGRA_EXT 0x80E1
#define GL_MAX_ELEMENTS_VERTICES 0x80E8
#define GL_MAX_ELEMENTS_INDICES 0x80E9
+#define GL_PARAMETER_BUFFER 0x80EE
#define GL_PARAMETER_BUFFER_ARB 0x80EE
+#define GL_PARAMETER_BUFFER_BINDING 0x80EF
#define GL_PARAMETER_BUFFER_BINDING_ARB 0x80EF
#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128
#define GL_CLAMP_TO_BORDER 0x812D
@@ -636,8 +639,20 @@
#define GL_MAX_LABEL_LENGTH_KHR 0x82E8
#define GL_NUM_SHADING_LANGUAGE_VERSIONS 0x82E9
#define GL_QUERY_TARGET 0x82EA
+#define GL_TRANSFORM_FEEDBACK_OVERFLOW 0x82EC
#define GL_TRANSFORM_FEEDBACK_OVERFLOW_ARB 0x82EC
+#define GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW 0x82ED
#define GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB 0x82ED
+#define GL_VERTICES_SUBMITTED 0x82EE
+#define GL_PRIMITIVES_SUBMITTED 0x82EF
+#define GL_VERTEX_SHADER_INVOCATIONS 0x82F0
+#define GL_TESS_CONTROL_SHADER_PATCHES 0x82F1
+#define GL_TESS_EVALUATION_SHADER_INVOCATIONS 0x82F2
+#define GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED 0x82F3
+#define GL_FRAGMENT_SHADER_INVOCATIONS 0x82F4
+#define GL_COMPUTE_SHADER_INVOCATIONS 0x82F5
+#define GL_CLIPPING_INPUT_PRIMITIVES 0x82F6
+#define GL_CLIPPING_OUTPUT_PRIMITIVES 0x82F7
#define GL_SPARSE_BUFFER_PAGE_SIZE_ARB 0x82F8
#define GL_MAX_CULL_DISTANCES 0x82F9
#define GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES 0x82FA
@@ -708,7 +723,9 @@
#define GL_UNSIGNED_INT_24_8 0x84FA
#define GL_UNSIGNED_INT_24_8_OES 0x84FA
#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD
+#define GL_TEXTURE_MAX_ANISOTROPY 0x84FE
#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE
+#define GL_MAX_TEXTURE_MAX_ANISOTROPY 0x84FF
#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF
#define GL_TEXTURE_LOD_BIAS 0x8501
#define GL_INCR_WRAP 0x8507
@@ -1198,6 +1215,7 @@
#define GL_QUERY_NO_WAIT_INVERTED 0x8E18
#define GL_QUERY_BY_REGION_WAIT_INVERTED 0x8E19
#define GL_QUERY_BY_REGION_NO_WAIT_INVERTED 0x8E1A
+#define GL_POLYGON_OFFSET_CLAMP 0x8E1B
#define GL_POLYGON_OFFSET_CLAMP_EXT 0x8E1B
#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E1E
#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E1E
@@ -1535,7 +1553,9 @@
#define GL_NUM_VIRTUAL_PAGE_SIZES_ARB 0x91A8
#define GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB 0x91A9
#define GL_NUM_SPARSE_LEVELS_ARB 0x91AA
+#define GL_MAX_SHADER_COMPILER_THREADS_KHR 0x91B0
#define GL_MAX_SHADER_COMPILER_THREADS_ARB 0x91B0
+#define GL_COMPLETION_STATUS_KHR 0x91B1
#define GL_COMPLETION_STATUS_ARB 0x91B1
#define GL_COMPUTE_SHADER 0x91B9
#define GL_MAX_COMPUTE_UNIFORM_BLOCKS 0x91BB
@@ -1759,3 +1779,7 @@
#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC
#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12 0x93DD
#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD
+#define GL_SHADER_BINARY_FORMAT_SPIR_V 0x9551
+#define GL_SPIR_V_BINARY 0x9552
+#define GL_SPIR_V_EXTENSIONS 0x9553
+#define GL_NUM_SPIR_V_EXTENSIONS 0x9554
diff --git a/framework/opengl/wrapper/glwFunctionTypes.inl b/framework/opengl/wrapper/glwFunctionTypes.inl
index 9aedbc2..d220d8e 100644
--- a/framework/opengl/wrapper/glwFunctionTypes.inl
+++ b/framework/opengl/wrapper/glwFunctionTypes.inl
@@ -1,7 +1,7 @@
/* WARNING: This is auto-generated file. Do not modify, since changes will
* be lost! Modify the generating script instead.
*
- * Generated from Khronos GL API description (gl.xml) revision 97558118d4a8ab2af749867899555273c20827ce.
+ * Generated from Khronos GL API description (gl.xml) revision a3ee0ed08111d44ac3cb863d9e3e81a7c28f9d90.
*/
typedef GLW_APICALL void (GLW_APIENTRY* glActiveShaderProgramFunc) (GLuint pipeline, GLuint program);
typedef GLW_APICALL void (GLW_APIENTRY* glActiveTextureFunc) (GLenum texture);
@@ -458,17 +458,17 @@
typedef GLW_APICALL void (GLW_APIENTRY* glMatrixScalefEXTFunc) (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
typedef GLW_APICALL void (GLW_APIENTRY* glMatrixTranslatedEXTFunc) (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
typedef GLW_APICALL void (GLW_APIENTRY* glMatrixTranslatefEXTFunc) (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
-typedef GLW_APICALL void (GLW_APIENTRY* glMaxShaderCompilerThreadsARBFunc) (GLuint count);
+typedef GLW_APICALL void (GLW_APIENTRY* glMaxShaderCompilerThreadsKHRFunc) (GLuint count);
typedef GLW_APICALL void (GLW_APIENTRY* glMemoryBarrierFunc) (GLbitfield barriers);
typedef GLW_APICALL void (GLW_APIENTRY* glMemoryBarrierByRegionFunc) (GLbitfield barriers);
typedef GLW_APICALL void (GLW_APIENTRY* glMinSampleShadingFunc) (GLfloat value);
typedef GLW_APICALL void (GLW_APIENTRY* glMultiDrawArraysFunc) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount);
typedef GLW_APICALL void (GLW_APIENTRY* glMultiDrawArraysIndirectFunc) (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride);
-typedef GLW_APICALL void (GLW_APIENTRY* glMultiDrawArraysIndirectCountARBFunc) (GLenum mode, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
+typedef GLW_APICALL void (GLW_APIENTRY* glMultiDrawArraysIndirectCountFunc) (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
typedef GLW_APICALL void (GLW_APIENTRY* glMultiDrawElementsFunc) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount);
typedef GLW_APICALL void (GLW_APIENTRY* glMultiDrawElementsBaseVertexFunc) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex);
typedef GLW_APICALL void (GLW_APIENTRY* glMultiDrawElementsIndirectFunc) (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride);
-typedef GLW_APICALL void (GLW_APIENTRY* glMultiDrawElementsIndirectCountARBFunc) (GLenum mode, GLenum type, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
+typedef GLW_APICALL void (GLW_APIENTRY* glMultiDrawElementsIndirectCountFunc) (GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
typedef GLW_APICALL void (GLW_APIENTRY* glMultiTexBufferEXTFunc) (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer);
typedef GLW_APICALL void (GLW_APIENTRY* glMultiTexCoordPointerEXTFunc) (GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer);
typedef GLW_APICALL void (GLW_APIENTRY* glMultiTexEnvfEXTFunc) (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
@@ -547,7 +547,7 @@
typedef GLW_APICALL void (GLW_APIENTRY* glPointSizeFunc) (GLfloat size);
typedef GLW_APICALL void (GLW_APIENTRY* glPolygonModeFunc) (GLenum face, GLenum mode);
typedef GLW_APICALL void (GLW_APIENTRY* glPolygonOffsetFunc) (GLfloat factor, GLfloat units);
-typedef GLW_APICALL void (GLW_APIENTRY* glPolygonOffsetClampEXTFunc) (GLfloat factor, GLfloat units, GLfloat clamp);
+typedef GLW_APICALL void (GLW_APIENTRY* glPolygonOffsetClampFunc) (GLfloat factor, GLfloat units, GLfloat clamp);
typedef GLW_APICALL void (GLW_APIENTRY* glPopDebugGroupFunc) (void);
typedef GLW_APICALL void (GLW_APIENTRY* glPopGroupMarkerEXTFunc) (void);
typedef GLW_APICALL void (GLW_APIENTRY* glPrimitiveBoundingBoxFunc) (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW);
@@ -648,6 +648,7 @@
typedef GLW_APICALL void (GLW_APIENTRY* glShaderBinaryFunc) (GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length);
typedef GLW_APICALL void (GLW_APIENTRY* glShaderSourceFunc) (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length);
typedef GLW_APICALL void (GLW_APIENTRY* glShaderStorageBlockBindingFunc) (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding);
+typedef GLW_APICALL void (GLW_APIENTRY* glSpecializeShaderFunc) (GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue);
typedef GLW_APICALL void (GLW_APIENTRY* glStencilFuncFunc) (GLenum func, GLint ref, GLuint mask);
typedef GLW_APICALL void (GLW_APIENTRY* glStencilFuncSeparateFunc) (GLenum face, GLenum func, GLint ref, GLuint mask);
typedef GLW_APICALL void (GLW_APIENTRY* glStencilMaskFunc) (GLuint mask);
diff --git a/framework/opengl/wrapper/glwFunctions.inl b/framework/opengl/wrapper/glwFunctions.inl
index 2ae9a2b..2269808 100644
--- a/framework/opengl/wrapper/glwFunctions.inl
+++ b/framework/opengl/wrapper/glwFunctions.inl
@@ -1,7 +1,7 @@
/* WARNING: This is auto-generated file. Do not modify, since changes will
* be lost! Modify the generating script instead.
*
- * Generated from Khronos GL API description (gl.xml) revision 97558118d4a8ab2af749867899555273c20827ce.
+ * Generated from Khronos GL API description (gl.xml) revision a3ee0ed08111d44ac3cb863d9e3e81a7c28f9d90.
*/
glActiveShaderProgramFunc activeShaderProgram;
glActiveTextureFunc activeTexture;
@@ -458,17 +458,17 @@
glMatrixScalefEXTFunc matrixScalefEXT;
glMatrixTranslatedEXTFunc matrixTranslatedEXT;
glMatrixTranslatefEXTFunc matrixTranslatefEXT;
-glMaxShaderCompilerThreadsARBFunc maxShaderCompilerThreadsARB;
+glMaxShaderCompilerThreadsKHRFunc maxShaderCompilerThreadsKHR;
glMemoryBarrierFunc memoryBarrier;
glMemoryBarrierByRegionFunc memoryBarrierByRegion;
glMinSampleShadingFunc minSampleShading;
glMultiDrawArraysFunc multiDrawArrays;
glMultiDrawArraysIndirectFunc multiDrawArraysIndirect;
-glMultiDrawArraysIndirectCountARBFunc multiDrawArraysIndirectCountARB;
+glMultiDrawArraysIndirectCountFunc multiDrawArraysIndirectCount;
glMultiDrawElementsFunc multiDrawElements;
glMultiDrawElementsBaseVertexFunc multiDrawElementsBaseVertex;
glMultiDrawElementsIndirectFunc multiDrawElementsIndirect;
-glMultiDrawElementsIndirectCountARBFunc multiDrawElementsIndirectCountARB;
+glMultiDrawElementsIndirectCountFunc multiDrawElementsIndirectCount;
glMultiTexBufferEXTFunc multiTexBufferEXT;
glMultiTexCoordPointerEXTFunc multiTexCoordPointerEXT;
glMultiTexEnvfEXTFunc multiTexEnvfEXT;
@@ -547,7 +547,7 @@
glPointSizeFunc pointSize;
glPolygonModeFunc polygonMode;
glPolygonOffsetFunc polygonOffset;
-glPolygonOffsetClampEXTFunc polygonOffsetClampEXT;
+glPolygonOffsetClampFunc polygonOffsetClamp;
glPopDebugGroupFunc popDebugGroup;
glPopGroupMarkerEXTFunc popGroupMarkerEXT;
glPrimitiveBoundingBoxFunc primitiveBoundingBox;
@@ -648,6 +648,7 @@
glShaderBinaryFunc shaderBinary;
glShaderSourceFunc shaderSource;
glShaderStorageBlockBindingFunc shaderStorageBlockBinding;
+glSpecializeShaderFunc specializeShader;
glStencilFuncFunc stencilFunc;
glStencilFuncSeparateFunc stencilFuncSeparate;
glStencilMaskFunc stencilMask;
diff --git a/framework/opengl/wrapper/glwImpl.inl b/framework/opengl/wrapper/glwImpl.inl
index fecc729..eb94db1 100644
--- a/framework/opengl/wrapper/glwImpl.inl
+++ b/framework/opengl/wrapper/glwImpl.inl
@@ -1,7 +1,7 @@
/* WARNING: This is auto-generated file. Do not modify, since changes will
* be lost! Modify the generating script instead.
*
- * Generated from Khronos GL API description (gl.xml) revision 97558118d4a8ab2af749867899555273c20827ce.
+ * Generated from Khronos GL API description (gl.xml) revision a3ee0ed08111d44ac3cb863d9e3e81a7c28f9d90.
*/
void glwActiveShaderProgram (GLuint pipeline, GLuint program)
@@ -3644,12 +3644,12 @@
gl->matrixTranslatefEXT(mode, x, y, z);
}
-void glwMaxShaderCompilerThreadsARB (GLuint count)
+void glwMaxShaderCompilerThreadsKHR (GLuint count)
{
const glw::Functions* gl = glw::getCurrentThreadFunctions();
if (!gl)
return;
- gl->maxShaderCompilerThreadsARB(count);
+ gl->maxShaderCompilerThreadsKHR(count);
}
void glwMemoryBarrier (GLbitfield barriers)
@@ -3692,12 +3692,12 @@
gl->multiDrawArraysIndirect(mode, indirect, drawcount, stride);
}
-void glwMultiDrawArraysIndirectCountARB (GLenum mode, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride)
+void glwMultiDrawArraysIndirectCount (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride)
{
const glw::Functions* gl = glw::getCurrentThreadFunctions();
if (!gl)
return;
- gl->multiDrawArraysIndirectCountARB(mode, indirect, drawcount, maxdrawcount, stride);
+ gl->multiDrawArraysIndirectCount(mode, indirect, drawcount, maxdrawcount, stride);
}
void glwMultiDrawElements (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount)
@@ -3724,12 +3724,12 @@
gl->multiDrawElementsIndirect(mode, type, indirect, drawcount, stride);
}
-void glwMultiDrawElementsIndirectCountARB (GLenum mode, GLenum type, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride)
+void glwMultiDrawElementsIndirectCount (GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride)
{
const glw::Functions* gl = glw::getCurrentThreadFunctions();
if (!gl)
return;
- gl->multiDrawElementsIndirectCountARB(mode, type, indirect, drawcount, maxdrawcount, stride);
+ gl->multiDrawElementsIndirectCount(mode, type, indirect, drawcount, maxdrawcount, stride);
}
void glwMultiTexBufferEXT (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer)
@@ -4356,12 +4356,12 @@
gl->polygonOffset(factor, units);
}
-void glwPolygonOffsetClampEXT (GLfloat factor, GLfloat units, GLfloat clamp)
+void glwPolygonOffsetClamp (GLfloat factor, GLfloat units, GLfloat clamp)
{
const glw::Functions* gl = glw::getCurrentThreadFunctions();
if (!gl)
return;
- gl->polygonOffsetClampEXT(factor, units, clamp);
+ gl->polygonOffsetClamp(factor, units, clamp);
}
void glwPopDebugGroup (void)
@@ -5164,6 +5164,14 @@
gl->shaderStorageBlockBinding(program, storageBlockIndex, storageBlockBinding);
}
+void glwSpecializeShader (GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue)
+{
+ const glw::Functions* gl = glw::getCurrentThreadFunctions();
+ if (!gl)
+ return;
+ gl->specializeShader(shader, pEntryPoint, numSpecializationConstants, pConstantIndex, pConstantValue);
+}
+
void glwStencilFunc (GLenum func, GLint ref, GLuint mask)
{
const glw::Functions* gl = glw::getCurrentThreadFunctions();
diff --git a/framework/opengl/wrapper/glwInitES20.inl b/framework/opengl/wrapper/glwInitES20.inl
index 5d42df2..e549043 100644
--- a/framework/opengl/wrapper/glwInitES20.inl
+++ b/framework/opengl/wrapper/glwInitES20.inl
@@ -1,7 +1,7 @@
/* WARNING: This is auto-generated file. Do not modify, since changes will
* be lost! Modify the generating script instead.
*
- * Generated from Khronos GL API description (gl.xml) revision 97558118d4a8ab2af749867899555273c20827ce.
+ * Generated from Khronos GL API description (gl.xml) revision a3ee0ed08111d44ac3cb863d9e3e81a7c28f9d90.
*/
gl->activeTexture = (glActiveTextureFunc) loader->get("glActiveTexture");
gl->attachShader = (glAttachShaderFunc) loader->get("glAttachShader");
diff --git a/framework/opengl/wrapper/glwInitES20Direct.inl b/framework/opengl/wrapper/glwInitES20Direct.inl
index edd9e89..7527249 100644
--- a/framework/opengl/wrapper/glwInitES20Direct.inl
+++ b/framework/opengl/wrapper/glwInitES20Direct.inl
@@ -1,7 +1,7 @@
/* WARNING: This is auto-generated file. Do not modify, since changes will
* be lost! Modify the generating script instead.
*
- * Generated from Khronos GL API description (gl.xml) revision 97558118d4a8ab2af749867899555273c20827ce.
+ * Generated from Khronos GL API description (gl.xml) revision a3ee0ed08111d44ac3cb863d9e3e81a7c28f9d90.
*/
gl->activeTexture = &glActiveTexture;
gl->attachShader = &glAttachShader;
diff --git a/framework/opengl/wrapper/glwInitES30.inl b/framework/opengl/wrapper/glwInitES30.inl
index ecd2021..172d300 100644
--- a/framework/opengl/wrapper/glwInitES30.inl
+++ b/framework/opengl/wrapper/glwInitES30.inl
@@ -1,7 +1,7 @@
/* WARNING: This is auto-generated file. Do not modify, since changes will
* be lost! Modify the generating script instead.
*
- * Generated from Khronos GL API description (gl.xml) revision 97558118d4a8ab2af749867899555273c20827ce.
+ * Generated from Khronos GL API description (gl.xml) revision a3ee0ed08111d44ac3cb863d9e3e81a7c28f9d90.
*/
gl->activeTexture = (glActiveTextureFunc) loader->get("glActiveTexture");
gl->attachShader = (glAttachShaderFunc) loader->get("glAttachShader");
diff --git a/framework/opengl/wrapper/glwInitES30Direct.inl b/framework/opengl/wrapper/glwInitES30Direct.inl
index b97bcb1..1fa9052 100644
--- a/framework/opengl/wrapper/glwInitES30Direct.inl
+++ b/framework/opengl/wrapper/glwInitES30Direct.inl
@@ -1,7 +1,7 @@
/* WARNING: This is auto-generated file. Do not modify, since changes will
* be lost! Modify the generating script instead.
*
- * Generated from Khronos GL API description (gl.xml) revision 97558118d4a8ab2af749867899555273c20827ce.
+ * Generated from Khronos GL API description (gl.xml) revision a3ee0ed08111d44ac3cb863d9e3e81a7c28f9d90.
*/
gl->activeTexture = &glActiveTexture;
gl->attachShader = &glAttachShader;
diff --git a/framework/opengl/wrapper/glwInitES31.inl b/framework/opengl/wrapper/glwInitES31.inl
index 7912f0e..240f9ab 100644
--- a/framework/opengl/wrapper/glwInitES31.inl
+++ b/framework/opengl/wrapper/glwInitES31.inl
@@ -1,7 +1,7 @@
/* WARNING: This is auto-generated file. Do not modify, since changes will
* be lost! Modify the generating script instead.
*
- * Generated from Khronos GL API description (gl.xml) revision 97558118d4a8ab2af749867899555273c20827ce.
+ * Generated from Khronos GL API description (gl.xml) revision a3ee0ed08111d44ac3cb863d9e3e81a7c28f9d90.
*/
gl->activeShaderProgram = (glActiveShaderProgramFunc) loader->get("glActiveShaderProgram");
gl->activeTexture = (glActiveTextureFunc) loader->get("glActiveTexture");
diff --git a/framework/opengl/wrapper/glwInitES31Direct.inl b/framework/opengl/wrapper/glwInitES31Direct.inl
index 7dc6b52..c3682bc 100644
--- a/framework/opengl/wrapper/glwInitES31Direct.inl
+++ b/framework/opengl/wrapper/glwInitES31Direct.inl
@@ -1,7 +1,7 @@
/* WARNING: This is auto-generated file. Do not modify, since changes will
* be lost! Modify the generating script instead.
*
- * Generated from Khronos GL API description (gl.xml) revision 97558118d4a8ab2af749867899555273c20827ce.
+ * Generated from Khronos GL API description (gl.xml) revision a3ee0ed08111d44ac3cb863d9e3e81a7c28f9d90.
*/
gl->activeShaderProgram = &glActiveShaderProgram;
gl->activeTexture = &glActiveTexture;
diff --git a/framework/opengl/wrapper/glwInitES32.inl b/framework/opengl/wrapper/glwInitES32.inl
index d74bbdf..4eea692 100644
--- a/framework/opengl/wrapper/glwInitES32.inl
+++ b/framework/opengl/wrapper/glwInitES32.inl
@@ -1,7 +1,7 @@
/* WARNING: This is auto-generated file. Do not modify, since changes will
* be lost! Modify the generating script instead.
*
- * Generated from Khronos GL API description (gl.xml) revision 97558118d4a8ab2af749867899555273c20827ce.
+ * Generated from Khronos GL API description (gl.xml) revision a3ee0ed08111d44ac3cb863d9e3e81a7c28f9d90.
*/
gl->activeShaderProgram = (glActiveShaderProgramFunc) loader->get("glActiveShaderProgram");
gl->activeTexture = (glActiveTextureFunc) loader->get("glActiveTexture");
diff --git a/framework/opengl/wrapper/glwInitES32Direct.inl b/framework/opengl/wrapper/glwInitES32Direct.inl
index bfb0bab..70726fb 100644
--- a/framework/opengl/wrapper/glwInitES32Direct.inl
+++ b/framework/opengl/wrapper/glwInitES32Direct.inl
@@ -1,7 +1,7 @@
/* WARNING: This is auto-generated file. Do not modify, since changes will
* be lost! Modify the generating script instead.
*
- * Generated from Khronos GL API description (gl.xml) revision 97558118d4a8ab2af749867899555273c20827ce.
+ * Generated from Khronos GL API description (gl.xml) revision a3ee0ed08111d44ac3cb863d9e3e81a7c28f9d90.
*/
gl->activeShaderProgram = &glActiveShaderProgram;
gl->activeTexture = &glActiveTexture;
diff --git a/framework/opengl/wrapper/glwInitExtES.inl b/framework/opengl/wrapper/glwInitExtES.inl
index df6c1e4..ad7e564 100644
--- a/framework/opengl/wrapper/glwInitExtES.inl
+++ b/framework/opengl/wrapper/glwInitExtES.inl
@@ -1,7 +1,7 @@
/* WARNING: This is auto-generated file. Do not modify, since changes will
* be lost! Modify the generating script instead.
*
- * Generated from Khronos GL API description (gl.xml) revision 97558118d4a8ab2af749867899555273c20827ce.
+ * Generated from Khronos GL API description (gl.xml) revision a3ee0ed08111d44ac3cb863d9e3e81a7c28f9d90.
*/
if (de::contains(extSet, "GL_KHR_blend_equation_advanced"))
@@ -33,6 +33,11 @@
gl->readnPixels = (glReadnPixelsFunc) loader->get("glReadnPixelsKHR");
}
+if (de::contains(extSet, "GL_KHR_parallel_shader_compile"))
+{
+ gl->maxShaderCompilerThreadsKHR = (glMaxShaderCompilerThreadsKHRFunc) loader->get("glMaxShaderCompilerThreadsKHR");
+}
+
if (de::contains(extSet, "GL_EXT_tessellation_shader"))
{
gl->patchParameteri = (glPatchParameteriFunc) loader->get("glPatchParameteriEXT");
@@ -118,7 +123,7 @@
if (de::contains(extSet, "GL_EXT_polygon_offset_clamp"))
{
- gl->polygonOffsetClampEXT = (glPolygonOffsetClampEXTFunc) loader->get("glPolygonOffsetClampEXT");
+ gl->polygonOffsetClamp = (glPolygonOffsetClampFunc) loader->get("glPolygonOffsetClampEXT");
}
if (de::contains(extSet, "GL_OES_EGL_image"))
@@ -188,5 +193,5 @@
gl->drawElementsBaseVertex = (glDrawElementsBaseVertexFunc) loader->get("glDrawElementsBaseVertexOES");
gl->drawElementsInstancedBaseVertex = (glDrawElementsInstancedBaseVertexFunc) loader->get("glDrawElementsInstancedBaseVertexOES");
gl->drawRangeElementsBaseVertex = (glDrawRangeElementsBaseVertexFunc) loader->get("glDrawRangeElementsBaseVertexOES");
- gl->multiDrawElementsBaseVertex = (glMultiDrawElementsBaseVertexFunc) loader->get("glMultiDrawElementsBaseVertexOES");
+ gl->multiDrawElementsBaseVertex = (glMultiDrawElementsBaseVertexFunc) loader->get("glMultiDrawElementsBaseVertexEXT");
}
diff --git a/framework/opengl/wrapper/glwInitExtGL.inl b/framework/opengl/wrapper/glwInitExtGL.inl
index 1da2c34..419398f 100644
--- a/framework/opengl/wrapper/glwInitExtGL.inl
+++ b/framework/opengl/wrapper/glwInitExtGL.inl
@@ -1,7 +1,7 @@
/* WARNING: This is auto-generated file. Do not modify, since changes will
* be lost! Modify the generating script instead.
*
- * Generated from Khronos GL API description (gl.xml) revision 97558118d4a8ab2af749867899555273c20827ce.
+ * Generated from Khronos GL API description (gl.xml) revision a3ee0ed08111d44ac3cb863d9e3e81a7c28f9d90.
*/
if (de::contains(extSet, "GL_KHR_blend_equation_advanced"))
@@ -32,6 +32,11 @@
gl->readnPixels = (glReadnPixelsFunc) loader->get("glReadnPixels");
}
+if (de::contains(extSet, "GL_KHR_parallel_shader_compile"))
+{
+ gl->maxShaderCompilerThreadsKHR = (glMaxShaderCompilerThreadsKHRFunc) loader->get("glMaxShaderCompilerThreadsKHR");
+}
+
if (de::contains(extSet, "GL_EXT_direct_state_access"))
{
gl->bindMultiTextureEXT = (glBindMultiTextureEXTFunc) loader->get("glBindMultiTextureEXT");
@@ -559,7 +564,7 @@
if (de::contains(extSet, "GL_EXT_polygon_offset_clamp"))
{
- gl->polygonOffsetClampEXT = (glPolygonOffsetClampEXTFunc) loader->get("glPolygonOffsetClampEXT");
+ gl->polygonOffsetClamp = (glPolygonOffsetClampFunc) loader->get("glPolygonOffsetClampEXT");
}
if (de::contains(extSet, "GL_ARB_clip_control"))
@@ -702,8 +707,8 @@
if (de::contains(extSet, "GL_ARB_indirect_parameters"))
{
- gl->multiDrawArraysIndirectCountARB = (glMultiDrawArraysIndirectCountARBFunc) loader->get("glMultiDrawArraysIndirectCountARB");
- gl->multiDrawElementsIndirectCountARB = (glMultiDrawElementsIndirectCountARBFunc) loader->get("glMultiDrawElementsIndirectCountARB");
+ gl->multiDrawArraysIndirectCount = (glMultiDrawArraysIndirectCountFunc) loader->get("glMultiDrawArraysIndirectCountARB");
+ gl->multiDrawElementsIndirectCount = (glMultiDrawElementsIndirectCountFunc) loader->get("glMultiDrawElementsIndirectCountARB");
}
if (de::contains(extSet, "GL_ARB_internalformat_query"))
@@ -724,7 +729,7 @@
if (de::contains(extSet, "GL_ARB_parallel_shader_compile"))
{
- gl->maxShaderCompilerThreadsARB = (glMaxShaderCompilerThreadsARBFunc) loader->get("glMaxShaderCompilerThreadsARB");
+ gl->maxShaderCompilerThreadsKHR = (glMaxShaderCompilerThreadsKHRFunc) loader->get("glMaxShaderCompilerThreadsARB");
}
if (de::contains(extSet, "GL_ARB_program_interface_query"))
diff --git a/framework/opengl/wrapper/glwInitGL30.inl b/framework/opengl/wrapper/glwInitGL30.inl
index 5592a6e..496fc33 100644
--- a/framework/opengl/wrapper/glwInitGL30.inl
+++ b/framework/opengl/wrapper/glwInitGL30.inl
@@ -1,7 +1,7 @@
/* WARNING: This is auto-generated file. Do not modify, since changes will
* be lost! Modify the generating script instead.
*
- * Generated from Khronos GL API description (gl.xml) revision 97558118d4a8ab2af749867899555273c20827ce.
+ * Generated from Khronos GL API description (gl.xml) revision a3ee0ed08111d44ac3cb863d9e3e81a7c28f9d90.
*/
gl->activeTexture = (glActiveTextureFunc) loader->get("glActiveTexture");
gl->attachShader = (glAttachShaderFunc) loader->get("glAttachShader");
diff --git a/framework/opengl/wrapper/glwInitGL31.inl b/framework/opengl/wrapper/glwInitGL31.inl
index 6ef5233..bed4f27 100644
--- a/framework/opengl/wrapper/glwInitGL31.inl
+++ b/framework/opengl/wrapper/glwInitGL31.inl
@@ -1,7 +1,7 @@
/* WARNING: This is auto-generated file. Do not modify, since changes will
* be lost! Modify the generating script instead.
*
- * Generated from Khronos GL API description (gl.xml) revision 97558118d4a8ab2af749867899555273c20827ce.
+ * Generated from Khronos GL API description (gl.xml) revision a3ee0ed08111d44ac3cb863d9e3e81a7c28f9d90.
*/
gl->activeTexture = (glActiveTextureFunc) loader->get("glActiveTexture");
gl->attachShader = (glAttachShaderFunc) loader->get("glAttachShader");
diff --git a/framework/opengl/wrapper/glwInitGL32.inl b/framework/opengl/wrapper/glwInitGL32.inl
index 4a132d1..d3d2c91 100644
--- a/framework/opengl/wrapper/glwInitGL32.inl
+++ b/framework/opengl/wrapper/glwInitGL32.inl
@@ -1,7 +1,7 @@
/* WARNING: This is auto-generated file. Do not modify, since changes will
* be lost! Modify the generating script instead.
*
- * Generated from Khronos GL API description (gl.xml) revision 97558118d4a8ab2af749867899555273c20827ce.
+ * Generated from Khronos GL API description (gl.xml) revision a3ee0ed08111d44ac3cb863d9e3e81a7c28f9d90.
*/
gl->activeTexture = (glActiveTextureFunc) loader->get("glActiveTexture");
gl->attachShader = (glAttachShaderFunc) loader->get("glAttachShader");
diff --git a/framework/opengl/wrapper/glwInitGL33.inl b/framework/opengl/wrapper/glwInitGL33.inl
index ad58e27..e24f6dc 100644
--- a/framework/opengl/wrapper/glwInitGL33.inl
+++ b/framework/opengl/wrapper/glwInitGL33.inl
@@ -1,7 +1,7 @@
/* WARNING: This is auto-generated file. Do not modify, since changes will
* be lost! Modify the generating script instead.
*
- * Generated from Khronos GL API description (gl.xml) revision 97558118d4a8ab2af749867899555273c20827ce.
+ * Generated from Khronos GL API description (gl.xml) revision a3ee0ed08111d44ac3cb863d9e3e81a7c28f9d90.
*/
gl->activeTexture = (glActiveTextureFunc) loader->get("glActiveTexture");
gl->attachShader = (glAttachShaderFunc) loader->get("glAttachShader");
diff --git a/framework/opengl/wrapper/glwInitGL40.inl b/framework/opengl/wrapper/glwInitGL40.inl
index 8676868..3522159 100644
--- a/framework/opengl/wrapper/glwInitGL40.inl
+++ b/framework/opengl/wrapper/glwInitGL40.inl
@@ -1,7 +1,7 @@
/* WARNING: This is auto-generated file. Do not modify, since changes will
* be lost! Modify the generating script instead.
*
- * Generated from Khronos GL API description (gl.xml) revision 97558118d4a8ab2af749867899555273c20827ce.
+ * Generated from Khronos GL API description (gl.xml) revision a3ee0ed08111d44ac3cb863d9e3e81a7c28f9d90.
*/
gl->activeTexture = (glActiveTextureFunc) loader->get("glActiveTexture");
gl->attachShader = (glAttachShaderFunc) loader->get("glAttachShader");
diff --git a/framework/opengl/wrapper/glwInitGL41.inl b/framework/opengl/wrapper/glwInitGL41.inl
index b320e5a..24bea4e 100644
--- a/framework/opengl/wrapper/glwInitGL41.inl
+++ b/framework/opengl/wrapper/glwInitGL41.inl
@@ -1,7 +1,7 @@
/* WARNING: This is auto-generated file. Do not modify, since changes will
* be lost! Modify the generating script instead.
*
- * Generated from Khronos GL API description (gl.xml) revision 97558118d4a8ab2af749867899555273c20827ce.
+ * Generated from Khronos GL API description (gl.xml) revision a3ee0ed08111d44ac3cb863d9e3e81a7c28f9d90.
*/
gl->activeShaderProgram = (glActiveShaderProgramFunc) loader->get("glActiveShaderProgram");
gl->activeTexture = (glActiveTextureFunc) loader->get("glActiveTexture");
diff --git a/framework/opengl/wrapper/glwInitGL42.inl b/framework/opengl/wrapper/glwInitGL42.inl
index d730ece..87f95a0 100644
--- a/framework/opengl/wrapper/glwInitGL42.inl
+++ b/framework/opengl/wrapper/glwInitGL42.inl
@@ -1,7 +1,7 @@
/* WARNING: This is auto-generated file. Do not modify, since changes will
* be lost! Modify the generating script instead.
*
- * Generated from Khronos GL API description (gl.xml) revision 97558118d4a8ab2af749867899555273c20827ce.
+ * Generated from Khronos GL API description (gl.xml) revision a3ee0ed08111d44ac3cb863d9e3e81a7c28f9d90.
*/
gl->activeShaderProgram = (glActiveShaderProgramFunc) loader->get("glActiveShaderProgram");
gl->activeTexture = (glActiveTextureFunc) loader->get("glActiveTexture");
diff --git a/framework/opengl/wrapper/glwInitGL43.inl b/framework/opengl/wrapper/glwInitGL43.inl
index 803b342..ef3502b 100644
--- a/framework/opengl/wrapper/glwInitGL43.inl
+++ b/framework/opengl/wrapper/glwInitGL43.inl
@@ -1,7 +1,7 @@
/* WARNING: This is auto-generated file. Do not modify, since changes will
* be lost! Modify the generating script instead.
*
- * Generated from Khronos GL API description (gl.xml) revision 97558118d4a8ab2af749867899555273c20827ce.
+ * Generated from Khronos GL API description (gl.xml) revision a3ee0ed08111d44ac3cb863d9e3e81a7c28f9d90.
*/
gl->activeShaderProgram = (glActiveShaderProgramFunc) loader->get("glActiveShaderProgram");
gl->activeTexture = (glActiveTextureFunc) loader->get("glActiveTexture");
diff --git a/framework/opengl/wrapper/glwInitGL44.inl b/framework/opengl/wrapper/glwInitGL44.inl
index 4d3b4b9..d04c0e8 100644
--- a/framework/opengl/wrapper/glwInitGL44.inl
+++ b/framework/opengl/wrapper/glwInitGL44.inl
@@ -1,7 +1,7 @@
/* WARNING: This is auto-generated file. Do not modify, since changes will
* be lost! Modify the generating script instead.
*
- * Generated from Khronos GL API description (gl.xml) revision 97558118d4a8ab2af749867899555273c20827ce.
+ * Generated from Khronos GL API description (gl.xml) revision a3ee0ed08111d44ac3cb863d9e3e81a7c28f9d90.
*/
gl->activeShaderProgram = (glActiveShaderProgramFunc) loader->get("glActiveShaderProgram");
gl->activeTexture = (glActiveTextureFunc) loader->get("glActiveTexture");
diff --git a/framework/opengl/wrapper/glwInitGL45.inl b/framework/opengl/wrapper/glwInitGL45.inl
index eda0043..ac5a3ae 100644
--- a/framework/opengl/wrapper/glwInitGL45.inl
+++ b/framework/opengl/wrapper/glwInitGL45.inl
@@ -1,7 +1,7 @@
/* WARNING: This is auto-generated file. Do not modify, since changes will
* be lost! Modify the generating script instead.
*
- * Generated from Khronos GL API description (gl.xml) revision 97558118d4a8ab2af749867899555273c20827ce.
+ * Generated from Khronos GL API description (gl.xml) revision a3ee0ed08111d44ac3cb863d9e3e81a7c28f9d90.
*/
gl->activeShaderProgram = (glActiveShaderProgramFunc) loader->get("glActiveShaderProgram");
gl->activeTexture = (glActiveTextureFunc) loader->get("glActiveTexture");
diff --git a/framework/opengl/wrapper/glwInitGL46.inl b/framework/opengl/wrapper/glwInitGL46.inl
new file mode 100644
index 0000000..9561d51
--- /dev/null
+++ b/framework/opengl/wrapper/glwInitGL46.inl
@@ -0,0 +1,662 @@
+/* WARNING: This is auto-generated file. Do not modify, since changes will
+ * be lost! Modify the generating script instead.
+ *
+ * Generated from Khronos GL API description (gl.xml) revision a3ee0ed08111d44ac3cb863d9e3e81a7c28f9d90.
+ */
+gl->activeShaderProgram = (glActiveShaderProgramFunc) loader->get("glActiveShaderProgram");
+gl->activeTexture = (glActiveTextureFunc) loader->get("glActiveTexture");
+gl->attachShader = (glAttachShaderFunc) loader->get("glAttachShader");
+gl->beginConditionalRender = (glBeginConditionalRenderFunc) loader->get("glBeginConditionalRender");
+gl->beginQuery = (glBeginQueryFunc) loader->get("glBeginQuery");
+gl->beginQueryIndexed = (glBeginQueryIndexedFunc) loader->get("glBeginQueryIndexed");
+gl->beginTransformFeedback = (glBeginTransformFeedbackFunc) loader->get("glBeginTransformFeedback");
+gl->bindAttribLocation = (glBindAttribLocationFunc) loader->get("glBindAttribLocation");
+gl->bindBuffer = (glBindBufferFunc) loader->get("glBindBuffer");
+gl->bindBufferBase = (glBindBufferBaseFunc) loader->get("glBindBufferBase");
+gl->bindBufferRange = (glBindBufferRangeFunc) loader->get("glBindBufferRange");
+gl->bindBuffersBase = (glBindBuffersBaseFunc) loader->get("glBindBuffersBase");
+gl->bindBuffersRange = (glBindBuffersRangeFunc) loader->get("glBindBuffersRange");
+gl->bindFragDataLocation = (glBindFragDataLocationFunc) loader->get("glBindFragDataLocation");
+gl->bindFragDataLocationIndexed = (glBindFragDataLocationIndexedFunc) loader->get("glBindFragDataLocationIndexed");
+gl->bindFramebuffer = (glBindFramebufferFunc) loader->get("glBindFramebuffer");
+gl->bindImageTexture = (glBindImageTextureFunc) loader->get("glBindImageTexture");
+gl->bindImageTextures = (glBindImageTexturesFunc) loader->get("glBindImageTextures");
+gl->bindProgramPipeline = (glBindProgramPipelineFunc) loader->get("glBindProgramPipeline");
+gl->bindRenderbuffer = (glBindRenderbufferFunc) loader->get("glBindRenderbuffer");
+gl->bindSampler = (glBindSamplerFunc) loader->get("glBindSampler");
+gl->bindSamplers = (glBindSamplersFunc) loader->get("glBindSamplers");
+gl->bindTexture = (glBindTextureFunc) loader->get("glBindTexture");
+gl->bindTextureUnit = (glBindTextureUnitFunc) loader->get("glBindTextureUnit");
+gl->bindTextures = (glBindTexturesFunc) loader->get("glBindTextures");
+gl->bindTransformFeedback = (glBindTransformFeedbackFunc) loader->get("glBindTransformFeedback");
+gl->bindVertexArray = (glBindVertexArrayFunc) loader->get("glBindVertexArray");
+gl->bindVertexBuffer = (glBindVertexBufferFunc) loader->get("glBindVertexBuffer");
+gl->bindVertexBuffers = (glBindVertexBuffersFunc) loader->get("glBindVertexBuffers");
+gl->blendColor = (glBlendColorFunc) loader->get("glBlendColor");
+gl->blendEquation = (glBlendEquationFunc) loader->get("glBlendEquation");
+gl->blendEquationSeparate = (glBlendEquationSeparateFunc) loader->get("glBlendEquationSeparate");
+gl->blendEquationSeparatei = (glBlendEquationSeparateiFunc) loader->get("glBlendEquationSeparatei");
+gl->blendEquationi = (glBlendEquationiFunc) loader->get("glBlendEquationi");
+gl->blendFunc = (glBlendFuncFunc) loader->get("glBlendFunc");
+gl->blendFuncSeparate = (glBlendFuncSeparateFunc) loader->get("glBlendFuncSeparate");
+gl->blendFuncSeparatei = (glBlendFuncSeparateiFunc) loader->get("glBlendFuncSeparatei");
+gl->blendFunci = (glBlendFunciFunc) loader->get("glBlendFunci");
+gl->blitFramebuffer = (glBlitFramebufferFunc) loader->get("glBlitFramebuffer");
+gl->blitNamedFramebuffer = (glBlitNamedFramebufferFunc) loader->get("glBlitNamedFramebuffer");
+gl->bufferData = (glBufferDataFunc) loader->get("glBufferData");
+gl->bufferStorage = (glBufferStorageFunc) loader->get("glBufferStorage");
+gl->bufferSubData = (glBufferSubDataFunc) loader->get("glBufferSubData");
+gl->checkFramebufferStatus = (glCheckFramebufferStatusFunc) loader->get("glCheckFramebufferStatus");
+gl->checkNamedFramebufferStatus = (glCheckNamedFramebufferStatusFunc) loader->get("glCheckNamedFramebufferStatus");
+gl->clampColor = (glClampColorFunc) loader->get("glClampColor");
+gl->clear = (glClearFunc) loader->get("glClear");
+gl->clearBufferData = (glClearBufferDataFunc) loader->get("glClearBufferData");
+gl->clearBufferSubData = (glClearBufferSubDataFunc) loader->get("glClearBufferSubData");
+gl->clearBufferfi = (glClearBufferfiFunc) loader->get("glClearBufferfi");
+gl->clearBufferfv = (glClearBufferfvFunc) loader->get("glClearBufferfv");
+gl->clearBufferiv = (glClearBufferivFunc) loader->get("glClearBufferiv");
+gl->clearBufferuiv = (glClearBufferuivFunc) loader->get("glClearBufferuiv");
+gl->clearColor = (glClearColorFunc) loader->get("glClearColor");
+gl->clearDepth = (glClearDepthFunc) loader->get("glClearDepth");
+gl->clearDepthf = (glClearDepthfFunc) loader->get("glClearDepthf");
+gl->clearNamedBufferData = (glClearNamedBufferDataFunc) loader->get("glClearNamedBufferData");
+gl->clearNamedBufferSubData = (glClearNamedBufferSubDataFunc) loader->get("glClearNamedBufferSubData");
+gl->clearNamedFramebufferfi = (glClearNamedFramebufferfiFunc) loader->get("glClearNamedFramebufferfi");
+gl->clearNamedFramebufferfv = (glClearNamedFramebufferfvFunc) loader->get("glClearNamedFramebufferfv");
+gl->clearNamedFramebufferiv = (glClearNamedFramebufferivFunc) loader->get("glClearNamedFramebufferiv");
+gl->clearNamedFramebufferuiv = (glClearNamedFramebufferuivFunc) loader->get("glClearNamedFramebufferuiv");
+gl->clearStencil = (glClearStencilFunc) loader->get("glClearStencil");
+gl->clearTexImage = (glClearTexImageFunc) loader->get("glClearTexImage");
+gl->clearTexSubImage = (glClearTexSubImageFunc) loader->get("glClearTexSubImage");
+gl->clientWaitSync = (glClientWaitSyncFunc) loader->get("glClientWaitSync");
+gl->clipControl = (glClipControlFunc) loader->get("glClipControl");
+gl->colorMask = (glColorMaskFunc) loader->get("glColorMask");
+gl->colorMaski = (glColorMaskiFunc) loader->get("glColorMaski");
+gl->compileShader = (glCompileShaderFunc) loader->get("glCompileShader");
+gl->compressedTexImage1D = (glCompressedTexImage1DFunc) loader->get("glCompressedTexImage1D");
+gl->compressedTexImage2D = (glCompressedTexImage2DFunc) loader->get("glCompressedTexImage2D");
+gl->compressedTexImage3D = (glCompressedTexImage3DFunc) loader->get("glCompressedTexImage3D");
+gl->compressedTexSubImage1D = (glCompressedTexSubImage1DFunc) loader->get("glCompressedTexSubImage1D");
+gl->compressedTexSubImage2D = (glCompressedTexSubImage2DFunc) loader->get("glCompressedTexSubImage2D");
+gl->compressedTexSubImage3D = (glCompressedTexSubImage3DFunc) loader->get("glCompressedTexSubImage3D");
+gl->compressedTextureSubImage1D = (glCompressedTextureSubImage1DFunc) loader->get("glCompressedTextureSubImage1D");
+gl->compressedTextureSubImage2D = (glCompressedTextureSubImage2DFunc) loader->get("glCompressedTextureSubImage2D");
+gl->compressedTextureSubImage3D = (glCompressedTextureSubImage3DFunc) loader->get("glCompressedTextureSubImage3D");
+gl->copyBufferSubData = (glCopyBufferSubDataFunc) loader->get("glCopyBufferSubData");
+gl->copyImageSubData = (glCopyImageSubDataFunc) loader->get("glCopyImageSubData");
+gl->copyNamedBufferSubData = (glCopyNamedBufferSubDataFunc) loader->get("glCopyNamedBufferSubData");
+gl->copyTexImage1D = (glCopyTexImage1DFunc) loader->get("glCopyTexImage1D");
+gl->copyTexImage2D = (glCopyTexImage2DFunc) loader->get("glCopyTexImage2D");
+gl->copyTexSubImage1D = (glCopyTexSubImage1DFunc) loader->get("glCopyTexSubImage1D");
+gl->copyTexSubImage2D = (glCopyTexSubImage2DFunc) loader->get("glCopyTexSubImage2D");
+gl->copyTexSubImage3D = (glCopyTexSubImage3DFunc) loader->get("glCopyTexSubImage3D");
+gl->copyTextureSubImage1D = (glCopyTextureSubImage1DFunc) loader->get("glCopyTextureSubImage1D");
+gl->copyTextureSubImage2D = (glCopyTextureSubImage2DFunc) loader->get("glCopyTextureSubImage2D");
+gl->copyTextureSubImage3D = (glCopyTextureSubImage3DFunc) loader->get("glCopyTextureSubImage3D");
+gl->createBuffers = (glCreateBuffersFunc) loader->get("glCreateBuffers");
+gl->createFramebuffers = (glCreateFramebuffersFunc) loader->get("glCreateFramebuffers");
+gl->createProgram = (glCreateProgramFunc) loader->get("glCreateProgram");
+gl->createProgramPipelines = (glCreateProgramPipelinesFunc) loader->get("glCreateProgramPipelines");
+gl->createQueries = (glCreateQueriesFunc) loader->get("glCreateQueries");
+gl->createRenderbuffers = (glCreateRenderbuffersFunc) loader->get("glCreateRenderbuffers");
+gl->createSamplers = (glCreateSamplersFunc) loader->get("glCreateSamplers");
+gl->createShader = (glCreateShaderFunc) loader->get("glCreateShader");
+gl->createShaderProgramv = (glCreateShaderProgramvFunc) loader->get("glCreateShaderProgramv");
+gl->createTextures = (glCreateTexturesFunc) loader->get("glCreateTextures");
+gl->createTransformFeedbacks = (glCreateTransformFeedbacksFunc) loader->get("glCreateTransformFeedbacks");
+gl->createVertexArrays = (glCreateVertexArraysFunc) loader->get("glCreateVertexArrays");
+gl->cullFace = (glCullFaceFunc) loader->get("glCullFace");
+gl->debugMessageCallback = (glDebugMessageCallbackFunc) loader->get("glDebugMessageCallback");
+gl->debugMessageControl = (glDebugMessageControlFunc) loader->get("glDebugMessageControl");
+gl->debugMessageInsert = (glDebugMessageInsertFunc) loader->get("glDebugMessageInsert");
+gl->deleteBuffers = (glDeleteBuffersFunc) loader->get("glDeleteBuffers");
+gl->deleteFramebuffers = (glDeleteFramebuffersFunc) loader->get("glDeleteFramebuffers");
+gl->deleteProgram = (glDeleteProgramFunc) loader->get("glDeleteProgram");
+gl->deleteProgramPipelines = (glDeleteProgramPipelinesFunc) loader->get("glDeleteProgramPipelines");
+gl->deleteQueries = (glDeleteQueriesFunc) loader->get("glDeleteQueries");
+gl->deleteRenderbuffers = (glDeleteRenderbuffersFunc) loader->get("glDeleteRenderbuffers");
+gl->deleteSamplers = (glDeleteSamplersFunc) loader->get("glDeleteSamplers");
+gl->deleteShader = (glDeleteShaderFunc) loader->get("glDeleteShader");
+gl->deleteSync = (glDeleteSyncFunc) loader->get("glDeleteSync");
+gl->deleteTextures = (glDeleteTexturesFunc) loader->get("glDeleteTextures");
+gl->deleteTransformFeedbacks = (glDeleteTransformFeedbacksFunc) loader->get("glDeleteTransformFeedbacks");
+gl->deleteVertexArrays = (glDeleteVertexArraysFunc) loader->get("glDeleteVertexArrays");
+gl->depthFunc = (glDepthFuncFunc) loader->get("glDepthFunc");
+gl->depthMask = (glDepthMaskFunc) loader->get("glDepthMask");
+gl->depthRange = (glDepthRangeFunc) loader->get("glDepthRange");
+gl->depthRangeArrayv = (glDepthRangeArrayvFunc) loader->get("glDepthRangeArrayv");
+gl->depthRangeIndexed = (glDepthRangeIndexedFunc) loader->get("glDepthRangeIndexed");
+gl->depthRangef = (glDepthRangefFunc) loader->get("glDepthRangef");
+gl->detachShader = (glDetachShaderFunc) loader->get("glDetachShader");
+gl->disable = (glDisableFunc) loader->get("glDisable");
+gl->disableVertexArrayAttrib = (glDisableVertexArrayAttribFunc) loader->get("glDisableVertexArrayAttrib");
+gl->disableVertexAttribArray = (glDisableVertexAttribArrayFunc) loader->get("glDisableVertexAttribArray");
+gl->disablei = (glDisableiFunc) loader->get("glDisablei");
+gl->dispatchCompute = (glDispatchComputeFunc) loader->get("glDispatchCompute");
+gl->dispatchComputeIndirect = (glDispatchComputeIndirectFunc) loader->get("glDispatchComputeIndirect");
+gl->drawArrays = (glDrawArraysFunc) loader->get("glDrawArrays");
+gl->drawArraysIndirect = (glDrawArraysIndirectFunc) loader->get("glDrawArraysIndirect");
+gl->drawArraysInstanced = (glDrawArraysInstancedFunc) loader->get("glDrawArraysInstanced");
+gl->drawArraysInstancedBaseInstance = (glDrawArraysInstancedBaseInstanceFunc) loader->get("glDrawArraysInstancedBaseInstance");
+gl->drawBuffer = (glDrawBufferFunc) loader->get("glDrawBuffer");
+gl->drawBuffers = (glDrawBuffersFunc) loader->get("glDrawBuffers");
+gl->drawElements = (glDrawElementsFunc) loader->get("glDrawElements");
+gl->drawElementsBaseVertex = (glDrawElementsBaseVertexFunc) loader->get("glDrawElementsBaseVertex");
+gl->drawElementsIndirect = (glDrawElementsIndirectFunc) loader->get("glDrawElementsIndirect");
+gl->drawElementsInstanced = (glDrawElementsInstancedFunc) loader->get("glDrawElementsInstanced");
+gl->drawElementsInstancedBaseInstance = (glDrawElementsInstancedBaseInstanceFunc) loader->get("glDrawElementsInstancedBaseInstance");
+gl->drawElementsInstancedBaseVertex = (glDrawElementsInstancedBaseVertexFunc) loader->get("glDrawElementsInstancedBaseVertex");
+gl->drawElementsInstancedBaseVertexBaseInstance = (glDrawElementsInstancedBaseVertexBaseInstanceFunc) loader->get("glDrawElementsInstancedBaseVertexBaseInstance");
+gl->drawRangeElements = (glDrawRangeElementsFunc) loader->get("glDrawRangeElements");
+gl->drawRangeElementsBaseVertex = (glDrawRangeElementsBaseVertexFunc) loader->get("glDrawRangeElementsBaseVertex");
+gl->drawTransformFeedback = (glDrawTransformFeedbackFunc) loader->get("glDrawTransformFeedback");
+gl->drawTransformFeedbackInstanced = (glDrawTransformFeedbackInstancedFunc) loader->get("glDrawTransformFeedbackInstanced");
+gl->drawTransformFeedbackStream = (glDrawTransformFeedbackStreamFunc) loader->get("glDrawTransformFeedbackStream");
+gl->drawTransformFeedbackStreamInstanced = (glDrawTransformFeedbackStreamInstancedFunc) loader->get("glDrawTransformFeedbackStreamInstanced");
+gl->enable = (glEnableFunc) loader->get("glEnable");
+gl->enableVertexArrayAttrib = (glEnableVertexArrayAttribFunc) loader->get("glEnableVertexArrayAttrib");
+gl->enableVertexAttribArray = (glEnableVertexAttribArrayFunc) loader->get("glEnableVertexAttribArray");
+gl->enablei = (glEnableiFunc) loader->get("glEnablei");
+gl->endConditionalRender = (glEndConditionalRenderFunc) loader->get("glEndConditionalRender");
+gl->endQuery = (glEndQueryFunc) loader->get("glEndQuery");
+gl->endQueryIndexed = (glEndQueryIndexedFunc) loader->get("glEndQueryIndexed");
+gl->endTransformFeedback = (glEndTransformFeedbackFunc) loader->get("glEndTransformFeedback");
+gl->fenceSync = (glFenceSyncFunc) loader->get("glFenceSync");
+gl->finish = (glFinishFunc) loader->get("glFinish");
+gl->flush = (glFlushFunc) loader->get("glFlush");
+gl->flushMappedBufferRange = (glFlushMappedBufferRangeFunc) loader->get("glFlushMappedBufferRange");
+gl->flushMappedNamedBufferRange = (glFlushMappedNamedBufferRangeFunc) loader->get("glFlushMappedNamedBufferRange");
+gl->framebufferParameteri = (glFramebufferParameteriFunc) loader->get("glFramebufferParameteri");
+gl->framebufferRenderbuffer = (glFramebufferRenderbufferFunc) loader->get("glFramebufferRenderbuffer");
+gl->framebufferTexture = (glFramebufferTextureFunc) loader->get("glFramebufferTexture");
+gl->framebufferTexture1D = (glFramebufferTexture1DFunc) loader->get("glFramebufferTexture1D");
+gl->framebufferTexture2D = (glFramebufferTexture2DFunc) loader->get("glFramebufferTexture2D");
+gl->framebufferTexture3D = (glFramebufferTexture3DFunc) loader->get("glFramebufferTexture3D");
+gl->framebufferTextureLayer = (glFramebufferTextureLayerFunc) loader->get("glFramebufferTextureLayer");
+gl->frontFace = (glFrontFaceFunc) loader->get("glFrontFace");
+gl->genBuffers = (glGenBuffersFunc) loader->get("glGenBuffers");
+gl->genFramebuffers = (glGenFramebuffersFunc) loader->get("glGenFramebuffers");
+gl->genProgramPipelines = (glGenProgramPipelinesFunc) loader->get("glGenProgramPipelines");
+gl->genQueries = (glGenQueriesFunc) loader->get("glGenQueries");
+gl->genRenderbuffers = (glGenRenderbuffersFunc) loader->get("glGenRenderbuffers");
+gl->genSamplers = (glGenSamplersFunc) loader->get("glGenSamplers");
+gl->genTextures = (glGenTexturesFunc) loader->get("glGenTextures");
+gl->genTransformFeedbacks = (glGenTransformFeedbacksFunc) loader->get("glGenTransformFeedbacks");
+gl->genVertexArrays = (glGenVertexArraysFunc) loader->get("glGenVertexArrays");
+gl->generateMipmap = (glGenerateMipmapFunc) loader->get("glGenerateMipmap");
+gl->generateTextureMipmap = (glGenerateTextureMipmapFunc) loader->get("glGenerateTextureMipmap");
+gl->getActiveAtomicCounterBufferiv = (glGetActiveAtomicCounterBufferivFunc) loader->get("glGetActiveAtomicCounterBufferiv");
+gl->getActiveAttrib = (glGetActiveAttribFunc) loader->get("glGetActiveAttrib");
+gl->getActiveSubroutineName = (glGetActiveSubroutineNameFunc) loader->get("glGetActiveSubroutineName");
+gl->getActiveSubroutineUniformName = (glGetActiveSubroutineUniformNameFunc) loader->get("glGetActiveSubroutineUniformName");
+gl->getActiveSubroutineUniformiv = (glGetActiveSubroutineUniformivFunc) loader->get("glGetActiveSubroutineUniformiv");
+gl->getActiveUniform = (glGetActiveUniformFunc) loader->get("glGetActiveUniform");
+gl->getActiveUniformBlockName = (glGetActiveUniformBlockNameFunc) loader->get("glGetActiveUniformBlockName");
+gl->getActiveUniformBlockiv = (glGetActiveUniformBlockivFunc) loader->get("glGetActiveUniformBlockiv");
+gl->getActiveUniformName = (glGetActiveUniformNameFunc) loader->get("glGetActiveUniformName");
+gl->getActiveUniformsiv = (glGetActiveUniformsivFunc) loader->get("glGetActiveUniformsiv");
+gl->getAttachedShaders = (glGetAttachedShadersFunc) loader->get("glGetAttachedShaders");
+gl->getAttribLocation = (glGetAttribLocationFunc) loader->get("glGetAttribLocation");
+gl->getBooleani_v = (glGetBooleani_vFunc) loader->get("glGetBooleani_v");
+gl->getBooleanv = (glGetBooleanvFunc) loader->get("glGetBooleanv");
+gl->getBufferParameteri64v = (glGetBufferParameteri64vFunc) loader->get("glGetBufferParameteri64v");
+gl->getBufferParameteriv = (glGetBufferParameterivFunc) loader->get("glGetBufferParameteriv");
+gl->getBufferPointerv = (glGetBufferPointervFunc) loader->get("glGetBufferPointerv");
+gl->getBufferSubData = (glGetBufferSubDataFunc) loader->get("glGetBufferSubData");
+gl->getCompressedTexImage = (glGetCompressedTexImageFunc) loader->get("glGetCompressedTexImage");
+gl->getCompressedTextureImage = (glGetCompressedTextureImageFunc) loader->get("glGetCompressedTextureImage");
+gl->getCompressedTextureSubImage = (glGetCompressedTextureSubImageFunc) loader->get("glGetCompressedTextureSubImage");
+gl->getDebugMessageLog = (glGetDebugMessageLogFunc) loader->get("glGetDebugMessageLog");
+gl->getDoublei_v = (glGetDoublei_vFunc) loader->get("glGetDoublei_v");
+gl->getDoublev = (glGetDoublevFunc) loader->get("glGetDoublev");
+gl->getError = (glGetErrorFunc) loader->get("glGetError");
+gl->getFloati_v = (glGetFloati_vFunc) loader->get("glGetFloati_v");
+gl->getFloatv = (glGetFloatvFunc) loader->get("glGetFloatv");
+gl->getFragDataIndex = (glGetFragDataIndexFunc) loader->get("glGetFragDataIndex");
+gl->getFragDataLocation = (glGetFragDataLocationFunc) loader->get("glGetFragDataLocation");
+gl->getFramebufferAttachmentParameteriv = (glGetFramebufferAttachmentParameterivFunc) loader->get("glGetFramebufferAttachmentParameteriv");
+gl->getFramebufferParameteriv = (glGetFramebufferParameterivFunc) loader->get("glGetFramebufferParameteriv");
+gl->getGraphicsResetStatus = (glGetGraphicsResetStatusFunc) loader->get("glGetGraphicsResetStatus");
+gl->getInteger64i_v = (glGetInteger64i_vFunc) loader->get("glGetInteger64i_v");
+gl->getInteger64v = (glGetInteger64vFunc) loader->get("glGetInteger64v");
+gl->getIntegeri_v = (glGetIntegeri_vFunc) loader->get("glGetIntegeri_v");
+gl->getIntegerv = (glGetIntegervFunc) loader->get("glGetIntegerv");
+gl->getInternalformati64v = (glGetInternalformati64vFunc) loader->get("glGetInternalformati64v");
+gl->getInternalformativ = (glGetInternalformativFunc) loader->get("glGetInternalformativ");
+gl->getMultisamplefv = (glGetMultisamplefvFunc) loader->get("glGetMultisamplefv");
+gl->getNamedBufferParameteri64v = (glGetNamedBufferParameteri64vFunc) loader->get("glGetNamedBufferParameteri64v");
+gl->getNamedBufferParameteriv = (glGetNamedBufferParameterivFunc) loader->get("glGetNamedBufferParameteriv");
+gl->getNamedBufferPointerv = (glGetNamedBufferPointervFunc) loader->get("glGetNamedBufferPointerv");
+gl->getNamedBufferSubData = (glGetNamedBufferSubDataFunc) loader->get("glGetNamedBufferSubData");
+gl->getNamedFramebufferAttachmentParameteriv = (glGetNamedFramebufferAttachmentParameterivFunc) loader->get("glGetNamedFramebufferAttachmentParameteriv");
+gl->getNamedFramebufferParameteriv = (glGetNamedFramebufferParameterivFunc) loader->get("glGetNamedFramebufferParameteriv");
+gl->getNamedRenderbufferParameteriv = (glGetNamedRenderbufferParameterivFunc) loader->get("glGetNamedRenderbufferParameteriv");
+gl->getObjectLabel = (glGetObjectLabelFunc) loader->get("glGetObjectLabel");
+gl->getObjectPtrLabel = (glGetObjectPtrLabelFunc) loader->get("glGetObjectPtrLabel");
+gl->getPointerv = (glGetPointervFunc) loader->get("glGetPointerv");
+gl->getProgramBinary = (glGetProgramBinaryFunc) loader->get("glGetProgramBinary");
+gl->getProgramInfoLog = (glGetProgramInfoLogFunc) loader->get("glGetProgramInfoLog");
+gl->getProgramInterfaceiv = (glGetProgramInterfaceivFunc) loader->get("glGetProgramInterfaceiv");
+gl->getProgramPipelineInfoLog = (glGetProgramPipelineInfoLogFunc) loader->get("glGetProgramPipelineInfoLog");
+gl->getProgramPipelineiv = (glGetProgramPipelineivFunc) loader->get("glGetProgramPipelineiv");
+gl->getProgramResourceIndex = (glGetProgramResourceIndexFunc) loader->get("glGetProgramResourceIndex");
+gl->getProgramResourceLocation = (glGetProgramResourceLocationFunc) loader->get("glGetProgramResourceLocation");
+gl->getProgramResourceLocationIndex = (glGetProgramResourceLocationIndexFunc) loader->get("glGetProgramResourceLocationIndex");
+gl->getProgramResourceName = (glGetProgramResourceNameFunc) loader->get("glGetProgramResourceName");
+gl->getProgramResourceiv = (glGetProgramResourceivFunc) loader->get("glGetProgramResourceiv");
+gl->getProgramStageiv = (glGetProgramStageivFunc) loader->get("glGetProgramStageiv");
+gl->getProgramiv = (glGetProgramivFunc) loader->get("glGetProgramiv");
+gl->getQueryBufferObjecti64v = (glGetQueryBufferObjecti64vFunc) loader->get("glGetQueryBufferObjecti64v");
+gl->getQueryBufferObjectiv = (glGetQueryBufferObjectivFunc) loader->get("glGetQueryBufferObjectiv");
+gl->getQueryBufferObjectui64v = (glGetQueryBufferObjectui64vFunc) loader->get("glGetQueryBufferObjectui64v");
+gl->getQueryBufferObjectuiv = (glGetQueryBufferObjectuivFunc) loader->get("glGetQueryBufferObjectuiv");
+gl->getQueryIndexediv = (glGetQueryIndexedivFunc) loader->get("glGetQueryIndexediv");
+gl->getQueryObjecti64v = (glGetQueryObjecti64vFunc) loader->get("glGetQueryObjecti64v");
+gl->getQueryObjectiv = (glGetQueryObjectivFunc) loader->get("glGetQueryObjectiv");
+gl->getQueryObjectui64v = (glGetQueryObjectui64vFunc) loader->get("glGetQueryObjectui64v");
+gl->getQueryObjectuiv = (glGetQueryObjectuivFunc) loader->get("glGetQueryObjectuiv");
+gl->getQueryiv = (glGetQueryivFunc) loader->get("glGetQueryiv");
+gl->getRenderbufferParameteriv = (glGetRenderbufferParameterivFunc) loader->get("glGetRenderbufferParameteriv");
+gl->getSamplerParameterIiv = (glGetSamplerParameterIivFunc) loader->get("glGetSamplerParameterIiv");
+gl->getSamplerParameterIuiv = (glGetSamplerParameterIuivFunc) loader->get("glGetSamplerParameterIuiv");
+gl->getSamplerParameterfv = (glGetSamplerParameterfvFunc) loader->get("glGetSamplerParameterfv");
+gl->getSamplerParameteriv = (glGetSamplerParameterivFunc) loader->get("glGetSamplerParameteriv");
+gl->getShaderInfoLog = (glGetShaderInfoLogFunc) loader->get("glGetShaderInfoLog");
+gl->getShaderPrecisionFormat = (glGetShaderPrecisionFormatFunc) loader->get("glGetShaderPrecisionFormat");
+gl->getShaderSource = (glGetShaderSourceFunc) loader->get("glGetShaderSource");
+gl->getShaderiv = (glGetShaderivFunc) loader->get("glGetShaderiv");
+gl->getString = (glGetStringFunc) loader->get("glGetString");
+gl->getStringi = (glGetStringiFunc) loader->get("glGetStringi");
+gl->getSubroutineIndex = (glGetSubroutineIndexFunc) loader->get("glGetSubroutineIndex");
+gl->getSubroutineUniformLocation = (glGetSubroutineUniformLocationFunc) loader->get("glGetSubroutineUniformLocation");
+gl->getSynciv = (glGetSyncivFunc) loader->get("glGetSynciv");
+gl->getTexImage = (glGetTexImageFunc) loader->get("glGetTexImage");
+gl->getTexLevelParameterfv = (glGetTexLevelParameterfvFunc) loader->get("glGetTexLevelParameterfv");
+gl->getTexLevelParameteriv = (glGetTexLevelParameterivFunc) loader->get("glGetTexLevelParameteriv");
+gl->getTexParameterIiv = (glGetTexParameterIivFunc) loader->get("glGetTexParameterIiv");
+gl->getTexParameterIuiv = (glGetTexParameterIuivFunc) loader->get("glGetTexParameterIuiv");
+gl->getTexParameterfv = (glGetTexParameterfvFunc) loader->get("glGetTexParameterfv");
+gl->getTexParameteriv = (glGetTexParameterivFunc) loader->get("glGetTexParameteriv");
+gl->getTextureImage = (glGetTextureImageFunc) loader->get("glGetTextureImage");
+gl->getTextureLevelParameterfv = (glGetTextureLevelParameterfvFunc) loader->get("glGetTextureLevelParameterfv");
+gl->getTextureLevelParameteriv = (glGetTextureLevelParameterivFunc) loader->get("glGetTextureLevelParameteriv");
+gl->getTextureParameterIiv = (glGetTextureParameterIivFunc) loader->get("glGetTextureParameterIiv");
+gl->getTextureParameterIuiv = (glGetTextureParameterIuivFunc) loader->get("glGetTextureParameterIuiv");
+gl->getTextureParameterfv = (glGetTextureParameterfvFunc) loader->get("glGetTextureParameterfv");
+gl->getTextureParameteriv = (glGetTextureParameterivFunc) loader->get("glGetTextureParameteriv");
+gl->getTextureSubImage = (glGetTextureSubImageFunc) loader->get("glGetTextureSubImage");
+gl->getTransformFeedbackVarying = (glGetTransformFeedbackVaryingFunc) loader->get("glGetTransformFeedbackVarying");
+gl->getTransformFeedbacki64_v = (glGetTransformFeedbacki64_vFunc) loader->get("glGetTransformFeedbacki64_v");
+gl->getTransformFeedbacki_v = (glGetTransformFeedbacki_vFunc) loader->get("glGetTransformFeedbacki_v");
+gl->getTransformFeedbackiv = (glGetTransformFeedbackivFunc) loader->get("glGetTransformFeedbackiv");
+gl->getUniformBlockIndex = (glGetUniformBlockIndexFunc) loader->get("glGetUniformBlockIndex");
+gl->getUniformIndices = (glGetUniformIndicesFunc) loader->get("glGetUniformIndices");
+gl->getUniformLocation = (glGetUniformLocationFunc) loader->get("glGetUniformLocation");
+gl->getUniformSubroutineuiv = (glGetUniformSubroutineuivFunc) loader->get("glGetUniformSubroutineuiv");
+gl->getUniformdv = (glGetUniformdvFunc) loader->get("glGetUniformdv");
+gl->getUniformfv = (glGetUniformfvFunc) loader->get("glGetUniformfv");
+gl->getUniformiv = (glGetUniformivFunc) loader->get("glGetUniformiv");
+gl->getUniformuiv = (glGetUniformuivFunc) loader->get("glGetUniformuiv");
+gl->getVertexArrayIndexed64iv = (glGetVertexArrayIndexed64ivFunc) loader->get("glGetVertexArrayIndexed64iv");
+gl->getVertexArrayIndexediv = (glGetVertexArrayIndexedivFunc) loader->get("glGetVertexArrayIndexediv");
+gl->getVertexArrayiv = (glGetVertexArrayivFunc) loader->get("glGetVertexArrayiv");
+gl->getVertexAttribIiv = (glGetVertexAttribIivFunc) loader->get("glGetVertexAttribIiv");
+gl->getVertexAttribIuiv = (glGetVertexAttribIuivFunc) loader->get("glGetVertexAttribIuiv");
+gl->getVertexAttribLdv = (glGetVertexAttribLdvFunc) loader->get("glGetVertexAttribLdv");
+gl->getVertexAttribPointerv = (glGetVertexAttribPointervFunc) loader->get("glGetVertexAttribPointerv");
+gl->getVertexAttribdv = (glGetVertexAttribdvFunc) loader->get("glGetVertexAttribdv");
+gl->getVertexAttribfv = (glGetVertexAttribfvFunc) loader->get("glGetVertexAttribfv");
+gl->getVertexAttribiv = (glGetVertexAttribivFunc) loader->get("glGetVertexAttribiv");
+gl->getnCompressedTexImage = (glGetnCompressedTexImageFunc) loader->get("glGetnCompressedTexImage");
+gl->getnTexImage = (glGetnTexImageFunc) loader->get("glGetnTexImage");
+gl->getnUniformdv = (glGetnUniformdvFunc) loader->get("glGetnUniformdv");
+gl->getnUniformfv = (glGetnUniformfvFunc) loader->get("glGetnUniformfv");
+gl->getnUniformiv = (glGetnUniformivFunc) loader->get("glGetnUniformiv");
+gl->getnUniformuiv = (glGetnUniformuivFunc) loader->get("glGetnUniformuiv");
+gl->hint = (glHintFunc) loader->get("glHint");
+gl->invalidateBufferData = (glInvalidateBufferDataFunc) loader->get("glInvalidateBufferData");
+gl->invalidateBufferSubData = (glInvalidateBufferSubDataFunc) loader->get("glInvalidateBufferSubData");
+gl->invalidateFramebuffer = (glInvalidateFramebufferFunc) loader->get("glInvalidateFramebuffer");
+gl->invalidateNamedFramebufferData = (glInvalidateNamedFramebufferDataFunc) loader->get("glInvalidateNamedFramebufferData");
+gl->invalidateNamedFramebufferSubData = (glInvalidateNamedFramebufferSubDataFunc) loader->get("glInvalidateNamedFramebufferSubData");
+gl->invalidateSubFramebuffer = (glInvalidateSubFramebufferFunc) loader->get("glInvalidateSubFramebuffer");
+gl->invalidateTexImage = (glInvalidateTexImageFunc) loader->get("glInvalidateTexImage");
+gl->invalidateTexSubImage = (glInvalidateTexSubImageFunc) loader->get("glInvalidateTexSubImage");
+gl->isBuffer = (glIsBufferFunc) loader->get("glIsBuffer");
+gl->isEnabled = (glIsEnabledFunc) loader->get("glIsEnabled");
+gl->isEnabledi = (glIsEnablediFunc) loader->get("glIsEnabledi");
+gl->isFramebuffer = (glIsFramebufferFunc) loader->get("glIsFramebuffer");
+gl->isProgram = (glIsProgramFunc) loader->get("glIsProgram");
+gl->isProgramPipeline = (glIsProgramPipelineFunc) loader->get("glIsProgramPipeline");
+gl->isQuery = (glIsQueryFunc) loader->get("glIsQuery");
+gl->isRenderbuffer = (glIsRenderbufferFunc) loader->get("glIsRenderbuffer");
+gl->isSampler = (glIsSamplerFunc) loader->get("glIsSampler");
+gl->isShader = (glIsShaderFunc) loader->get("glIsShader");
+gl->isSync = (glIsSyncFunc) loader->get("glIsSync");
+gl->isTexture = (glIsTextureFunc) loader->get("glIsTexture");
+gl->isTransformFeedback = (glIsTransformFeedbackFunc) loader->get("glIsTransformFeedback");
+gl->isVertexArray = (glIsVertexArrayFunc) loader->get("glIsVertexArray");
+gl->lineWidth = (glLineWidthFunc) loader->get("glLineWidth");
+gl->linkProgram = (glLinkProgramFunc) loader->get("glLinkProgram");
+gl->logicOp = (glLogicOpFunc) loader->get("glLogicOp");
+gl->mapBuffer = (glMapBufferFunc) loader->get("glMapBuffer");
+gl->mapBufferRange = (glMapBufferRangeFunc) loader->get("glMapBufferRange");
+gl->mapNamedBuffer = (glMapNamedBufferFunc) loader->get("glMapNamedBuffer");
+gl->mapNamedBufferRange = (glMapNamedBufferRangeFunc) loader->get("glMapNamedBufferRange");
+gl->memoryBarrier = (glMemoryBarrierFunc) loader->get("glMemoryBarrier");
+gl->memoryBarrierByRegion = (glMemoryBarrierByRegionFunc) loader->get("glMemoryBarrierByRegion");
+gl->minSampleShading = (glMinSampleShadingFunc) loader->get("glMinSampleShading");
+gl->multiDrawArrays = (glMultiDrawArraysFunc) loader->get("glMultiDrawArrays");
+gl->multiDrawArraysIndirect = (glMultiDrawArraysIndirectFunc) loader->get("glMultiDrawArraysIndirect");
+gl->multiDrawArraysIndirectCount = (glMultiDrawArraysIndirectCountFunc) loader->get("glMultiDrawArraysIndirectCount");
+gl->multiDrawElements = (glMultiDrawElementsFunc) loader->get("glMultiDrawElements");
+gl->multiDrawElementsBaseVertex = (glMultiDrawElementsBaseVertexFunc) loader->get("glMultiDrawElementsBaseVertex");
+gl->multiDrawElementsIndirect = (glMultiDrawElementsIndirectFunc) loader->get("glMultiDrawElementsIndirect");
+gl->multiDrawElementsIndirectCount = (glMultiDrawElementsIndirectCountFunc) loader->get("glMultiDrawElementsIndirectCount");
+gl->namedBufferData = (glNamedBufferDataFunc) loader->get("glNamedBufferData");
+gl->namedBufferStorage = (glNamedBufferStorageFunc) loader->get("glNamedBufferStorage");
+gl->namedBufferSubData = (glNamedBufferSubDataFunc) loader->get("glNamedBufferSubData");
+gl->namedFramebufferDrawBuffer = (glNamedFramebufferDrawBufferFunc) loader->get("glNamedFramebufferDrawBuffer");
+gl->namedFramebufferDrawBuffers = (glNamedFramebufferDrawBuffersFunc) loader->get("glNamedFramebufferDrawBuffers");
+gl->namedFramebufferParameteri = (glNamedFramebufferParameteriFunc) loader->get("glNamedFramebufferParameteri");
+gl->namedFramebufferReadBuffer = (glNamedFramebufferReadBufferFunc) loader->get("glNamedFramebufferReadBuffer");
+gl->namedFramebufferRenderbuffer = (glNamedFramebufferRenderbufferFunc) loader->get("glNamedFramebufferRenderbuffer");
+gl->namedFramebufferTexture = (glNamedFramebufferTextureFunc) loader->get("glNamedFramebufferTexture");
+gl->namedFramebufferTextureLayer = (glNamedFramebufferTextureLayerFunc) loader->get("glNamedFramebufferTextureLayer");
+gl->namedRenderbufferStorage = (glNamedRenderbufferStorageFunc) loader->get("glNamedRenderbufferStorage");
+gl->namedRenderbufferStorageMultisample = (glNamedRenderbufferStorageMultisampleFunc) loader->get("glNamedRenderbufferStorageMultisample");
+gl->objectLabel = (glObjectLabelFunc) loader->get("glObjectLabel");
+gl->objectPtrLabel = (glObjectPtrLabelFunc) loader->get("glObjectPtrLabel");
+gl->patchParameterfv = (glPatchParameterfvFunc) loader->get("glPatchParameterfv");
+gl->patchParameteri = (glPatchParameteriFunc) loader->get("glPatchParameteri");
+gl->pauseTransformFeedback = (glPauseTransformFeedbackFunc) loader->get("glPauseTransformFeedback");
+gl->pixelStoref = (glPixelStorefFunc) loader->get("glPixelStoref");
+gl->pixelStorei = (glPixelStoreiFunc) loader->get("glPixelStorei");
+gl->pointParameterf = (glPointParameterfFunc) loader->get("glPointParameterf");
+gl->pointParameterfv = (glPointParameterfvFunc) loader->get("glPointParameterfv");
+gl->pointParameteri = (glPointParameteriFunc) loader->get("glPointParameteri");
+gl->pointParameteriv = (glPointParameterivFunc) loader->get("glPointParameteriv");
+gl->pointSize = (glPointSizeFunc) loader->get("glPointSize");
+gl->polygonMode = (glPolygonModeFunc) loader->get("glPolygonMode");
+gl->polygonOffset = (glPolygonOffsetFunc) loader->get("glPolygonOffset");
+gl->polygonOffsetClamp = (glPolygonOffsetClampFunc) loader->get("glPolygonOffsetClamp");
+gl->popDebugGroup = (glPopDebugGroupFunc) loader->get("glPopDebugGroup");
+gl->primitiveRestartIndex = (glPrimitiveRestartIndexFunc) loader->get("glPrimitiveRestartIndex");
+gl->programBinary = (glProgramBinaryFunc) loader->get("glProgramBinary");
+gl->programParameteri = (glProgramParameteriFunc) loader->get("glProgramParameteri");
+gl->programUniform1d = (glProgramUniform1dFunc) loader->get("glProgramUniform1d");
+gl->programUniform1dv = (glProgramUniform1dvFunc) loader->get("glProgramUniform1dv");
+gl->programUniform1f = (glProgramUniform1fFunc) loader->get("glProgramUniform1f");
+gl->programUniform1fv = (glProgramUniform1fvFunc) loader->get("glProgramUniform1fv");
+gl->programUniform1i = (glProgramUniform1iFunc) loader->get("glProgramUniform1i");
+gl->programUniform1iv = (glProgramUniform1ivFunc) loader->get("glProgramUniform1iv");
+gl->programUniform1ui = (glProgramUniform1uiFunc) loader->get("glProgramUniform1ui");
+gl->programUniform1uiv = (glProgramUniform1uivFunc) loader->get("glProgramUniform1uiv");
+gl->programUniform2d = (glProgramUniform2dFunc) loader->get("glProgramUniform2d");
+gl->programUniform2dv = (glProgramUniform2dvFunc) loader->get("glProgramUniform2dv");
+gl->programUniform2f = (glProgramUniform2fFunc) loader->get("glProgramUniform2f");
+gl->programUniform2fv = (glProgramUniform2fvFunc) loader->get("glProgramUniform2fv");
+gl->programUniform2i = (glProgramUniform2iFunc) loader->get("glProgramUniform2i");
+gl->programUniform2iv = (glProgramUniform2ivFunc) loader->get("glProgramUniform2iv");
+gl->programUniform2ui = (glProgramUniform2uiFunc) loader->get("glProgramUniform2ui");
+gl->programUniform2uiv = (glProgramUniform2uivFunc) loader->get("glProgramUniform2uiv");
+gl->programUniform3d = (glProgramUniform3dFunc) loader->get("glProgramUniform3d");
+gl->programUniform3dv = (glProgramUniform3dvFunc) loader->get("glProgramUniform3dv");
+gl->programUniform3f = (glProgramUniform3fFunc) loader->get("glProgramUniform3f");
+gl->programUniform3fv = (glProgramUniform3fvFunc) loader->get("glProgramUniform3fv");
+gl->programUniform3i = (glProgramUniform3iFunc) loader->get("glProgramUniform3i");
+gl->programUniform3iv = (glProgramUniform3ivFunc) loader->get("glProgramUniform3iv");
+gl->programUniform3ui = (glProgramUniform3uiFunc) loader->get("glProgramUniform3ui");
+gl->programUniform3uiv = (glProgramUniform3uivFunc) loader->get("glProgramUniform3uiv");
+gl->programUniform4d = (glProgramUniform4dFunc) loader->get("glProgramUniform4d");
+gl->programUniform4dv = (glProgramUniform4dvFunc) loader->get("glProgramUniform4dv");
+gl->programUniform4f = (glProgramUniform4fFunc) loader->get("glProgramUniform4f");
+gl->programUniform4fv = (glProgramUniform4fvFunc) loader->get("glProgramUniform4fv");
+gl->programUniform4i = (glProgramUniform4iFunc) loader->get("glProgramUniform4i");
+gl->programUniform4iv = (glProgramUniform4ivFunc) loader->get("glProgramUniform4iv");
+gl->programUniform4ui = (glProgramUniform4uiFunc) loader->get("glProgramUniform4ui");
+gl->programUniform4uiv = (glProgramUniform4uivFunc) loader->get("glProgramUniform4uiv");
+gl->programUniformMatrix2dv = (glProgramUniformMatrix2dvFunc) loader->get("glProgramUniformMatrix2dv");
+gl->programUniformMatrix2fv = (glProgramUniformMatrix2fvFunc) loader->get("glProgramUniformMatrix2fv");
+gl->programUniformMatrix2x3dv = (glProgramUniformMatrix2x3dvFunc) loader->get("glProgramUniformMatrix2x3dv");
+gl->programUniformMatrix2x3fv = (glProgramUniformMatrix2x3fvFunc) loader->get("glProgramUniformMatrix2x3fv");
+gl->programUniformMatrix2x4dv = (glProgramUniformMatrix2x4dvFunc) loader->get("glProgramUniformMatrix2x4dv");
+gl->programUniformMatrix2x4fv = (glProgramUniformMatrix2x4fvFunc) loader->get("glProgramUniformMatrix2x4fv");
+gl->programUniformMatrix3dv = (glProgramUniformMatrix3dvFunc) loader->get("glProgramUniformMatrix3dv");
+gl->programUniformMatrix3fv = (glProgramUniformMatrix3fvFunc) loader->get("glProgramUniformMatrix3fv");
+gl->programUniformMatrix3x2dv = (glProgramUniformMatrix3x2dvFunc) loader->get("glProgramUniformMatrix3x2dv");
+gl->programUniformMatrix3x2fv = (glProgramUniformMatrix3x2fvFunc) loader->get("glProgramUniformMatrix3x2fv");
+gl->programUniformMatrix3x4dv = (glProgramUniformMatrix3x4dvFunc) loader->get("glProgramUniformMatrix3x4dv");
+gl->programUniformMatrix3x4fv = (glProgramUniformMatrix3x4fvFunc) loader->get("glProgramUniformMatrix3x4fv");
+gl->programUniformMatrix4dv = (glProgramUniformMatrix4dvFunc) loader->get("glProgramUniformMatrix4dv");
+gl->programUniformMatrix4fv = (glProgramUniformMatrix4fvFunc) loader->get("glProgramUniformMatrix4fv");
+gl->programUniformMatrix4x2dv = (glProgramUniformMatrix4x2dvFunc) loader->get("glProgramUniformMatrix4x2dv");
+gl->programUniformMatrix4x2fv = (glProgramUniformMatrix4x2fvFunc) loader->get("glProgramUniformMatrix4x2fv");
+gl->programUniformMatrix4x3dv = (glProgramUniformMatrix4x3dvFunc) loader->get("glProgramUniformMatrix4x3dv");
+gl->programUniformMatrix4x3fv = (glProgramUniformMatrix4x3fvFunc) loader->get("glProgramUniformMatrix4x3fv");
+gl->provokingVertex = (glProvokingVertexFunc) loader->get("glProvokingVertex");
+gl->pushDebugGroup = (glPushDebugGroupFunc) loader->get("glPushDebugGroup");
+gl->queryCounter = (glQueryCounterFunc) loader->get("glQueryCounter");
+gl->readBuffer = (glReadBufferFunc) loader->get("glReadBuffer");
+gl->readPixels = (glReadPixelsFunc) loader->get("glReadPixels");
+gl->readnPixels = (glReadnPixelsFunc) loader->get("glReadnPixels");
+gl->releaseShaderCompiler = (glReleaseShaderCompilerFunc) loader->get("glReleaseShaderCompiler");
+gl->renderbufferStorage = (glRenderbufferStorageFunc) loader->get("glRenderbufferStorage");
+gl->renderbufferStorageMultisample = (glRenderbufferStorageMultisampleFunc) loader->get("glRenderbufferStorageMultisample");
+gl->resumeTransformFeedback = (glResumeTransformFeedbackFunc) loader->get("glResumeTransformFeedback");
+gl->sampleCoverage = (glSampleCoverageFunc) loader->get("glSampleCoverage");
+gl->sampleMaski = (glSampleMaskiFunc) loader->get("glSampleMaski");
+gl->samplerParameterIiv = (glSamplerParameterIivFunc) loader->get("glSamplerParameterIiv");
+gl->samplerParameterIuiv = (glSamplerParameterIuivFunc) loader->get("glSamplerParameterIuiv");
+gl->samplerParameterf = (glSamplerParameterfFunc) loader->get("glSamplerParameterf");
+gl->samplerParameterfv = (glSamplerParameterfvFunc) loader->get("glSamplerParameterfv");
+gl->samplerParameteri = (glSamplerParameteriFunc) loader->get("glSamplerParameteri");
+gl->samplerParameteriv = (glSamplerParameterivFunc) loader->get("glSamplerParameteriv");
+gl->scissor = (glScissorFunc) loader->get("glScissor");
+gl->scissorArrayv = (glScissorArrayvFunc) loader->get("glScissorArrayv");
+gl->scissorIndexed = (glScissorIndexedFunc) loader->get("glScissorIndexed");
+gl->scissorIndexedv = (glScissorIndexedvFunc) loader->get("glScissorIndexedv");
+gl->shaderBinary = (glShaderBinaryFunc) loader->get("glShaderBinary");
+gl->shaderSource = (glShaderSourceFunc) loader->get("glShaderSource");
+gl->shaderStorageBlockBinding = (glShaderStorageBlockBindingFunc) loader->get("glShaderStorageBlockBinding");
+gl->specializeShader = (glSpecializeShaderFunc) loader->get("glSpecializeShader");
+gl->stencilFunc = (glStencilFuncFunc) loader->get("glStencilFunc");
+gl->stencilFuncSeparate = (glStencilFuncSeparateFunc) loader->get("glStencilFuncSeparate");
+gl->stencilMask = (glStencilMaskFunc) loader->get("glStencilMask");
+gl->stencilMaskSeparate = (glStencilMaskSeparateFunc) loader->get("glStencilMaskSeparate");
+gl->stencilOp = (glStencilOpFunc) loader->get("glStencilOp");
+gl->stencilOpSeparate = (glStencilOpSeparateFunc) loader->get("glStencilOpSeparate");
+gl->texBuffer = (glTexBufferFunc) loader->get("glTexBuffer");
+gl->texBufferRange = (glTexBufferRangeFunc) loader->get("glTexBufferRange");
+gl->texImage1D = (glTexImage1DFunc) loader->get("glTexImage1D");
+gl->texImage2D = (glTexImage2DFunc) loader->get("glTexImage2D");
+gl->texImage2DMultisample = (glTexImage2DMultisampleFunc) loader->get("glTexImage2DMultisample");
+gl->texImage3D = (glTexImage3DFunc) loader->get("glTexImage3D");
+gl->texImage3DMultisample = (glTexImage3DMultisampleFunc) loader->get("glTexImage3DMultisample");
+gl->texParameterIiv = (glTexParameterIivFunc) loader->get("glTexParameterIiv");
+gl->texParameterIuiv = (glTexParameterIuivFunc) loader->get("glTexParameterIuiv");
+gl->texParameterf = (glTexParameterfFunc) loader->get("glTexParameterf");
+gl->texParameterfv = (glTexParameterfvFunc) loader->get("glTexParameterfv");
+gl->texParameteri = (glTexParameteriFunc) loader->get("glTexParameteri");
+gl->texParameteriv = (glTexParameterivFunc) loader->get("glTexParameteriv");
+gl->texStorage1D = (glTexStorage1DFunc) loader->get("glTexStorage1D");
+gl->texStorage2D = (glTexStorage2DFunc) loader->get("glTexStorage2D");
+gl->texStorage2DMultisample = (glTexStorage2DMultisampleFunc) loader->get("glTexStorage2DMultisample");
+gl->texStorage3D = (glTexStorage3DFunc) loader->get("glTexStorage3D");
+gl->texStorage3DMultisample = (glTexStorage3DMultisampleFunc) loader->get("glTexStorage3DMultisample");
+gl->texSubImage1D = (glTexSubImage1DFunc) loader->get("glTexSubImage1D");
+gl->texSubImage2D = (glTexSubImage2DFunc) loader->get("glTexSubImage2D");
+gl->texSubImage3D = (glTexSubImage3DFunc) loader->get("glTexSubImage3D");
+gl->textureBarrier = (glTextureBarrierFunc) loader->get("glTextureBarrier");
+gl->textureBuffer = (glTextureBufferFunc) loader->get("glTextureBuffer");
+gl->textureBufferRange = (glTextureBufferRangeFunc) loader->get("glTextureBufferRange");
+gl->textureParameterIiv = (glTextureParameterIivFunc) loader->get("glTextureParameterIiv");
+gl->textureParameterIuiv = (glTextureParameterIuivFunc) loader->get("glTextureParameterIuiv");
+gl->textureParameterf = (glTextureParameterfFunc) loader->get("glTextureParameterf");
+gl->textureParameterfv = (glTextureParameterfvFunc) loader->get("glTextureParameterfv");
+gl->textureParameteri = (glTextureParameteriFunc) loader->get("glTextureParameteri");
+gl->textureParameteriv = (glTextureParameterivFunc) loader->get("glTextureParameteriv");
+gl->textureStorage1D = (glTextureStorage1DFunc) loader->get("glTextureStorage1D");
+gl->textureStorage2D = (glTextureStorage2DFunc) loader->get("glTextureStorage2D");
+gl->textureStorage2DMultisample = (glTextureStorage2DMultisampleFunc) loader->get("glTextureStorage2DMultisample");
+gl->textureStorage3D = (glTextureStorage3DFunc) loader->get("glTextureStorage3D");
+gl->textureStorage3DMultisample = (glTextureStorage3DMultisampleFunc) loader->get("glTextureStorage3DMultisample");
+gl->textureSubImage1D = (glTextureSubImage1DFunc) loader->get("glTextureSubImage1D");
+gl->textureSubImage2D = (glTextureSubImage2DFunc) loader->get("glTextureSubImage2D");
+gl->textureSubImage3D = (glTextureSubImage3DFunc) loader->get("glTextureSubImage3D");
+gl->textureView = (glTextureViewFunc) loader->get("glTextureView");
+gl->transformFeedbackBufferBase = (glTransformFeedbackBufferBaseFunc) loader->get("glTransformFeedbackBufferBase");
+gl->transformFeedbackBufferRange = (glTransformFeedbackBufferRangeFunc) loader->get("glTransformFeedbackBufferRange");
+gl->transformFeedbackVaryings = (glTransformFeedbackVaryingsFunc) loader->get("glTransformFeedbackVaryings");
+gl->uniform1d = (glUniform1dFunc) loader->get("glUniform1d");
+gl->uniform1dv = (glUniform1dvFunc) loader->get("glUniform1dv");
+gl->uniform1f = (glUniform1fFunc) loader->get("glUniform1f");
+gl->uniform1fv = (glUniform1fvFunc) loader->get("glUniform1fv");
+gl->uniform1i = (glUniform1iFunc) loader->get("glUniform1i");
+gl->uniform1iv = (glUniform1ivFunc) loader->get("glUniform1iv");
+gl->uniform1ui = (glUniform1uiFunc) loader->get("glUniform1ui");
+gl->uniform1uiv = (glUniform1uivFunc) loader->get("glUniform1uiv");
+gl->uniform2d = (glUniform2dFunc) loader->get("glUniform2d");
+gl->uniform2dv = (glUniform2dvFunc) loader->get("glUniform2dv");
+gl->uniform2f = (glUniform2fFunc) loader->get("glUniform2f");
+gl->uniform2fv = (glUniform2fvFunc) loader->get("glUniform2fv");
+gl->uniform2i = (glUniform2iFunc) loader->get("glUniform2i");
+gl->uniform2iv = (glUniform2ivFunc) loader->get("glUniform2iv");
+gl->uniform2ui = (glUniform2uiFunc) loader->get("glUniform2ui");
+gl->uniform2uiv = (glUniform2uivFunc) loader->get("glUniform2uiv");
+gl->uniform3d = (glUniform3dFunc) loader->get("glUniform3d");
+gl->uniform3dv = (glUniform3dvFunc) loader->get("glUniform3dv");
+gl->uniform3f = (glUniform3fFunc) loader->get("glUniform3f");
+gl->uniform3fv = (glUniform3fvFunc) loader->get("glUniform3fv");
+gl->uniform3i = (glUniform3iFunc) loader->get("glUniform3i");
+gl->uniform3iv = (glUniform3ivFunc) loader->get("glUniform3iv");
+gl->uniform3ui = (glUniform3uiFunc) loader->get("glUniform3ui");
+gl->uniform3uiv = (glUniform3uivFunc) loader->get("glUniform3uiv");
+gl->uniform4d = (glUniform4dFunc) loader->get("glUniform4d");
+gl->uniform4dv = (glUniform4dvFunc) loader->get("glUniform4dv");
+gl->uniform4f = (glUniform4fFunc) loader->get("glUniform4f");
+gl->uniform4fv = (glUniform4fvFunc) loader->get("glUniform4fv");
+gl->uniform4i = (glUniform4iFunc) loader->get("glUniform4i");
+gl->uniform4iv = (glUniform4ivFunc) loader->get("glUniform4iv");
+gl->uniform4ui = (glUniform4uiFunc) loader->get("glUniform4ui");
+gl->uniform4uiv = (glUniform4uivFunc) loader->get("glUniform4uiv");
+gl->uniformBlockBinding = (glUniformBlockBindingFunc) loader->get("glUniformBlockBinding");
+gl->uniformMatrix2dv = (glUniformMatrix2dvFunc) loader->get("glUniformMatrix2dv");
+gl->uniformMatrix2fv = (glUniformMatrix2fvFunc) loader->get("glUniformMatrix2fv");
+gl->uniformMatrix2x3dv = (glUniformMatrix2x3dvFunc) loader->get("glUniformMatrix2x3dv");
+gl->uniformMatrix2x3fv = (glUniformMatrix2x3fvFunc) loader->get("glUniformMatrix2x3fv");
+gl->uniformMatrix2x4dv = (glUniformMatrix2x4dvFunc) loader->get("glUniformMatrix2x4dv");
+gl->uniformMatrix2x4fv = (glUniformMatrix2x4fvFunc) loader->get("glUniformMatrix2x4fv");
+gl->uniformMatrix3dv = (glUniformMatrix3dvFunc) loader->get("glUniformMatrix3dv");
+gl->uniformMatrix3fv = (glUniformMatrix3fvFunc) loader->get("glUniformMatrix3fv");
+gl->uniformMatrix3x2dv = (glUniformMatrix3x2dvFunc) loader->get("glUniformMatrix3x2dv");
+gl->uniformMatrix3x2fv = (glUniformMatrix3x2fvFunc) loader->get("glUniformMatrix3x2fv");
+gl->uniformMatrix3x4dv = (glUniformMatrix3x4dvFunc) loader->get("glUniformMatrix3x4dv");
+gl->uniformMatrix3x4fv = (glUniformMatrix3x4fvFunc) loader->get("glUniformMatrix3x4fv");
+gl->uniformMatrix4dv = (glUniformMatrix4dvFunc) loader->get("glUniformMatrix4dv");
+gl->uniformMatrix4fv = (glUniformMatrix4fvFunc) loader->get("glUniformMatrix4fv");
+gl->uniformMatrix4x2dv = (glUniformMatrix4x2dvFunc) loader->get("glUniformMatrix4x2dv");
+gl->uniformMatrix4x2fv = (glUniformMatrix4x2fvFunc) loader->get("glUniformMatrix4x2fv");
+gl->uniformMatrix4x3dv = (glUniformMatrix4x3dvFunc) loader->get("glUniformMatrix4x3dv");
+gl->uniformMatrix4x3fv = (glUniformMatrix4x3fvFunc) loader->get("glUniformMatrix4x3fv");
+gl->uniformSubroutinesuiv = (glUniformSubroutinesuivFunc) loader->get("glUniformSubroutinesuiv");
+gl->unmapBuffer = (glUnmapBufferFunc) loader->get("glUnmapBuffer");
+gl->unmapNamedBuffer = (glUnmapNamedBufferFunc) loader->get("glUnmapNamedBuffer");
+gl->useProgram = (glUseProgramFunc) loader->get("glUseProgram");
+gl->useProgramStages = (glUseProgramStagesFunc) loader->get("glUseProgramStages");
+gl->validateProgram = (glValidateProgramFunc) loader->get("glValidateProgram");
+gl->validateProgramPipeline = (glValidateProgramPipelineFunc) loader->get("glValidateProgramPipeline");
+gl->vertexArrayAttribBinding = (glVertexArrayAttribBindingFunc) loader->get("glVertexArrayAttribBinding");
+gl->vertexArrayAttribFormat = (glVertexArrayAttribFormatFunc) loader->get("glVertexArrayAttribFormat");
+gl->vertexArrayAttribIFormat = (glVertexArrayAttribIFormatFunc) loader->get("glVertexArrayAttribIFormat");
+gl->vertexArrayAttribLFormat = (glVertexArrayAttribLFormatFunc) loader->get("glVertexArrayAttribLFormat");
+gl->vertexArrayBindingDivisor = (glVertexArrayBindingDivisorFunc) loader->get("glVertexArrayBindingDivisor");
+gl->vertexArrayElementBuffer = (glVertexArrayElementBufferFunc) loader->get("glVertexArrayElementBuffer");
+gl->vertexArrayVertexBuffer = (glVertexArrayVertexBufferFunc) loader->get("glVertexArrayVertexBuffer");
+gl->vertexArrayVertexBuffers = (glVertexArrayVertexBuffersFunc) loader->get("glVertexArrayVertexBuffers");
+gl->vertexAttrib1d = (glVertexAttrib1dFunc) loader->get("glVertexAttrib1d");
+gl->vertexAttrib1dv = (glVertexAttrib1dvFunc) loader->get("glVertexAttrib1dv");
+gl->vertexAttrib1f = (glVertexAttrib1fFunc) loader->get("glVertexAttrib1f");
+gl->vertexAttrib1fv = (glVertexAttrib1fvFunc) loader->get("glVertexAttrib1fv");
+gl->vertexAttrib1s = (glVertexAttrib1sFunc) loader->get("glVertexAttrib1s");
+gl->vertexAttrib1sv = (glVertexAttrib1svFunc) loader->get("glVertexAttrib1sv");
+gl->vertexAttrib2d = (glVertexAttrib2dFunc) loader->get("glVertexAttrib2d");
+gl->vertexAttrib2dv = (glVertexAttrib2dvFunc) loader->get("glVertexAttrib2dv");
+gl->vertexAttrib2f = (glVertexAttrib2fFunc) loader->get("glVertexAttrib2f");
+gl->vertexAttrib2fv = (glVertexAttrib2fvFunc) loader->get("glVertexAttrib2fv");
+gl->vertexAttrib2s = (glVertexAttrib2sFunc) loader->get("glVertexAttrib2s");
+gl->vertexAttrib2sv = (glVertexAttrib2svFunc) loader->get("glVertexAttrib2sv");
+gl->vertexAttrib3d = (glVertexAttrib3dFunc) loader->get("glVertexAttrib3d");
+gl->vertexAttrib3dv = (glVertexAttrib3dvFunc) loader->get("glVertexAttrib3dv");
+gl->vertexAttrib3f = (glVertexAttrib3fFunc) loader->get("glVertexAttrib3f");
+gl->vertexAttrib3fv = (glVertexAttrib3fvFunc) loader->get("glVertexAttrib3fv");
+gl->vertexAttrib3s = (glVertexAttrib3sFunc) loader->get("glVertexAttrib3s");
+gl->vertexAttrib3sv = (glVertexAttrib3svFunc) loader->get("glVertexAttrib3sv");
+gl->vertexAttrib4Nbv = (glVertexAttrib4NbvFunc) loader->get("glVertexAttrib4Nbv");
+gl->vertexAttrib4Niv = (glVertexAttrib4NivFunc) loader->get("glVertexAttrib4Niv");
+gl->vertexAttrib4Nsv = (glVertexAttrib4NsvFunc) loader->get("glVertexAttrib4Nsv");
+gl->vertexAttrib4Nub = (glVertexAttrib4NubFunc) loader->get("glVertexAttrib4Nub");
+gl->vertexAttrib4Nubv = (glVertexAttrib4NubvFunc) loader->get("glVertexAttrib4Nubv");
+gl->vertexAttrib4Nuiv = (glVertexAttrib4NuivFunc) loader->get("glVertexAttrib4Nuiv");
+gl->vertexAttrib4Nusv = (glVertexAttrib4NusvFunc) loader->get("glVertexAttrib4Nusv");
+gl->vertexAttrib4bv = (glVertexAttrib4bvFunc) loader->get("glVertexAttrib4bv");
+gl->vertexAttrib4d = (glVertexAttrib4dFunc) loader->get("glVertexAttrib4d");
+gl->vertexAttrib4dv = (glVertexAttrib4dvFunc) loader->get("glVertexAttrib4dv");
+gl->vertexAttrib4f = (glVertexAttrib4fFunc) loader->get("glVertexAttrib4f");
+gl->vertexAttrib4fv = (glVertexAttrib4fvFunc) loader->get("glVertexAttrib4fv");
+gl->vertexAttrib4iv = (glVertexAttrib4ivFunc) loader->get("glVertexAttrib4iv");
+gl->vertexAttrib4s = (glVertexAttrib4sFunc) loader->get("glVertexAttrib4s");
+gl->vertexAttrib4sv = (glVertexAttrib4svFunc) loader->get("glVertexAttrib4sv");
+gl->vertexAttrib4ubv = (glVertexAttrib4ubvFunc) loader->get("glVertexAttrib4ubv");
+gl->vertexAttrib4uiv = (glVertexAttrib4uivFunc) loader->get("glVertexAttrib4uiv");
+gl->vertexAttrib4usv = (glVertexAttrib4usvFunc) loader->get("glVertexAttrib4usv");
+gl->vertexAttribBinding = (glVertexAttribBindingFunc) loader->get("glVertexAttribBinding");
+gl->vertexAttribDivisor = (glVertexAttribDivisorFunc) loader->get("glVertexAttribDivisor");
+gl->vertexAttribFormat = (glVertexAttribFormatFunc) loader->get("glVertexAttribFormat");
+gl->vertexAttribI1i = (glVertexAttribI1iFunc) loader->get("glVertexAttribI1i");
+gl->vertexAttribI1iv = (glVertexAttribI1ivFunc) loader->get("glVertexAttribI1iv");
+gl->vertexAttribI1ui = (glVertexAttribI1uiFunc) loader->get("glVertexAttribI1ui");
+gl->vertexAttribI1uiv = (glVertexAttribI1uivFunc) loader->get("glVertexAttribI1uiv");
+gl->vertexAttribI2i = (glVertexAttribI2iFunc) loader->get("glVertexAttribI2i");
+gl->vertexAttribI2iv = (glVertexAttribI2ivFunc) loader->get("glVertexAttribI2iv");
+gl->vertexAttribI2ui = (glVertexAttribI2uiFunc) loader->get("glVertexAttribI2ui");
+gl->vertexAttribI2uiv = (glVertexAttribI2uivFunc) loader->get("glVertexAttribI2uiv");
+gl->vertexAttribI3i = (glVertexAttribI3iFunc) loader->get("glVertexAttribI3i");
+gl->vertexAttribI3iv = (glVertexAttribI3ivFunc) loader->get("glVertexAttribI3iv");
+gl->vertexAttribI3ui = (glVertexAttribI3uiFunc) loader->get("glVertexAttribI3ui");
+gl->vertexAttribI3uiv = (glVertexAttribI3uivFunc) loader->get("glVertexAttribI3uiv");
+gl->vertexAttribI4bv = (glVertexAttribI4bvFunc) loader->get("glVertexAttribI4bv");
+gl->vertexAttribI4i = (glVertexAttribI4iFunc) loader->get("glVertexAttribI4i");
+gl->vertexAttribI4iv = (glVertexAttribI4ivFunc) loader->get("glVertexAttribI4iv");
+gl->vertexAttribI4sv = (glVertexAttribI4svFunc) loader->get("glVertexAttribI4sv");
+gl->vertexAttribI4ubv = (glVertexAttribI4ubvFunc) loader->get("glVertexAttribI4ubv");
+gl->vertexAttribI4ui = (glVertexAttribI4uiFunc) loader->get("glVertexAttribI4ui");
+gl->vertexAttribI4uiv = (glVertexAttribI4uivFunc) loader->get("glVertexAttribI4uiv");
+gl->vertexAttribI4usv = (glVertexAttribI4usvFunc) loader->get("glVertexAttribI4usv");
+gl->vertexAttribIFormat = (glVertexAttribIFormatFunc) loader->get("glVertexAttribIFormat");
+gl->vertexAttribIPointer = (glVertexAttribIPointerFunc) loader->get("glVertexAttribIPointer");
+gl->vertexAttribL1d = (glVertexAttribL1dFunc) loader->get("glVertexAttribL1d");
+gl->vertexAttribL1dv = (glVertexAttribL1dvFunc) loader->get("glVertexAttribL1dv");
+gl->vertexAttribL2d = (glVertexAttribL2dFunc) loader->get("glVertexAttribL2d");
+gl->vertexAttribL2dv = (glVertexAttribL2dvFunc) loader->get("glVertexAttribL2dv");
+gl->vertexAttribL3d = (glVertexAttribL3dFunc) loader->get("glVertexAttribL3d");
+gl->vertexAttribL3dv = (glVertexAttribL3dvFunc) loader->get("glVertexAttribL3dv");
+gl->vertexAttribL4d = (glVertexAttribL4dFunc) loader->get("glVertexAttribL4d");
+gl->vertexAttribL4dv = (glVertexAttribL4dvFunc) loader->get("glVertexAttribL4dv");
+gl->vertexAttribLFormat = (glVertexAttribLFormatFunc) loader->get("glVertexAttribLFormat");
+gl->vertexAttribLPointer = (glVertexAttribLPointerFunc) loader->get("glVertexAttribLPointer");
+gl->vertexAttribP1ui = (glVertexAttribP1uiFunc) loader->get("glVertexAttribP1ui");
+gl->vertexAttribP1uiv = (glVertexAttribP1uivFunc) loader->get("glVertexAttribP1uiv");
+gl->vertexAttribP2ui = (glVertexAttribP2uiFunc) loader->get("glVertexAttribP2ui");
+gl->vertexAttribP2uiv = (glVertexAttribP2uivFunc) loader->get("glVertexAttribP2uiv");
+gl->vertexAttribP3ui = (glVertexAttribP3uiFunc) loader->get("glVertexAttribP3ui");
+gl->vertexAttribP3uiv = (glVertexAttribP3uivFunc) loader->get("glVertexAttribP3uiv");
+gl->vertexAttribP4ui = (glVertexAttribP4uiFunc) loader->get("glVertexAttribP4ui");
+gl->vertexAttribP4uiv = (glVertexAttribP4uivFunc) loader->get("glVertexAttribP4uiv");
+gl->vertexAttribPointer = (glVertexAttribPointerFunc) loader->get("glVertexAttribPointer");
+gl->vertexBindingDivisor = (glVertexBindingDivisorFunc) loader->get("glVertexBindingDivisor");
+gl->viewport = (glViewportFunc) loader->get("glViewport");
+gl->viewportArrayv = (glViewportArrayvFunc) loader->get("glViewportArrayv");
+gl->viewportIndexedf = (glViewportIndexedfFunc) loader->get("glViewportIndexedf");
+gl->viewportIndexedfv = (glViewportIndexedfvFunc) loader->get("glViewportIndexedfv");
+gl->waitSync = (glWaitSyncFunc) loader->get("glWaitSync");
diff --git a/framework/opengl/wrapper/glwVersions.inl b/framework/opengl/wrapper/glwVersions.inl
index addc9b6..f7df783 100644
--- a/framework/opengl/wrapper/glwVersions.inl
+++ b/framework/opengl/wrapper/glwVersions.inl
@@ -1,7 +1,7 @@
/* WARNING: This is auto-generated file. Do not modify, since changes will
* be lost! Modify the generating script instead.
*
- * Generated from Khronos GL API description (gl.xml) revision 97558118d4a8ab2af749867899555273c20827ce.
+ * Generated from Khronos GL API description (gl.xml) revision a3ee0ed08111d44ac3cb863d9e3e81a7c28f9d90.
*/
#define GL_ES_VERSION_2_0 1
#define GL_ES_VERSION_3_0 1
@@ -25,3 +25,4 @@
#define GL_VERSION_4_3 1
#define GL_VERSION_4_4 1
#define GL_VERSION_4_5 1
+#define GL_VERSION_4_6 1
diff --git a/framework/platform/null/tcuNullRenderContextFuncs.inl b/framework/platform/null/tcuNullRenderContextFuncs.inl
index cb470f2..ef85a91 100644
--- a/framework/platform/null/tcuNullRenderContextFuncs.inl
+++ b/framework/platform/null/tcuNullRenderContextFuncs.inl
@@ -1,7 +1,7 @@
/* WARNING: This is auto-generated file. Do not modify, since changes will
* be lost! Modify the generating script instead.
*
- * Generated from Khronos GL API description (gl.xml) revision 97558118d4a8ab2af749867899555273c20827ce.
+ * Generated from Khronos GL API description (gl.xml) revision a3ee0ed08111d44ac3cb863d9e3e81a7c28f9d90.
*/
GLW_APICALL void GLW_APIENTRY glActiveShaderProgram (GLuint pipeline, GLuint program)
@@ -3844,7 +3844,7 @@
}
-GLW_APICALL void GLW_APIENTRY glMaxShaderCompilerThreadsARB (GLuint count)
+GLW_APICALL void GLW_APIENTRY glMaxShaderCompilerThreadsKHR (GLuint count)
{
DE_UNREF(count);
@@ -3886,7 +3886,7 @@
}
-GLW_APICALL void GLW_APIENTRY glMultiDrawArraysIndirectCountARB (GLenum mode, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride)
+GLW_APICALL void GLW_APIENTRY glMultiDrawArraysIndirectCount (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride)
{
DE_UNREF(mode);
DE_UNREF(indirect);
@@ -3927,7 +3927,7 @@
}
-GLW_APICALL void GLW_APIENTRY glMultiDrawElementsIndirectCountARB (GLenum mode, GLenum type, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride)
+GLW_APICALL void GLW_APIENTRY glMultiDrawElementsIndirectCount (GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride)
{
DE_UNREF(mode);
DE_UNREF(type);
@@ -4669,7 +4669,7 @@
}
-GLW_APICALL void GLW_APIENTRY glPolygonOffsetClampEXT (GLfloat factor, GLfloat units, GLfloat clamp)
+GLW_APICALL void GLW_APIENTRY glPolygonOffsetClamp (GLfloat factor, GLfloat units, GLfloat clamp)
{
DE_UNREF(factor);
DE_UNREF(units);
@@ -5569,6 +5569,16 @@
}
+GLW_APICALL void GLW_APIENTRY glSpecializeShader (GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue)
+{
+ DE_UNREF(shader);
+ DE_UNREF(pEntryPoint);
+ DE_UNREF(numSpecializationConstants);
+ DE_UNREF(pConstantIndex);
+ DE_UNREF(pConstantValue);
+
+}
+
GLW_APICALL void GLW_APIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask)
{
DE_UNREF(func);
diff --git a/framework/platform/null/tcuNullRenderContextInitFuncs.inl b/framework/platform/null/tcuNullRenderContextInitFuncs.inl
index 1ce3664..38ae38c 100644
--- a/framework/platform/null/tcuNullRenderContextInitFuncs.inl
+++ b/framework/platform/null/tcuNullRenderContextInitFuncs.inl
@@ -1,7 +1,7 @@
/* WARNING: This is auto-generated file. Do not modify, since changes will
* be lost! Modify the generating script instead.
*
- * Generated from Khronos GL API description (gl.xml) revision 97558118d4a8ab2af749867899555273c20827ce.
+ * Generated from Khronos GL API description (gl.xml) revision a3ee0ed08111d44ac3cb863d9e3e81a7c28f9d90.
*/
gl->activeShaderProgram = glActiveShaderProgram;
gl->activeTexture = glActiveTexture;
@@ -458,17 +458,17 @@
gl->matrixScalefEXT = glMatrixScalefEXT;
gl->matrixTranslatedEXT = glMatrixTranslatedEXT;
gl->matrixTranslatefEXT = glMatrixTranslatefEXT;
-gl->maxShaderCompilerThreadsARB = glMaxShaderCompilerThreadsARB;
+gl->maxShaderCompilerThreadsKHR = glMaxShaderCompilerThreadsKHR;
gl->memoryBarrier = glMemoryBarrier;
gl->memoryBarrierByRegion = glMemoryBarrierByRegion;
gl->minSampleShading = glMinSampleShading;
gl->multiDrawArrays = glMultiDrawArrays;
gl->multiDrawArraysIndirect = glMultiDrawArraysIndirect;
-gl->multiDrawArraysIndirectCountARB = glMultiDrawArraysIndirectCountARB;
+gl->multiDrawArraysIndirectCount = glMultiDrawArraysIndirectCount;
gl->multiDrawElements = glMultiDrawElements;
gl->multiDrawElementsBaseVertex = glMultiDrawElementsBaseVertex;
gl->multiDrawElementsIndirect = glMultiDrawElementsIndirect;
-gl->multiDrawElementsIndirectCountARB = glMultiDrawElementsIndirectCountARB;
+gl->multiDrawElementsIndirectCount = glMultiDrawElementsIndirectCount;
gl->multiTexBufferEXT = glMultiTexBufferEXT;
gl->multiTexCoordPointerEXT = glMultiTexCoordPointerEXT;
gl->multiTexEnvfEXT = glMultiTexEnvfEXT;
@@ -547,7 +547,7 @@
gl->pointSize = glPointSize;
gl->polygonMode = glPolygonMode;
gl->polygonOffset = glPolygonOffset;
-gl->polygonOffsetClampEXT = glPolygonOffsetClampEXT;
+gl->polygonOffsetClamp = glPolygonOffsetClamp;
gl->popDebugGroup = glPopDebugGroup;
gl->popGroupMarkerEXT = glPopGroupMarkerEXT;
gl->primitiveBoundingBox = glPrimitiveBoundingBox;
@@ -648,6 +648,7 @@
gl->shaderBinary = glShaderBinary;
gl->shaderSource = glShaderSource;
gl->shaderStorageBlockBinding = glShaderStorageBlockBinding;
+gl->specializeShader = glSpecializeShader;
gl->stencilFunc = glStencilFunc;
gl->stencilFuncSeparate = glStencilFuncSeparate;
gl->stencilMask = glStencilMask;
diff --git a/modules/egl/teglGetProcAddressTests.inl b/modules/egl/teglGetProcAddressTests.inl
index 53029fa..2aef6ec 100644
--- a/modules/egl/teglGetProcAddressTests.inl
+++ b/modules/egl/teglGetProcAddressTests.inl
@@ -1412,6 +1412,11 @@
"glReadnPixelsKHR",
};
+static const char* s_GL_KHR_parallel_shader_compile[] =
+{
+ "glMaxShaderCompilerThreadsKHR",
+};
+
static const char* s_GL_NV_bindless_texture[] =
{
"glGetImageHandleNV",
@@ -1683,7 +1688,7 @@
"glDrawElementsBaseVertexOES",
"glDrawElementsInstancedBaseVertexOES",
"glDrawRangeElementsBaseVertexOES",
- "glMultiDrawElementsBaseVertexOES",
+ "glMultiDrawElementsBaseVertexEXT",
};
static const char* s_GL_OES_geometry_shader[] =
@@ -1924,6 +1929,7 @@
{ "GL_KHR_blend_equation_advanced", DE_LENGTH_OF_ARRAY(s_GL_KHR_blend_equation_advanced), s_GL_KHR_blend_equation_advanced },
{ "GL_KHR_debug", DE_LENGTH_OF_ARRAY(s_GL_KHR_debug), s_GL_KHR_debug },
{ "GL_KHR_robustness", DE_LENGTH_OF_ARRAY(s_GL_KHR_robustness), s_GL_KHR_robustness },
+ { "GL_KHR_parallel_shader_compile", DE_LENGTH_OF_ARRAY(s_GL_KHR_parallel_shader_compile), s_GL_KHR_parallel_shader_compile },
{ "GL_NV_bindless_texture", DE_LENGTH_OF_ARRAY(s_GL_NV_bindless_texture), s_GL_NV_bindless_texture },
{ "GL_NV_blend_equation_advanced", DE_LENGTH_OF_ARRAY(s_GL_NV_blend_equation_advanced), s_GL_NV_blend_equation_advanced },
{ "GL_NV_conditional_render", DE_LENGTH_OF_ARRAY(s_GL_NV_conditional_render), s_GL_NV_conditional_render },
diff --git a/modules/egl/teglWideColorTests.cpp b/modules/egl/teglWideColorTests.cpp
index 0bc2063..1ca999b 100644
--- a/modules/egl/teglWideColorTests.cpp
+++ b/modules/egl/teglWideColorTests.cpp
@@ -254,10 +254,6 @@
ReferenceRenderer& operator= (const ReferenceRenderer&);
};
-ReferenceRenderer::ReferenceRenderer (void)
-{
-}
-
WideColorTest::WideColorTest (EglTestContext& eglTestCtx, const char* name, const char* description)
: TestCase (eglTestCtx, name, description)
, m_eglDisplay (EGL_NO_DISPLAY)
diff --git a/scripts/check_build_sanity.py b/scripts/check_build_sanity.py
index 620b07a..c35aafc 100644
--- a/scripts/check_build_sanity.py
+++ b/scripts/check_build_sanity.py
@@ -189,6 +189,10 @@
RunScript(os.path.join("external", "vulkancts", "scripts", "build_mustpass.py"),
lambda env: ["--build-dir", os.path.join(env.tmpDir, "vulkan-mustpass")]),
]),
+ ('spirv-binaries', [
+ RunScript(os.path.join("external", "vulkancts", "scripts", "build_spirv_binaries.py"),
+ lambda env: ["--build-dir", os.path.join(env.tmpDir, "spirv-binaries")]),
+ ]),
('gen-inl-files', [
RunScript(os.path.join("scripts", "gen_egl.py")),
RunScript(os.path.join("scripts", "opengl", "gen_all.py")),
diff --git a/scripts/khr_util/registry_cache.py b/scripts/khr_util/registry_cache.py
index e8124a4..d5ea50e 100644
--- a/scripts/khr_util/registry_cache.py
+++ b/scripts/khr_util/registry_cache.py
@@ -21,11 +21,16 @@
#-------------------------------------------------------------------------
import os
+import sys
import urllib2
import hashlib
import registry
+sys.path.append(os.path.join(os.path.dirname(__file__), ".."))
+
+from build.common import *
+
BASE_URL = ""
class RegistrySource:
@@ -53,18 +58,49 @@
def getRevision (self):
return self.revision
- def getSourceUrl (self):
- return "%s/%s/%s" % (self.repository, self.revision, self.filename)
+ def getRepo (self):
+ return self.repository
+
+ def getRevision (self):
+ return self.revision
+
+ def getFilename (self):
+ return self.filename
def computeChecksum (data):
return hashlib.sha256(data).hexdigest()
-def fetchUrl (url):
- req = urllib2.urlopen(url)
- data = req.read()
+def makeSourceUrl (repository, revision, filename):
+ return "%s/%s/%s" % (repository, revision, filename)
+
+def checkoutGit (repository, revision, fullDstPath):
+ if not os.path.exists(fullDstPath):
+ execute(["git", "clone", "--no-checkout", repository, fullDstPath])
+
+ pushWorkingDir(fullDstPath)
+ try:
+ execute(["git", "fetch", repository, "+refs/heads/*:refs/remotes/origin/*"])
+ execute(["git", "checkout", revision])
+ finally:
+ popWorkingDir()
+
+def checkoutFile (repository, revision, filename, cacheDir):
+ try:
+ req = urllib2.urlopen(makeSourceUrl(repository, revision, filename))
+ data = req.read()
+ except IOError:
+ fullDstPath = os.path.join(cacheDir, "git")
+
+ checkoutGit(repository, revision, fullDstPath)
+ f = open(os.path.join(fullDstPath, filename), "r")
+ data = f.read()
+ f.close()
+ except:
+ print "Unexpected error:", sys.exc_info()[0]
+
return data
-def fetchFile (dstPath, url, checksum):
+def fetchFile (dstPath, repository, revision, filename, checksum, cacheDir):
def writeFile (filename, data):
f = open(filename, 'wb')
f.write(data)
@@ -73,8 +109,8 @@
if not os.path.exists(os.path.dirname(dstPath)):
os.makedirs(os.path.dirname(dstPath))
- print "Fetching %s" % url
- data = fetchUrl(url)
+ print "Fetching %s/%s@%s" % (repository, filename, revision)
+ data = checkoutFile(repository, revision, filename, cacheDir)
gotChecksum = computeChecksum(data)
if checksum != gotChecksum:
@@ -106,7 +142,7 @@
cachePath = os.path.join(cacheDir, source.getCacheFilename())
if not checkFile(cachePath, source.checksum):
- fetchFile(cachePath, source.getSourceUrl(), source.getChecksum())
+ fetchFile(cachePath, source.getRepo(), source.getRevision(), source.getFilename(), source.getChecksum(), cacheDir)
parsedReg = registry.parse(cachePath)
diff --git a/scripts/opengl/src_util.py b/scripts/opengl/src_util.py
index a74b3a2..96ae341 100644
--- a/scripts/opengl/src_util.py
+++ b/scripts/opengl/src_util.py
@@ -38,8 +38,8 @@
GL_SOURCE = khr_util.registry_cache.RegistrySource(
"https://raw.githubusercontent.com/KhronosGroup/OpenGL-Registry",
"xml/gl.xml",
- "97558118d4a8ab2af749867899555273c20827ce",
- "2475e1ff6d69048e67a49188d8be09195b261ed96b2b4108a0f7d7a459834674")
+ "a3ee0ed08111d44ac3cb863d9e3e81a7c28f9d90",
+ "bfe070bafe6a0758f23964a078262b45ad163adf7f2dc320f44757908033d107")
EXTENSIONS = [
'GL_KHR_texture_compression_astc_ldr',
@@ -48,6 +48,7 @@
'GL_KHR_debug',
'GL_KHR_robustness',
'GL_KHR_no_error',
+ 'GL_KHR_parallel_shader_compile',
'GL_EXT_bgra',
'GL_EXT_geometry_point_size',
'GL_EXT_tessellation_shader',
@@ -111,6 +112,7 @@
'GL_ARB_shader_viewport_layer_array',
'GL_ARB_sparse_buffer',
'GL_ARB_sparse_texture',
+ 'GL_ARB_spirv_extensions',
'GL_ARB_tessellation_shader',
'GL_ARB_texture_barrier',
'GL_ARB_texture_filter_minmax',