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',