Enable subgroup tests for ES
authorDaniel Koch <dkoch@nvidia.com>
Thu, 28 Mar 2019 14:59:01 +0000 (10:59 -0400)
committerDaniel Koch <dkoch@nvidia.com>
Fri, 29 Mar 2019 21:11:38 +0000 (17:11 -0400)
Templatize the shader version, and avoid implicit conversions and initializers.
Add precision qualifiers. Use MapBufferRange

Component: OpenGL
VK-CL-CTS Issue: 1698

Affects:
- KHR-GL46.subgroup.* (common shaders)
- KHR-GL45.subgroup.* (common shaders)
- KHR-GLES32.khr.subgroup.* (added)

Change-Id: I4618ad4b1ef57ac2db34c3ff0354a12add9b750e

17 files changed:
external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.5.x/gles32-khr-master.txt
external/openglcts/data/mustpass/gles/khronos_mustpass/master/gles32-khr-master.txt
external/openglcts/modules/common/subgroups/glcSubgroupsArithmeticTests.cpp
external/openglcts/modules/common/subgroups/glcSubgroupsBallotBroadcastTests.cpp
external/openglcts/modules/common/subgroups/glcSubgroupsBallotOtherTests.cpp
external/openglcts/modules/common/subgroups/glcSubgroupsBallotTests.cpp
external/openglcts/modules/common/subgroups/glcSubgroupsBasicTests.cpp
external/openglcts/modules/common/subgroups/glcSubgroupsBuiltinMaskVarTests.cpp
external/openglcts/modules/common/subgroups/glcSubgroupsBuiltinVarTests.cpp
external/openglcts/modules/common/subgroups/glcSubgroupsClusteredTests.cpp
external/openglcts/modules/common/subgroups/glcSubgroupsPartitionedTests.cpp
external/openglcts/modules/common/subgroups/glcSubgroupsQuadTests.cpp
external/openglcts/modules/common/subgroups/glcSubgroupsShapeTests.cpp
external/openglcts/modules/common/subgroups/glcSubgroupsShuffleTests.cpp
external/openglcts/modules/common/subgroups/glcSubgroupsTestsUtils.cpp
external/openglcts/modules/common/subgroups/glcSubgroupsVoteTests.cpp
external/openglcts/modules/gles32/es32cTestPackage.cpp

index 0e615a8..3cd01d7 100644 (file)
@@ -1072,3 +1072,6056 @@ KHR-GLES32.core.internalformat.copy_tex_image.rgb8
 KHR-GLES32.core.internalformat.renderbuffer.rgba8
 KHR-GLES32.core.internalformat.renderbuffer.rgb8
 KHR-GLES32.core.internalformat.renderbuffer.rgb5_a1
+KHR-GLES32.khr.subgroups.builtin_var.graphics.subgroupsize
+KHR-GLES32.khr.subgroups.builtin_var.graphics.subgroupinvocationid
+KHR-GLES32.khr.subgroups.builtin_var.compute.subgroupsize_compute
+KHR-GLES32.khr.subgroups.builtin_var.compute.subgroupinvocationid_compute
+KHR-GLES32.khr.subgroups.builtin_var.compute.numsubgroups
+KHR-GLES32.khr.subgroups.builtin_var.compute.subgroupid
+KHR-GLES32.khr.subgroups.builtin_var.framebuffer.subgroupsize_vertex
+KHR-GLES32.khr.subgroups.builtin_var.framebuffer.subgroupsize_tess_eval
+KHR-GLES32.khr.subgroups.builtin_var.framebuffer.subgroupsize_tess_control
+KHR-GLES32.khr.subgroups.builtin_var.framebuffer.subgroupsize_geometry
+KHR-GLES32.khr.subgroups.builtin_var.framebuffer.subgroupinvocationid_vertex
+KHR-GLES32.khr.subgroups.builtin_var.framebuffer.subgroupinvocationid_tess_eval
+KHR-GLES32.khr.subgroups.builtin_var.framebuffer.subgroupinvocationid_tess_control
+KHR-GLES32.khr.subgroups.builtin_var.framebuffer.subgroupinvocationid_geometry
+KHR-GLES32.khr.subgroups.builtin_mask_var.graphics.subgroupeqmask
+KHR-GLES32.khr.subgroups.builtin_mask_var.graphics.subgroupgemask
+KHR-GLES32.khr.subgroups.builtin_mask_var.graphics.subgroupgtmask
+KHR-GLES32.khr.subgroups.builtin_mask_var.graphics.subgrouplemask
+KHR-GLES32.khr.subgroups.builtin_mask_var.graphics.subgroupltmask
+KHR-GLES32.khr.subgroups.builtin_mask_var.compute.subgroupeqmask
+KHR-GLES32.khr.subgroups.builtin_mask_var.compute.subgroupgemask
+KHR-GLES32.khr.subgroups.builtin_mask_var.compute.subgroupgtmask
+KHR-GLES32.khr.subgroups.builtin_mask_var.compute.subgrouplemask
+KHR-GLES32.khr.subgroups.builtin_mask_var.compute.subgroupltmask
+KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupeqmask_vertex
+KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupeqmask_tess_eval
+KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupeqmask_tess_control
+KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupeqmask_geometry
+KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupgemask_vertex
+KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupgemask_tess_eval
+KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupgemask_tess_control
+KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupgemask_geometry
+KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupgtmask_vertex
+KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupgtmask_tess_eval
+KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupgtmask_tess_control
+KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupgtmask_geometry
+KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgrouplemask_vertex
+KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgrouplemask_tess_eval
+KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgrouplemask_tess_control
+KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgrouplemask_geometry
+KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupltmask_vertex
+KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupltmask_tess_eval
+KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupltmask_tess_control
+KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupltmask_geometry
+KHR-GLES32.khr.subgroups.basic.graphics.subgroupelect
+KHR-GLES32.khr.subgroups.basic.graphics.subgroupbarrier
+KHR-GLES32.khr.subgroups.basic.graphics.subgroupmemorybarrier
+KHR-GLES32.khr.subgroups.basic.graphics.subgroupmemorybarrierbuffer
+KHR-GLES32.khr.subgroups.basic.graphics.subgroupmemorybarrierimage
+KHR-GLES32.khr.subgroups.basic.compute.subgroupelect
+KHR-GLES32.khr.subgroups.basic.compute.subgroupbarrier
+KHR-GLES32.khr.subgroups.basic.compute.subgroupmemorybarrier
+KHR-GLES32.khr.subgroups.basic.compute.subgroupmemorybarrierbuffer
+KHR-GLES32.khr.subgroups.basic.compute.subgroupmemorybarriershared
+KHR-GLES32.khr.subgroups.basic.compute.subgroupmemorybarrierimage
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupelect_vertex
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupelect_tess_eval
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupelect_tess_control
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupelect_geometry
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupbarrier_fragment
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupbarrier_vertex
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupbarrier_tess_eval
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupbarrier_tess_control
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupbarrier_geometry
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrier_fragment
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrier_vertex
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrier_tess_eval
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrier_tess_control
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrier_geometry
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrierbuffer_fragment
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrierbuffer_vertex
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrierbuffer_tess_eval
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrierbuffer_tess_control
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrierbuffer_geometry
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrierimage_fragment
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrierimage_vertex
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrierimage_tess_eval
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrierimage_tess_control
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrierimage_geometry
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_int
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_ivec2
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_ivec3
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_ivec4
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupall_uint
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupany_uint
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_uint
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_uvec2
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_uvec3
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_uvec4
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_float
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_vec2
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_vec3
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_vec4
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_double
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_dvec2
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_dvec3
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_dvec4
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_bool
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_bvec2
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_bvec3
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_bvec4
+KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_int
+KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_ivec2
+KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_ivec3
+KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_ivec4
+KHR-GLES32.khr.subgroups.vote.compute.subgroupall_uint
+KHR-GLES32.khr.subgroups.vote.compute.subgroupany_uint
+KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_uint
+KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_uvec2
+KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_uvec3
+KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_uvec4
+KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_float
+KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_vec2
+KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_vec3
+KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_vec4
+KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_double
+KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_dvec2
+KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_dvec3
+KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_dvec4
+KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_bool
+KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_bvec2
+KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_bvec3
+KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_bvec4
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_int_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_int_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_int_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_int_geometry
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec2_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec2_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec2_geometry
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec3_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec3_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec3_geometry
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec4_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec4_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec4_geometry
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupall_uint_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupall_uint_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupall_uint_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupall_uint_geometry
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupany_uint_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupany_uint_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupany_uint_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupany_uint_geometry
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uint_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uint_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uint_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uint_geometry
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec2_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec2_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec2_geometry
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec3_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec3_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec3_geometry
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec4_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec4_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec4_geometry
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_float_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_float_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_float_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_float_geometry
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec2_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec2_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec2_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec2_geometry
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec3_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec3_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec3_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec3_geometry
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec4_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec4_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec4_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec4_geometry
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_double_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_double_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_double_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_double_geometry
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec2_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec2_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec2_geometry
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec3_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec3_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec3_geometry
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec4_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec4_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec4_geometry
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bool_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bool_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bool_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bool_geometry
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec2_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec2_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec2_geometry
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec3_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec3_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec3_geometry
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec4_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec4_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec4_geometry
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_int_fragment
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_ivec2_fragment
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_ivec3_fragment
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_ivec4_fragment
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupall_uint_fragment
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupany_uint_fragment
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_uint_fragment
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_uvec2_fragment
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_uvec3_fragment
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_uvec4_fragment
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_float_fragment
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_vec2_fragment
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_vec3_fragment
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_vec4_fragment
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_double_fragment
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_dvec2_fragment
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_dvec3_fragment
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_dvec4_fragment
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_bool_fragment
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_bvec2_fragment
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_bvec3_fragment
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_bvec4_fragment
+KHR-GLES32.khr.subgroups.ballot.graphics.graphic
+KHR-GLES32.khr.subgroups.ballot.compute.compute
+KHR-GLES32.khr.subgroups.ballot.framebuffer.tess_eval
+KHR-GLES32.khr.subgroups.ballot.framebuffer.tess_control
+KHR-GLES32.khr.subgroups.ballot.framebuffer.geometry
+KHR-GLES32.khr.subgroups.ballot.framebuffer.vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_int
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_int
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_ivec2
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_ivec2
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_ivec3
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_ivec3
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_ivec4
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_ivec4
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uint
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uint
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uvec2
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uvec2
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uvec3
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uvec3
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uvec4
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uvec4
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_float
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_float
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_vec2
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_vec2
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_vec3
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_vec3
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_vec4
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_vec4
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_double
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_double
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_dvec2
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_dvec2
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_dvec3
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_dvec3
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_dvec4
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_dvec4
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_bool
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_bool
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_bvec2
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_bvec2
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_bvec3
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_bvec3
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_bvec4
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_bvec4
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_int
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_int
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_ivec2
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_ivec2
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_ivec3
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_ivec3
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_ivec4
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_ivec4
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_uint
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uint
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_uvec2
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uvec2
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_uvec3
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uvec3
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_uvec4
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uvec4
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_float
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_float
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_vec2
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_vec2
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_vec3
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_vec3
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_vec4
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_vec4
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_double
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_double
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_dvec2
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_dvec2
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_dvec3
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_dvec3
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_dvec4
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_dvec4
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_bool
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_bool
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_bvec2
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_bvec2
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_bvec3
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_bvec3
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_bvec4
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_bvec4
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_intvertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_inttess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_inttess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_intgeometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_intvertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_inttess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_inttess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_intgeometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec2vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec2tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec2tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec2geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec2vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec2tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec2tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec2geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec3vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec3tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec3tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec3geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec3vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec3tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec3tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec3geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec4vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec4tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec4tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec4geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec4vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec4tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec4tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec4geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uintvertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uinttess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uinttess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uintgeometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uintvertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uinttess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uinttess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uintgeometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec2vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec2tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec2tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec2geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec2vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec2tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec2tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec2geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec3vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec3tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec3tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec3geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec3vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec3tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec3tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec3geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec4vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec4tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec4tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec4geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec4vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec4tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec4tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec4geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_floatvertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_floattess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_floattess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_floatgeometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_floatvertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_floattess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_floattess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_floatgeometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec2vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec2tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec2tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec2geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec2vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec2tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec2tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec2geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec3vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec3tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec3tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec3geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec3vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec3tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec3tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec3geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec4vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec4tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec4tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec4geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec4vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec4tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec4tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec4geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_doublevertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_doubletess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_doubletess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_doublegeometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_doublevertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_doubletess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_doubletess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_doublegeometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec2vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec2tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec2tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec2geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec2vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec2tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec2tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec2geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec3vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec3tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec3tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec3geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec3vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec3tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec3tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec3geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec4vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec4tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec4tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec4geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec4vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec4tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec4tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec4geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_boolvertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_booltess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_booltess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_boolgeometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_boolvertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_booltess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_booltess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_boolgeometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec2vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec2tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec2tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec2geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec2vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec2tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec2tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec2geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec3vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec3tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec3tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec3geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec3vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec3tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec3tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec3geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec4vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec4tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec4tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec4geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec4vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec4tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec4tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec4geometry
+KHR-GLES32.khr.subgroups.ballot_other.graphics.subgroupinverseballot
+KHR-GLES32.khr.subgroups.ballot_other.graphics.subgroupballotbitextract
+KHR-GLES32.khr.subgroups.ballot_other.graphics.subgroupballotbitcount
+KHR-GLES32.khr.subgroups.ballot_other.graphics.subgroupballotinclusivebitcount
+KHR-GLES32.khr.subgroups.ballot_other.graphics.subgroupballotexclusivebitcount
+KHR-GLES32.khr.subgroups.ballot_other.graphics.subgroupballotfindlsb
+KHR-GLES32.khr.subgroups.ballot_other.graphics.subgroupballotfindmsb
+KHR-GLES32.khr.subgroups.ballot_other.compute.subgroupinverseballot
+KHR-GLES32.khr.subgroups.ballot_other.compute.subgroupballotbitextract
+KHR-GLES32.khr.subgroups.ballot_other.compute.subgroupballotbitcount
+KHR-GLES32.khr.subgroups.ballot_other.compute.subgroupballotinclusivebitcount
+KHR-GLES32.khr.subgroups.ballot_other.compute.subgroupballotexclusivebitcount
+KHR-GLES32.khr.subgroups.ballot_other.compute.subgroupballotfindlsb
+KHR-GLES32.khr.subgroups.ballot_other.compute.subgroupballotfindmsb
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupinverseballot_vertex
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupinverseballot_tess_eval
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupinverseballot_tess_control
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupinverseballot_geometry
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotbitextract_vertex
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotbitextract_tess_eval
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotbitextract_tess_control
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotbitextract_geometry
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotbitcount_vertex
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotbitcount_tess_eval
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotbitcount_tess_control
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotbitcount_geometry
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotinclusivebitcount_vertex
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotinclusivebitcount_tess_eval
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotinclusivebitcount_tess_control
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotinclusivebitcount_geometry
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotexclusivebitcount_vertex
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotexclusivebitcount_tess_eval
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotexclusivebitcount_tess_control
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotexclusivebitcount_geometry
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotfindlsb_vertex
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotfindlsb_tess_eval
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotfindlsb_tess_control
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotfindlsb_geometry
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotfindmsb_vertex
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotfindmsb_tess_eval
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotfindmsb_tess_control
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotfindmsb_geometry
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_int
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_int
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_int
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_int
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_int
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_int
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_int
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_int
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_int
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_int
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_int
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_int
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_int
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_int
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_int
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_int
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_int
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_int
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_int
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_int
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_int
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_uint
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_uint
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_uint
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_uint
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_uint
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_uint
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_uint
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_uint
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_uint
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_uint
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_uint
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_uint
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_uint
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_uint
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_uint
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_uint
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_uint
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_uint
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_uint
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_uint
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_uint
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_float
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_float
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_float
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_float
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_float
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_float
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_float
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_float
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_float
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_float
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_float
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_float
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_vec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_vec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_vec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_vec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_vec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_vec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_vec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_vec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_vec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_vec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_vec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_vec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_vec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_vec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_vec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_vec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_vec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_vec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_vec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_vec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_vec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_vec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_vec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_vec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_vec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_vec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_vec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_vec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_vec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_vec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_vec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_vec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_vec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_vec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_vec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_vec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_double
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_double
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_double
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_double
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_double
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_double
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_double
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_double
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_double
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_double
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_double
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_double
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_bool
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_bool
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_bool
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_bool
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_bool
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_bool
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_bool
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_bool
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_bool
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_bvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_bvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_bvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_bvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_bvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_bvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_bvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_bvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_bvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_bvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_bvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_bvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_bvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_bvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_bvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_bvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_bvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_bvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_bvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_bvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_bvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_bvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_bvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_bvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_bvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_bvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_bvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_int
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_int
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_int
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_int
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_int
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_int
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_int
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_int
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_int
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_int
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_int
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_int
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_int
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_int
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_int
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_int
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_int
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_int
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_int
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_int
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_int
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_uint
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_uint
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_uint
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_uint
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_uint
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_uint
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_uint
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_uint
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_uint
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_uint
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_uint
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_uint
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_uint
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_uint
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_uint
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_uint
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_uint
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_uint
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_uint
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_uint
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_uint
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_float
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_float
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_float
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_float
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_float
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_float
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_float
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_float
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_float
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_float
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_float
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_float
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_vec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_vec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_vec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_vec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_vec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_vec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_vec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_vec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_vec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_vec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_vec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_vec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_vec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_vec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_vec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_vec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_vec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_vec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_vec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_vec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_vec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_vec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_vec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_vec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_vec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_vec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_vec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_vec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_vec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_vec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_vec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_vec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_vec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_vec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_vec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_vec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_double
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_double
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_double
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_double
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_double
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_double
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_double
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_double
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_double
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_double
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_double
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_double
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_bool
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_bool
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_bool
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_bool
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_bool
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_bool
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_bool
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_bool
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_bool
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_bvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_bvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_bvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_bvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_bvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_bvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_bvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_bvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_bvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_bvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_bvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_bvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_bvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_bvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_bvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_bvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_bvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_bvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_bvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_bvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_bvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_bvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_bvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_bvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_bvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_bvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_bvec4
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_int_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_int_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_int_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_int_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_int_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_int_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_int_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_int_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_int_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_int_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_int_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_int_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_int_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_int_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_int_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_int_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_int_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_int_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_int_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_int_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_int_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_int_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_int_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_int_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_int_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_int_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_int_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_int_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_int_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_int_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_int_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_int_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_int_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_int_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_int_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_int_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_int_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_int_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_int_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_int_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_int_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_int_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_int_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_int_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_int_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_int_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_int_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_int_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_int_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_int_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_int_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_int_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_int_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_int_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_int_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_int_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_int_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_int_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_int_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_int_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_int_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_int_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_int_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_int_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_int_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_int_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_int_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_int_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_int_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_int_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_int_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_int_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_int_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_int_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_int_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_int_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_int_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_int_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_int_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_int_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_int_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_int_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_int_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_int_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uint_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uint_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uint_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uint_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uint_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uint_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uint_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uint_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uint_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uint_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uint_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uint_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uint_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uint_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uint_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uint_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uint_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uint_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uint_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uint_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uint_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uint_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uint_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uint_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uint_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uint_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uint_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uint_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uint_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uint_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uint_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uint_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uint_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uint_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uint_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uint_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uint_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uint_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uint_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uint_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uint_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uint_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uint_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uint_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uint_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uint_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uint_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uint_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uint_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uint_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uint_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uint_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uint_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uint_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uint_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uint_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uint_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uint_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uint_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uint_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uint_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uint_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uint_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uint_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uint_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uint_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uint_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uint_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uint_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uint_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uint_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uint_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uint_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uint_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uint_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uint_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uint_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uint_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uint_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uint_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uint_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uint_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uint_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uint_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_float_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_float_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_float_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_float_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_float_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_float_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_float_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_float_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_float_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_float_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_float_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_float_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_float_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_float_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_float_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_float_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_float_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_float_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_float_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_float_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_float_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_float_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_float_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_float_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_float_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_float_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_float_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_float_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_float_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_float_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_float_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_float_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_float_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_float_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_float_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_float_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_float_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_float_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_float_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_float_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_float_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_float_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_float_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_float_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_float_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_float_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_float_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_float_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_double_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_double_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_double_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_double_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_double_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_double_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_double_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_double_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_double_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_double_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_double_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_double_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_double_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_double_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_double_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_double_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_double_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_double_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_double_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_double_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_double_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_double_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_double_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_double_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_double_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_double_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_double_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_double_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_double_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_double_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_double_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_double_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_double_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_double_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_double_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_double_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_double_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_double_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_double_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_double_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_double_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_double_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_double_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_double_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_double_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_double_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_double_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_double_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bool_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bool_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bool_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bool_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bool_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bool_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bool_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bool_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bool_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bool_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bool_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bool_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bool_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bool_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bool_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bool_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bool_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bool_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bool_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bool_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bool_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bool_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bool_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bool_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bool_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bool_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bool_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bool_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bool_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bool_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bool_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bool_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bool_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bool_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bool_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bool_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec4_geometry
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_int
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_int
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_int
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_int
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_int
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_int
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_int
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_ivec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_ivec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_ivec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_ivec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_ivec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_ivec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_ivec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_ivec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_ivec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_ivec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_ivec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_ivec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_ivec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_ivec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_ivec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_ivec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_ivec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_ivec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_ivec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_ivec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_ivec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_uint
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_uint
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_uint
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_uint
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_uint
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_uint
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_uint
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_uvec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_uvec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_uvec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_uvec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_uvec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_uvec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_uvec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_uvec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_uvec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_uvec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_uvec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_uvec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_uvec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_uvec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_uvec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_uvec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_uvec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_uvec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_uvec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_uvec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_uvec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_float
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_float
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_float
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_float
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_vec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_vec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_vec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_vec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_vec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_vec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_vec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_vec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_vec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_vec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_vec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_vec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_double
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_double
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_double
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_double
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_dvec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_dvec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_dvec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_dvec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_dvec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_dvec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_dvec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_dvec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_dvec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_dvec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_dvec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_dvec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_bool
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_bool
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_bool
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_bvec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_bvec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_bvec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_bvec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_bvec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_bvec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_bvec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_bvec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_bvec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_int
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_int
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_int
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_int
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_int
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_int
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_int
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_ivec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_ivec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_ivec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_ivec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_ivec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_ivec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_ivec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_ivec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_ivec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_ivec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_ivec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_ivec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_ivec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_ivec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_ivec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_ivec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_ivec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_ivec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_ivec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_ivec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_ivec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_uint
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_uint
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_uint
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_uint
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_uint
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_uint
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_uint
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_uvec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_uvec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_uvec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_uvec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_uvec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_uvec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_uvec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_uvec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_uvec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_uvec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_uvec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_uvec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_uvec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_uvec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_uvec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_uvec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_uvec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_uvec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_uvec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_uvec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_uvec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_float
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_float
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_float
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_float
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_vec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_vec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_vec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_vec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_vec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_vec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_vec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_vec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_vec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_vec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_vec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_vec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_double
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_double
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_double
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_double
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_dvec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_dvec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_dvec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_dvec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_dvec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_dvec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_dvec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_dvec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_dvec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_dvec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_dvec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_dvec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_bool
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_bool
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_bool
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_bvec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_bvec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_bvec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_bvec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_bvec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_bvec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_bvec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_bvec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_bvec4
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_int_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_int_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_int_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_int_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_int_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_int_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_int_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_int_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_int_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_int_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_int_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_int_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_int_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_int_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_int_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_int_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_int_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_int_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_int_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_int_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_int_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_int_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_int_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_int_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_int_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_int_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_int_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_int_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uint_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uint_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uint_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uint_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uint_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uint_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uint_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uint_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uint_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uint_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uint_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uint_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uint_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uint_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uint_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uint_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uint_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uint_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uint_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uint_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uint_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uint_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uint_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uint_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uint_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uint_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uint_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uint_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_float_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_float_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_float_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_float_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_float_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_float_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_float_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_float_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_float_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_float_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_float_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_float_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_float_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_float_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_float_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_float_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_double_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_double_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_double_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_double_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_double_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_double_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_double_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_double_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_double_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_double_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_double_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_double_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_double_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_double_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_double_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_double_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bool_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bool_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bool_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bool_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bool_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bool_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bool_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bool_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bool_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bool_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bool_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bool_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_int
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_int
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_int
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_int
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_int
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_int
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_int
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_int
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_int
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_int
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_int
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_int
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_int
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_int
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_int
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_int
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_int
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_int
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_int
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_int
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_int
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_ivec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_ivec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_ivec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_ivec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_ivec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_ivec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_ivec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_ivec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_ivec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_ivec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_ivec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_ivec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_ivec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_ivec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_ivec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_ivec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_ivec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_ivec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_ivec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_ivec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_ivec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_ivec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_ivec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_ivec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_ivec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_ivec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_ivec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_ivec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_ivec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_ivec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_ivec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_ivec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_ivec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_ivec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_ivec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_ivec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_ivec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_ivec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_ivec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_ivec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_ivec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_ivec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_ivec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_ivec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_ivec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_ivec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_ivec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_ivec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_ivec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_ivec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_ivec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_ivec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_ivec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_ivec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_ivec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_ivec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_ivec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_ivec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_ivec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_ivec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_ivec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_ivec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_ivec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_uint
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_uint
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_uint
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_uint
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_uint
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_uint
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_uint
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_uint
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_uint
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_uint
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_uint
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_uint
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_uint
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_uint
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_uint
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_uint
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_uint
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_uint
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_uint
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_uint
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_uint
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_uvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_uvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_uvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_uvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_uvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_uvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_uvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_uvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_uvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_uvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_uvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_uvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_uvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_uvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_uvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_uvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_uvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_uvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_uvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_uvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_uvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_uvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_uvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_uvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_uvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_uvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_uvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_uvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_uvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_uvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_uvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_uvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_uvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_uvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_uvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_uvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_uvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_uvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_uvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_uvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_uvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_uvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_uvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_uvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_uvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_uvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_uvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_uvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_uvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_uvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_uvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_uvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_uvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_uvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_uvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_uvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_uvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_uvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_uvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_uvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_uvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_uvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_uvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_float
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_float
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_float
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_float
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_float
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_float
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_float
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_float
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_float
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_float
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_float
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_float
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_vec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_vec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_vec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_vec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_vec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_vec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_vec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_vec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_vec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_vec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_vec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_vec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_vec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_vec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_vec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_vec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_vec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_vec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_vec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_vec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_vec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_vec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_vec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_vec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_vec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_vec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_vec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_vec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_vec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_vec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_vec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_vec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_vec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_vec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_vec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_vec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_double
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_double
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_double
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_double
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_double
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_double
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_double
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_double
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_double
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_double
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_double
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_double
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_dvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_dvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_dvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_dvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_dvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_dvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_dvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_dvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_dvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_dvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_dvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_dvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_dvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_dvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_dvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_dvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_dvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_dvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_dvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_dvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_dvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_dvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_dvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_dvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_dvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_dvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_dvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_dvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_dvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_dvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_dvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_dvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_dvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_dvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_dvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_dvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_bool
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_bool
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_bool
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_bool
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_bool
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_bool
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_bool
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_bool
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_bool
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_bvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_bvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_bvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_bvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_bvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_bvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_bvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_bvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_bvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_bvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_bvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_bvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_bvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_bvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_bvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_bvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_bvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_bvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_bvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_bvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_bvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_bvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_bvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_bvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_bvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_bvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_bvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_int
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_int
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_int
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_int
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_int
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_int
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_int
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_int
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_int
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_int
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_int
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_int
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_int
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_int
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_int
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_int
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_int
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_int
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_int
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_int
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_int
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_ivec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_ivec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_ivec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_ivec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_ivec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_ivec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_ivec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_ivec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_ivec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_ivec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_ivec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_ivec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_ivec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_ivec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_ivec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_ivec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_ivec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_ivec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_ivec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_ivec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_ivec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_ivec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_ivec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_ivec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_ivec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_ivec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_ivec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_ivec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_ivec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_ivec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_ivec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_ivec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_ivec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_ivec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_ivec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_ivec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_ivec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_ivec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_ivec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_ivec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_ivec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_ivec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_ivec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_ivec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_ivec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_ivec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_ivec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_ivec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_ivec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_ivec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_ivec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_ivec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_ivec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_ivec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_ivec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_ivec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_ivec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_ivec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_ivec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_ivec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_ivec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_ivec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_ivec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_uint
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_uint
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_uint
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_uint
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_uint
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_uint
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_uint
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_uint
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_uint
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_uint
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_uint
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_uint
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_uint
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_uint
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_uint
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_uint
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_uint
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_uint
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_uint
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_uint
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_uint
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_uvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_uvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_uvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_uvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_uvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_uvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_uvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_uvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_uvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_uvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_uvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_uvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_uvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_uvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_uvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_uvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_uvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_uvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_uvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_uvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_uvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_uvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_uvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_uvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_uvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_uvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_uvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_uvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_uvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_uvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_uvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_uvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_uvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_uvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_uvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_uvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_uvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_uvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_uvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_uvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_uvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_uvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_uvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_uvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_uvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_uvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_uvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_uvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_uvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_uvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_uvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_uvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_uvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_uvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_uvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_uvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_uvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_uvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_uvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_uvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_uvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_uvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_uvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_float
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_float
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_float
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_float
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_float
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_float
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_float
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_float
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_float
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_float
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_float
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_float
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_vec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_vec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_vec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_vec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_vec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_vec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_vec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_vec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_vec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_vec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_vec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_vec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_vec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_vec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_vec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_vec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_vec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_vec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_vec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_vec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_vec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_vec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_vec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_vec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_vec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_vec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_vec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_vec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_vec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_vec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_vec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_vec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_vec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_vec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_vec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_vec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_double
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_double
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_double
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_double
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_double
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_double
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_double
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_double
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_double
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_double
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_double
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_double
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_dvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_dvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_dvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_dvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_dvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_dvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_dvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_dvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_dvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_dvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_dvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_dvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_dvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_dvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_dvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_dvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_dvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_dvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_dvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_dvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_dvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_dvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_dvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_dvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_dvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_dvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_dvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_dvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_dvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_dvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_dvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_dvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_dvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_dvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_dvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_dvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_bool
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_bool
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_bool
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_bool
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_bool
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_bool
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_bool
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_bool
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_bool
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_bvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_bvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_bvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_bvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_bvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_bvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_bvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_bvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_bvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_bvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_bvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_bvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_bvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_bvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_bvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_bvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_bvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_bvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_bvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_bvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_bvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_bvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_bvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_bvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_bvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_bvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_bvec4
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_int_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_int_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_int_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_int_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_int_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_int_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_int_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_int_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_int_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_int_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_int_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_int_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_int_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_int_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_int_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_int_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_int_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_int_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_int_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_int_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_int_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_int_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_int_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_int_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_int_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_int_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_int_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_int_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_int_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_int_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_int_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_int_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_int_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_int_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_int_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_int_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_int_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_int_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_int_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_int_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_int_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_int_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_int_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_int_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_int_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_int_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_int_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_int_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_int_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_int_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_int_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_int_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_int_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_int_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_int_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_int_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_int_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_int_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_int_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_int_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_int_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_int_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_int_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_int_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_int_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_int_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_int_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_int_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_int_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_int_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_int_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_int_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_int_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_int_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_int_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_int_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_int_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_int_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_int_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_int_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_int_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_int_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_int_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_int_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uint_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uint_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uint_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uint_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uint_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uint_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uint_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uint_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uint_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uint_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uint_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uint_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uint_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uint_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uint_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uint_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uint_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uint_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uint_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uint_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uint_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uint_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uint_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uint_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uint_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uint_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uint_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uint_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uint_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uint_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uint_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uint_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uint_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uint_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uint_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uint_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uint_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uint_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uint_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uint_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uint_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uint_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uint_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uint_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uint_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uint_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uint_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uint_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uint_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uint_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uint_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uint_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uint_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uint_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uint_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uint_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uint_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uint_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uint_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uint_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uint_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uint_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uint_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uint_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uint_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uint_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uint_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uint_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uint_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uint_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uint_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uint_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uint_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uint_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uint_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uint_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uint_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uint_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uint_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uint_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uint_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uint_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uint_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uint_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_float_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_float_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_float_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_float_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_float_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_float_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_float_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_float_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_float_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_float_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_float_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_float_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_float_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_float_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_float_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_float_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_float_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_float_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_float_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_float_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_float_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_float_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_float_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_float_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_float_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_float_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_float_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_float_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_float_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_float_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_float_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_float_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_float_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_float_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_float_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_float_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_float_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_float_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_float_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_float_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_float_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_float_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_float_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_float_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_float_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_float_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_float_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_float_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_double_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_double_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_double_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_double_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_double_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_double_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_double_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_double_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_double_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_double_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_double_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_double_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_double_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_double_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_double_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_double_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_double_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_double_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_double_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_double_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_double_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_double_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_double_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_double_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_double_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_double_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_double_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_double_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_double_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_double_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_double_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_double_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_double_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_double_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_double_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_double_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_double_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_double_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_double_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_double_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_double_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_double_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_double_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_double_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_double_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_double_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_double_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_double_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bool_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bool_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bool_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bool_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bool_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bool_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bool_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bool_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bool_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bool_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bool_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bool_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bool_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bool_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bool_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bool_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bool_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bool_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bool_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bool_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bool_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bool_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bool_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bool_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bool_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bool_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bool_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bool_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bool_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bool_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bool_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bool_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bool_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bool_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bool_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bool_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec4_geometry
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_int
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_int
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_int
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_int
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_ivec2
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_ivec2
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_ivec2
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_ivec2
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_ivec3
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_ivec3
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_ivec3
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_ivec3
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_ivec4
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_ivec4
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_ivec4
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_ivec4
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_uint
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_uint
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_uint
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_uint
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_uvec2
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_uvec2
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_uvec2
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_uvec2
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_uvec3
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_uvec3
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_uvec3
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_uvec3
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_uvec4
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_uvec4
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_uvec4
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_uvec4
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_float
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_float
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_float
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_float
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_vec2
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_vec2
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_vec2
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_vec2
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_vec3
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_vec3
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_vec3
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_vec3
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_vec4
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_vec4
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_vec4
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_vec4
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_double
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_double
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_double
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_double
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_dvec2
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_dvec2
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_dvec2
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_dvec2
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_dvec3
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_dvec3
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_dvec3
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_dvec3
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_dvec4
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_dvec4
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_dvec4
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_dvec4
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_bool
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_bool
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_bool
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_bool
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_bvec2
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_bvec2
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_bvec2
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_bvec2
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_bvec3
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_bvec3
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_bvec3
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_bvec3
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_bvec4
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_bvec4
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_bvec4
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_bvec4
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_int
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_int
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_int
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_int
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_ivec2
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_ivec2
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_ivec2
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_ivec2
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_ivec3
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_ivec3
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_ivec3
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_ivec3
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_ivec4
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_ivec4
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_ivec4
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_ivec4
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_uint
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_uint
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_uint
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_uint
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_uvec2
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_uvec2
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_uvec2
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_uvec2
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_uvec3
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_uvec3
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_uvec3
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_uvec3
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_uvec4
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_uvec4
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_uvec4
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_uvec4
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_float
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_float
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_float
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_float
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_vec2
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_vec2
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_vec2
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_vec2
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_vec3
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_vec3
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_vec3
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_vec3
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_vec4
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_vec4
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_vec4
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_vec4
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_double
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_double
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_double
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_double
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_dvec2
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_dvec2
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_dvec2
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_dvec2
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_dvec3
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_dvec3
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_dvec3
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_dvec3
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_dvec4
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_dvec4
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_dvec4
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_dvec4
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_bool
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_bool
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_bool
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_bool
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_bvec2
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_bvec2
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_bvec2
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_bvec2
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_bvec3
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_bvec3
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_bvec3
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_bvec3
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_bvec4
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_bvec4
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_bvec4
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_bvec4
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_int_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_int_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_int_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_int_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_int_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_int_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_int_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_int_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_int_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_int_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_int_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_int_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_int_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_int_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_int_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_int_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec2_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec2_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec2_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec2_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec2_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec2_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec2_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec2_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec2_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec2_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec2_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec2_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec3_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec3_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec3_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec3_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec3_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec3_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec3_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec3_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec3_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec3_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec3_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec3_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec4_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec4_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec4_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec4_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec4_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec4_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec4_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec4_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec4_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec4_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec4_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec4_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uint_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uint_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uint_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uint_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uint_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uint_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uint_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uint_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uint_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uint_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uint_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uint_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uint_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uint_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uint_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uint_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec2_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec2_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec2_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec2_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec2_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec2_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec2_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec2_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec2_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec2_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec2_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec2_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec3_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec3_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec3_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec3_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec3_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec3_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec3_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec3_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec3_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec3_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec3_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec3_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec4_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec4_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec4_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec4_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec4_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec4_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec4_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec4_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec4_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec4_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec4_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec4_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_float_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_float_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_float_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_float_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_float_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_float_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_float_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_float_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_float_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_float_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_float_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_float_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_float_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_float_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_float_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_float_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec2_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec2_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec2_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec2_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec2_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec2_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec2_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec2_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec2_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec2_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec2_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec2_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec2_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec2_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec2_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec2_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec3_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec3_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec3_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec3_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec3_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec3_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec3_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec3_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec3_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec3_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec3_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec3_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec3_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec3_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec3_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec3_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec4_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec4_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec4_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec4_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec4_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec4_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec4_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec4_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec4_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec4_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec4_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec4_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec4_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec4_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec4_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec4_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_double_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_double_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_double_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_double_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_double_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_double_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_double_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_double_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_double_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_double_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_double_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_double_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_double_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_double_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_double_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_double_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec2_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec2_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec2_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec2_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec2_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec2_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec2_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec2_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec2_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec2_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec2_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec2_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec3_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec3_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec3_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec3_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec3_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec3_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec3_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec3_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec3_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec3_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec3_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec3_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec4_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec4_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec4_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec4_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec4_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec4_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec4_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec4_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec4_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec4_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec4_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec4_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bool_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bool_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bool_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bool_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bool_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bool_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bool_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bool_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bool_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bool_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bool_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bool_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bool_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bool_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bool_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bool_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec2_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec2_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec2_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec2_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec2_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec2_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec2_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec2_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec2_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec2_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec2_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec2_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec3_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec3_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec3_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec3_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec3_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec3_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec3_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec3_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec3_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec3_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec3_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec3_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec4_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec4_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec4_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec4_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec4_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec4_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec4_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec4_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec4_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec4_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec4_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec4_geometry
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_int
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_int
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_int
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_int
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_ivec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_ivec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_ivec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_ivec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_ivec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_ivec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_ivec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_ivec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_ivec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_ivec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_ivec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_ivec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_uint
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_uint
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_uint
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_uint
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_uvec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_uvec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_uvec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_uvec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_uvec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_uvec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_uvec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_uvec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_uvec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_uvec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_uvec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_uvec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_float
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_float
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_float
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_float
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_vec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_vec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_vec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_vec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_vec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_vec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_vec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_vec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_vec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_vec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_vec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_vec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_double
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_double
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_double
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_double
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_dvec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_dvec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_dvec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_dvec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_dvec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_dvec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_dvec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_dvec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_dvec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_dvec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_dvec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_dvec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_bool
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_bool
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_bool
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_bool
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_bvec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_bvec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_bvec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_bvec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_bvec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_bvec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_bvec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_bvec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_bvec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_bvec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_bvec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_bvec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_int
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_ivec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_ivec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_ivec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_uint
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_uvec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_uvec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_uvec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_float
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_vec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_vec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_vec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_double
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_dvec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_dvec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_dvec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_bool
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_bvec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_bvec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_bvec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_int
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_ivec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_ivec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_ivec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_uint
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_uvec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_uvec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_uvec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_float
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_vec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_vec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_vec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_double
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_dvec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_dvec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_dvec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_bool
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_bvec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_bvec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_bvec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_int
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_ivec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_ivec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_ivec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_uint
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_uvec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_uvec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_uvec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_float
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_vec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_vec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_vec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_double
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_dvec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_dvec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_dvec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_bool
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_bvec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_bvec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_bvec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_int
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_int
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_int
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_int
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_ivec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_ivec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_ivec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_ivec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_ivec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_ivec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_ivec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_ivec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_ivec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_ivec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_ivec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_ivec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_uint
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_uint
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_uint
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_uint
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_uvec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_uvec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_uvec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_uvec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_uvec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_uvec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_uvec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_uvec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_uvec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_uvec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_uvec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_uvec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_float
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_float
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_float
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_float
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_vec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_vec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_vec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_vec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_vec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_vec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_vec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_vec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_vec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_vec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_vec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_vec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_double
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_double
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_double
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_double
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_dvec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_dvec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_dvec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_dvec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_dvec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_dvec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_dvec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_dvec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_dvec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_dvec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_dvec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_dvec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_bool
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_bool
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_bool
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_bool
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_bvec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_bvec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_bvec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_bvec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_bvec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_bvec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_bvec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_bvec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_bvec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_bvec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_bvec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_bvec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_int
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_ivec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_ivec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_ivec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_uint
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_uvec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_uvec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_uvec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_float
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_vec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_vec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_vec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_double
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_dvec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_dvec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_dvec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_bool
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_bvec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_bvec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_bvec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_int
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_ivec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_ivec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_ivec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_uint
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_uvec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_uvec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_uvec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_float
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_vec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_vec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_vec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_double
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_dvec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_dvec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_dvec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_bool
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_bvec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_bvec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_bvec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_int
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_ivec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_ivec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_ivec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_uint
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_uvec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_uvec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_uvec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_float
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_vec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_vec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_vec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_double
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_dvec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_dvec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_dvec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_bool
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_bvec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_bvec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_bvec4
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_int_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_int_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_int_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_int_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_int_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_int_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_int_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_int_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_int_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_int_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_int_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_int_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_int_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_int_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_int_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_int_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uint_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uint_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uint_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uint_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uint_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uint_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uint_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uint_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uint_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uint_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uint_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uint_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uint_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uint_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uint_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uint_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_float_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_float_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_float_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_float_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_float_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_float_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_float_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_float_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_float_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_float_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_float_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_float_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_float_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_float_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_float_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_float_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_double_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_double_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_double_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_double_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_double_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_double_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_double_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_double_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_double_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_double_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_double_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_double_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_double_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_double_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_double_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_double_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bool_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bool_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bool_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bool_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bool_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bool_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bool_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bool_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bool_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bool_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bool_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bool_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bool_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bool_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bool_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bool_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_int_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_int_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_int_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_int_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uint_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uint_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uint_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uint_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_float_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_float_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_float_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_float_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_double_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_double_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_double_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_double_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bool_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bool_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bool_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bool_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_int_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_int_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_int_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_int_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uint_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uint_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uint_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uint_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_float_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_float_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_float_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_float_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_double_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_double_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_double_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_double_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bool_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bool_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bool_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bool_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_int_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_int_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_int_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_int_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uint_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uint_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uint_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uint_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_float_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_float_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_float_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_float_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_double_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_double_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_double_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_double_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bool_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bool_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bool_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bool_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec4_geometry
+KHR-GLES32.khr.subgroups.shape.graphics.clustered
+KHR-GLES32.khr.subgroups.shape.graphics.quad
+KHR-GLES32.khr.subgroups.shape.compute.clustered
+KHR-GLES32.khr.subgroups.shape.compute.quad
+KHR-GLES32.khr.subgroups.shape.framebuffer.clustered_vertex
+KHR-GLES32.khr.subgroups.shape.framebuffer.clustered_tess_eval
+KHR-GLES32.khr.subgroups.shape.framebuffer.clustered_tess_control
+KHR-GLES32.khr.subgroups.shape.framebuffer.clustered_geometry
+KHR-GLES32.khr.subgroups.shape.framebuffer.quad_vertex
+KHR-GLES32.khr.subgroups.shape.framebuffer.quad_tess_eval
+KHR-GLES32.khr.subgroups.shape.framebuffer.quad_tess_control
+KHR-GLES32.khr.subgroups.shape.framebuffer.quad_geometry
index 0e615a8..3cd01d7 100644 (file)
@@ -1072,3 +1072,6056 @@ KHR-GLES32.core.internalformat.copy_tex_image.rgb8
 KHR-GLES32.core.internalformat.renderbuffer.rgba8
 KHR-GLES32.core.internalformat.renderbuffer.rgb8
 KHR-GLES32.core.internalformat.renderbuffer.rgb5_a1
+KHR-GLES32.khr.subgroups.builtin_var.graphics.subgroupsize
+KHR-GLES32.khr.subgroups.builtin_var.graphics.subgroupinvocationid
+KHR-GLES32.khr.subgroups.builtin_var.compute.subgroupsize_compute
+KHR-GLES32.khr.subgroups.builtin_var.compute.subgroupinvocationid_compute
+KHR-GLES32.khr.subgroups.builtin_var.compute.numsubgroups
+KHR-GLES32.khr.subgroups.builtin_var.compute.subgroupid
+KHR-GLES32.khr.subgroups.builtin_var.framebuffer.subgroupsize_vertex
+KHR-GLES32.khr.subgroups.builtin_var.framebuffer.subgroupsize_tess_eval
+KHR-GLES32.khr.subgroups.builtin_var.framebuffer.subgroupsize_tess_control
+KHR-GLES32.khr.subgroups.builtin_var.framebuffer.subgroupsize_geometry
+KHR-GLES32.khr.subgroups.builtin_var.framebuffer.subgroupinvocationid_vertex
+KHR-GLES32.khr.subgroups.builtin_var.framebuffer.subgroupinvocationid_tess_eval
+KHR-GLES32.khr.subgroups.builtin_var.framebuffer.subgroupinvocationid_tess_control
+KHR-GLES32.khr.subgroups.builtin_var.framebuffer.subgroupinvocationid_geometry
+KHR-GLES32.khr.subgroups.builtin_mask_var.graphics.subgroupeqmask
+KHR-GLES32.khr.subgroups.builtin_mask_var.graphics.subgroupgemask
+KHR-GLES32.khr.subgroups.builtin_mask_var.graphics.subgroupgtmask
+KHR-GLES32.khr.subgroups.builtin_mask_var.graphics.subgrouplemask
+KHR-GLES32.khr.subgroups.builtin_mask_var.graphics.subgroupltmask
+KHR-GLES32.khr.subgroups.builtin_mask_var.compute.subgroupeqmask
+KHR-GLES32.khr.subgroups.builtin_mask_var.compute.subgroupgemask
+KHR-GLES32.khr.subgroups.builtin_mask_var.compute.subgroupgtmask
+KHR-GLES32.khr.subgroups.builtin_mask_var.compute.subgrouplemask
+KHR-GLES32.khr.subgroups.builtin_mask_var.compute.subgroupltmask
+KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupeqmask_vertex
+KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupeqmask_tess_eval
+KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupeqmask_tess_control
+KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupeqmask_geometry
+KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupgemask_vertex
+KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupgemask_tess_eval
+KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupgemask_tess_control
+KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupgemask_geometry
+KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupgtmask_vertex
+KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupgtmask_tess_eval
+KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupgtmask_tess_control
+KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupgtmask_geometry
+KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgrouplemask_vertex
+KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgrouplemask_tess_eval
+KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgrouplemask_tess_control
+KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgrouplemask_geometry
+KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupltmask_vertex
+KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupltmask_tess_eval
+KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupltmask_tess_control
+KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupltmask_geometry
+KHR-GLES32.khr.subgroups.basic.graphics.subgroupelect
+KHR-GLES32.khr.subgroups.basic.graphics.subgroupbarrier
+KHR-GLES32.khr.subgroups.basic.graphics.subgroupmemorybarrier
+KHR-GLES32.khr.subgroups.basic.graphics.subgroupmemorybarrierbuffer
+KHR-GLES32.khr.subgroups.basic.graphics.subgroupmemorybarrierimage
+KHR-GLES32.khr.subgroups.basic.compute.subgroupelect
+KHR-GLES32.khr.subgroups.basic.compute.subgroupbarrier
+KHR-GLES32.khr.subgroups.basic.compute.subgroupmemorybarrier
+KHR-GLES32.khr.subgroups.basic.compute.subgroupmemorybarrierbuffer
+KHR-GLES32.khr.subgroups.basic.compute.subgroupmemorybarriershared
+KHR-GLES32.khr.subgroups.basic.compute.subgroupmemorybarrierimage
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupelect_vertex
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupelect_tess_eval
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupelect_tess_control
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupelect_geometry
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupbarrier_fragment
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupbarrier_vertex
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupbarrier_tess_eval
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupbarrier_tess_control
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupbarrier_geometry
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrier_fragment
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrier_vertex
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrier_tess_eval
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrier_tess_control
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrier_geometry
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrierbuffer_fragment
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrierbuffer_vertex
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrierbuffer_tess_eval
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrierbuffer_tess_control
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrierbuffer_geometry
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrierimage_fragment
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrierimage_vertex
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrierimage_tess_eval
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrierimage_tess_control
+KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrierimage_geometry
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_int
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_ivec2
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_ivec3
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_ivec4
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupall_uint
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupany_uint
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_uint
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_uvec2
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_uvec3
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_uvec4
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_float
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_vec2
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_vec3
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_vec4
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_double
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_dvec2
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_dvec3
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_dvec4
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_bool
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_bvec2
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_bvec3
+KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_bvec4
+KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_int
+KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_ivec2
+KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_ivec3
+KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_ivec4
+KHR-GLES32.khr.subgroups.vote.compute.subgroupall_uint
+KHR-GLES32.khr.subgroups.vote.compute.subgroupany_uint
+KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_uint
+KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_uvec2
+KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_uvec3
+KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_uvec4
+KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_float
+KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_vec2
+KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_vec3
+KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_vec4
+KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_double
+KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_dvec2
+KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_dvec3
+KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_dvec4
+KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_bool
+KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_bvec2
+KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_bvec3
+KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_bvec4
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_int_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_int_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_int_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_int_geometry
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec2_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec2_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec2_geometry
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec3_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec3_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec3_geometry
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec4_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec4_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec4_geometry
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupall_uint_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupall_uint_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupall_uint_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupall_uint_geometry
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupany_uint_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupany_uint_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupany_uint_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupany_uint_geometry
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uint_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uint_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uint_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uint_geometry
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec2_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec2_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec2_geometry
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec3_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec3_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec3_geometry
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec4_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec4_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec4_geometry
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_float_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_float_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_float_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_float_geometry
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec2_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec2_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec2_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec2_geometry
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec3_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec3_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec3_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec3_geometry
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec4_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec4_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec4_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec4_geometry
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_double_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_double_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_double_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_double_geometry
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec2_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec2_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec2_geometry
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec3_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec3_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec3_geometry
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec4_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec4_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec4_geometry
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bool_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bool_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bool_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bool_geometry
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec2_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec2_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec2_geometry
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec3_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec3_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec3_geometry
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec4_vertex
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec4_tess_control
+KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec4_geometry
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_int_fragment
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_ivec2_fragment
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_ivec3_fragment
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_ivec4_fragment
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupall_uint_fragment
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupany_uint_fragment
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_uint_fragment
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_uvec2_fragment
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_uvec3_fragment
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_uvec4_fragment
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_float_fragment
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_vec2_fragment
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_vec3_fragment
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_vec4_fragment
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_double_fragment
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_dvec2_fragment
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_dvec3_fragment
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_dvec4_fragment
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_bool_fragment
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_bvec2_fragment
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_bvec3_fragment
+KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_bvec4_fragment
+KHR-GLES32.khr.subgroups.ballot.graphics.graphic
+KHR-GLES32.khr.subgroups.ballot.compute.compute
+KHR-GLES32.khr.subgroups.ballot.framebuffer.tess_eval
+KHR-GLES32.khr.subgroups.ballot.framebuffer.tess_control
+KHR-GLES32.khr.subgroups.ballot.framebuffer.geometry
+KHR-GLES32.khr.subgroups.ballot.framebuffer.vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_int
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_int
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_ivec2
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_ivec2
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_ivec3
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_ivec3
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_ivec4
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_ivec4
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uint
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uint
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uvec2
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uvec2
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uvec3
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uvec3
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uvec4
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uvec4
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_float
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_float
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_vec2
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_vec2
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_vec3
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_vec3
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_vec4
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_vec4
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_double
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_double
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_dvec2
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_dvec2
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_dvec3
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_dvec3
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_dvec4
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_dvec4
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_bool
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_bool
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_bvec2
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_bvec2
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_bvec3
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_bvec3
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_bvec4
+KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_bvec4
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_int
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_int
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_ivec2
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_ivec2
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_ivec3
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_ivec3
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_ivec4
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_ivec4
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_uint
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uint
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_uvec2
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uvec2
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_uvec3
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uvec3
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_uvec4
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uvec4
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_float
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_float
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_vec2
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_vec2
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_vec3
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_vec3
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_vec4
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_vec4
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_double
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_double
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_dvec2
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_dvec2
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_dvec3
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_dvec3
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_dvec4
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_dvec4
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_bool
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_bool
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_bvec2
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_bvec2
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_bvec3
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_bvec3
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_bvec4
+KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_bvec4
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_intvertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_inttess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_inttess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_intgeometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_intvertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_inttess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_inttess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_intgeometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec2vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec2tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec2tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec2geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec2vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec2tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec2tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec2geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec3vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec3tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec3tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec3geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec3vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec3tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec3tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec3geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec4vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec4tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec4tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec4geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec4vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec4tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec4tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec4geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uintvertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uinttess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uinttess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uintgeometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uintvertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uinttess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uinttess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uintgeometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec2vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec2tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec2tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec2geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec2vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec2tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec2tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec2geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec3vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec3tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec3tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec3geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec3vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec3tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec3tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec3geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec4vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec4tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec4tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec4geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec4vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec4tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec4tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec4geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_floatvertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_floattess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_floattess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_floatgeometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_floatvertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_floattess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_floattess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_floatgeometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec2vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec2tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec2tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec2geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec2vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec2tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec2tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec2geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec3vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec3tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec3tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec3geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec3vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec3tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec3tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec3geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec4vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec4tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec4tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec4geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec4vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec4tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec4tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec4geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_doublevertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_doubletess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_doubletess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_doublegeometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_doublevertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_doubletess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_doubletess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_doublegeometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec2vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec2tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec2tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec2geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec2vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec2tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec2tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec2geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec3vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec3tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec3tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec3geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec3vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec3tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec3tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec3geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec4vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec4tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec4tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec4geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec4vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec4tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec4tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec4geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_boolvertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_booltess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_booltess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_boolgeometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_boolvertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_booltess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_booltess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_boolgeometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec2vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec2tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec2tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec2geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec2vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec2tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec2tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec2geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec3vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec3tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec3tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec3geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec3vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec3tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec3tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec3geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec4vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec4tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec4tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec4geometry
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec4vertex
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec4tess_eval
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec4tess_control
+KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec4geometry
+KHR-GLES32.khr.subgroups.ballot_other.graphics.subgroupinverseballot
+KHR-GLES32.khr.subgroups.ballot_other.graphics.subgroupballotbitextract
+KHR-GLES32.khr.subgroups.ballot_other.graphics.subgroupballotbitcount
+KHR-GLES32.khr.subgroups.ballot_other.graphics.subgroupballotinclusivebitcount
+KHR-GLES32.khr.subgroups.ballot_other.graphics.subgroupballotexclusivebitcount
+KHR-GLES32.khr.subgroups.ballot_other.graphics.subgroupballotfindlsb
+KHR-GLES32.khr.subgroups.ballot_other.graphics.subgroupballotfindmsb
+KHR-GLES32.khr.subgroups.ballot_other.compute.subgroupinverseballot
+KHR-GLES32.khr.subgroups.ballot_other.compute.subgroupballotbitextract
+KHR-GLES32.khr.subgroups.ballot_other.compute.subgroupballotbitcount
+KHR-GLES32.khr.subgroups.ballot_other.compute.subgroupballotinclusivebitcount
+KHR-GLES32.khr.subgroups.ballot_other.compute.subgroupballotexclusivebitcount
+KHR-GLES32.khr.subgroups.ballot_other.compute.subgroupballotfindlsb
+KHR-GLES32.khr.subgroups.ballot_other.compute.subgroupballotfindmsb
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupinverseballot_vertex
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupinverseballot_tess_eval
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupinverseballot_tess_control
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupinverseballot_geometry
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotbitextract_vertex
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotbitextract_tess_eval
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotbitextract_tess_control
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotbitextract_geometry
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotbitcount_vertex
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotbitcount_tess_eval
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotbitcount_tess_control
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotbitcount_geometry
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotinclusivebitcount_vertex
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotinclusivebitcount_tess_eval
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotinclusivebitcount_tess_control
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotinclusivebitcount_geometry
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotexclusivebitcount_vertex
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotexclusivebitcount_tess_eval
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotexclusivebitcount_tess_control
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotexclusivebitcount_geometry
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotfindlsb_vertex
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotfindlsb_tess_eval
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotfindlsb_tess_control
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotfindlsb_geometry
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotfindmsb_vertex
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotfindmsb_tess_eval
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotfindmsb_tess_control
+KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotfindmsb_geometry
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_int
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_int
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_int
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_int
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_int
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_int
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_int
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_int
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_int
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_int
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_int
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_int
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_int
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_int
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_int
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_int
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_int
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_int
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_int
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_int
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_int
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_uint
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_uint
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_uint
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_uint
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_uint
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_uint
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_uint
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_uint
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_uint
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_uint
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_uint
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_uint
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_uint
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_uint
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_uint
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_uint
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_uint
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_uint
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_uint
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_uint
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_uint
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_float
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_float
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_float
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_float
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_float
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_float
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_float
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_float
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_float
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_float
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_float
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_float
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_vec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_vec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_vec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_vec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_vec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_vec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_vec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_vec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_vec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_vec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_vec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_vec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_vec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_vec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_vec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_vec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_vec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_vec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_vec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_vec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_vec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_vec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_vec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_vec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_vec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_vec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_vec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_vec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_vec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_vec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_vec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_vec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_vec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_vec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_vec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_vec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_double
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_double
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_double
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_double
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_double
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_double
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_double
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_double
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_double
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_double
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_double
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_double
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_bool
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_bool
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_bool
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_bool
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_bool
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_bool
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_bool
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_bool
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_bool
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_bvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_bvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_bvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_bvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_bvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_bvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_bvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_bvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_bvec2
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_bvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_bvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_bvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_bvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_bvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_bvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_bvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_bvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_bvec3
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_bvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_bvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_bvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_bvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_bvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_bvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_bvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_bvec4
+KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_bvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_int
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_int
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_int
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_int
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_int
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_int
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_int
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_int
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_int
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_int
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_int
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_int
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_int
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_int
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_int
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_int
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_int
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_int
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_int
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_int
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_int
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_ivec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_ivec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_ivec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_uint
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_uint
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_uint
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_uint
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_uint
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_uint
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_uint
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_uint
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_uint
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_uint
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_uint
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_uint
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_uint
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_uint
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_uint
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_uint
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_uint
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_uint
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_uint
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_uint
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_uint
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_uvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_uvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_uvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_float
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_float
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_float
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_float
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_float
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_float
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_float
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_float
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_float
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_float
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_float
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_float
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_vec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_vec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_vec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_vec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_vec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_vec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_vec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_vec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_vec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_vec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_vec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_vec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_vec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_vec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_vec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_vec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_vec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_vec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_vec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_vec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_vec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_vec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_vec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_vec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_vec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_vec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_vec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_vec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_vec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_vec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_vec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_vec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_vec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_vec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_vec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_vec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_double
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_double
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_double
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_double
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_double
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_double
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_double
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_double
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_double
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_double
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_double
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_double
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_dvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_dvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_dvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_bool
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_bool
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_bool
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_bool
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_bool
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_bool
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_bool
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_bool
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_bool
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_bvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_bvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_bvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_bvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_bvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_bvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_bvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_bvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_bvec2
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_bvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_bvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_bvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_bvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_bvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_bvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_bvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_bvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_bvec3
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_bvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_bvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_bvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_bvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_bvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_bvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_bvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_bvec4
+KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_bvec4
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_int_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_int_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_int_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_int_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_int_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_int_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_int_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_int_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_int_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_int_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_int_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_int_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_int_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_int_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_int_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_int_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_int_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_int_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_int_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_int_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_int_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_int_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_int_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_int_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_int_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_int_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_int_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_int_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_int_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_int_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_int_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_int_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_int_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_int_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_int_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_int_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_int_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_int_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_int_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_int_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_int_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_int_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_int_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_int_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_int_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_int_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_int_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_int_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_int_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_int_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_int_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_int_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_int_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_int_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_int_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_int_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_int_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_int_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_int_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_int_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_int_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_int_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_int_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_int_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_int_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_int_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_int_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_int_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_int_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_int_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_int_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_int_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_int_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_int_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_int_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_int_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_int_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_int_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_int_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_int_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_int_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_int_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_int_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_int_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uint_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uint_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uint_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uint_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uint_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uint_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uint_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uint_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uint_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uint_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uint_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uint_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uint_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uint_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uint_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uint_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uint_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uint_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uint_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uint_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uint_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uint_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uint_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uint_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uint_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uint_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uint_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uint_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uint_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uint_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uint_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uint_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uint_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uint_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uint_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uint_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uint_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uint_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uint_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uint_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uint_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uint_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uint_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uint_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uint_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uint_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uint_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uint_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uint_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uint_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uint_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uint_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uint_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uint_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uint_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uint_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uint_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uint_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uint_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uint_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uint_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uint_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uint_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uint_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uint_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uint_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uint_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uint_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uint_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uint_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uint_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uint_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uint_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uint_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uint_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uint_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uint_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uint_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uint_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uint_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uint_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uint_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uint_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uint_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_float_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_float_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_float_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_float_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_float_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_float_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_float_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_float_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_float_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_float_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_float_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_float_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_float_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_float_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_float_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_float_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_float_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_float_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_float_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_float_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_float_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_float_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_float_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_float_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_float_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_float_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_float_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_float_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_float_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_float_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_float_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_float_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_float_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_float_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_float_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_float_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_float_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_float_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_float_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_float_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_float_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_float_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_float_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_float_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_float_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_float_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_float_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_float_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_double_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_double_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_double_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_double_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_double_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_double_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_double_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_double_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_double_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_double_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_double_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_double_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_double_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_double_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_double_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_double_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_double_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_double_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_double_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_double_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_double_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_double_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_double_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_double_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_double_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_double_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_double_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_double_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_double_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_double_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_double_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_double_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_double_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_double_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_double_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_double_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_double_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_double_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_double_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_double_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_double_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_double_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_double_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_double_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_double_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_double_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_double_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_double_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bool_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bool_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bool_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bool_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bool_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bool_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bool_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bool_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bool_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bool_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bool_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bool_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bool_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bool_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bool_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bool_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bool_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bool_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bool_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bool_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bool_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bool_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bool_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bool_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bool_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bool_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bool_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bool_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bool_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bool_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bool_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bool_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bool_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bool_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bool_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bool_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec2_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec2_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec2_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec3_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec3_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec3_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec4_geometry
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec4_vertex
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec4_tess_control
+KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec4_geometry
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_int
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_int
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_int
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_int
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_int
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_int
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_int
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_ivec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_ivec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_ivec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_ivec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_ivec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_ivec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_ivec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_ivec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_ivec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_ivec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_ivec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_ivec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_ivec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_ivec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_ivec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_ivec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_ivec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_ivec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_ivec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_ivec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_ivec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_uint
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_uint
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_uint
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_uint
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_uint
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_uint
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_uint
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_uvec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_uvec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_uvec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_uvec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_uvec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_uvec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_uvec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_uvec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_uvec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_uvec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_uvec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_uvec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_uvec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_uvec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_uvec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_uvec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_uvec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_uvec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_uvec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_uvec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_uvec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_float
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_float
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_float
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_float
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_vec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_vec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_vec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_vec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_vec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_vec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_vec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_vec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_vec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_vec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_vec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_vec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_double
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_double
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_double
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_double
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_dvec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_dvec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_dvec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_dvec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_dvec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_dvec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_dvec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_dvec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_dvec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_dvec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_dvec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_dvec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_bool
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_bool
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_bool
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_bvec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_bvec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_bvec2
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_bvec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_bvec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_bvec3
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_bvec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_bvec4
+KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_bvec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_int
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_int
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_int
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_int
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_int
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_int
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_int
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_ivec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_ivec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_ivec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_ivec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_ivec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_ivec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_ivec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_ivec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_ivec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_ivec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_ivec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_ivec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_ivec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_ivec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_ivec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_ivec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_ivec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_ivec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_ivec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_ivec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_ivec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_uint
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_uint
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_uint
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_uint
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_uint
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_uint
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_uint
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_uvec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_uvec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_uvec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_uvec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_uvec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_uvec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_uvec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_uvec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_uvec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_uvec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_uvec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_uvec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_uvec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_uvec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_uvec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_uvec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_uvec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_uvec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_uvec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_uvec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_uvec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_float
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_float
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_float
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_float
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_vec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_vec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_vec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_vec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_vec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_vec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_vec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_vec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_vec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_vec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_vec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_vec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_double
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_double
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_double
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_double
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_dvec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_dvec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_dvec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_dvec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_dvec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_dvec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_dvec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_dvec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_dvec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_dvec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_dvec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_dvec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_bool
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_bool
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_bool
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_bvec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_bvec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_bvec2
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_bvec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_bvec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_bvec3
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_bvec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_bvec4
+KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_bvec4
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_int_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_int_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_int_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_int_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_int_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_int_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_int_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_int_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_int_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_int_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_int_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_int_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_int_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_int_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_int_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_int_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_int_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_int_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_int_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_int_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_int_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_int_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_int_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_int_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_int_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_int_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_int_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_int_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uint_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uint_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uint_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uint_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uint_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uint_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uint_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uint_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uint_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uint_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uint_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uint_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uint_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uint_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uint_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uint_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uint_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uint_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uint_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uint_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uint_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uint_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uint_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uint_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uint_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uint_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uint_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uint_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_float_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_float_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_float_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_float_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_float_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_float_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_float_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_float_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_float_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_float_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_float_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_float_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_float_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_float_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_float_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_float_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_double_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_double_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_double_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_double_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_double_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_double_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_double_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_double_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_double_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_double_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_double_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_double_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_double_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_double_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_double_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_double_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bool_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bool_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bool_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bool_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bool_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bool_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bool_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bool_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bool_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bool_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bool_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bool_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec2_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec2_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec2_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec3_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec3_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec3_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec4_geometry
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec4_vertex
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec4_tess_control
+KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_int
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_int
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_int
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_int
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_int
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_int
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_int
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_int
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_int
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_int
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_int
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_int
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_int
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_int
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_int
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_int
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_int
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_int
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_int
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_int
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_int
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_ivec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_ivec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_ivec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_ivec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_ivec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_ivec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_ivec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_ivec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_ivec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_ivec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_ivec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_ivec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_ivec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_ivec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_ivec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_ivec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_ivec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_ivec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_ivec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_ivec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_ivec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_ivec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_ivec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_ivec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_ivec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_ivec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_ivec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_ivec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_ivec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_ivec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_ivec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_ivec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_ivec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_ivec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_ivec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_ivec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_ivec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_ivec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_ivec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_ivec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_ivec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_ivec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_ivec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_ivec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_ivec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_ivec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_ivec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_ivec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_ivec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_ivec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_ivec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_ivec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_ivec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_ivec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_ivec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_ivec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_ivec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_ivec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_ivec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_ivec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_ivec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_ivec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_ivec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_uint
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_uint
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_uint
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_uint
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_uint
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_uint
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_uint
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_uint
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_uint
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_uint
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_uint
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_uint
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_uint
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_uint
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_uint
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_uint
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_uint
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_uint
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_uint
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_uint
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_uint
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_uvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_uvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_uvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_uvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_uvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_uvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_uvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_uvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_uvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_uvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_uvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_uvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_uvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_uvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_uvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_uvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_uvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_uvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_uvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_uvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_uvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_uvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_uvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_uvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_uvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_uvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_uvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_uvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_uvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_uvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_uvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_uvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_uvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_uvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_uvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_uvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_uvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_uvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_uvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_uvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_uvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_uvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_uvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_uvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_uvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_uvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_uvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_uvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_uvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_uvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_uvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_uvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_uvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_uvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_uvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_uvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_uvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_uvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_uvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_uvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_uvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_uvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_uvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_float
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_float
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_float
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_float
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_float
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_float
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_float
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_float
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_float
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_float
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_float
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_float
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_vec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_vec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_vec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_vec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_vec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_vec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_vec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_vec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_vec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_vec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_vec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_vec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_vec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_vec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_vec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_vec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_vec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_vec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_vec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_vec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_vec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_vec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_vec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_vec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_vec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_vec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_vec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_vec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_vec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_vec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_vec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_vec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_vec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_vec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_vec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_vec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_double
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_double
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_double
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_double
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_double
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_double
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_double
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_double
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_double
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_double
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_double
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_double
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_dvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_dvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_dvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_dvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_dvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_dvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_dvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_dvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_dvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_dvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_dvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_dvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_dvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_dvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_dvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_dvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_dvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_dvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_dvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_dvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_dvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_dvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_dvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_dvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_dvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_dvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_dvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_dvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_dvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_dvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_dvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_dvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_dvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_dvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_dvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_dvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_bool
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_bool
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_bool
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_bool
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_bool
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_bool
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_bool
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_bool
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_bool
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_bvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_bvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_bvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_bvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_bvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_bvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_bvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_bvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_bvec2
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_bvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_bvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_bvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_bvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_bvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_bvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_bvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_bvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_bvec3
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_bvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_bvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_bvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_bvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_bvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_bvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_bvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_bvec4
+KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_bvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_int
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_int
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_int
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_int
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_int
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_int
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_int
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_int
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_int
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_int
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_int
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_int
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_int
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_int
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_int
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_int
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_int
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_int
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_int
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_int
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_int
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_ivec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_ivec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_ivec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_ivec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_ivec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_ivec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_ivec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_ivec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_ivec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_ivec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_ivec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_ivec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_ivec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_ivec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_ivec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_ivec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_ivec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_ivec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_ivec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_ivec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_ivec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_ivec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_ivec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_ivec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_ivec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_ivec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_ivec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_ivec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_ivec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_ivec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_ivec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_ivec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_ivec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_ivec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_ivec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_ivec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_ivec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_ivec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_ivec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_ivec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_ivec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_ivec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_ivec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_ivec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_ivec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_ivec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_ivec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_ivec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_ivec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_ivec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_ivec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_ivec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_ivec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_ivec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_ivec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_ivec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_ivec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_ivec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_ivec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_ivec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_ivec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_ivec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_ivec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_uint
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_uint
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_uint
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_uint
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_uint
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_uint
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_uint
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_uint
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_uint
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_uint
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_uint
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_uint
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_uint
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_uint
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_uint
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_uint
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_uint
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_uint
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_uint
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_uint
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_uint
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_uvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_uvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_uvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_uvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_uvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_uvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_uvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_uvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_uvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_uvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_uvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_uvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_uvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_uvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_uvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_uvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_uvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_uvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_uvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_uvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_uvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_uvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_uvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_uvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_uvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_uvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_uvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_uvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_uvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_uvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_uvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_uvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_uvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_uvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_uvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_uvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_uvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_uvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_uvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_uvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_uvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_uvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_uvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_uvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_uvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_uvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_uvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_uvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_uvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_uvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_uvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_uvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_uvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_uvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_uvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_uvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_uvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_uvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_uvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_uvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_uvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_uvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_uvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_float
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_float
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_float
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_float
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_float
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_float
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_float
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_float
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_float
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_float
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_float
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_float
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_vec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_vec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_vec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_vec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_vec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_vec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_vec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_vec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_vec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_vec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_vec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_vec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_vec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_vec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_vec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_vec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_vec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_vec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_vec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_vec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_vec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_vec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_vec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_vec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_vec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_vec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_vec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_vec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_vec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_vec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_vec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_vec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_vec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_vec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_vec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_vec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_double
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_double
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_double
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_double
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_double
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_double
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_double
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_double
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_double
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_double
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_double
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_double
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_dvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_dvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_dvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_dvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_dvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_dvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_dvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_dvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_dvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_dvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_dvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_dvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_dvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_dvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_dvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_dvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_dvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_dvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_dvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_dvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_dvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_dvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_dvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_dvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_dvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_dvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_dvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_dvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_dvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_dvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_dvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_dvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_dvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_dvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_dvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_dvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_bool
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_bool
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_bool
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_bool
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_bool
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_bool
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_bool
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_bool
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_bool
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_bvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_bvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_bvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_bvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_bvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_bvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_bvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_bvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_bvec2
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_bvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_bvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_bvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_bvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_bvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_bvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_bvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_bvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_bvec3
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_bvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_bvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_bvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_bvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_bvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_bvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_bvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_bvec4
+KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_bvec4
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_int_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_int_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_int_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_int_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_int_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_int_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_int_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_int_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_int_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_int_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_int_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_int_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_int_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_int_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_int_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_int_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_int_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_int_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_int_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_int_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_int_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_int_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_int_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_int_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_int_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_int_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_int_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_int_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_int_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_int_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_int_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_int_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_int_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_int_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_int_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_int_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_int_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_int_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_int_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_int_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_int_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_int_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_int_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_int_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_int_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_int_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_int_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_int_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_int_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_int_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_int_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_int_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_int_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_int_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_int_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_int_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_int_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_int_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_int_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_int_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_int_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_int_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_int_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_int_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_int_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_int_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_int_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_int_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_int_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_int_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_int_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_int_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_int_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_int_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_int_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_int_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_int_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_int_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_int_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_int_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_int_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_int_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_int_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_int_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uint_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uint_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uint_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uint_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uint_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uint_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uint_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uint_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uint_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uint_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uint_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uint_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uint_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uint_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uint_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uint_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uint_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uint_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uint_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uint_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uint_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uint_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uint_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uint_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uint_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uint_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uint_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uint_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uint_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uint_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uint_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uint_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uint_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uint_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uint_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uint_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uint_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uint_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uint_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uint_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uint_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uint_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uint_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uint_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uint_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uint_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uint_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uint_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uint_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uint_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uint_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uint_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uint_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uint_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uint_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uint_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uint_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uint_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uint_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uint_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uint_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uint_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uint_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uint_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uint_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uint_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uint_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uint_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uint_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uint_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uint_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uint_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uint_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uint_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uint_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uint_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uint_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uint_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uint_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uint_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uint_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uint_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uint_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uint_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_float_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_float_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_float_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_float_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_float_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_float_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_float_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_float_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_float_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_float_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_float_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_float_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_float_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_float_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_float_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_float_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_float_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_float_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_float_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_float_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_float_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_float_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_float_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_float_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_float_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_float_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_float_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_float_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_float_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_float_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_float_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_float_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_float_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_float_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_float_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_float_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_float_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_float_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_float_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_float_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_float_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_float_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_float_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_float_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_float_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_float_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_float_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_float_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_double_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_double_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_double_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_double_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_double_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_double_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_double_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_double_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_double_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_double_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_double_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_double_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_double_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_double_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_double_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_double_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_double_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_double_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_double_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_double_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_double_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_double_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_double_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_double_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_double_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_double_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_double_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_double_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_double_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_double_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_double_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_double_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_double_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_double_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_double_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_double_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_double_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_double_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_double_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_double_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_double_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_double_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_double_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_double_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_double_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_double_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_double_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_double_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bool_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bool_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bool_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bool_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bool_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bool_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bool_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bool_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bool_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bool_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bool_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bool_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bool_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bool_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bool_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bool_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bool_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bool_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bool_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bool_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bool_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bool_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bool_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bool_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bool_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bool_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bool_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bool_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bool_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bool_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bool_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bool_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bool_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bool_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bool_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bool_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec2_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec2_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec2_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec3_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec3_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec3_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec4_geometry
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec4_vertex
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec4_tess_control
+KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec4_geometry
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_int
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_int
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_int
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_int
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_ivec2
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_ivec2
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_ivec2
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_ivec2
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_ivec3
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_ivec3
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_ivec3
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_ivec3
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_ivec4
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_ivec4
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_ivec4
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_ivec4
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_uint
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_uint
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_uint
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_uint
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_uvec2
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_uvec2
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_uvec2
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_uvec2
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_uvec3
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_uvec3
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_uvec3
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_uvec3
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_uvec4
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_uvec4
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_uvec4
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_uvec4
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_float
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_float
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_float
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_float
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_vec2
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_vec2
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_vec2
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_vec2
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_vec3
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_vec3
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_vec3
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_vec3
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_vec4
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_vec4
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_vec4
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_vec4
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_double
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_double
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_double
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_double
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_dvec2
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_dvec2
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_dvec2
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_dvec2
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_dvec3
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_dvec3
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_dvec3
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_dvec3
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_dvec4
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_dvec4
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_dvec4
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_dvec4
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_bool
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_bool
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_bool
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_bool
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_bvec2
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_bvec2
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_bvec2
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_bvec2
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_bvec3
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_bvec3
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_bvec3
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_bvec3
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_bvec4
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_bvec4
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_bvec4
+KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_bvec4
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_int
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_int
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_int
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_int
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_ivec2
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_ivec2
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_ivec2
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_ivec2
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_ivec3
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_ivec3
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_ivec3
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_ivec3
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_ivec4
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_ivec4
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_ivec4
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_ivec4
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_uint
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_uint
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_uint
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_uint
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_uvec2
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_uvec2
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_uvec2
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_uvec2
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_uvec3
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_uvec3
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_uvec3
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_uvec3
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_uvec4
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_uvec4
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_uvec4
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_uvec4
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_float
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_float
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_float
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_float
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_vec2
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_vec2
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_vec2
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_vec2
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_vec3
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_vec3
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_vec3
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_vec3
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_vec4
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_vec4
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_vec4
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_vec4
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_double
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_double
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_double
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_double
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_dvec2
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_dvec2
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_dvec2
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_dvec2
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_dvec3
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_dvec3
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_dvec3
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_dvec3
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_dvec4
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_dvec4
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_dvec4
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_dvec4
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_bool
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_bool
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_bool
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_bool
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_bvec2
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_bvec2
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_bvec2
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_bvec2
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_bvec3
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_bvec3
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_bvec3
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_bvec3
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_bvec4
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_bvec4
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_bvec4
+KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_bvec4
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_int_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_int_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_int_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_int_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_int_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_int_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_int_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_int_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_int_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_int_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_int_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_int_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_int_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_int_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_int_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_int_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec2_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec2_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec2_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec2_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec2_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec2_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec2_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec2_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec2_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec2_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec2_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec2_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec3_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec3_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec3_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec3_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec3_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec3_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec3_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec3_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec3_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec3_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec3_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec3_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec4_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec4_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec4_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec4_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec4_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec4_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec4_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec4_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec4_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec4_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec4_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec4_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uint_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uint_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uint_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uint_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uint_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uint_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uint_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uint_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uint_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uint_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uint_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uint_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uint_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uint_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uint_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uint_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec2_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec2_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec2_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec2_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec2_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec2_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec2_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec2_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec2_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec2_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec2_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec2_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec3_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec3_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec3_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec3_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec3_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec3_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec3_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec3_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec3_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec3_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec3_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec3_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec4_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec4_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec4_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec4_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec4_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec4_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec4_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec4_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec4_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec4_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec4_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec4_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_float_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_float_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_float_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_float_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_float_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_float_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_float_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_float_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_float_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_float_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_float_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_float_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_float_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_float_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_float_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_float_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec2_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec2_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec2_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec2_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec2_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec2_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec2_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec2_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec2_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec2_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec2_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec2_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec2_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec2_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec2_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec2_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec3_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec3_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec3_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec3_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec3_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec3_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec3_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec3_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec3_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec3_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec3_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec3_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec3_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec3_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec3_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec3_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec4_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec4_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec4_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec4_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec4_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec4_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec4_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec4_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec4_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec4_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec4_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec4_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec4_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec4_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec4_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec4_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_double_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_double_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_double_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_double_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_double_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_double_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_double_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_double_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_double_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_double_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_double_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_double_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_double_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_double_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_double_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_double_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec2_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec2_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec2_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec2_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec2_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec2_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec2_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec2_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec2_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec2_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec2_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec2_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec3_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec3_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec3_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec3_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec3_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec3_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec3_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec3_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec3_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec3_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec3_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec3_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec4_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec4_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec4_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec4_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec4_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec4_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec4_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec4_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec4_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec4_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec4_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec4_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bool_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bool_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bool_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bool_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bool_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bool_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bool_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bool_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bool_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bool_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bool_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bool_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bool_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bool_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bool_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bool_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec2_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec2_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec2_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec2_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec2_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec2_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec2_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec2_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec2_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec2_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec2_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec2_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec3_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec3_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec3_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec3_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec3_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec3_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec3_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec3_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec3_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec3_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec3_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec3_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec4_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec4_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec4_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec4_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec4_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec4_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec4_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec4_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec4_geometry
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec4_vertex
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec4_tess_control
+KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec4_geometry
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_int
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_int
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_int
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_int
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_ivec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_ivec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_ivec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_ivec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_ivec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_ivec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_ivec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_ivec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_ivec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_ivec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_ivec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_ivec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_uint
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_uint
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_uint
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_uint
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_uvec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_uvec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_uvec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_uvec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_uvec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_uvec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_uvec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_uvec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_uvec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_uvec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_uvec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_uvec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_float
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_float
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_float
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_float
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_vec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_vec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_vec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_vec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_vec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_vec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_vec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_vec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_vec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_vec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_vec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_vec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_double
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_double
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_double
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_double
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_dvec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_dvec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_dvec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_dvec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_dvec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_dvec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_dvec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_dvec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_dvec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_dvec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_dvec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_dvec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_bool
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_bool
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_bool
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_bool
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_bvec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_bvec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_bvec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_bvec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_bvec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_bvec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_bvec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_bvec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_bvec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_bvec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_bvec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_bvec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_int
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_ivec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_ivec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_ivec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_uint
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_uvec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_uvec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_uvec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_float
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_vec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_vec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_vec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_double
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_dvec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_dvec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_dvec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_bool
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_bvec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_bvec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_bvec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_int
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_ivec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_ivec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_ivec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_uint
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_uvec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_uvec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_uvec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_float
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_vec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_vec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_vec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_double
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_dvec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_dvec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_dvec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_bool
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_bvec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_bvec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_bvec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_int
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_ivec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_ivec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_ivec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_uint
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_uvec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_uvec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_uvec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_float
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_vec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_vec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_vec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_double
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_dvec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_dvec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_dvec4
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_bool
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_bvec2
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_bvec3
+KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_bvec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_int
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_int
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_int
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_int
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_ivec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_ivec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_ivec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_ivec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_ivec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_ivec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_ivec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_ivec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_ivec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_ivec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_ivec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_ivec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_uint
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_uint
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_uint
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_uint
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_uvec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_uvec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_uvec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_uvec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_uvec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_uvec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_uvec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_uvec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_uvec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_uvec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_uvec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_uvec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_float
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_float
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_float
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_float
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_vec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_vec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_vec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_vec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_vec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_vec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_vec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_vec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_vec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_vec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_vec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_vec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_double
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_double
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_double
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_double
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_dvec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_dvec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_dvec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_dvec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_dvec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_dvec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_dvec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_dvec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_dvec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_dvec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_dvec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_dvec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_bool
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_bool
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_bool
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_bool
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_bvec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_bvec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_bvec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_bvec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_bvec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_bvec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_bvec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_bvec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_bvec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_bvec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_bvec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_bvec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_int
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_ivec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_ivec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_ivec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_uint
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_uvec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_uvec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_uvec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_float
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_vec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_vec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_vec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_double
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_dvec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_dvec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_dvec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_bool
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_bvec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_bvec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_bvec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_int
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_ivec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_ivec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_ivec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_uint
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_uvec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_uvec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_uvec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_float
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_vec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_vec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_vec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_double
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_dvec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_dvec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_dvec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_bool
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_bvec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_bvec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_bvec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_int
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_ivec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_ivec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_ivec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_uint
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_uvec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_uvec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_uvec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_float
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_vec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_vec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_vec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_double
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_dvec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_dvec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_dvec4
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_bool
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_bvec2
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_bvec3
+KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_bvec4
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_int_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_int_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_int_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_int_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_int_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_int_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_int_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_int_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_int_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_int_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_int_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_int_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_int_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_int_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_int_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_int_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uint_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uint_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uint_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uint_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uint_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uint_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uint_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uint_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uint_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uint_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uint_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uint_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uint_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uint_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uint_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uint_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_float_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_float_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_float_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_float_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_float_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_float_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_float_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_float_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_float_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_float_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_float_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_float_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_float_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_float_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_float_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_float_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_double_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_double_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_double_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_double_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_double_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_double_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_double_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_double_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_double_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_double_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_double_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_double_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_double_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_double_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_double_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_double_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bool_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bool_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bool_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bool_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bool_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bool_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bool_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bool_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bool_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bool_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bool_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bool_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bool_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bool_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bool_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bool_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_int_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_int_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_int_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_int_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uint_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uint_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uint_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uint_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_float_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_float_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_float_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_float_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_double_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_double_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_double_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_double_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bool_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bool_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bool_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bool_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_int_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_int_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_int_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_int_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uint_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uint_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uint_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uint_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_float_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_float_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_float_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_float_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_double_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_double_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_double_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_double_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bool_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bool_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bool_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bool_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_int_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_int_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_int_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_int_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uint_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uint_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uint_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uint_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_float_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_float_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_float_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_float_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_double_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_double_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_double_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_double_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec4_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bool_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bool_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bool_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bool_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec2_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec2_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec2_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec2_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec3_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec3_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec3_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec3_geometry
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec4_vertex
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec4_tess_eval
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec4_tess_control
+KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec4_geometry
+KHR-GLES32.khr.subgroups.shape.graphics.clustered
+KHR-GLES32.khr.subgroups.shape.graphics.quad
+KHR-GLES32.khr.subgroups.shape.compute.clustered
+KHR-GLES32.khr.subgroups.shape.compute.quad
+KHR-GLES32.khr.subgroups.shape.framebuffer.clustered_vertex
+KHR-GLES32.khr.subgroups.shape.framebuffer.clustered_tess_eval
+KHR-GLES32.khr.subgroups.shape.framebuffer.clustered_tess_control
+KHR-GLES32.khr.subgroups.shape.framebuffer.clustered_geometry
+KHR-GLES32.khr.subgroups.shape.framebuffer.quad_vertex
+KHR-GLES32.khr.subgroups.shape.framebuffer.quad_tess_eval
+KHR-GLES32.khr.subgroups.shape.framebuffer.quad_tess_control
+KHR-GLES32.khr.subgroups.shape.framebuffer.quad_geometry
index baa09f2..75e3e9e 100755 (executable)
@@ -317,7 +317,7 @@ std::string getIdentity(int opType, Format format)
                        }
                        else if (isUnsigned)
                        {
-                               return subgroups::getFormatNameForGLSL(format) + "(0)";
+                               return subgroups::getFormatNameForGLSL(format) + "(0u)";
                        }
                        else
                        {
@@ -405,7 +405,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
        switch (caseDef.opType)
        {
                default:
-                       indexVars = "  uint start = 0, end = gl_SubgroupSize;\n";
+                       indexVars = "  uint start = 0u, end = gl_SubgroupSize;\n";
                        break;
                case OPTYPE_INCLUSIVE_ADD:
                case OPTYPE_INCLUSIVE_MUL:
@@ -414,7 +414,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
                case OPTYPE_INCLUSIVE_AND:
                case OPTYPE_INCLUSIVE_OR:
                case OPTYPE_INCLUSIVE_XOR:
-                       indexVars = "  uint start = 0, end = gl_SubgroupInvocationID + 1;\n";
+                       indexVars = "  uint start = 0u, end = gl_SubgroupInvocationID + 1u;\n";
                        break;
                case OPTYPE_EXCLUSIVE_ADD:
                case OPTYPE_EXCLUSIVE_MUL:
@@ -423,14 +423,14 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
                case OPTYPE_EXCLUSIVE_AND:
                case OPTYPE_EXCLUSIVE_OR:
                case OPTYPE_EXCLUSIVE_XOR:
-                       indexVars = "  uint start = 0, end = gl_SubgroupInvocationID;\n";
+                       indexVars = "  uint start = 0u, end = gl_SubgroupInvocationID;\n";
                        break;
        }
 
        bdy << indexVars
                << "  " << subgroups::getFormatNameForGLSL(caseDef.format) << " ref = "
                << getIdentity(caseDef.opType, caseDef.format) << ";\n"
-               << "  uint tempResult = 0;\n"
+               << "  uint tempResult = 0u;\n"
                << "  for (uint index = start; index < end; index++)\n"
                << "  {\n"
                << "    if (subgroupBallotBitExtract(mask, index))\n"
@@ -439,8 +439,8 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
                << "    }\n"
                << "  }\n"
                << "  tempResult = " << getCompare(caseDef.opType, caseDef.format, "ref",
-                                                                                       getOpTypeName(caseDef.opType) + "(data[gl_SubgroupInvocationID])") << " ? 0x1 : 0;\n"
-               << "  if (1 == (gl_SubgroupInvocationID % 2))\n"
+                                                                                       getOpTypeName(caseDef.opType) + "(data[gl_SubgroupInvocationID])") << " ? 0x1u : 0u;\n"
+               << "  if (1u == (gl_SubgroupInvocationID % 2u))\n"
                << "  {\n"
                << "    mask = subgroupBallot(true);\n"
                << "    ref = " << getIdentity(caseDef.opType, caseDef.format) << ";\n"
@@ -452,17 +452,17 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
                << "      }\n"
                << "    }\n"
                << "    tempResult |= " << getCompare(caseDef.opType, caseDef.format, "ref",
-                               getOpTypeName(caseDef.opType) + "(data[gl_SubgroupInvocationID])") << " ? 0x2 : 0;\n"
+                               getOpTypeName(caseDef.opType) + "(data[gl_SubgroupInvocationID])") << " ? 0x2u : 0u;\n"
                << "  }\n"
                << "  else\n"
                << "  {\n"
-               << "    tempResult |= 0x2;\n"
+               << "    tempResult |= 0x2u;\n"
                << "  }\n";
 
        if (SHADER_STAGE_VERTEX_BIT == caseDef.shaderStage)
        {
                std::ostringstream vertexSrc;
-               vertexSrc << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n"
+               vertexSrc << "${VERSION_DECL}\n"
                        << "#extension GL_KHR_shader_subgroup_arithmetic: enable\n"
                        << "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        << "layout(location = 0) in highp vec4 in_position;\n"
@@ -486,7 +486,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
        {
                std::ostringstream geometry;
 
-               geometry << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n"
+               geometry << "${VERSION_DECL}\n"
                        << "#extension GL_KHR_shader_subgroup_arithmetic: enable\n"
                        << "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        << "layout(points) in;\n"
@@ -512,7 +512,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
        else if (SHADER_STAGE_TESS_CONTROL_BIT == caseDef.shaderStage)
        {
                std::ostringstream controlSource;
-               controlSource  << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n"
+               controlSource  << "${VERSION_DECL}\n"
                        << "#extension GL_KHR_shader_subgroup_arithmetic: enable\n"
                        << "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        << "layout(vertices = 2) out;\n"
@@ -543,7 +543,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
        {
 
                std::ostringstream evaluationSource;
-               evaluationSource << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n"
+               evaluationSource << "${VERSION_DECL}\n"
                        << "#extension GL_KHR_shader_subgroup_arithmetic: enable\n"
                        << "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        << "layout(isolines, equal_spacing, ccw ) in;\n"
@@ -576,7 +576,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
        switch (caseDef.opType)
        {
                default:
-                       indexVars = "  uint start = 0, end = gl_SubgroupSize;\n";
+                       indexVars = "  uint start = 0u, end = gl_SubgroupSize;\n";
                        break;
                case OPTYPE_INCLUSIVE_ADD:
                case OPTYPE_INCLUSIVE_MUL:
@@ -585,7 +585,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                case OPTYPE_INCLUSIVE_AND:
                case OPTYPE_INCLUSIVE_OR:
                case OPTYPE_INCLUSIVE_XOR:
-                       indexVars = "  uint start = 0, end = gl_SubgroupInvocationID + 1;\n";
+                       indexVars = "  uint start = 0u, end = gl_SubgroupInvocationID + 1u;\n";
                        break;
                case OPTYPE_EXCLUSIVE_ADD:
                case OPTYPE_EXCLUSIVE_MUL:
@@ -594,7 +594,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                case OPTYPE_EXCLUSIVE_AND:
                case OPTYPE_EXCLUSIVE_OR:
                case OPTYPE_EXCLUSIVE_XOR:
-                       indexVars = "  uint start = 0, end = gl_SubgroupInvocationID;\n";
+                       indexVars = "  uint start = 0u, end = gl_SubgroupInvocationID;\n";
                        break;
        }
 
@@ -602,7 +602,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                indexVars +
                "  " + subgroups::getFormatNameForGLSL(caseDef.format) + " ref = "
                + getIdentity(caseDef.opType, caseDef.format) + ";\n"
-               "  uint tempResult = 0;\n"
+               "  uint tempResult = 0u;\n"
                "  for (uint index = start; index < end; index++)\n"
                "  {\n"
                "    if (subgroupBallotBitExtract(mask, index))\n"
@@ -610,8 +610,8 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                "      ref = " + getOpTypeOperation(caseDef.opType, caseDef.format, "ref", "data[index]") + ";\n"
                "    }\n"
                "  }\n"
-               "  tempResult = " + getCompare(caseDef.opType, caseDef.format, "ref", getOpTypeName(caseDef.opType) + "(data[gl_SubgroupInvocationID])") + " ? 0x1 : 0;\n"
-               "  if (1 == (gl_SubgroupInvocationID % 2))\n"
+               "  tempResult = " + getCompare(caseDef.opType, caseDef.format, "ref", getOpTypeName(caseDef.opType) + "(data[gl_SubgroupInvocationID])") + " ? 0x1u : 0u;\n"
+               "  if (1u == (gl_SubgroupInvocationID % 2u))\n"
                "  {\n"
                "    mask = subgroupBallot(true);\n"
                "    ref = " + getIdentity(caseDef.opType, caseDef.format) + ";\n"
@@ -622,18 +622,18 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                "        ref = " + getOpTypeOperation(caseDef.opType, caseDef.format, "ref", "data[index]") + ";\n"
                "      }\n"
                "    }\n"
-               "    tempResult |= " + getCompare(caseDef.opType, caseDef.format, "ref", getOpTypeName(caseDef.opType) + "(data[gl_SubgroupInvocationID])") + " ? 0x2 : 0;\n"
+               "    tempResult |= " + getCompare(caseDef.opType, caseDef.format, "ref", getOpTypeName(caseDef.opType) + "(data[gl_SubgroupInvocationID])") + " ? 0x2u : 0u;\n"
                "  }\n"
                "  else\n"
                "  {\n"
-               "    tempResult |= 0x2;\n"
+               "    tempResult |= 0x2u;\n"
                "  }\n";
 
        if (SHADER_STAGE_COMPUTE_BIT == caseDef.shaderStage)
        {
                std::ostringstream src;
 
-               src << "#version 450\n"
+               src << "${VERSION_DECL}\n"
                        << "#extension GL_KHR_shader_subgroup_arithmetic: enable\n"
                        << "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        << "layout (${LOCAL_SIZE_X}, ${LOCAL_SIZE_Y}, ${LOCAL_SIZE_Z}) in;\n"
@@ -663,7 +663,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
        {
                {
                        const std::string vertex =
-                               "#version 450\n"
+                               "${VERSION_DECL}\n"
                                "#extension GL_KHR_shader_subgroup_arithmetic: enable\n"
                                "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                                "layout(binding = 0, std430) buffer Buffer0\n"
@@ -690,7 +690,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
 
                {
                        const std::string tesc =
-                               "#version 450\n"
+                               "${VERSION_DECL}\n"
                                "#extension GL_KHR_shader_subgroup_arithmetic: enable\n"
                                "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                                "layout(vertices=1) out;\n"
@@ -720,7 +720,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
 
                {
                        const std::string tese =
-                               "#version 450\n"
+                               "${VERSION_DECL}\n"
                                "#extension GL_KHR_shader_subgroup_arithmetic: enable\n"
                                "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                                "layout(isolines) in;\n"
@@ -737,7 +737,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                                "{\n"
                                "  uvec4 mask = subgroupBallot(true);\n"
                                + bdy +
-                               "  b2.result[gl_PrimitiveID * 2 + uint(gl_TessCoord.x + 0.5)] = tempResult;\n"
+                               "  b2.result[gl_PrimitiveID * 2 + int(gl_TessCoord.x + 0.5)] = tempResult;\n"
                                "  float pixelSize = 2.0f/1024.0f;\n"
                                "  gl_Position = gl_in[0].gl_Position + gl_TessCoord.x * pixelSize / 2.0f;\n"
                                "}\n";
@@ -746,7 +746,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
 
                {
                        const std::string geometry =
-                               "#version 450\n"
+                               // version added by addGeometryShadersFromTemplate
                                "#extension GL_KHR_shader_subgroup_arithmetic: enable\n"
                                "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                                "layout(${TOPOLOGY}) in;\n"
@@ -774,9 +774,10 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
 
                {
                        const std::string fragment =
-                               "#version 450\n"
+                               "${VERSION_DECL}\n"
                                "#extension GL_KHR_shader_subgroup_arithmetic: enable\n"
                                "#extension GL_KHR_shader_subgroup_ballot: enable\n"
+                               "precision highp float;\n"
                                "layout(location = 0) out uint result;\n"
                                "layout(binding = 4, std430) readonly buffer Buffer4\n"
                                "{\n"
index 456d015..a379ba9 100755 (executable)
@@ -84,22 +84,22 @@ std::string getBodySource(CaseDefinition caseDef)
        std::ostringstream bdy;
 
        bdy << "  uvec4 mask = subgroupBallot(true);\n";
-       bdy << "  uint tempResult = 0;\n";
+       bdy << "  uint tempResult = 0u;\n";
 
        if (OPTYPE_BROADCAST == caseDef.opType)
        {
-               bdy     << "  tempResult = 0x3;\n";
+               bdy     << "  tempResult = 0x3u;\n";
                for (int i = 0; i < (int)subgroups::maxSupportedSubgroupSize(); i++)
                {
                        bdy << "  {\n"
-                       << "    const uint id = "<< i << ";\n"
+                       << "    const uint id = "<< i << "u;\n"
                        << "    " << subgroups::getFormatNameForGLSL(caseDef.format)
                        << " op = subgroupBroadcast(data1[gl_SubgroupInvocationID], id);\n"
                        << "    if ((id < gl_SubgroupSize) && subgroupBallotBitExtract(mask, id))\n"
                        << "    {\n"
                        << "      if (op != data1[id])\n"
                        << "      {\n"
-                       << "        tempResult = 0;\n"
+                       << "        tempResult = 0u;\n"
                        << "      }\n"
                        << "    }\n"
                        << "  }\n";
@@ -107,8 +107,8 @@ std::string getBodySource(CaseDefinition caseDef)
        }
        else
        {
-               bdy     << "  uint firstActive = 0;\n"
-                       << "  for (uint i = 0; i < gl_SubgroupSize; i++)\n"
+               bdy     << "  uint firstActive = 0u;\n"
+                       << "  for (uint i = 0u; i < gl_SubgroupSize; i++)\n"
                        << "  {\n"
                        << "    if (subgroupBallotBitExtract(mask, i))\n"
                        << "    {\n"
@@ -116,11 +116,11 @@ std::string getBodySource(CaseDefinition caseDef)
                        << "      break;\n"
                        << "    }\n"
                        << "  }\n"
-                       << "  tempResult |= (subgroupBroadcastFirst(data1[gl_SubgroupInvocationID]) == data1[firstActive]) ? 0x1 : 0;\n"
+                       << "  tempResult |= (subgroupBroadcastFirst(data1[gl_SubgroupInvocationID]) == data1[firstActive]) ? 0x1u : 0u;\n"
                        << "  // make the firstActive invocation inactive now\n"
                        << "  if (firstActive == gl_SubgroupInvocationID)\n"
                        << "  {\n"
-                       << "    for (uint i = 0; i < gl_SubgroupSize; i++)\n"
+                       << "    for (uint i = 0u; i < gl_SubgroupSize; i++)\n"
                        << "    {\n"
                        << "      if (subgroupBallotBitExtract(mask, i))\n"
                        << "      {\n"
@@ -128,12 +128,12 @@ std::string getBodySource(CaseDefinition caseDef)
                        << "        break;\n"
                        << "      }\n"
                        << "    }\n"
-                       << "    tempResult |= (subgroupBroadcastFirst(data1[gl_SubgroupInvocationID]) == data1[firstActive]) ? 0x2 : 0;\n"
+                       << "    tempResult |= (subgroupBroadcastFirst(data1[gl_SubgroupInvocationID]) == data1[firstActive]) ? 0x2u : 0u;\n"
                        << "  }\n"
                        << "  else\n"
                        << "  {\n"
                        << "    // the firstActive invocation didn't partake in the second result so set it to true\n"
-                       << "    tempResult |= 0x2;\n"
+                       << "    tempResult |= 0x2u;\n"
                        << "  }\n";
        }
    return bdy.str();
@@ -151,7 +151,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
        if (SHADER_STAGE_VERTEX_BIT == caseDef.shaderStage)
        {
                std::ostringstream                              vertex;
-               vertex << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n"
+               vertex << "${VERSION_DECL}\n"
                        << "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        << "layout(location = 0) in highp vec4 in_position;\n"
                        << "layout(location = 0) out float out_color;\n"
@@ -173,7 +173,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
        {
                std::ostringstream geometry;
 
-               geometry << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n"
+               geometry << "${VERSION_DECL}\n"
                        << "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        << "layout(points) in;\n"
                        << "layout(points, max_vertices = 1) out;\n"
@@ -198,7 +198,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
        {
                std::ostringstream controlSource;
 
-               controlSource << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n"
+               controlSource << "${VERSION_DECL}\n"
                        << "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        << "layout(vertices = 2) out;\n"
                        << "layout(location = 0) out float out_color[];\n"
@@ -225,7 +225,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
        else if (SHADER_STAGE_TESS_EVALUATION_BIT == caseDef.shaderStage)
        {
                std::ostringstream evaluationSource;
-               evaluationSource << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n"
+               evaluationSource << "${VERSION_DECL}\n"
                        << "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        << "layout(isolines, equal_spacing, ccw ) in;\n"
                        << "layout(location = 0) out float out_color;\n"
@@ -258,7 +258,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
        {
                std::ostringstream src;
 
-               src << "#version 450\n"
+               src << "${VERSION_DECL}\n"
                        << "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        << "layout (${LOCAL_SIZE_X}, ${LOCAL_SIZE_Y}, ${LOCAL_SIZE_Z}) in;\n"
                        << "layout(binding = 0, std430) buffer Buffer0\n"
@@ -285,7 +285,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
        else
        {
                const string vertex =
-                       "#version 450\n"
+                       "${VERSION_DECL}\n"
                        "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        "layout(binding = 0, std430) buffer Buffer0\n"
                        "{\n"
@@ -307,7 +307,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                        "}\n";
 
                const string tesc =
-                       "#version 450\n"
+                       "${VERSION_DECL}\n"
                        "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        "layout(vertices=1) out;\n"
                        "layout(binding = 1, std430) buffer Buffer1\n"
@@ -332,7 +332,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                        "}\n";
 
                const string tese =
-                       "#version 450\n"
+                       "${VERSION_DECL}\n"
                        "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        "layout(isolines) in;\n"
                        "layout(binding = 2, std430) buffer Buffer2\n"
@@ -347,13 +347,13 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                        "void main (void)\n"
                        "{\n"
                        + bdyStr +
-                       "  b2.result[gl_PrimitiveID * 2 + uint(gl_TessCoord.x + 0.5)] = tempResult;\n"
+                       "  b2.result[gl_PrimitiveID * 2 + int(gl_TessCoord.x + 0.5)] = tempResult;\n"
                        "  float pixelSize = 2.0f/1024.0f;\n"
                        "  gl_Position = gl_in[0].gl_Position + gl_TessCoord.x * pixelSize / 2.0f;\n"
                        "}\n";
 
                const string geometry =
-                       "#version 450\n"
+                       //version string added by addGeometryShadersFromTemplate
                        "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        "layout(${TOPOLOGY}) in;\n"
                        "layout(points, max_vertices = 1) out;\n"
@@ -376,8 +376,9 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                        "}\n";
 
                const string fragment =
-                       "#version 450\n"
+                       "${VERSION_DECL}\n"
                        "#extension GL_KHR_shader_subgroup_ballot: enable\n"
+                       "precision highp float;\n"
                        "layout(location = 0) out uint result;\n"
                        "layout(binding = 4, std430) readonly buffer Buffer4\n"
                        "{\n"
index d354fdb..cd74fce 100755 (executable)
@@ -99,17 +99,17 @@ std::string getBodySource(CaseDefinition caseDef)
 
        bdy << "  uvec4 allOnes = uvec4(0xFFFFFFFF);\n"
                << "  uvec4 allZeros = uvec4(0);\n"
-               << "  uint tempResult = 0;\n"
+               << "  uint tempResult = 0u;\n"
                << "#define MAKE_HIGH_BALLOT_RESULT(i) uvec4("
-               << "i >= 32 ? 0 : (0xFFFFFFFF << i), "
-               << "i >= 64 ? 0 : (0xFFFFFFFF << ((i < 32) ? 0 : (i - 32))), "
-               << "i >= 96 ? 0 : (0xFFFFFFFF << ((i < 64) ? 0 : (i - 64))), "
-               << " 0xFFFFFFFF << ((i < 96) ? 0 : (i - 96)))\n"
+               << "i >= 32u ? 0u : (0xFFFFFFFFu << i), "
+               << "i >= 64u ? 0u : (0xFFFFFFFFu << ((i < 32u) ? 0u : (i - 32u))), "
+               << "i >= 96u ? 0u : (0xFFFFFFFFu << ((i < 64u) ? 0u : (i - 64u))), "
+               << " 0xFFFFFFFFu << ((i < 96u) ? 0u : (i - 96u)))\n"
                << "#define MAKE_SINGLE_BIT_BALLOT_RESULT(i) uvec4("
-               << "i >= 32 ? 0 : 0x1 << i, "
-               << "i < 32 || i >= 64 ? 0 : 0x1 << (i - 32), "
-               << "i < 64 || i >= 96 ? 0 : 0x1 << (i - 64), "
-               << "i < 96 ? 0 : 0x1 << (i - 96))\n";
+               << "i >= 32u ? 0u : 0x1u << i, "
+               << "i < 32u || i >= 64u ? 0u : 0x1u << (i - 32u), "
+               << "i < 64u || i >= 96u ? 0u : 0x1u << (i - 64u), "
+               << "i < 96u ? 0u : 0x1u << (i - 96u))\n";
 
        switch (caseDef.opType)
        {
@@ -117,39 +117,39 @@ std::string getBodySource(CaseDefinition caseDef)
                        DE_FATAL("Unknown op type!");
                        break;
                case OPTYPE_INVERSE_BALLOT:
-                       bdy << "  tempResult |= subgroupInverseBallot(allOnes) ? 0x1 : 0;\n"
-                               << "  tempResult |= subgroupInverseBallot(allZeros) ? 0 : 0x2;\n"
-                               << "  tempResult |= subgroupInverseBallot(subgroupBallot(true)) ? 0x4 : 0;\n"
-                               << "  tempResult |= 0x8;\n";
+                       bdy << "  tempResult |= subgroupInverseBallot(allOnes) ? 0x1u : 0u;\n"
+                               << "  tempResult |= subgroupInverseBallot(allZeros) ? 0u : 0x2u;\n"
+                               << "  tempResult |= subgroupInverseBallot(subgroupBallot(true)) ? 0x4u : 0u;\n"
+                               << "  tempResult |= 0x8u;\n";
                        break;
                case OPTYPE_BALLOT_BIT_EXTRACT:
-                       bdy << "  tempResult |= subgroupBallotBitExtract(allOnes, gl_SubgroupInvocationID) ? 0x1 : 0;\n"
-                               << "  tempResult |= subgroupBallotBitExtract(allZeros, gl_SubgroupInvocationID) ? 0 : 0x2;\n"
-                               << "  tempResult |= subgroupBallotBitExtract(subgroupBallot(true), gl_SubgroupInvocationID) ? 0x4 : 0;\n"
-                               << "  tempResult |= 0x8;\n"
-                               << "  for (uint i = 0; i < gl_SubgroupSize; i++)\n"
+                       bdy << "  tempResult |= subgroupBallotBitExtract(allOnes, gl_SubgroupInvocationID) ? 0x1u : 0u;\n"
+                               << "  tempResult |= subgroupBallotBitExtract(allZeros, gl_SubgroupInvocationID) ? 0u : 0x2u;\n"
+                               << "  tempResult |= subgroupBallotBitExtract(subgroupBallot(true), gl_SubgroupInvocationID) ? 0x4u : 0u;\n"
+                               << "  tempResult |= 0x8u;\n"
+                               << "  for (uint i = 0u; i < gl_SubgroupSize; i++)\n"
                                << "  {\n"
                                << "    if (!subgroupBallotBitExtract(allOnes, gl_SubgroupInvocationID))\n"
                                << "    {\n"
-                               << "      tempResult &= ~0x8;\n"
+                               << "      tempResult &= ~0x8u;\n"
                                << "    }\n"
                                << "  }\n";
                        break;
                case OPTYPE_BALLOT_BIT_COUNT:
-                       bdy << "  tempResult |= gl_SubgroupSize == subgroupBallotBitCount(allOnes) ? 0x1 : 0;\n"
-                               << "  tempResult |= 0 == subgroupBallotBitCount(allZeros) ? 0x2 : 0;\n"
-                               << "  tempResult |= 0 < subgroupBallotBitCount(subgroupBallot(true)) ? 0x4 : 0;\n"
-                               << "  tempResult |= 0 == subgroupBallotBitCount(MAKE_HIGH_BALLOT_RESULT(gl_SubgroupSize)) ? 0x8 : 0;\n";
+                       bdy << "  tempResult |= gl_SubgroupSize == subgroupBallotBitCount(allOnes) ? 0x1u : 0u;\n"
+                               << "  tempResult |= 0u == subgroupBallotBitCount(allZeros) ? 0x2u : 0u;\n"
+                               << "  tempResult |= 0u < subgroupBallotBitCount(subgroupBallot(true)) ? 0x4u : 0u;\n"
+                               << "  tempResult |= 0u == subgroupBallotBitCount(MAKE_HIGH_BALLOT_RESULT(gl_SubgroupSize)) ? 0x8u : 0u;\n";
                        break;
                case OPTYPE_BALLOT_INCLUSIVE_BIT_COUNT:
-                       bdy << "  uint inclusiveOffset = gl_SubgroupInvocationID + 1;\n"
-                               << "  tempResult |= inclusiveOffset == subgroupBallotInclusiveBitCount(allOnes) ? 0x1 : 0;\n"
-                               << "  tempResult |= 0 == subgroupBallotInclusiveBitCount(allZeros) ? 0x2 : 0;\n"
-                               << "  tempResult |= 0 < subgroupBallotInclusiveBitCount(subgroupBallot(true)) ? 0x4 : 0;\n"
-                               << "  tempResult |= 0x8;\n"
+                       bdy << "  uint inclusiveOffset = gl_SubgroupInvocationID + 1u;\n"
+                               << "  tempResult |= inclusiveOffset == subgroupBallotInclusiveBitCount(allOnes) ? 0x1u : 0u;\n"
+                               << "  tempResult |= 0u == subgroupBallotInclusiveBitCount(allZeros) ? 0x2u : 0u;\n"
+                               << "  tempResult |= 0u < subgroupBallotInclusiveBitCount(subgroupBallot(true)) ? 0x4u : 0u;\n"
+                               << "  tempResult |= 0x8u;\n"
                                << "  uvec4 inclusiveUndef = MAKE_HIGH_BALLOT_RESULT(inclusiveOffset);\n"
                                << "  bool undefTerritory = false;\n"
-                               << "  for (uint i = 0; i <= 128; i++)\n"
+                               << "  for (uint i = 0u; i <= 128u; i++)\n"
                                << "  {\n"
                                << "    uvec4 iUndef = MAKE_HIGH_BALLOT_RESULT(i);\n"
                                << "    if (iUndef == inclusiveUndef)"
@@ -157,25 +157,25 @@ std::string getBodySource(CaseDefinition caseDef)
                                << "      undefTerritory = true;\n"
                                << "    }\n"
                                << "    uint inclusiveBitCount = subgroupBallotInclusiveBitCount(iUndef);\n"
-                               << "    if (undefTerritory && (0 != inclusiveBitCount))\n"
+                               << "    if (undefTerritory && (0u != inclusiveBitCount))\n"
                                << "    {\n"
-                               << "      tempResult &= ~0x8;\n"
+                               << "      tempResult &= ~0x8u;\n"
                                << "    }\n"
-                               << "    else if (!undefTerritory && (0 == inclusiveBitCount))\n"
+                               << "    else if (!undefTerritory && (0u == inclusiveBitCount))\n"
                                << "    {\n"
-                               << "      tempResult &= ~0x8;\n"
+                               << "      tempResult &= ~0x8u;\n"
                                << "    }\n"
                                << "  }\n";
                        break;
                case OPTYPE_BALLOT_EXCLUSIVE_BIT_COUNT:
                        bdy << "  uint exclusiveOffset = gl_SubgroupInvocationID;\n"
-                               << "  tempResult |= exclusiveOffset == subgroupBallotExclusiveBitCount(allOnes) ? 0x1 : 0;\n"
-                               << "  tempResult |= 0 == subgroupBallotExclusiveBitCount(allZeros) ? 0x2 : 0;\n"
-                               << "  tempResult |= 0x4;\n"
-                               << "  tempResult |= 0x8;\n"
+                               << "  tempResult |= exclusiveOffset == subgroupBallotExclusiveBitCount(allOnes) ? 0x1u : 0u;\n"
+                               << "  tempResult |= 0u == subgroupBallotExclusiveBitCount(allZeros) ? 0x2u : 0u;\n"
+                               << "  tempResult |= 0x4u;\n"
+                               << "  tempResult |= 0x8u;\n"
                                << "  uvec4 exclusiveUndef = MAKE_HIGH_BALLOT_RESULT(exclusiveOffset);\n"
                                << "  bool undefTerritory = false;\n"
-                               << "  for (uint i = 0; i <= 128; i++)\n"
+                               << "  for (uint i = 0u; i <= 128u; i++)\n"
                                << "  {\n"
                                << "    uvec4 iUndef = MAKE_HIGH_BALLOT_RESULT(i);\n"
                                << "    if (iUndef == exclusiveUndef)"
@@ -183,53 +183,53 @@ std::string getBodySource(CaseDefinition caseDef)
                                << "      undefTerritory = true;\n"
                                << "    }\n"
                                << "    uint exclusiveBitCount = subgroupBallotExclusiveBitCount(iUndef);\n"
-                               << "    if (undefTerritory && (0 != exclusiveBitCount))\n"
+                               << "    if (undefTerritory && (0u != exclusiveBitCount))\n"
                                << "    {\n"
-                               << "      tempResult &= ~0x4;\n"
+                               << "      tempResult &= ~0x4u;\n"
                                << "    }\n"
-                               << "    else if (!undefTerritory && (0 == exclusiveBitCount))\n"
+                               << "    else if (!undefTerritory && (0u == exclusiveBitCount))\n"
                                << "    {\n"
-                               << "      tempResult &= ~0x8;\n"
+                               << "      tempResult &= ~0x8u;\n"
                                << "    }\n"
                                << "  }\n";
                        break;
                case OPTYPE_BALLOT_FIND_LSB:
-                       bdy << "  tempResult |= 0 == subgroupBallotFindLSB(allOnes) ? 0x1 : 0;\n"
+                       bdy << "  tempResult |= 0u == subgroupBallotFindLSB(allOnes) ? 0x1u : 0u;\n"
                                << "  if (subgroupElect())\n"
                                << "  {\n"
-                               << "    tempResult |= 0x2;\n"
+                               << "    tempResult |= 0x2u;\n"
                                << "  }\n"
                                << "  else\n"
                                << "  {\n"
-                               << "    tempResult |= 0 < subgroupBallotFindLSB(subgroupBallot(true)) ? 0x2 : 0;\n"
+                               << "    tempResult |= 0u < subgroupBallotFindLSB(subgroupBallot(true)) ? 0x2u : 0u;\n"
                                << "  }\n"
-                               << "  tempResult |= gl_SubgroupSize > subgroupBallotFindLSB(subgroupBallot(true)) ? 0x4 : 0;\n"
-                               << "  tempResult |= 0x8;\n"
-                               << "  for (uint i = 0; i < gl_SubgroupSize; i++)\n"
+                               << "  tempResult |= gl_SubgroupSize > subgroupBallotFindLSB(subgroupBallot(true)) ? 0x4u : 0u;\n"
+                               << "  tempResult |= 0x8u;\n"
+                               << "  for (uint i = 0u; i < gl_SubgroupSize; i++)\n"
                                << "  {\n"
                                << "    if (i != subgroupBallotFindLSB(MAKE_HIGH_BALLOT_RESULT(i)))\n"
                                << "    {\n"
-                               << "      tempResult &= ~0x8;\n"
+                               << "      tempResult &= ~0x8u;\n"
                                << "    }\n"
                                << "  }\n";
                        break;
                case OPTYPE_BALLOT_FIND_MSB:
-                       bdy << "  tempResult |= (gl_SubgroupSize - 1) == subgroupBallotFindMSB(allOnes) ? 0x1 : 0;\n"
+                       bdy << "  tempResult |= (gl_SubgroupSize - 1u) == subgroupBallotFindMSB(allOnes) ? 0x1u : 0u;\n"
                                << "  if (subgroupElect())\n"
                                << "  {\n"
-                               << "    tempResult |= 0x2;\n"
+                               << "    tempResult |= 0x2u;\n"
                                << "  }\n"
                                << "  else\n"
                                << "  {\n"
-                               << "    tempResult |= 0 < subgroupBallotFindMSB(subgroupBallot(true)) ? 0x2 : 0;\n"
+                               << "    tempResult |= 0u < subgroupBallotFindMSB(subgroupBallot(true)) ? 0x2u : 0u;\n"
                                << "  }\n"
-                               << "  tempResult |= gl_SubgroupSize > subgroupBallotFindMSB(subgroupBallot(true)) ? 0x4 : 0;\n"
-                               << "  tempResult |= 0x8;\n"
-                               << "  for (uint i = 0; i < gl_SubgroupSize; i++)\n"
+                               << "  tempResult |= gl_SubgroupSize > subgroupBallotFindMSB(subgroupBallot(true)) ? 0x4u : 0u;\n"
+                               << "  tempResult |= 0x8u;\n"
+                               << "  for (uint i = 0u; i < gl_SubgroupSize; i++)\n"
                                << "  {\n"
                                << "    if (i != subgroupBallotFindMSB(MAKE_SINGLE_BIT_BALLOT_RESULT(i)))\n"
                                << "    {\n"
-                               << "      tempResult &= ~0x8;\n"
+                               << "      tempResult &= ~0x8u;\n"
                                << "    }\n"
                                << "  }\n";
                        break;
@@ -249,7 +249,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
        if (SHADER_STAGE_VERTEX_BIT == caseDef.shaderStage)
        {
                std::ostringstream                              vertex;
-               vertex << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n"
+               vertex << "${VERSION_DECL}\n"
                        << "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        << "layout(location = 0) in highp vec4 in_position;\n"
                        << "layout(location = 0) out float out_color;\n"
@@ -267,7 +267,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
        {
                std::ostringstream geometry;
 
-               geometry << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n"
+               geometry << "${VERSION_DECL}\n"
                        << "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        << "layout(points) in;\n"
                        << "layout(points, max_vertices = 1) out;\n"
@@ -287,7 +287,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
        {
                std::ostringstream controlSource;
 
-               controlSource << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n"
+               controlSource << "${VERSION_DECL}\n"
                        << "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        << "layout(vertices = 2) out;\n"
                        << "layout(location = 0) out float out_color[];\n"
@@ -310,7 +310,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
        else if (SHADER_STAGE_TESS_EVALUATION_BIT == caseDef.shaderStage)
        {
                std::ostringstream evaluationSource;
-               evaluationSource << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n"
+               evaluationSource << "${VERSION_DECL}\n"
                        << "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        << "layout(isolines, equal_spacing, ccw ) in;\n"
                        << "layout(location = 0) out float out_color;\n"
@@ -338,7 +338,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
        {
                std::ostringstream src;
 
-               src << "#version 450\n"
+               src << "${VERSION_DECL}\n"
                        << "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        << "layout (${LOCAL_SIZE_X}, ${LOCAL_SIZE_Y}, ${LOCAL_SIZE_Z}) in;\n"
                        << "layout(binding = 0, std430) buffer Buffer0\n"
@@ -361,7 +361,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
        else
        {
                const string vertex =
-                       "#version 450\n"
+                       "${VERSION_DECL}\n"
                        "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        "layout(binding = 0, std430) buffer Buffer0\n"
                        "{\n"
@@ -379,7 +379,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                        "}\n";
 
                const string tesc =
-                       "#version 450\n"
+                       "${VERSION_DECL}\n"
                        "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        "layout(vertices=1) out;\n"
                        "layout(binding = 1, std430) buffer Buffer1\n"
@@ -400,7 +400,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                        "}\n";
 
                const string tese =
-                       "#version 450\n"
+                       "${VERSION_DECL}\n"
                        "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        "layout(isolines) in;\n"
                        "layout(binding = 2, std430) buffer Buffer2\n"
@@ -411,13 +411,13 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                        "void main (void)\n"
                        "{\n"
                        + bdyStr +
-                       "  b2.result[gl_PrimitiveID * 2 + uint(gl_TessCoord.x + 0.5)] = tempResult;\n"
+                       "  b2.result[gl_PrimitiveID * 2 + int(gl_TessCoord.x + 0.5)] = tempResult;\n"
                        "  float pixelSize = 2.0f/1024.0f;\n"
                        "  gl_Position = gl_in[0].gl_Position + gl_TessCoord.x * pixelSize / 2.0f;\n"
                        "}\n";
 
                const string geometry =
-                       "#version 450\n"
+                       // version string added by addGeometryShadersFromTemplate
                        "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        "layout(${TOPOLOGY}) in;\n"
                        "layout(points, max_vertices = 1) out;\n"
@@ -436,7 +436,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                        "}\n";
 
                const string fragment =
-                       "#version 450\n"
+                       "${VERSION_DECL}\n"
                        "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        "layout(location = 0) out uint result;\n"
                        "void main (void)\n"
index ac52444..8d226c0 100755 (executable)
@@ -69,7 +69,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
        if (SHADER_STAGE_VERTEX_BIT == caseDef.shaderStage)
        {
                const string vertexGLSL =
-                       "#version 450\n"
+                       "${VERSION_DECL}\n"
                        "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        "layout(location = 0) in highp vec4 in_position;\n"
                        "layout(location = 0) out float out_color;\n"
@@ -80,11 +80,11 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
                        "\n"
                        "void main (void)\n"
                        "{\n"
-                       "  uint tempResult = 0;\n"
-                       "  tempResult |= !bool(uvec4(0) == subgroupBallot(true)) ? 0x1 : 0;\n"
-                       "  bool bData = data[gl_SubgroupInvocationID] != 0;\n"
-                       "  tempResult |= !bool(uvec4(0) == subgroupBallot(bData)) ? 0x2 : 0;\n"
-                       "  tempResult |= uvec4(0) == subgroupBallot(false) ? 0x4 : 0;\n"
+                       "  uint tempResult = 0u;\n"
+                       "  tempResult |= !bool(uvec4(0) == subgroupBallot(true)) ? 0x1u : 0u;\n"
+                       "  bool bData = data[gl_SubgroupInvocationID] != 0u;\n"
+                       "  tempResult |= !bool(uvec4(0) == subgroupBallot(bData)) ? 0x2u : 0u;\n"
+                       "  tempResult |= uvec4(0) == subgroupBallot(false) ? 0x4u : 0u;\n"
                        "  out_color = float(tempResult);\n"
                        "  gl_Position = in_position;\n"
                        "  gl_PointSize = 1.0f;\n"
@@ -94,7 +94,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
        else if (SHADER_STAGE_GEOMETRY_BIT == caseDef.shaderStage)
        {
                const string geometryGLSL =
-                       "#version 450\n"
+                       "${VERSION_DECL}\n"
                        "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        "layout(points) in;\n"
                        "layout(points, max_vertices = 1) out;\n"
@@ -106,11 +106,11 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
                        "\n"
                        "void main (void)\n"
                        "{\n"
-                       "  uint tempResult = 0;\n"
-                       "  tempResult |= !bool(uvec4(0) == subgroupBallot(true)) ? 0x1 : 0;\n"
-                       "  bool bData = data[gl_SubgroupInvocationID] != 0;\n"
-                       "  tempResult |= !bool(uvec4(0) == subgroupBallot(bData)) ? 0x2 : 0;\n"
-                       "  tempResult |= uvec4(0) == subgroupBallot(false) ? 0x4 : 0;\n"
+                       "  uint tempResult = 0u;\n"
+                       "  tempResult |= !bool(uvec4(0) == subgroupBallot(true)) ? 0x1u : 0u;\n"
+                       "  bool bData = data[gl_SubgroupInvocationID] != 0u;\n"
+                       "  tempResult |= !bool(uvec4(0) == subgroupBallot(bData)) ? 0x2u : 0u;\n"
+                       "  tempResult |= uvec4(0) == subgroupBallot(false) ? 0x4u : 0u;\n"
                        "  out_color = float(tempResult);\n"
                        "  gl_Position = gl_in[0].gl_Position;\n"
                        "  EmitVertex();\n"
@@ -121,7 +121,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
        else if (SHADER_STAGE_TESS_CONTROL_BIT == caseDef.shaderStage)
        {
                const string controlSourceGLSL =
-                       "#version 450\n"
+                       "${VERSION_DECL}\n"
                        "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        "layout(vertices = 2) out;\n"
                        "layout(location = 0) out float out_color[];\n"
@@ -137,11 +137,11 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
                        "    gl_TessLevelOuter[0] = 1.0f;\n"
                        "    gl_TessLevelOuter[1] = 1.0f;\n"
                        "  }\n"
-                       "  uint tempResult = 0;\n"
-                       "  tempResult |= !bool(uvec4(0) == subgroupBallot(true)) ? 0x1 : 0;\n"
-                       "  bool bData = data[gl_SubgroupInvocationID] != 0;\n"
-                       "  tempResult |= !bool(uvec4(0) == subgroupBallot(bData)) ? 0x2 : 0;\n"
-                       "  tempResult |= uvec4(0) == subgroupBallot(false) ? 0x4 : 0;\n"
+                       "  uint tempResult = 0u;\n"
+                       "  tempResult |= !bool(uvec4(0) == subgroupBallot(true)) ? 0x1u : 0u;\n"
+                       "  bool bData = data[gl_SubgroupInvocationID] != 0u;\n"
+                       "  tempResult |= !bool(uvec4(0) == subgroupBallot(bData)) ? 0x2u : 0u;\n"
+                       "  tempResult |= uvec4(0) == subgroupBallot(false) ? 0x4u : 0u;\n"
                        "  out_color[gl_InvocationID] = float(tempResult);\n"
                        "  gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position;\n"
                        "}\n";
@@ -152,7 +152,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
        else if (SHADER_STAGE_TESS_EVALUATION_BIT == caseDef.shaderStage)
        {
                const string evaluationSourceGLSL =
-                       "#version 450\n"
+                       "${VERSION_DECL}\n"
                        "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        "layout(isolines, equal_spacing, ccw ) in;\n"
                        "layout(location = 0) out float out_color;\n"
@@ -163,11 +163,11 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
                        "\n"
                        "void main (void)\n"
                        "{\n"
-                       "  uint tempResult = 0;\n"
-                       "  tempResult |= !bool(uvec4(0) == subgroupBallot(true)) ? 0x1 : 0;\n"
-                       "  bool bData = data[gl_SubgroupInvocationID] != 0;\n"
-                       "  tempResult |= !bool(uvec4(0) == subgroupBallot(bData)) ? 0x2 : 0;\n"
-                       "  tempResult |= uvec4(0) == subgroupBallot(false) ? 0x4 : 0;\n"
+                       "  uint tempResult = 0u;\n"
+                       "  tempResult |= !bool(uvec4(0) == subgroupBallot(true)) ? 0x1u : 0u;\n"
+                       "  bool bData = data[gl_SubgroupInvocationID] != 0u;\n"
+                       "  tempResult |= !bool(uvec4(0) == subgroupBallot(bData)) ? 0x2u : 0u;\n"
+                       "  tempResult |= uvec4(0) == subgroupBallot(false) ? 0x4u : 0u;\n"
                        "  out_color = float(tempResult);\n"
                        "  gl_Position = mix(gl_in[0].gl_Position, gl_in[1].gl_Position, gl_TessCoord.x);\n"
                        "}\n";
@@ -188,7 +188,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
        {
                std::ostringstream src;
 
-               src << "#version 450\n"
+               src << "${VERSION_DECL}\n"
                        << "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        << "layout (${LOCAL_SIZE_X}, ${LOCAL_SIZE_Y}, ${LOCAL_SIZE_Z}) in;\n"
                        << "layout(binding = 0, std430) buffer Buffer1\n"
@@ -207,11 +207,11 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                        << "  highp uint offset = globalSize.x * ((globalSize.y * "
                        "gl_GlobalInvocationID.z) + gl_GlobalInvocationID.y) + "
                        "gl_GlobalInvocationID.x;\n"
-                       << "  uint tempResult = 0;\n"
-                       << "  tempResult |= sharedMemoryBallot(true) == subgroupBallot(true) ? 0x1 : 0;\n"
-                       << "  bool bData = data[gl_SubgroupInvocationID] != 0;\n"
-                       << "  tempResult |= sharedMemoryBallot(bData) == subgroupBallot(bData) ? 0x2 : 0;\n"
-                       << "  tempResult |= uvec4(0) == subgroupBallot(false) ? 0x4 : 0;\n"
+                       << "  uint tempResult = 0u;\n"
+                       << "  tempResult |= sharedMemoryBallot(true) == subgroupBallot(true) ? 0x1u : 0u;\n"
+                       << "  bool bData = data[gl_SubgroupInvocationID] != 0u;\n"
+                       << "  tempResult |= sharedMemoryBallot(bData) == subgroupBallot(bData) ? 0x2u : 0u;\n"
+                       << "  tempResult |= uvec4(0) == subgroupBallot(false) ? 0x4u : 0u;\n"
                        << "  result[offset] = tempResult;\n"
                        << "}\n";
 
@@ -220,7 +220,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
        else
        {
                const string vertex =
-                       "#version 450\n"
+                       "${VERSION_DECL}\n"
                        "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        "layout(binding = 0, std430) buffer Buffer0\n"
                        "{\n"
@@ -233,11 +233,11 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                        "\n"
                        "void main (void)\n"
                        "{\n"
-                       "  uint tempResult = 0;\n"
-                       "  tempResult |= !bool(uvec4(0) == subgroupBallot(true)) ? 0x1 : 0;\n"
-                       "  bool bData = data[gl_SubgroupInvocationID] != 0;\n"
-                       "  tempResult |= !bool(uvec4(0) == subgroupBallot(bData)) ? 0x2 : 0;\n"
-                       "  tempResult |= uvec4(0) == subgroupBallot(false) ? 0x4 : 0;\n"
+                       "  uint tempResult = 0u;\n"
+                       "  tempResult |= !bool(uvec4(0) == subgroupBallot(true)) ? 0x1u : 0u;\n"
+                       "  bool bData = data[gl_SubgroupInvocationID] != 0u;\n"
+                       "  tempResult |= !bool(uvec4(0) == subgroupBallot(bData)) ? 0x2u : 0u;\n"
+                       "  tempResult |= uvec4(0) == subgroupBallot(false) ? 0x4u : 0u;\n"
                        "  b0.result[gl_VertexID] = tempResult;\n"
                        "  float pixelSize = 2.0f/1024.0f;\n"
                        "  float pixelPosition = pixelSize/2.0f - 1.0f;\n"
@@ -246,7 +246,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                        "}\n";
 
                const string tesc =
-                       "#version 450\n"
+                       "${VERSION_DECL}\n"
                        "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        "layout(vertices=1) out;\n"
                        "layout(binding = 1, std430) buffer Buffer1\n"
@@ -260,11 +260,11 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                        "\n"
                        "void main (void)\n"
                        "{\n"
-                       "  uint tempResult = 0;\n"
-                       "  tempResult |= !bool(uvec4(0) == subgroupBallot(true)) ? 0x1 : 0;\n"
-                       "  bool bData = data[gl_SubgroupInvocationID] != 0;\n"
-                       "  tempResult |= !bool(uvec4(0) == subgroupBallot(bData)) ? 0x2 : 0;\n"
-                       "  tempResult |= uvec4(0) == subgroupBallot(false) ? 0x4 : 0;\n"
+                       "  uint tempResult = 0u;\n"
+                       "  tempResult |= !bool(uvec4(0) == subgroupBallot(true)) ? 0x1u : 0u;\n"
+                       "  bool bData = data[gl_SubgroupInvocationID] != 0u;\n"
+                       "  tempResult |= !bool(uvec4(0) == subgroupBallot(bData)) ? 0x2u : 0u;\n"
+                       "  tempResult |= uvec4(0) == subgroupBallot(false) ? 0x4u : 0u;\n"
                        "  b1.result[gl_PrimitiveID] = tempResult;\n"
                        "  if (gl_InvocationID == 0)\n"
                        "  {\n"
@@ -275,7 +275,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                        "}\n";
 
                const string tese =
-                       "#version 450\n"
+                       "${VERSION_DECL}\n"
                        "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        "layout(isolines) in;\n"
                        "layout(binding = 2, std430) buffer Buffer2\n"
@@ -289,18 +289,18 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                        "\n"
                        "void main (void)\n"
                        "{\n"
-                       "  uint tempResult = 0;\n"
-                       "  tempResult |= !bool(uvec4(0) == subgroupBallot(true)) ? 0x1 : 0;\n"
-                       "  bool bData = data[gl_SubgroupInvocationID] != 0;\n"
-                       "  tempResult |= !bool(uvec4(0) == subgroupBallot(bData)) ? 0x2 : 0;\n"
-                       "  tempResult |= uvec4(0) == subgroupBallot(false) ? 0x4 : 0;\n"
-                       "  b2.result[gl_PrimitiveID * 2 + uint(gl_TessCoord.x + 0.5)] = tempResult;\n"
+                       "  uint tempResult = 0u;\n"
+                       "  tempResult |= !bool(uvec4(0) == subgroupBallot(true)) ? 0x1u : 0u;\n"
+                       "  bool bData = data[gl_SubgroupInvocationID] != 0u;\n"
+                       "  tempResult |= !bool(uvec4(0) == subgroupBallot(bData)) ? 0x2u : 0u;\n"
+                       "  tempResult |= uvec4(0) == subgroupBallot(false) ? 0x4u : 0u;\n"
+                       "  b2.result[gl_PrimitiveID * 2 + int(gl_TessCoord.x + 0.5)] = tempResult;\n"
                        "  float pixelSize = 2.0f/1024.0f;\n"
                        "  gl_Position = gl_in[0].gl_Position + gl_TessCoord.x * pixelSize / 2.0f;\n"
                        "}\n";
 
                const string geometry =
-                       "#version 450\n"
+                       // version string added by addGeometryShadersFromTemplate
                        "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        "layout(${TOPOLOGY}) in;\n"
                        "layout(points, max_vertices = 1) out;\n"
@@ -315,11 +315,11 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                        "\n"
                        "void main (void)\n"
                        "{\n"
-                       "  uint tempResult = 0;\n"
-                       "  tempResult |= !bool(uvec4(0) == subgroupBallot(true)) ? 0x1 : 0;\n"
-                       "  bool bData = data[gl_SubgroupInvocationID] != 0;\n"
-                       "  tempResult |= !bool(uvec4(0) == subgroupBallot(bData)) ? 0x2 : 0;\n"
-                       "  tempResult |= uvec4(0) == subgroupBallot(false) ? 0x4 : 0;\n"
+                       "  uint tempResult = 0u;\n"
+                       "  tempResult |= !bool(uvec4(0) == subgroupBallot(true)) ? 0x1u : 0u;\n"
+                       "  bool bData = data[gl_SubgroupInvocationID] != 0u;\n"
+                       "  tempResult |= !bool(uvec4(0) == subgroupBallot(bData)) ? 0x2u : 0u;\n"
+                       "  tempResult |= uvec4(0) == subgroupBallot(false) ? 0x4u : 0u;\n"
                        "  b3.result[gl_PrimitiveIDIn] = tempResult;\n"
                        "  gl_Position = gl_in[0].gl_Position;\n"
                        "  EmitVertex();\n"
@@ -327,7 +327,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                        "}\n";
 
                const string fragment =
-                       "#version 450\n"
+                       "${VERSION_DECL}\n"
                        "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        "layout(location = 0) out uint result;\n"
                        "layout(binding = 4, std430) readonly buffer Buffer4\n"
@@ -336,11 +336,11 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                        "};\n"
                        "void main (void)\n"
                        "{\n"
-                       "  uint tempResult = 0;\n"
-                       "  tempResult |= !bool(uvec4(0) == subgroupBallot(true)) ? 0x1 : 0;\n"
-                       "  bool bData = data[gl_SubgroupInvocationID] != 0;\n"
-                       "  tempResult |= !bool(uvec4(0) == subgroupBallot(bData)) ? 0x2 : 0;\n"
-                       "  tempResult |= uvec4(0) == subgroupBallot(false) ? 0x4 : 0;\n"
+                       "  uint tempResult = 0u;\n"
+                       "  tempResult |= !bool(uvec4(0) == subgroupBallot(true)) ? 0x1u : 0u;\n"
+                       "  bool bData = data[gl_SubgroupInvocationID] != 0u;\n"
+                       "  tempResult |= !bool(uvec4(0) == subgroupBallot(bData)) ? 0x2u : 0u;\n"
+                       "  tempResult |= uvec4(0) == subgroupBallot(false) ? 0x4u : 0u;\n"
                        "  result = tempResult;\n"
                        "}\n";
 
index db64e48..7b0c4b7 100755 (executable)
@@ -25,7 +25,6 @@
 
 #include "glcSubgroupsBasicTests.hpp"
 #include "glcSubgroupsTestsUtils.hpp"
-#include "gluContextInfo.hpp"
 
 #include <string>
 #include <vector>
@@ -246,9 +245,9 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
        if(subgroups::SHADER_STAGE_FRAGMENT_BIT != caseDef.shaderStage)
        {
                const string fragmentGLSL =
-                       "#version 450\n"
-                       "layout(location = 0) in vec4 in_color;\n"
-                       "layout(location = 0) out vec4 out_color;\n"
+                       "${VERSION_DECL}\n"
+                       "layout(location = 0) in highp vec4 in_color;\n"
+                       "layout(location = 0) out highp vec4 out_color;\n"
                        "void main()\n"
                        "{\n"
                        "       out_color = in_color;\n"
@@ -259,7 +258,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
        if (subgroups::SHADER_STAGE_FRAGMENT_BIT == caseDef.shaderStage)
        {
                const string vertexGLSL =
-                       "#version 450\n"
+                       "${VERSION_DECL}\n"
                        "void main (void)\n"
                        "{\n"
                        "  vec2 uv = vec2((gl_VertexID << 1) & 2, gl_VertexID & 2);\n"
@@ -282,7 +281,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
                if (subgroups::SHADER_STAGE_VERTEX_BIT == caseDef.shaderStage)
                {
                        const string vertexGLSL =
-                               "#version 450\n"
+                               "${VERSION_DECL}\n"
                                "#extension GL_KHR_shader_subgroup_basic: enable\n"
                                "layout(location = 0) out vec4 out_color;\n"
                                "layout(location = 0) in highp vec4 in_position;\n"
@@ -291,12 +290,12 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
                                "{\n"
                                "  if (subgroupElect())\n"
                                "  {\n"
-                               "    out_color.r = " + electedValue.str() + ";\n"
+                               "    out_color.r = " + electedValue.str() + ".0f;\n"
                                "    out_color.g = 1.0f;\n"
                                "  }\n"
                                "  else\n"
                                "  {\n"
-                               "    out_color.r = " + unelectedValue.str() + ";\n"
+                               "    out_color.r = " + unelectedValue.str() + ".0f;\n"
                                "    out_color.g = 0.0f;\n"
                                "  }\n"
                                "  gl_Position = in_position;\n"
@@ -308,7 +307,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
                else if (subgroups::SHADER_STAGE_GEOMETRY_BIT == caseDef.shaderStage)
                {
                        const string geometryGLSL =
-                               "#version 450\n"
+                               "${VERSION_DECL}\n"
                                "#extension GL_KHR_shader_subgroup_basic: enable\n"
                                "layout(points) in;\n"
                                "layout(points, max_vertices = 1) out;\n"
@@ -317,12 +316,12 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
                                "{\n"
                                "  if (subgroupElect())\n"
                                "  {\n"
-                               "    out_color.r = " + electedValue.str() + ";\n"
+                               "    out_color.r = " + electedValue.str() + ".0f;\n"
                                "    out_color.g = 1.0f;\n"
                                "  }\n"
                                "  else\n"
                                "  {\n"
-                               "    out_color.r = " + unelectedValue.str() + ";\n"
+                               "    out_color.r = " + unelectedValue.str() + ".0f;\n"
                                "    out_color.g = 0.0f;\n"
                                "  }\n"
                                "  gl_Position = gl_in[0].gl_Position;\n"
@@ -335,7 +334,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
                else if (subgroups::SHADER_STAGE_TESS_EVALUATION_BIT == caseDef.shaderStage)
                {
                        const string controlSourceGLSL =
-                               "#version 450\n"
+                               "${VERSION_DECL}\n"
                                "#extension GL_KHR_shader_subgroup_basic: enable\n"
                                "#extension GL_EXT_tessellation_shader : require\n"
                                "layout(vertices = 2) out;\n"
@@ -352,7 +351,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
                        programCollection.add("tesc") << glu::TessellationControlSource(controlSourceGLSL);
 
                        const string evaluationSourceGLSL =
-                               "#version 450\n"
+                               "${VERSION_DECL}\n"
                                "#extension GL_KHR_shader_subgroup_basic: enable\n"
                                "#extension GL_EXT_tessellation_shader : require\n"
                                "layout(isolines, equal_spacing, ccw ) in;\n"
@@ -367,7 +366,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
                                "  }\n"
                                "  else\n"
                                "  {\n"
-                               "    out_color.r = " + unelectedValue.str() + ";\n"
+                               "    out_color.r = " + unelectedValue.str() + ".0f;\n"
                                "    out_color.g = 0.0f;\n"
                                "  }\n"
                                "  gl_Position = mix(gl_in[0].gl_Position, gl_in[1].gl_Position, gl_TessCoord.x);\n"
@@ -378,7 +377,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
                else if (subgroups::SHADER_STAGE_TESS_CONTROL_BIT == caseDef.shaderStage)
                {
                        const string  controlSourceGLSL =
-                               "#version 450\n"
+                               "${VERSION_DECL}\n"
                                "#extension GL_KHR_shader_subgroup_basic: enable\n"
                                "#extension GL_EXT_tessellation_shader : require\n"
                                "layout(vertices = 2) out;\n"
@@ -392,12 +391,12 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
                                "  }\n"
                                "  if (subgroupElect())\n"
                                "  {\n"
-                               "    out_color[gl_InvocationID].r = " + electedValue.str() + ";\n"
+                               "    out_color[gl_InvocationID].r = " + electedValue.str() + ".0f;\n"
                                "    out_color[gl_InvocationID].g = 1.0f;\n"
                                "  }\n"
                                "  else\n"
                                "  {\n"
-                               "    out_color[gl_InvocationID].r = " + unelectedValue.str() + ";\n"
+                               "    out_color[gl_InvocationID].r = " + unelectedValue.str() + ".0f;\n"
                                "    out_color[gl_InvocationID].g = 0.0f;\n"
                                "  }\n"
                                "  gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position;\n"
@@ -406,7 +405,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
                        programCollection.add("tesc") << glu::TessellationControlSource(controlSourceGLSL);
 
                        const string evaluationSourceGLSL =
-                               "#version 450\n"
+                               "${VERSION_DECL}\n"
                                "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                                "#extension GL_EXT_tessellation_shader : require\n"
                                "layout(isolines, equal_spacing, ccw ) in;\n"
@@ -471,10 +470,10 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
                if (subgroups::SHADER_STAGE_FRAGMENT_BIT == caseDef.shaderStage)
                {
                        std::ostringstream      fragment;
-                       fragment        << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n"
+                       fragment        << "${VERSION_DECL}\n"
                                << "#extension GL_KHR_shader_subgroup_basic: enable\n"
                                << "#extension GL_KHR_shader_subgroup_ballot: enable\n"
-                               << "layout(location = 0) out vec4 out_color;\n"
+                               << "layout(location = 0) out highp vec4 out_color;\n"
                                << "\n"
                                << "layout(binding = 0) uniform Buffer1\n"
                                << "{\n"
@@ -489,7 +488,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
                                << "void main (void)\n"
                                << "{\n"
                                << "  if (gl_HelperInvocation) return;\n"
-                               << "  uint id = 0;\n"
+                               << "  uint id = 0u;\n"
                                << "  if (subgroupElect())\n"
                                << "  {\n"
                                << "    id = uint(gl_FragCoord.x);\n"
@@ -509,7 +508,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
                else if (subgroups::SHADER_STAGE_VERTEX_BIT == caseDef.shaderStage)
                {
                        std::ostringstream      vertex;
-                       vertex  << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n"
+                       vertex  << "${VERSION_DECL}\n"
                                << "#extension GL_KHR_shader_subgroup_basic: enable\n"
                                << "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                                <<"\n"
@@ -528,10 +527,10 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
                                << (OPTYPE_SUBGROUP_MEMORY_BARRIER_IMAGE == caseDef.opType ? "layout(binding = 0, r32ui) readonly uniform highp uimage2D tempImage;\n" : "\n")
                                << "void main (void)\n"
                                << "{\n"
-                               << "  uint id = 0;\n"
+                               << "  uint id = 0u;\n"
                                << "  if (subgroupElect())\n"
                                << "  {\n"
-                               << "    id = gl_VertexID;\n"
+                               << "    id = uint(gl_VertexID);\n"
                                << "  }\n"
                                << "  id = subgroupBroadcastFirst(id);\n"
                                << "  uint tempResult = 0u;\n"
@@ -550,7 +549,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
                {
                        std::ostringstream geometry;
 
-                       geometry << "#version 450\n"
+                       geometry << "${VERSION_DECL}\n"
                                        << "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                                        << "#extension GL_KHR_shader_subgroup_basic: enable\n"
                                        << "layout(points) in;\n"
@@ -568,10 +567,10 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
                                        << (OPTYPE_SUBGROUP_MEMORY_BARRIER_IMAGE == caseDef.opType ? "layout(binding = 0, r32ui) readonly uniform highp uimage2D tempImage;\n" : "\n")
                                        << "void main (void)\n"
                                        << "{\n"
-                                       << "  uint id = 0;\n"
+                                       << "  uint id = 0u;\n"
                                        << "  if (subgroupElect())\n"
                                        << "  {\n"
-                                       << "    id = gl_InvocationID;\n"
+                                       << "    id = uint(gl_InvocationID);\n"
                                        << "  }\n"
                                        << "  id = subgroupBroadcastFirst(id);\n"
                                        << "  uint tempResult = 0u;\n"
@@ -593,7 +592,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
                        std::ostringstream controlSource;
                        std::ostringstream evaluationSource;
 
-                       controlSource << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n"
+                       controlSource << "${VERSION_DECL}\n"
                                << "#extension GL_EXT_tessellation_shader : require\n"
                                << "layout(vertices = 2) out;\n"
                                << "void main (void)\n"
@@ -606,7 +605,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
                                << "  gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position;\n"
                                << "}\n";
 
-                       evaluationSource << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n"
+                       evaluationSource << "${VERSION_DECL}\n"
                                << "#extension GL_KHR_shader_subgroup_basic: enable\n"
                                << "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                                << "#extension GL_EXT_tessellation_shader : require\n"
@@ -624,10 +623,10 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
                                << (OPTYPE_SUBGROUP_MEMORY_BARRIER_IMAGE == caseDef.opType ? "layout(binding = 0, r32ui) readonly uniform highp uimage2D tempImage;\n" : "\n")
                                << "void main (void)\n"
                                << "{\n"
-                               << "  uint id = 0;\n"
+                               << "  uint id = 0u;\n"
                                << "  if (subgroupElect())\n"
                                << "  {\n"
-                               << "    id = gl_PrimitiveID;\n"
+                               << "    id = uint(gl_PrimitiveID);\n"
                                << "  }\n"
                                << "  id = subgroupBroadcastFirst(id);\n"
                                << "  uint tempResult = 0u;\n"
@@ -648,7 +647,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
                        std::ostringstream controlSource;
                        std::ostringstream evaluationSource;
 
-                       controlSource  << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n"
+                       controlSource  << "${VERSION_DECL}\n"
                                << "#extension GL_KHR_shader_subgroup_basic: enable\n"
                                << "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                                << "#extension GL_EXT_tessellation_shader : require\n"
@@ -666,7 +665,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
                                << (OPTYPE_SUBGROUP_MEMORY_BARRIER_IMAGE == caseDef.opType ? "layout(binding = 0, r32ui) readonly uniform highp uimage2D tempImage;\n" : "\n")
                                << "void main (void)\n"
                                << "{\n"
-                               << "  uint id = 0;\n"
+                               << "  uint id = 0u;\n"
                                << "  if (gl_InvocationID == 0)\n"
                                <<"  {\n"
                                << "    gl_TessLevelOuter[0] = 1.0f;\n"
@@ -674,7 +673,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
                                << "  }\n"
                                << "  if (subgroupElect())\n"
                                << "  {\n"
-                               << "    id = gl_InvocationID;\n"
+                               << "    id = uint(gl_InvocationID);\n"
                                << "  }\n"
                                << "  id = subgroupBroadcastFirst(id);\n"
                                << "  uint tempResult = 0u;\n"
@@ -687,7 +686,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
                                << "  gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position;\n"
                                << "}\n";
 
-                       evaluationSource << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n"
+                       evaluationSource << "${VERSION_DECL}\n"
                                << "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                                << "#extension GL_EXT_tessellation_shader : require\n"
                                << "layout(isolines, equal_spacing, ccw ) in;\n"
@@ -718,7 +717,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                {
                        std::ostringstream src;
 
-                       src << "#version 450\n"
+                       src << "${VERSION_DECL}\n"
                                << "#extension GL_KHR_shader_subgroup_basic: enable\n"
                                << "layout (${LOCAL_SIZE_X}, ${LOCAL_SIZE_Y}, ${LOCAL_SIZE_Z}) in;\n"
                                << "layout(binding = 0, std430) buffer Buffer1\n"
@@ -733,12 +732,12 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                                << "  highp uint offset = globalSize.x * ((globalSize.y * "
                                "gl_GlobalInvocationID.z) + gl_GlobalInvocationID.y) + "
                                "gl_GlobalInvocationID.x;\n"
-                               << "  uint value = " << UNELECTED_VALUE << ";\n"
+                               << "  uint value = " << UNELECTED_VALUE << "u;\n"
                                << "  if (subgroupElect())\n"
                                << "  {\n"
-                               << "    value = " << ELECTED_VALUE << ";\n"
+                               << "    value = " << ELECTED_VALUE << "u;\n"
                                << "  }\n"
-                               << "  uvec4 bits = bitCount(sharedMemoryBallot(value == " << ELECTED_VALUE << "));\n"
+                               << "  uvec4 bits = uvec4(bitCount(sharedMemoryBallot(value == " << ELECTED_VALUE << "u)));\n"
                                << "  result[offset] = bits.x + bits.y + bits.z + bits.w;\n"
                                << "}\n";
 
@@ -748,7 +747,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                {
                        {
                                std::ostringstream  vertex;
-                               vertex  << "#version 450\n"
+                               vertex  << "${VERSION_DECL}\n"
                                                << "#extension GL_KHR_shader_subgroup_basic: enable\n"
                                                << "layout(binding = 0, std430) buffer Buffer0\n"
                                                << "{\n"
@@ -763,12 +762,12 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                                                << "{\n"
                                                << "  if (subgroupElect())\n"
                                                << "  {\n"
-                                               << "    b0.result[gl_VertexID] = " << ELECTED_VALUE << ";\n"
-                                               << "    atomicAdd(b4.numSubgroupsExecuted, 1);\n"
+                                               << "    b0.result[gl_VertexID] = " << ELECTED_VALUE << "u;\n"
+                                               << "    atomicAdd(b4.numSubgroupsExecuted, 1u);\n"
                                                << "  }\n"
                                                << "  else\n"
                                                << "  {\n"
-                                               << "    b0.result[gl_VertexID] = " << UNELECTED_VALUE << ";\n"
+                                               << "    b0.result[gl_VertexID] = " << UNELECTED_VALUE << "u;\n"
                                                << "  }\n"
                                                << "  float pixelSize = 2.0f/1024.0f;\n"
                                                << "  float pixelPosition = pixelSize/2.0f - 1.0f;\n"
@@ -780,7 +779,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
 
                        {
                                std::ostringstream tesc;
-                               tesc    << "#version 450\n"
+                               tesc    << "${VERSION_DECL}\n"
                                                << "#extension GL_KHR_shader_subgroup_basic: enable\n"
                                                << "layout(vertices=1) out;\n"
                                                << "layout(binding = 1, std430) buffer Buffer1\n"
@@ -796,12 +795,12 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                                                << "{\n"
                                                << "  if (subgroupElect())\n"
                                                << "  {\n"
-                                               << "    b1.result[gl_PrimitiveID] = " << ELECTED_VALUE << ";\n"
-                                               << "    atomicAdd(b5.numSubgroupsExecuted, 1);\n"
+                                               << "    b1.result[gl_PrimitiveID] = " << ELECTED_VALUE << "u;\n"
+                                               << "    atomicAdd(b5.numSubgroupsExecuted, 1u);\n"
                                                << "  }\n"
                                                << "  else\n"
                                                << "  {\n"
-                                               << "    b1.result[gl_PrimitiveID] = " << UNELECTED_VALUE << ";\n"
+                                               << "    b1.result[gl_PrimitiveID] = " << UNELECTED_VALUE << "u;\n"
                                                << "  }\n"
                                                << "  if (gl_InvocationID == 0)\n"
                                                << "  {\n"
@@ -815,7 +814,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
 
                        {
                                std::ostringstream tese;
-                               tese    << "#version 450\n"
+                               tese    << "${VERSION_DECL}\n"
                                                << "#extension GL_KHR_shader_subgroup_basic: enable\n"
                                                << "layout(isolines) in;\n"
                                                << "layout(binding = 2, std430) buffer Buffer2\n"
@@ -831,12 +830,12 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                                                << "{\n"
                                                << "  if (subgroupElect())\n"
                                                << "  {\n"
-                                               << "    b2.result[gl_PrimitiveID * 2 + uint(gl_TessCoord.x + 0.5)] = " << ELECTED_VALUE << ";\n"
-                                               << "    atomicAdd(b6.numSubgroupsExecuted, 1);\n"
+                                               << "    b2.result[gl_PrimitiveID * 2 + int(gl_TessCoord.x + 0.5)] = " << ELECTED_VALUE << "u;\n"
+                                               << "    atomicAdd(b6.numSubgroupsExecuted, 1u);\n"
                                                << "  }\n"
                                                << "  else\n"
                                                << "  {\n"
-                                               << "    b2.result[gl_PrimitiveID * 2 + uint(gl_TessCoord.x + 0.5)] = " << UNELECTED_VALUE << ";\n"
+                                               << "    b2.result[gl_PrimitiveID * 2 + int(gl_TessCoord.x + 0.5)] = " << UNELECTED_VALUE << "u;\n"
                                                << "  }\n"
                                                << "  float pixelSize = 2.0f/1024.0f;\n"
                                                << "  gl_Position = gl_in[0].gl_Position + gl_TessCoord.x * pixelSize / 2.0f;\n"
@@ -845,8 +844,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                        }
                        {
                                std::ostringstream geometry;
-                               geometry        << "#version 450\n"
-                                                       << "#extension GL_KHR_shader_subgroup_basic: enable\n"
+                               geometry        << "#extension GL_KHR_shader_subgroup_basic: enable\n"
                                                        << "layout(${TOPOLOGY}) in;\n"
                                                        << "layout(points, max_vertices = 1) out;\n"
                                                        << "layout(binding = 3, std430) buffer Buffer3\n"
@@ -862,12 +860,12 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                                                        << "{\n"
                                                        << "  if (subgroupElect())\n"
                                                        << "  {\n"
-                                                       << "    b3.result[gl_PrimitiveIDIn] = " << ELECTED_VALUE << ";\n"
-                                                       << "    atomicAdd(b7.numSubgroupsExecuted, 1);\n"
+                                                       << "    b3.result[gl_PrimitiveIDIn] = " << ELECTED_VALUE << "u;\n"
+                                                       << "    atomicAdd(b7.numSubgroupsExecuted, 1u);\n"
                                                        << "  }\n"
                                                        << "  else\n"
                                                        << "  {\n"
-                                                       << "    b3.result[gl_PrimitiveIDIn] = " << UNELECTED_VALUE << ";\n"
+                                                       << "    b3.result[gl_PrimitiveIDIn] = " << UNELECTED_VALUE << "u;\n"
                                                        << "  }\n"
                                                        << "  gl_Position = gl_in[0].gl_Position;\n"
                                                        << "  EmitVertex();\n"
@@ -878,7 +876,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
 
                        {
                                std::ostringstream fragment;
-                               fragment        << "#version 450\n"
+                               fragment        << "${VERSION_DECL}\n"
                                                        << "#extension GL_KHR_shader_subgroup_basic: enable\n"
                                                        << "layout(location = 0) out uint data;\n"
                                                        << "layout(binding = 8, std430) buffer Buffer8\n"
@@ -890,12 +888,12 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                                                        << "  if (gl_HelperInvocation) return;\n"
                                                        << "  if (subgroupElect())\n"
                                                        << "  {\n"
-                                                       << "    data = " << ELECTED_VALUE << ";\n"
-                                                       << "    atomicAdd(b8.numSubgroupsExecuted, 1);\n"
+                                                       << "    data = " << ELECTED_VALUE << "u;\n"
+                                                       << "    atomicAdd(b8.numSubgroupsExecuted, 1u);\n"
                                                        << "  }\n"
                                                        << "  else\n"
                                                        << "  {\n"
-                                                       << "    data = " << UNELECTED_VALUE << ";\n"
+                                                       << "    data = " << UNELECTED_VALUE << "u;\n"
                                                        << "  }\n"
                                                        << "}\n";
                                programCollection.add("fragment") << glu::FragmentSource(fragment.str());
@@ -933,7 +931,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                        case OPTYPE_SUBGROUP_MEMORY_BARRIER_IMAGE:
                                bdy << "  if (subgroupElect())\n"
                                        << "  {\n"
-                                       << "    imageStore(tempImage${IMG1}, ivec2(id, 0), ivec4(b${SSBO2}.value));\n"
+                                       << "    imageStore(tempImage${IMG1}, ivec2(id, 0), uvec4(b${SSBO2}.value));\n"
                                        << "  }\n"
                                        << "  subgroupMemoryBarrierImage();\n"
                                        << "  tempResult = imageLoad(tempImage${IMG1}, ivec2(id, 0)).x;\n";
@@ -950,7 +948,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                        bufferNameMapping.insert(pair<string, string>("SSBO2", "2"));
                        bufferNameMapping.insert(pair<string, string>("IMG1", "0"));
 
-                       src << "#version 450\n"
+                       src << "${VERSION_DECL}\n"
                                << "#extension GL_KHR_shader_subgroup_basic: enable\n"
                                << "layout (${LOCAL_SIZE_X}, ${LOCAL_SIZE_Y}, ${LOCAL_SIZE_Z}) in;\n"
                                << "layout(binding = 0, std430) buffer Buffer0\n"
@@ -965,7 +963,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                                << "{\n"
                                << "  uint value;\n"
                                << "} b2;\n"
-                               << "layout(binding = 0, r32ui) uniform uimage2D tempImage0;\n"
+                               << "layout(binding = 0, r32ui) uniform highp uimage2D tempImage0;\n"
                                << "shared uint tempShared[gl_WorkGroupSize.x * gl_WorkGroupSize.y * gl_WorkGroupSize.z];\n"
                                << "\n"
                                << "void main (void)\n"
@@ -978,7 +976,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                                << "  uint id = globalSize.x * ((globalSize.y * "
                                "gl_WorkGroupID.z) + gl_WorkGroupID.y) + "
                                "gl_WorkGroupID.x + localId;\n"
-                               << "  uint tempResult = 0;\n"
+                               << "  uint tempResult = 0u;\n"
                                << bdyTemplate.specialize(bufferNameMapping)
                                << "  b0.result[offset] = tempResult;\n"
                                << "}\n";
@@ -994,7 +992,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                                bufferNameMapping.insert(pair<string, string>("IMG1", "0"));
 
                                const string vertex =
-                                       "#version 450\n"
+                                       "${VERSION_DECL}\n"
                                        "#extension GL_KHR_shader_subgroup_basic: enable\n"
                                        "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                                        "layout(binding = 0, std430) buffer Buffer0\n"
@@ -1013,17 +1011,17 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                                        "{\n"
                                        "  uint value;\n"
                                        "} b6;\n"
-                                       "layout(binding = 0, r32ui) uniform uimage2D tempImage0;\n"
+                                       "layout(binding = 0, r32ui) uniform highp uimage2D tempImage0;\n"
                                        "void main (void)\n"
                                        "{\n"
-                                       "  uint id = 0;\n"
+                                       "  uint id = 0u;\n"
                                        "  if (subgroupElect())\n"
                                        "  {\n"
-                                       "    id = atomicAdd(b5.subgroupID, 1);\n"
+                                       "    id = atomicAdd(b5.subgroupID, 1u);\n"
                                        "  }\n"
                                        "  id = subgroupBroadcastFirst(id);\n"
                                        "  uint localId = id;\n"
-                                       "  uint tempResult = 0;\n"
+                                       "  uint tempResult = 0u;\n"
                                        + bdyTemplate.specialize(bufferNameMapping) +
                                        "  b0.result[gl_VertexID] = tempResult;\n"
                                        "  float pixelSize = 2.0f/1024.0f;\n"
@@ -1041,7 +1039,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                                bufferNameMapping.insert(pair<string, string>("IMG1", "1"));
 
                                const string tesc =
-                                       "#version 450\n"
+                                       "${VERSION_DECL}\n"
                                        "#extension GL_KHR_shader_subgroup_basic: enable\n"
                                        "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                                        "layout(vertices=1) out;\n"
@@ -1061,17 +1059,17 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                                        "{\n"
                                        "  uint value;\n"
                                        "} b9;\n"
-                                       "layout(binding = 1, r32ui) uniform uimage2D tempImage1;\n"
+                                       "layout(binding = 1, r32ui) uniform highp uimage2D tempImage1;\n"
                                        "void main (void)\n"
                                        "{\n"
-                                       "  uint id = 0;\n"
+                                       "  uint id = 0u;\n"
                                        "  if (subgroupElect())\n"
                                        "  {\n"
-                                       "    id = atomicAdd(b8.subgroupID, 1);\n"
+                                       "    id = atomicAdd(b8.subgroupID, 1u);\n"
                                        "  }\n"
                                        "  id = subgroupBroadcastFirst(id);\n"
                                        "  uint localId = id;\n"
-                                       "  uint tempResult = 0;\n"
+                                       "  uint tempResult = 0u;\n"
                                        + bdyTemplate.specialize(bufferNameMapping) +
                                        "  b1.result[gl_PrimitiveID] = tempResult;\n"
                                        "  if (gl_InvocationID == 0)\n"
@@ -1091,7 +1089,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                                bufferNameMapping.insert(pair<string, string>("IMG1", "2"));
 
                                const string tese =
-                                       "#version 450\n"
+                                       "${VERSION_DECL}\n"
                                        "#extension GL_KHR_shader_subgroup_basic: enable\n"
                                        "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                                        "layout(isolines) in;\n"
@@ -1111,19 +1109,19 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                                        "{\n"
                                        "  uint value;\n"
                                        "} b12;\n"
-                                       "layout(binding = 2, r32ui) uniform uimage2D tempImage2;\n"
+                                       "layout(binding = 2, r32ui) uniform highp uimage2D tempImage2;\n"
                                        "void main (void)\n"
                                        "{\n"
-                                       "  uint id = 0;\n"
+                                       "  uint id = 0u;\n"
                                        "  if (subgroupElect())\n"
                                        "  {\n"
-                                       "    id = atomicAdd(b11.subgroupID, 1);\n"
+                                       "    id = atomicAdd(b11.subgroupID, 1u);\n"
                                        "  }\n"
                                        "  id = subgroupBroadcastFirst(id);\n"
                                        "  uint localId = id;\n"
-                                       "  uint tempResult = 0;\n"
+                                       "  uint tempResult = 0u;\n"
                                        + bdyTemplate.specialize(bufferNameMapping) +
-                                       "  b2.result[gl_PrimitiveID * 2 + uint(gl_TessCoord.x + 0.5)] = tempResult;\n"
+                                       "  b2.result[gl_PrimitiveID * 2 + int(gl_TessCoord.x + 0.5)] = tempResult;\n"
                                        "  float pixelSize = 2.0f/1024.0f;\n""  gl_Position = gl_in[0].gl_Position + gl_TessCoord.x * pixelSize / 2.0f;\n"
                                        "}\n";
                                programCollection.add("tese") << glu::TessellationEvaluationSource(tese);
@@ -1135,7 +1133,6 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                                bufferNameMapping.insert(pair<string, string>("IMG1", "3"));
 
                                const string geometry =
-                                       "#version 450\n"
                                        "#extension GL_KHR_shader_subgroup_basic: enable\n"
                                        "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                                        "layout(${TOPOLOGY}) in;\n"
@@ -1156,17 +1153,17 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                                        "{\n"
                                        "  uint value;\n"
                                        "} b15;\n"
-                                       "layout(binding = 3, r32ui) uniform uimage2D tempImage3;\n"
+                                       "layout(binding = 3, r32ui) uniform highp uimage2D tempImage3;\n"
                                        "void main (void)\n"
                                        "{\n"
-                                       "  uint id = 0;\n"
+                                       "  uint id = 0u;\n"
                                        "  if (subgroupElect())\n"
                                        "  {\n"
-                                       "    id = atomicAdd(b14.subgroupID, 1);\n"
+                                       "    id = atomicAdd(b14.subgroupID, 1u);\n"
                                        "  }\n"
                                        "  id = subgroupBroadcastFirst(id);\n"
                                        "  uint localId = id;\n"
-                                       "  uint tempResult = 0;\n"
+                                       "  uint tempResult = 0u;\n"
                                         + bdyTemplate.specialize(bufferNameMapping) +
                                        "  b3.result[gl_PrimitiveIDIn] = tempResult;\n"
                                        "  gl_Position = gl_in[0].gl_Position;\n"
@@ -1183,7 +1180,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                                bufferNameMapping.insert(pair<string, string>("IMG1", "4"));
 
                                const string fragment =
-                                       "#version 450\n"
+                                       "${VERSION_DECL}\n"
                                        "#extension GL_KHR_shader_subgroup_basic: enable\n"
                                        "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                                        "layout(location = 0) out uint result;\n"
@@ -1199,18 +1196,18 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                                        "{\n"
                                        "  uint value;\n"
                                        "} b18;\n"
-                                       "layout(binding = 4, r32ui) uniform uimage2D tempImage4;\n"
+                                       "layout(binding = 4, r32ui) uniform highp uimage2D tempImage4;\n"
                                        "void main (void)\n"
                                        "{\n"
                                        "  if (gl_HelperInvocation) return;\n"
-                                       "  uint id = 0;\n"
+                                       "  uint id = 0u;\n"
                                        "  if (subgroupElect())\n"
                                        "  {\n"
-                                       "    id = atomicAdd(b17.subgroupID, 1);\n"
+                                       "    id = atomicAdd(b17.subgroupID, 1u);\n"
                                        "  }\n"
                                        "  id = subgroupBroadcastFirst(id);\n"
                                        "  uint localId = id;\n"
-                                       "  uint tempResult = 0;\n"
+                                       "  uint tempResult = 0u;\n"
                                        + bdyTemplate.specialize(bufferNameMapping) +
                                        "  result = tempResult;\n"
                                        "}\n";
index 901d770..ae9be21 100755 (executable)
@@ -63,74 +63,74 @@ std::string subgroupMask (const CaseDefinition& caseDef)
 {
        std::ostringstream bdy;
 
-       bdy << "  uint tempResult = 0x1;\n"
-               << "  uint bit        = 0x1;\n"
-               << "  uint bitCount   = 0x0;\n"
+       bdy << "  uint tempResult = 0x1u;\n"
+               << "  uint bit        = 0x1u;\n"
+               << "  uint bitCount   = 0x0u;\n"
                << "  uvec4 mask = subgroupBallot(true);\n"
-               << "  const uvec4 var = " << caseDef.varName << ";\n"
-               << "  for (uint i = 0; i < gl_SubgroupSize; i++)\n"
+               << "  uvec4 var = " << caseDef.varName << ";\n"
+               << "  for (uint i = 0u; i < gl_SubgroupSize; i++)\n"
                << "  {\n";
 
        if ("gl_SubgroupEqMask" == caseDef.varName)
        {
                bdy << "    if ((i == gl_SubgroupInvocationID) ^^ subgroupBallotBitExtract(var, i))\n"
                        << "    {\n"
-                       << "      tempResult = 0;\n"
+                       << "      tempResult = 0u;\n"
                        << "    }\n";
        }
        else if ("gl_SubgroupGeMask" == caseDef.varName)
        {
                bdy << "    if ((i >= gl_SubgroupInvocationID) ^^ subgroupBallotBitExtract(var, i))\n"
                        << "    {\n"
-                       << "      tempResult = 0;\n"
+                       << "      tempResult = 0u;\n"
                        << "    }\n";
        }
        else if ("gl_SubgroupGtMask" == caseDef.varName)
        {
                bdy << "    if ((i > gl_SubgroupInvocationID) ^^ subgroupBallotBitExtract(var, i))\n"
                        << "    {\n"
-                       << "      tempResult = 0;\n"
+                       << "      tempResult = 0u;\n"
                        << "    }\n";
        }
        else if ("gl_SubgroupLeMask" == caseDef.varName)
        {
                bdy << "    if ((i <= gl_SubgroupInvocationID) ^^ subgroupBallotBitExtract(var, i))\n"
                        << "    {\n"
-                       << "      tempResult = 0;\n"
+                       << "      tempResult = 0u;\n"
                        << "    }\n";
        }
        else if ("gl_SubgroupLtMask" == caseDef.varName)
        {
                bdy << "    if ((i < gl_SubgroupInvocationID) ^^ subgroupBallotBitExtract(var, i))\n"
                        << "    {\n"
-                       << "      tempResult = 0;\n"
+                       << "      tempResult = 0u;\n"
                        << "    }\n";
        }
 
        bdy << "  }\n"
-               << "  for (uint i = 0; i < 32; i++)\n"
+               << "  for (uint i = 0u; i < 32u; i++)\n"
                << "  {\n"
-               << "    if ((var.x & bit) > 0)\n"
+               << "    if ((var.x & bit) > 0u)\n"
                << "    {\n"
                << "      bitCount++;\n"
                << "    }\n"
-               << "    if ((var.y & bit) > 0)\n"
+               << "    if ((var.y & bit) > 0u)\n"
                << "    {\n"
                << "      bitCount++;\n"
                << "    }\n"
-               << "    if ((var.z & bit) > 0)\n"
+               << "    if ((var.z & bit) > 0u)\n"
                << "    {\n"
                << "      bitCount++;\n"
                << "    }\n"
-               << "    if ((var.w & bit) > 0)\n"
+               << "    if ((var.w & bit) > 0u)\n"
                << "    {\n"
                << "      bitCount++;\n"
                << "    }\n"
-               << "    bit = bit<<1;\n"
+               << "    bit = bit << 1u;\n"
                << "  }\n"
                << "  if (subgroupBallotBitCount(var) != bitCount)\n"
                << "  {\n"
-               << "    tempResult = 0;\n"
+               << "    tempResult = 0u;\n"
                << "  }\n";
        return bdy.str();
 }
@@ -146,7 +146,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
        {
                const string bdy = subgroupMask(caseDef);
                const string vertexGLSL =
-                       "#version 450\n"
+                       "${VERSION_DECL}\n"
                        "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        "layout(location = 0) out float out_color;\n"
                        "layout(location = 0) in highp vec4 in_position;\n"
@@ -164,7 +164,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
        {
                const string bdy = subgroupMask(caseDef);
                const string  evaluationSourceGLSL =
-                       "#version 450\n"
+                       "${VERSION_DECL}\n"
                        "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        "#extension GL_EXT_tessellation_shader : require\n"
                        "layout(isolines, equal_spacing, ccw ) in;\n"
@@ -183,7 +183,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
        {
                const string bdy = subgroupMask(caseDef);
                const string  controlSourceGLSL =
-                       "#version 450\n"
+                       "${VERSION_DECL}\n"
                        "#extension GL_EXT_tessellation_shader : require\n"
                        "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        "layout(vertices = 2) out;\n"
@@ -206,7 +206,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
        {
                const string bdy = subgroupMask(caseDef);
                const string geometryGLSL =
-                       "#version 450\n"
+                       "${VERSION_DECL}\n"
                        "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        "layout(points) in;\n"
                        "layout(points, max_vertices = 1) out;\n"
@@ -237,7 +237,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
        {
                std::ostringstream src;
 
-               src << "#version 450\n"
+               src << "${VERSION_DECL}\n"
                        << "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        << "layout (${LOCAL_SIZE_X}, ${LOCAL_SIZE_Y}, ${LOCAL_SIZE_Z}) in;\n"
                        << "layout(binding = 0, std430) buffer Output\n"
@@ -261,7 +261,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
        {
                {
                        const string vertex =
-                               "#version 450\n"
+                               "${VERSION_DECL}\n"
                                "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                                "layout(binding = 0, std430) buffer Output0\n"
                                "{\n"
@@ -282,7 +282,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
 
                {
                        const string tesc =
-                               "#version 450\n"
+                               "${VERSION_DECL}\n"
                                "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                                "layout(vertices=1) out;\n"
                                "layout(binding = 1, std430) buffer Output1\n"
@@ -306,7 +306,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
 
                {
                        const string tese =
-                               "#version 450\n"
+                               "${VERSION_DECL}\n"
                                "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                                "layout(isolines) in;\n"
                                "layout(binding = 2, std430) buffer Output2\n"
@@ -317,7 +317,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                                "void main (void)\n"
                                "{\n"
                                + bdy +
-                               "  b2.result[gl_PrimitiveID * 2 + uint(gl_TessCoord.x + 0.5)] = tempResult;\n"
+                               "  b2.result[gl_PrimitiveID * 2 + int(gl_TessCoord.x + 0.5)] = tempResult;\n"
                                "  float pixelSize = 2.0f/1024.0f;\n"
                                "  gl_Position = gl_in[0].gl_Position + gl_TessCoord.x * pixelSize / 2.0f;\n"
                                "}\n";
@@ -327,7 +327,6 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
 
                {
                        const string geometry =
-                               "#version 450\n"
                                "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                                "layout(${TOPOLOGY}) in;\n"
                                "layout(points, max_vertices = 1) out;\n"
@@ -350,7 +349,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
 
                {
                        const string fragment =
-                               "#version 450\n"
+                               "${VERSION_DECL}\n"
                                "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                                "layout(location = 0) out uint result;\n"
                                "void main (void)\n"
index 9d77480..0a32b95 100755 (executable)
@@ -323,13 +323,13 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
 {
        {
                const string fragmentGLSL =
-                   "#version 450\n"
-                       "layout(location = 0) in vec4 in_color;\n"
+                 "${VERSION_DECL}\n"
+                       "layout(location = 0) in highp vec4 in_color;\n"
                        "layout(location = 0) out uvec4 out_color;\n"
                        "void main()\n"
                        "{\n"
-                        "      out_color = uvec4(in_color);\n"
-                        "}\n";
+                             out_color = uvec4(in_color);\n"
+                       "}\n";
                programCollection.add("fragment") << glu::FragmentSource(fragmentGLSL);
        }
 
@@ -339,7 +339,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
        if (SHADER_STAGE_VERTEX_BIT == caseDef.shaderStage)
        {
                const string vertexGLSL =
-                       "#version 450\n"
+                       "${VERSION_DECL}\n"
                        "#extension GL_KHR_shader_subgroup_basic: enable\n"
                        "layout(location = 0) out vec4 out_color;\n"
                        "layout(location = 0) in highp vec4 in_position;\n"
@@ -355,7 +355,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
        else if (SHADER_STAGE_TESS_EVALUATION_BIT == caseDef.shaderStage)
        {
                const string controlSourceGLSL =
-                       "#version 450\n"
+                       "${VERSION_DECL}\n"
                        "#extension GL_EXT_tessellation_shader : require\n"
                        "layout(vertices = 2) out;\n"
                        "layout(location = 0) out vec4 out_color[];\n"
@@ -372,7 +372,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
                programCollection.add("tesc") << glu::TessellationControlSource(controlSourceGLSL);
 
                const string evaluationSourceGLSL =
-                       "#version 450\n"
+                       "${VERSION_DECL}\n"
                        "#extension GL_KHR_shader_subgroup_basic: enable\n"
                        "#extension GL_EXT_tessellation_shader : require\n"
                        "layout(isolines, equal_spacing, ccw ) in;\n"
@@ -389,7 +389,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
        else if (SHADER_STAGE_TESS_CONTROL_BIT == caseDef.shaderStage)
        {
                const string controlSourceGLSL =
-                       "#version 450\n"
+                       "${VERSION_DECL}\n"
                        "#extension GL_EXT_tessellation_shader : require\n"
                        "#extension GL_KHR_shader_subgroup_basic: enable\n"
                        "layout(vertices = 2) out;\n"
@@ -407,7 +407,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
                programCollection.add("tesc") << glu::TessellationControlSource(controlSourceGLSL);
 
                const string  evaluationSourceGLSL =
-                       "#version 450\n"
+                       "${VERSION_DECL}\n"
                        "#extension GL_KHR_shader_subgroup_basic: enable\n"
                        "#extension GL_EXT_tessellation_shader : require\n"
                        "layout(isolines, equal_spacing, ccw ) in;\n"
@@ -424,7 +424,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
        else if (SHADER_STAGE_GEOMETRY_BIT == caseDef.shaderStage)
        {
                const string geometryGLSL =
-                       "#version 450\n"
+                       "${VERSION_DECL}\n"
                        "#extension GL_KHR_shader_subgroup_basic: enable\n"
                        "layout(points) in;\n"
                        "layout(points, max_vertices = 1) out;\n"
@@ -450,7 +450,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
        {
                std::ostringstream src;
 
-               src << "#version 450\n"
+               src << "${VERSION_DECL}\n"
                        << "#extension GL_KHR_shader_subgroup_basic: enable\n"
                        << "layout (${LOCAL_SIZE_X}, ${LOCAL_SIZE_Y}, ${LOCAL_SIZE_Z}) in;\n"
                        << "layout(binding = 0, std430) buffer Output\n"
@@ -473,7 +473,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
        {
                {
                        const string vertexGLSL =
-                               "#version 450\n"
+                               "${VERSION_DECL}\n"
                                "#extension GL_KHR_shader_subgroup_basic: enable\n"
                                "layout(binding = 0, std430) buffer Output0\n"
                                "{\n"
@@ -493,7 +493,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
 
                {
                        const string tescGLSL =
-                               "#version 450\n"
+                               "${VERSION_DECL}\n"
                                "#extension GL_KHR_shader_subgroup_basic: enable\n"
                                "layout(vertices=1) out;\n"
                                "layout(binding = 1, std430) buffer Output1\n"
@@ -516,7 +516,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
 
                {
                        const string teseGLSL =
-                               "#version 450\n"
+                               "${VERSION_DECL}\n"
                                "#extension GL_KHR_shader_subgroup_basic: enable\n"
                                "layout(isolines) in;\n"
                                "layout(binding = 2, std430) buffer Output2\n"
@@ -526,7 +526,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                                "\n"
                                "void main (void)\n"
                                "{\n"
-                               "  b2.result[gl_PrimitiveID * 2 + uint(gl_TessCoord.x + 0.5)] = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0);\n"
+                               "  b2.result[gl_PrimitiveID * 2 + int(gl_TessCoord.x + 0.5)] = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0);\n"
                                "  float pixelSize = 2.0f/1024.0f;\n"
                                "  gl_Position = gl_in[0].gl_Position + gl_TessCoord.x * pixelSize / 2.0f;\n"
                                "}\n";
@@ -535,7 +535,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
 
                {
                        const string geometryGLSL =
-                               "#version 450\n"
+                               // version string is added by addGeometryShadersFromTemplate
                                "#extension GL_KHR_shader_subgroup_basic: enable\n"
                                "layout(${TOPOLOGY}) in;\n"
                                "layout(points, max_vertices = 1) out;\n"
@@ -556,7 +556,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
 
                {
                        const string fragmentGLSL =
-                               "#version 450\n"
+                               "${VERSION_DECL}\n"
                                "#extension GL_KHR_shader_subgroup_basic: enable\n"
                                "layout(location = 0) out uvec4 data;\n"
                                "void main (void)\n"
index 5c3ac2f..385c153 100755 (executable)
@@ -253,7 +253,7 @@ std::string getIdentity(int opType, Format format)
                        }
                        else if (isUnsigned)
                        {
-                               return subgroups::getFormatNameForGLSL(format) + "(0)";
+                               return subgroups::getFormatNameForGLSL(format) + "(0u)";
                        }
                        else
                        {
@@ -322,12 +322,12 @@ std::string getBodySource(CaseDefinition caseDef)
        for (deUint32 i = 1; i <= subgroups::maxSupportedSubgroupSize(); i *= 2)
        {
                bdy     << "  {\n"
-                       << "    const uint clusterSize = " << i << ";\n"
+                       << "    const uint clusterSize = " << i << "u;\n"
                        << "    if (clusterSize <= gl_SubgroupSize)\n"
                        << "    {\n"
                        << "      " << subgroups::getFormatNameForGLSL(caseDef.format) << " op = "
                        << getOpTypeName(caseDef.opType) + "(data[gl_SubgroupInvocationID], clusterSize);\n"
-                       << "      for (uint clusterOffset = 0; clusterOffset < gl_SubgroupSize; clusterOffset += clusterSize)\n"
+                       << "      for (uint clusterOffset = 0u; clusterOffset < gl_SubgroupSize; clusterOffset += clusterSize)\n"
                        << "      {\n"
                        << "        " << subgroups::getFormatNameForGLSL(caseDef.format) << " ref = "
                        << getIdentity(caseDef.opType, caseDef.format) << ";\n"
@@ -364,7 +364,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
        if (SHADER_STAGE_VERTEX_BIT == caseDef.shaderStage)
        {
                std::ostringstream                              vertexSrc;
-               vertexSrc << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450 )<< "\n"
+               vertexSrc << "${VERSION_DECL}\n"
                        << "#extension GL_KHR_shader_subgroup_clustered: enable\n"
                        << "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        << "layout(location = 0) in highp vec4 in_position;\n"
@@ -388,7 +388,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
        {
                std::ostringstream geometry;
 
-               geometry  << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n"
+               geometry  << "${VERSION_DECL}\n"
                        << "#extension GL_KHR_shader_subgroup_clustered: enable\n"
                        << "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        << "layout(points) in;\n"
@@ -415,7 +415,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
        {
                std::ostringstream controlSource;
 
-               controlSource << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n"
+               controlSource << "${VERSION_DECL}\n"
                        << "#extension GL_KHR_shader_subgroup_clustered: enable\n"
                        << "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        << "layout(vertices = 2) out;\n"
@@ -445,7 +445,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
        {
                std::ostringstream evaluationSource;
 
-               evaluationSource << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n"
+               evaluationSource << "${VERSION_DECL}\n"
                        << "#extension GL_KHR_shader_subgroup_clustered: enable\n"
                        << "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        << "layout(isolines, equal_spacing, ccw ) in;\n"
@@ -480,7 +480,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
        {
                std::ostringstream src;
 
-               src << "#version 450\n"
+               src << "${VERSION_DECL}\n"
                        << "#extension GL_KHR_shader_subgroup_clustered: enable\n"
                        << "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        << "layout (${LOCAL_SIZE_X}, ${LOCAL_SIZE_Y}, ${LOCAL_SIZE_Z}) in;\n"
@@ -501,7 +501,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                        "gl_GlobalInvocationID.x;\n"
                        << "  uvec4 mask = subgroupBallot(true);\n"
                        << bdy
-                       << "  result[offset] = tempResult ? 1 : 0;\n"
+                       << "  result[offset] = tempResult ? 1u : 0u;\n"
                        << "}\n";
 
                programCollection.add("comp") << glu::ComputeSource(src.str());
@@ -510,7 +510,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
        {
                {
                        const string vertex =
-                               "#version 450\n"
+                               "${VERSION_DECL}\n"
                                "#extension GL_KHR_shader_subgroup_clustered: enable\n"
                                "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                                "layout(binding = 0, std430) buffer Buffer0\n"
@@ -526,7 +526,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                                "{\n"
                                "  uvec4 mask = subgroupBallot(true);\n"
                                + bdy +
-                               "  b0.result[gl_VertexID] = tempResult ? 1 : 0;\n"
+                               "  b0.result[gl_VertexID] = tempResult ? 1u : 0u;\n"
                                "  float pixelSize = 2.0f/1024.0f;\n"
                                "  float pixelPosition = pixelSize/2.0f - 1.0f;\n"
                                "  gl_Position = vec4(float(gl_VertexID) * pixelSize + pixelPosition, 0.0f, 0.0f, 1.0f);\n"
@@ -537,7 +537,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
 
                {
                        const string tesc =
-                       "#version 450\n"
+                       "${VERSION_DECL}\n"
                        "#extension GL_KHR_shader_subgroup_clustered: enable\n"
                        "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        "layout(vertices=1) out;\n"
@@ -554,7 +554,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                        "{\n"
                        "  uvec4 mask = subgroupBallot(true);\n"
                        + bdy +
-                       "  b1.result[gl_PrimitiveID] = tempResult ? 1 : 0;\n"
+                       "  b1.result[gl_PrimitiveID] = tempResult ? 1u : 0u;\n"
                        "  if (gl_InvocationID == 0)\n"
                        "  {\n"
                        "    gl_TessLevelOuter[0] = 1.0f;\n"
@@ -568,7 +568,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
 
                {
                        const string tese =
-                               "#version 450\n"
+                               "${VERSION_DECL}\n"
                                "#extension GL_KHR_shader_subgroup_clustered: enable\n"
                                "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                                "layout(isolines) in;\n"
@@ -585,7 +585,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                                "{\n"
                                "  uvec4 mask = subgroupBallot(true);\n"
                                + bdy +
-                               "  b2.result[gl_PrimitiveID * 2 + uint(gl_TessCoord.x + 0.5)] = tempResult ? 1 : 0;\n"
+                               "  b2.result[gl_PrimitiveID * 2 + int(gl_TessCoord.x + 0.5)] = tempResult ? 1u : 0u;\n"
                                "  float pixelSize = 2.0f/1024.0f;\n"
                                "  gl_Position = gl_in[0].gl_Position + gl_TessCoord.x * pixelSize / 2.0f;\n"
                                "}\n";
@@ -594,7 +594,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
 
                {
                        const string geometry =
-                               "#version 450\n"
+                               // version string added by addGeometryShadersFromTemplate
                                "#extension GL_KHR_shader_subgroup_clustered: enable\n"
                                "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                                "layout(${TOPOLOGY}) in;\n"
@@ -612,7 +612,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                                "{\n"
                                "  uvec4 mask = subgroupBallot(true);\n"
                                + bdy +
-                               "  b3.result[gl_PrimitiveIDIn] = tempResult ? 1 : 0;\n"
+                               "  b3.result[gl_PrimitiveIDIn] = tempResult ? 1u : 0u;\n"
                                "  gl_Position = gl_in[0].gl_Position;\n"
                                "  EmitVertex();\n"
                                "  EndPrimitive();\n"
@@ -622,9 +622,10 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
 
                {
                        const string fragment =
-                               "#version 450\n"
+                               "${VERSION_DECL}\n"
                                "#extension GL_KHR_shader_subgroup_clustered: enable\n"
                                "#extension GL_KHR_shader_subgroup_ballot: enable\n"
+                               "precision highp float;\n"
                                "layout(location = 0) out uint result;\n"
                                "layout(binding = 4, std430) readonly buffer Buffer4\n"
                                "{\n"
@@ -634,7 +635,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                                "{\n"
                                "  uvec4 mask = subgroupBallot(true);\n"
                                + bdy +
-                               "  result = tempResult ? 1 : 0;\n"
+                               "  result = tempResult ? 1u : 0u;\n"
                                "}\n";
                        programCollection.add("fragment") << glu::FragmentSource(fragment);
                }
index 04e92ec..660a569 100755 (executable)
@@ -267,7 +267,7 @@ std::string getIdentity(int opType, Format format)
                        }
                        else if (isUnsigned)
                        {
-                               return subgroups::getFormatNameForGLSL(format) + "(0)";
+                               return subgroups::getFormatNameForGLSL(format) + "(0u)";
                        }
                        else
                        {
@@ -348,7 +348,7 @@ string getTestString(const CaseDefinition &caseDef)
     // conversion overflow in framebuffer tests.
     string fmt = subgroups::getFormatNameForGLSL(caseDef.format);
        string bdy =
-               "  uint tempResult = 0;\n"
+               "  uint tempResult = 0u;\n"
                "  uint id = gl_SubgroupInvocationID;\n";
 
     // Test the case where the partition has a single subset with all invocations in it.
@@ -358,21 +358,21 @@ string getTestString(const CaseDefinition &caseDef)
         "  " + fmt + " allResult = " + getOpTypeNamePartitioned(caseDef.opType) + "(data[gl_SubgroupInvocationID], allBallot);\n"
         "  " + fmt + " refResult = " + getOpTypeName(caseDef.opType) + "(data[gl_SubgroupInvocationID]);\n"
         "  if (" + getCompare(caseDef.opType, caseDef.format, "allResult", "refResult") + ") {\n"
-        "      tempResult |= 0x1;\n"
+        "      tempResult |= 0x1u;\n"
         "  }\n";
 
     // The definition of a partition doesn't forbid bits corresponding to inactive
     // invocations being in the subset with active invocations. In other words, test that
     // bits corresponding to inactive invocations are ignored.
     bdy +=
-           "  if (0 == (gl_SubgroupInvocationID % 2)) {\n"
+           "  if (0u == (gl_SubgroupInvocationID % 2u)) {\n"
         "    " + fmt + " allResult = " + getOpTypeNamePartitioned(caseDef.opType) + "(data[gl_SubgroupInvocationID], allBallot);\n"
         "    " + fmt + " refResult = " + getOpTypeName(caseDef.opType) + "(data[gl_SubgroupInvocationID]);\n"
         "    if (" + getCompare(caseDef.opType, caseDef.format, "allResult", "refResult") + ") {\n"
-        "        tempResult |= 0x2;\n"
+        "        tempResult |= 0x2u;\n"
         "    }\n"
         "  } else {\n"
-        "    tempResult |= 0x2;\n"
+        "    tempResult |= 0x2u;\n"
         "  }\n";
 
     // Test the case where the partition has each invocation in a unique subset. For
@@ -387,42 +387,42 @@ string getTestString(const CaseDefinition &caseDef)
         "  uvec4 selfBallot = subgroupPartitionNV(gl_SubgroupInvocationID);\n"
         "  " + fmt + " selfResult = " + getOpTypeNamePartitioned(caseDef.opType) + "(data[gl_SubgroupInvocationID], selfBallot);\n"
         "  if (" + getCompare(caseDef.opType, caseDef.format, "selfResult", expectedSelfResult) + ") {\n"
-        "      tempResult |= 0x4;\n"
+        "      tempResult |= 0x4u;\n"
         "  }\n";
 
     // Test "random" partitions based on a hash of the invocation id.
     // This "hash" function produces interesting/randomish partitions.
-    static const char *idhash = "((id%N)+(id%(N+1))-(id%2)+(id/2))%((N+1)/2)";
+    static const char *idhash = "((id%N)+(id%(N+1u))-(id%2u)+(id/2u))%((N+1u)/2u)";
 
     bdy +=
-               "  for (uint N = 1; N < 16; ++N) {\n"
+               "  for (uint N = 1u; N < 16u; ++N) {\n"
                "    " + fmt + " idhashFmt = " + fmt + "(" + idhash + ");\n"
                "    uvec4 partitionBallot = subgroupPartitionNV(idhashFmt) & mask;\n"
                "    " + fmt + " partitionedResult = " + getOpTypeNamePartitioned(caseDef.opType) + "(data[gl_SubgroupInvocationID], partitionBallot);\n"
-               "      for (uint i = 0; i < N; ++i) {\n"
+               "      for (uint i = 0u; i < N; ++i) {\n"
                "        " + fmt + " iFmt = " + fmt + "(i);\n"
         "        if (" + getCompare(caseDef.opType, caseDef.format, "idhashFmt", "iFmt") + ") {\n"
         "          " + fmt + " subsetResult = " + getOpTypeName(caseDef.opType) + "(data[gl_SubgroupInvocationID]);\n"
-        "          tempResult |= " + getCompare(caseDef.opType, caseDef.format, "partitionedResult", "subsetResult") + " ? (0x4 << N) : 0;\n"
+        "          tempResult |= " + getCompare(caseDef.opType, caseDef.format, "partitionedResult", "subsetResult") + " ? (0x4u << N) : 0u;\n"
         "        }\n"
         "      }\n"
         "  }\n"
         // tests in flow control:
-               "  if (1 == (gl_SubgroupInvocationID % 2)) {\n"
-        "    for (uint N = 1; N < 7; ++N) {\n"
+               "  if (1u == (gl_SubgroupInvocationID % 2u)) {\n"
+        "    for (uint N = 1u; N < 7u; ++N) {\n"
                "      " + fmt + " idhashFmt = " + fmt + "(" + idhash + ");\n"
                "      uvec4 partitionBallot = subgroupPartitionNV(idhashFmt) & mask;\n"
         "      " + fmt + " partitionedResult = " + getOpTypeNamePartitioned(caseDef.opType) + "(data[gl_SubgroupInvocationID], partitionBallot);\n"
-        "        for (uint i = 0; i < N; ++i) {\n"
+        "        for (uint i = 0u; i < N; ++i) {\n"
                "          " + fmt + " iFmt = " + fmt + "(i);\n"
         "          if (" + getCompare(caseDef.opType, caseDef.format, "idhashFmt", "iFmt") + ") {\n"
         "            " + fmt + " subsetResult = " + getOpTypeName(caseDef.opType) + "(data[gl_SubgroupInvocationID]);\n"
-        "            tempResult |= " + getCompare(caseDef.opType, caseDef.format, "partitionedResult", "subsetResult") + " ? (0x20000 << N) : 0;\n"
+        "            tempResult |= " + getCompare(caseDef.opType, caseDef.format, "partitionedResult", "subsetResult") + " ? (0x20000u << N) : 0u;\n"
         "          }\n"
         "        }\n"
         "    }\n"
         "  } else {\n"
-        "    tempResult |= 0xFC0000;\n"
+        "    tempResult |= 0xFC0000u;\n"
         "  }\n"
         ;
 
@@ -443,7 +443,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
        if (SHADER_STAGE_VERTEX_BIT == caseDef.shaderStage)
        {
                std::ostringstream vertexSrc;
-               vertexSrc << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n"
+               vertexSrc << "${VERSION_DECL}\n"
                        << "#extension GL_NV_shader_subgroup_partitioned: enable\n"
                        << "#extension GL_KHR_shader_subgroup_arithmetic: enable\n"
                        << "#extension GL_KHR_shader_subgroup_ballot: enable\n"
@@ -468,7 +468,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
        {
                std::ostringstream geometry;
 
-               geometry << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n"
+               geometry << "${VERSION_DECL}\n"
                        << "#extension GL_NV_shader_subgroup_partitioned: enable\n"
                        << "#extension GL_KHR_shader_subgroup_arithmetic: enable\n"
                        << "#extension GL_KHR_shader_subgroup_ballot: enable\n"
@@ -495,7 +495,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
        else if (SHADER_STAGE_TESS_CONTROL_BIT == caseDef.shaderStage)
        {
                std::ostringstream controlSource;
-               controlSource  << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n"
+               controlSource  << "${VERSION_DECL}\n"
                        << "#extension GL_NV_shader_subgroup_partitioned: enable\n"
                        << "#extension GL_KHR_shader_subgroup_arithmetic: enable\n"
                        << "#extension GL_KHR_shader_subgroup_ballot: enable\n"
@@ -527,7 +527,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
        {
 
                std::ostringstream evaluationSource;
-               evaluationSource << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n"
+               evaluationSource << "${VERSION_DECL}\n"
                        << "#extension GL_NV_shader_subgroup_partitioned: enable\n"
                        << "#extension GL_KHR_shader_subgroup_arithmetic: enable\n"
                        << "#extension GL_KHR_shader_subgroup_ballot: enable\n"
@@ -563,7 +563,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
        {
                std::ostringstream src;
 
-               src << "#version 450\n"
+               src << "${VERSION_DECL}\n"
                        << "#extension GL_NV_shader_subgroup_partitioned: enable\n"
                        << "#extension GL_KHR_shader_subgroup_arithmetic: enable\n"
                        << "#extension GL_KHR_shader_subgroup_ballot: enable\n"
@@ -594,7 +594,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
        {
                {
                        const std::string vertex =
-                               "#version 450\n"
+                               "${VERSION_DECL}\n"
                                "#extension GL_NV_shader_subgroup_partitioned: enable\n"
                            "#extension GL_KHR_shader_subgroup_arithmetic: enable\n"
                                "#extension GL_KHR_shader_subgroup_ballot: enable\n"
@@ -622,7 +622,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
 
                {
                        const std::string tesc =
-                               "#version 450\n"
+                               "${VERSION_DECL}\n"
                                "#extension GL_NV_shader_subgroup_partitioned: enable\n"
                            "#extension GL_KHR_shader_subgroup_arithmetic: enable\n"
                                "#extension GL_KHR_shader_subgroup_ballot: enable\n"
@@ -653,7 +653,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
 
                {
                        const std::string tese =
-                               "#version 450\n"
+                               "${VERSION_DECL}\n"
                                "#extension GL_NV_shader_subgroup_partitioned: enable\n"
                            "#extension GL_KHR_shader_subgroup_arithmetic: enable\n"
                                "#extension GL_KHR_shader_subgroup_ballot: enable\n"
@@ -671,7 +671,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                                "{\n"
                                "  uvec4 mask = subgroupBallot(true);\n"
                                + bdy +
-                               "  b2.result[gl_PrimitiveID * 2 + uint(gl_TessCoord.x + 0.5)] = tempResult;\n"
+                               "  b2.result[gl_PrimitiveID * 2 + int(gl_TessCoord.x + 0.5)] = tempResult;\n"
                                "  float pixelSize = 2.0f/1024.0f;\n"
                                "  gl_Position = gl_in[0].gl_Position + gl_TessCoord.x * pixelSize / 2.0f;\n"
                                "}\n";
@@ -680,7 +680,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
 
                {
                        const std::string geometry =
-                               "#version 450\n"
+                               // version added by addGeometryShadersFromTemplate
                                "#extension GL_NV_shader_subgroup_partitioned: enable\n"
                            "#extension GL_KHR_shader_subgroup_arithmetic: enable\n"
                                "#extension GL_KHR_shader_subgroup_ballot: enable\n"
@@ -709,10 +709,11 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
 
                {
                        const std::string fragment =
-                               "#version 450\n"
+                               "${VERSION_DECL}\n"
                                "#extension GL_NV_shader_subgroup_partitioned: enable\n"
                            "#extension GL_KHR_shader_subgroup_arithmetic: enable\n"
                                "#extension GL_KHR_shader_subgroup_ballot: enable\n"
+                               "precision highp float;\n"
                                "layout(location = 0) out uint result;\n"
                                "layout(binding = 4, std430) readonly buffer Buffer4\n"
                                "{\n"
index bdf5d6f..4848823 100755 (executable)
@@ -96,14 +96,14 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
                subgroups::setVertexShaderFrameBuffer(programCollection);
 
        swapTable[OPTYPE_QUAD_BROADCAST] = "";
-       swapTable[OPTYPE_QUAD_SWAP_HORIZONTAL] = "  const uint swapTable[4] = {1, 0, 3, 2};\n";
-       swapTable[OPTYPE_QUAD_SWAP_VERTICAL] = "  const uint swapTable[4] = {2, 3, 0, 1};\n";
-       swapTable[OPTYPE_QUAD_SWAP_DIAGONAL] = "  const uint swapTable[4] = {3, 2, 1, 0};\n";
+       swapTable[OPTYPE_QUAD_SWAP_HORIZONTAL] = "  const uint swapTable[4] = uint[](1u, 0u, 3u, 2u);\n";
+       swapTable[OPTYPE_QUAD_SWAP_VERTICAL] = "  const uint swapTable[4] = uint[](2u, 3u, 0u, 1u);\n";
+       swapTable[OPTYPE_QUAD_SWAP_DIAGONAL] = "  const uint swapTable[4] = uint[](3u, 2u, 1u, 0u);\n";
 
        if (SHADER_STAGE_VERTEX_BIT == caseDef.shaderStage)
        {
                std::ostringstream      vertexSrc;
-               vertexSrc << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n"
+               vertexSrc << "${VERSION_DECL}\n"
                        << "#extension GL_KHR_shader_subgroup_quad: enable\n"
                        << "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        << "layout(location = 0) in highp vec4 in_position;\n"
@@ -121,14 +121,14 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
                if (OPTYPE_QUAD_BROADCAST == caseDef.opType)
                {
                        vertexSrc << "  " << subgroups::getFormatNameForGLSL(caseDef.format) << " op = "
-                               << getOpTypeName(caseDef.opType) << "(data[gl_SubgroupInvocationID], " << caseDef.direction << ");\n"
-                               << "  uint otherID = (gl_SubgroupInvocationID & ~0x3) + " << caseDef.direction << ";\n";
+                               << getOpTypeName(caseDef.opType) << "(data[gl_SubgroupInvocationID], " << caseDef.direction << "u);\n"
+                               << "  uint otherID = (gl_SubgroupInvocationID & ~0x3u) + " << caseDef.direction << "u;\n";
                }
                else
                {
                        vertexSrc << "  " << subgroups::getFormatNameForGLSL(caseDef.format) << " op = "
                                << getOpTypeName(caseDef.opType) << "(data[gl_SubgroupInvocationID]);\n"
-                               << "  uint otherID = (gl_SubgroupInvocationID & ~0x3) + swapTable[gl_SubgroupInvocationID & 0x3];\n";
+                               << "  uint otherID = (gl_SubgroupInvocationID & ~0x3u) + swapTable[gl_SubgroupInvocationID & 0x3u];\n";
                }
 
                vertexSrc << "  if (subgroupBallotBitExtract(mask, otherID))\n"
@@ -148,7 +148,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
        {
                std::ostringstream geometry;
 
-               geometry << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n"
+               geometry << "${VERSION_DECL}\n"
                        << "#extension GL_KHR_shader_subgroup_quad: enable\n"
                        << "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        << "layout(points) in;\n"
@@ -167,14 +167,14 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
                if (OPTYPE_QUAD_BROADCAST == caseDef.opType)
                {
                        geometry << "  " << subgroups::getFormatNameForGLSL(caseDef.format) << " op = "
-                               << getOpTypeName(caseDef.opType) << "(data[gl_SubgroupInvocationID], " << caseDef.direction << ");\n"
-                               << "  uint otherID = (gl_SubgroupInvocationID & ~0x3) + " << caseDef.direction << ";\n";
+                               << getOpTypeName(caseDef.opType) << "(data[gl_SubgroupInvocationID], " << caseDef.direction << "u);\n"
+                               << "  uint otherID = (gl_SubgroupInvocationID & ~0x3u) + " << caseDef.direction << "u;\n";
                }
                else
                {
                        geometry << "  " << subgroups::getFormatNameForGLSL(caseDef.format) << " op = "
                                << getOpTypeName(caseDef.opType) << "(data[gl_SubgroupInvocationID]);\n"
-                               << "  uint otherID = (gl_SubgroupInvocationID & ~0x3) + swapTable[gl_SubgroupInvocationID & 0x3];\n";
+                               << "  uint otherID = (gl_SubgroupInvocationID & ~0x3u) + swapTable[gl_SubgroupInvocationID & 0x3u];\n";
                }
 
                geometry << "  if (subgroupBallotBitExtract(mask, otherID))\n"
@@ -196,7 +196,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
        {
                std::ostringstream controlSource;
 
-               controlSource << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n"
+               controlSource << "${VERSION_DECL}\n"
                        << "#extension GL_KHR_shader_subgroup_quad: enable\n"
                        << "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        << "layout(vertices = 2) out;\n"
@@ -219,14 +219,14 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
                if (OPTYPE_QUAD_BROADCAST == caseDef.opType)
                {
                        controlSource << "  " << subgroups::getFormatNameForGLSL(caseDef.format) << " op = "
-                               << getOpTypeName(caseDef.opType) << "(data[gl_SubgroupInvocationID], " << caseDef.direction << ");\n"
-                               << "  uint otherID = (gl_SubgroupInvocationID & ~0x3) + " << caseDef.direction << ";\n";
+                               << getOpTypeName(caseDef.opType) << "(data[gl_SubgroupInvocationID], " << caseDef.direction << "u);\n"
+                               << "  uint otherID = (gl_SubgroupInvocationID & ~0x3u) + " << caseDef.direction << "u;\n";
                }
                else
                {
                        controlSource << "  " << subgroups::getFormatNameForGLSL(caseDef.format) << " op = "
                                << getOpTypeName(caseDef.opType) << "(data[gl_SubgroupInvocationID]);\n"
-                               << "  uint otherID = (gl_SubgroupInvocationID & ~0x3) + swapTable[gl_SubgroupInvocationID & 0x3];\n";
+                               << "  uint otherID = (gl_SubgroupInvocationID & ~0x3u) + swapTable[gl_SubgroupInvocationID & 0x3u];\n";
                }
 
                controlSource << "  if (subgroupBallotBitExtract(mask, otherID))\n"
@@ -246,7 +246,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
        else if (SHADER_STAGE_TESS_EVALUATION_BIT == caseDef.shaderStage)
        {
                ostringstream evaluationSource;
-               evaluationSource << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n"
+               evaluationSource << "${VERSION_DECL}\n"
                        << "#extension GL_KHR_shader_subgroup_quad: enable\n"
                        << "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        << "layout(isolines, equal_spacing, ccw ) in;\n"
@@ -264,14 +264,14 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
                if (OPTYPE_QUAD_BROADCAST == caseDef.opType)
                {
                        evaluationSource << "  " << subgroups::getFormatNameForGLSL(caseDef.format) << " op = "
-                               << getOpTypeName(caseDef.opType) << "(data[gl_SubgroupInvocationID], " << caseDef.direction << ");\n"
-                               << "  uint otherID = (gl_SubgroupInvocationID & ~0x3) + " << caseDef.direction << ";\n";
+                               << getOpTypeName(caseDef.opType) << "(data[gl_SubgroupInvocationID], " << caseDef.direction << "u);\n"
+                               << "  uint otherID = (gl_SubgroupInvocationID & ~0x3u) + " << caseDef.direction << "u;\n";
                }
                else
                {
                        evaluationSource << "  " << subgroups::getFormatNameForGLSL(caseDef.format) << " op = "
                                << getOpTypeName(caseDef.opType) << "(data[gl_SubgroupInvocationID]);\n"
-                               << "  uint otherID = (gl_SubgroupInvocationID & ~0x3) + swapTable[gl_SubgroupInvocationID & 0x3];\n";
+                               << "  uint otherID = (gl_SubgroupInvocationID & ~0x3u) + swapTable[gl_SubgroupInvocationID & 0x3u];\n";
                }
 
                evaluationSource << "  if (subgroupBallotBitExtract(mask, otherID))\n"
@@ -298,15 +298,15 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
 {
        std::string swapTable[OPTYPE_LAST];
        swapTable[OPTYPE_QUAD_BROADCAST] = "";
-       swapTable[OPTYPE_QUAD_SWAP_HORIZONTAL] = "  const uint swapTable[4] = {1, 0, 3, 2};\n";
-       swapTable[OPTYPE_QUAD_SWAP_VERTICAL] = "  const uint swapTable[4] = {2, 3, 0, 1};\n";
-       swapTable[OPTYPE_QUAD_SWAP_DIAGONAL] = "  const uint swapTable[4] = {3, 2, 1, 0};\n";
+       swapTable[OPTYPE_QUAD_SWAP_HORIZONTAL] = "  const uint swapTable[4] = uint[](1u, 0u, 3u, 2u);\n";
+       swapTable[OPTYPE_QUAD_SWAP_VERTICAL] = "  const uint swapTable[4] = uint[](2u, 3u, 0u, 1u);\n";
+       swapTable[OPTYPE_QUAD_SWAP_DIAGONAL] = "  const uint swapTable[4] = uint[](3u, 2u, 1u, 0u);\n";
 
        if (SHADER_STAGE_COMPUTE_BIT == caseDef.shaderStage)
        {
                std::ostringstream src;
 
-               src << "#version 450\n"
+               src << "${VERSION_DECL}\n"
                        << "#extension GL_KHR_shader_subgroup_quad: enable\n"
                        << "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        << "layout (${LOCAL_SIZE_X}, ${LOCAL_SIZE_Y}, ${LOCAL_SIZE_Z}) in;\n"
@@ -332,23 +332,23 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                if (OPTYPE_QUAD_BROADCAST == caseDef.opType)
                {
                        src << "  " << subgroups::getFormatNameForGLSL(caseDef.format) << " op = "
-                               << getOpTypeName(caseDef.opType) << "(data[gl_SubgroupInvocationID], " << caseDef.direction << ");\n"
-                               << "  uint otherID = (gl_SubgroupInvocationID & ~0x3) + " << caseDef.direction << ";\n";
+                               << getOpTypeName(caseDef.opType) << "(data[gl_SubgroupInvocationID], " << caseDef.direction << "u);\n"
+                               << "  uint otherID = (gl_SubgroupInvocationID & ~0x3u) + " << caseDef.direction << "u;\n";
                }
                else
                {
                        src << "  " << subgroups::getFormatNameForGLSL(caseDef.format) << " op = "
                                << getOpTypeName(caseDef.opType) << "(data[gl_SubgroupInvocationID]);\n"
-                               << "  uint otherID = (gl_SubgroupInvocationID & ~0x3) + swapTable[gl_SubgroupInvocationID & 0x3];\n";
+                               << "  uint otherID = (gl_SubgroupInvocationID & ~0x3u) + swapTable[gl_SubgroupInvocationID & 0x3u];\n";
                }
 
                src << "  if (subgroupBallotBitExtract(mask, otherID))\n"
                        << "  {\n"
-                       << "    result[offset] = (op == data[otherID]) ? 1 : 0;\n"
+                       << "    result[offset] = (op == data[otherID]) ? 1u : 0u;\n"
                        << "  }\n"
                        << "  else\n"
                        << "  {\n"
-                       << "    result[offset] = 1; // Invocation we read from was inactive, so we can't verify results!\n"
+                       << "    result[offset] = 1u; // Invocation we read from was inactive, so we can't verify results!\n"
                        << "  }\n"
                        << "}\n";
 
@@ -360,20 +360,20 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                if (OPTYPE_QUAD_BROADCAST == caseDef.opType)
                {
                        src << "  " << subgroups::getFormatNameForGLSL(caseDef.format) << " op = "
-                               << getOpTypeName(caseDef.opType) << "(data[gl_SubgroupInvocationID], " << caseDef.direction << ");\n"
-                               << "  uint otherID = (gl_SubgroupInvocationID & ~0x3) + " << caseDef.direction << ";\n";
+                               << getOpTypeName(caseDef.opType) << "(data[gl_SubgroupInvocationID], " << caseDef.direction << "u);\n"
+                               << "  uint otherID = (gl_SubgroupInvocationID & ~0x3u) + " << caseDef.direction << "u;\n";
                }
                else
                {
                        src << "  " << subgroups::getFormatNameForGLSL(caseDef.format) << " op = "
                                << getOpTypeName(caseDef.opType) << "(data[gl_SubgroupInvocationID]);\n"
-                               << "  uint otherID = (gl_SubgroupInvocationID & ~0x3) + swapTable[gl_SubgroupInvocationID & 0x3];\n";
+                               << "  uint otherID = (gl_SubgroupInvocationID & ~0x3u) + swapTable[gl_SubgroupInvocationID & 0x3u];\n";
                }
                const string sourceType = src.str();
 
                {
                        const string vertex =
-                               "#version 450\n"
+                               "${VERSION_DECL}\n"
                                "#extension GL_KHR_shader_subgroup_quad: enable\n"
                                "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                                "layout(binding = 0, std430) buffer Buffer0\n"
@@ -392,11 +392,11 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                                + sourceType +
                                "  if (subgroupBallotBitExtract(mask, otherID))\n"
                                "  {\n"
-                               "    b0.result[gl_VertexID] = (op == data[otherID]) ? 1 : 0;\n"
+                               "    b0.result[gl_VertexID] = (op == data[otherID]) ? 1u : 0u;\n"
                                "  }\n"
                                "  else\n"
                                "  {\n"
-                               "    b0.result[gl_VertexID] = 1; // Invocation we read from was inactive, so we can't verify results!\n"
+                               "    b0.result[gl_VertexID] = 1u; // Invocation we read from was inactive, so we can't verify results!\n"
                                "  }\n"
                                "  float pixelSize = 2.0f/1024.0f;\n"
                                "  float pixelPosition = pixelSize/2.0f - 1.0f;\n"
@@ -407,7 +407,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
 
                {
                        const string tesc =
-                               "#version 450\n"
+                               "${VERSION_DECL}\n"
                                "#extension GL_KHR_shader_subgroup_quad: enable\n"
                                "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                                "layout(vertices=1) out;\n"
@@ -427,11 +427,11 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                                + sourceType +
                                "  if (subgroupBallotBitExtract(mask, otherID))\n"
                                "  {\n"
-                               "    b1.result[gl_PrimitiveID] = (op == data[otherID]) ? 1 : 0;\n"
+                               "    b1.result[gl_PrimitiveID] = (op == data[otherID]) ? 1u : 0u;\n"
                                "  }\n"
                                "  else\n"
                                "  {\n"
-                               "    b1.result[gl_PrimitiveID] = 1; // Invocation we read from was inactive, so we can't verify results!\n"
+                               "    b1.result[gl_PrimitiveID] = 1u; // Invocation we read from was inactive, so we can't verify results!\n"
                                "  }\n"
                                "  if (gl_InvocationID == 0)\n"
                                "  {\n"
@@ -445,7 +445,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
 
                {
                        const string tese =
-                               "#version 450\n"
+                               "${VERSION_DECL}\n"
                                "#extension GL_KHR_shader_subgroup_quad: enable\n"
                                "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                                "layout(isolines) in;\n"
@@ -465,11 +465,11 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                                + sourceType +
                                "  if (subgroupBallotBitExtract(mask, otherID))\n"
                                "  {\n"
-                               "    b2.result[gl_PrimitiveID * 2 + uint(gl_TessCoord.x + 0.5)] = (op == data[otherID]) ? 1 : 0;\n"
+                               "    b2.result[gl_PrimitiveID * 2 + int(gl_TessCoord.x + 0.5)] = (op == data[otherID]) ? 1u : 0u;\n"
                                "  }\n"
                                "  else\n"
                                "  {\n"
-                               "    b2.result[gl_PrimitiveID * 2 + uint(gl_TessCoord.x + 0.5)] = 1; // Invocation we read from was inactive, so we can't verify results!\n"
+                               "    b2.result[gl_PrimitiveID * 2 + int(gl_TessCoord.x + 0.5)] = 1u; // Invocation we read from was inactive, so we can't verify results!\n"
                                "  }\n"
                                "  float pixelSize = 2.0f/1024.0f;\n"
                                "  gl_Position = gl_in[0].gl_Position + gl_TessCoord.x * pixelSize / 2.0f;\n"
@@ -479,7 +479,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
 
                {
                        const string geometry =
-                               "#version 450\n"
+                               // version added by addGeometryShadersFromTemplate
                                "#extension GL_KHR_shader_subgroup_quad: enable\n"
                                "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                                "layout(${TOPOLOGY}) in;\n"
@@ -500,11 +500,11 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                                + sourceType +
                                "  if (subgroupBallotBitExtract(mask, otherID))\n"
                                "  {\n"
-                               "    b3.result[gl_PrimitiveIDIn] = (op == data[otherID]) ? 1 : 0;\n"
+                               "    b3.result[gl_PrimitiveIDIn] = (op == data[otherID]) ? 1u : 0u;\n"
                                "  }\n"
                                "  else\n"
                                "  {\n"
-                               "    b3.result[gl_PrimitiveIDIn] = 1; // Invocation we read from was inactive, so we can't verify results!\n"
+                               "    b3.result[gl_PrimitiveIDIn] = 1u; // Invocation we read from was inactive, so we can't verify results!\n"
                                "  }\n"
                                "  gl_Position = gl_in[0].gl_Position;\n"
                                "  EmitVertex();\n"
@@ -515,9 +515,10 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
 
                {
                        const string fragment =
-                               "#version 450\n"
+                               "${VERSION_DECL}\n"
                                "#extension GL_KHR_shader_subgroup_quad: enable\n"
                                "#extension GL_KHR_shader_subgroup_ballot: enable\n"
+                               "precision highp float;\n"
                                "layout(location = 0) out uint result;\n"
                                "layout(binding = 4, std430) readonly buffer Buffer4\n"
                                "{\n"
@@ -530,11 +531,11 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                                + sourceType +
                                "  if (subgroupBallotBitExtract(mask, otherID))\n"
                                "  {\n"
-                               "    result = (op == data[otherID]) ? 1 : 0;\n"
+                               "    result = (op == data[otherID]) ? 1u : 0u;\n"
                                "  }\n"
                                "  else\n"
                                "  {\n"
-                               "    result = 1; // Invocation we read from was inactive, so we can't verify results!\n"
+                               "    result = 1u; // Invocation we read from was inactive, so we can't verify results!\n"
                                "  }\n"
                                "}\n";
                        programCollection.add("fragment") << glu::FragmentSource(fragment);
index b7d4df7..c35bea4 100755 (executable)
@@ -92,32 +92,32 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
 
        extension += "#extension GL_KHR_shader_subgroup_ballot: enable\n";
 
-       bdy << "  uint tempResult = 0x1;\n"
+       bdy << "  uint tempResult = 0x1u;\n"
                << "  uvec4 mask = subgroupBallot(true);\n";
 
        if (OPTYPE_CLUSTERED == caseDef.opType)
        {
                for (deUint32 i = 1; i <= subgroups::maxSupportedSubgroupSize(); i *= 2)
                {
-                       bdy << "  if (gl_SubgroupSize >= " << i << ")\n"
+                       bdy << "  if (gl_SubgroupSize >= " << i << "u)\n"
                                << "  {\n"
                                << "    uvec4 contribution = uvec4(0);\n"
-                               << "    const uint modID = gl_SubgroupInvocationID % 32;\n"
-                               << "    switch (gl_SubgroupInvocationID / 32)\n"
+                               << "    uint modID = gl_SubgroupInvocationID % 32u;\n"
+                               << "    switch (gl_SubgroupInvocationID / 32u)\n"
                                << "    {\n"
-                               << "    case 0: contribution.x = 1 << modID; break;\n"
-                               << "    case 1: contribution.y = 1 << modID; break;\n"
-                               << "    case 2: contribution.z = 1 << modID; break;\n"
-                               << "    case 3: contribution.w = 1 << modID; break;\n"
+                               << "    case 0u: contribution.x = 1u << modID; break;\n"
+                               << "    case 1u: contribution.y = 1u << modID; break;\n"
+                               << "    case 2u: contribution.z = 1u << modID; break;\n"
+                               << "    case 3u: contribution.w = 1u << modID; break;\n"
                                << "    }\n"
-                               << "    uvec4 result = subgroupClusteredOr(contribution, " << i << ");\n"
-                               << "    uint rootID = gl_SubgroupInvocationID & ~(" << i - 1 << ");\n"
-                               << "    for (uint i = 0; i < " << i << "; i++)\n"
+                               << "    uvec4 result = subgroupClusteredOr(contribution, " << i << "u);\n"
+                               << "    uint rootID = gl_SubgroupInvocationID & ~(" << i - 1 << "u);\n"
+                               << "    for (uint i = 0u; i < " << i << "u; i++)\n"
                                << "    {\n"
                                << "      uint nextID = rootID + i;\n"
                                << "      if (subgroupBallotBitExtract(mask, nextID) ^^ subgroupBallotBitExtract(result, nextID))\n"
                                << "      {\n"
-                               << "        tempResult = 0;\n"
+                               << "        tempResult = 0u;\n"
                                << "      }\n"
                                << "    }\n"
                                << "  }\n";
@@ -126,14 +126,14 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
        else
        {
                bdy << "  uint cluster[4] =\n"
-                       << "  {\n"
-                       << "    subgroupQuadBroadcast(gl_SubgroupInvocationID, 0),\n"
-                       << "    subgroupQuadBroadcast(gl_SubgroupInvocationID, 1),\n"
-                       << "    subgroupQuadBroadcast(gl_SubgroupInvocationID, 2),\n"
-                       << "    subgroupQuadBroadcast(gl_SubgroupInvocationID, 3)\n"
-                       << "  };\n"
-                       << "  uint rootID = gl_SubgroupInvocationID & ~0x3;\n"
-                       << "  for (uint i = 0; i < 4; i++)\n"
+                       << "  uint[](\n"
+                       << "    subgroupQuadBroadcast(gl_SubgroupInvocationID, 0u),\n"
+                       << "    subgroupQuadBroadcast(gl_SubgroupInvocationID, 1u),\n"
+                       << "    subgroupQuadBroadcast(gl_SubgroupInvocationID, 2u),\n"
+                       << "    subgroupQuadBroadcast(gl_SubgroupInvocationID, 3u)\n"
+                       << "  );\n"
+                       << "  uint rootID = gl_SubgroupInvocationID & ~0x3u;\n"
+                       << "  for (uint i = 0u; i < 4u; i++)\n"
                        << "  {\n"
                        << "    uint nextID = rootID + i;\n"
                        << "    if (subgroupBallotBitExtract(mask, nextID) && (cluster[i] != nextID))\n"
@@ -146,7 +146,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
        if (SHADER_STAGE_VERTEX_BIT == caseDef.shaderStage)
        {
                std::ostringstream vertexSrc;
-               vertexSrc << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n"
+               vertexSrc << "${VERSION_DECL}\n"
                        << extension
                        << "layout(location = 0) in highp vec4 in_position;\n"
                        << "layout(location = 0) out float result;\n"
@@ -164,7 +164,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
        {
                std::ostringstream geometry;
 
-               geometry << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n"
+               geometry << "${VERSION_DECL}\n"
                        << extension
                        << "layout(points) in;\n"
                        << "layout(points, max_vertices = 1) out;\n"
@@ -185,7 +185,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
        {
                std::ostringstream controlSource;
 
-               controlSource << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n"
+               controlSource << "${VERSION_DECL}\n"
                        << extension
                        << "layout(vertices = 2) out;\n"
                        << "layout(location = 0) out float out_color[];\n"
@@ -209,9 +209,9 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
        {
                std::ostringstream evaluationSource;
 
-               evaluationSource << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n"
+               evaluationSource << "${VERSION_DECL}\n"
                        << extension
-                       << "layout(isolines, equal_spacing, ccw ) in;\n"
+                       << "layout(isolines, equal_spacing, ccw) in;\n"
                        << "layout(location = 0) out float out_color;\n"
                        << "void main (void)\n"
                        << "{\n"
@@ -239,32 +239,32 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
 
        std::ostringstream bdy;
 
-       bdy << "  uint tempResult = 0x1;\n"
+       bdy << "  uint tempResult = 0x1u;\n"
                << "  uvec4 mask = subgroupBallot(true);\n";
 
        if (OPTYPE_CLUSTERED == caseDef.opType)
        {
                for (deUint32 i = 1; i <= subgroups::maxSupportedSubgroupSize(); i *= 2)
                {
-                       bdy << "  if (gl_SubgroupSize >= " << i << ")\n"
+                       bdy << "  if (gl_SubgroupSize >= " << i << "u)\n"
                                << "  {\n"
                                << "    uvec4 contribution = uvec4(0);\n"
-                               << "    const uint modID = gl_SubgroupInvocationID % 32;\n"
-                               << "    switch (gl_SubgroupInvocationID / 32)\n"
+                               << "    uint modID = gl_SubgroupInvocationID % 32u;\n"
+                               << "    switch (gl_SubgroupInvocationID / 32u)\n"
                                << "    {\n"
-                               << "    case 0: contribution.x = 1 << modID; break;\n"
-                               << "    case 1: contribution.y = 1 << modID; break;\n"
-                               << "    case 2: contribution.z = 1 << modID; break;\n"
-                               << "    case 3: contribution.w = 1 << modID; break;\n"
+                               << "    case 0u: contribution.x = 1u << modID; break;\n"
+                               << "    case 1u: contribution.y = 1u << modID; break;\n"
+                               << "    case 2u: contribution.z = 1u << modID; break;\n"
+                               << "    case 3u: contribution.w = 1u << modID; break;\n"
                                << "    }\n"
-                               << "    uvec4 result = subgroupClusteredOr(contribution, " << i << ");\n"
-                               << "    uint rootID = gl_SubgroupInvocationID & ~(" << i - 1 << ");\n"
-                               << "    for (uint i = 0; i < " << i << "; i++)\n"
+                               << "    uvec4 result = subgroupClusteredOr(contribution, " << i << "u);\n"
+                               << "    uint rootID = gl_SubgroupInvocationID & ~(" << i - 1 << "u);\n"
+                               << "    for (uint i = 0u; i < " << i << "u; i++)\n"
                                << "    {\n"
                                << "      uint nextID = rootID + i;\n"
                                << "      if (subgroupBallotBitExtract(mask, nextID) ^^ subgroupBallotBitExtract(result, nextID))\n"
                                << "      {\n"
-                               << "        tempResult = 0;\n"
+                               << "        tempResult = 0u;\n"
                                << "      }\n"
                                << "    }\n"
                                << "  }\n";
@@ -273,14 +273,14 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
        else
        {
                bdy << "  uint cluster[4] =\n"
-                       << "  {\n"
-                       << "    subgroupQuadBroadcast(gl_SubgroupInvocationID, 0),\n"
-                       << "    subgroupQuadBroadcast(gl_SubgroupInvocationID, 1),\n"
-                       << "    subgroupQuadBroadcast(gl_SubgroupInvocationID, 2),\n"
-                       << "    subgroupQuadBroadcast(gl_SubgroupInvocationID, 3)\n"
-                       << "  };\n"
-                       << "  uint rootID = gl_SubgroupInvocationID & ~0x3;\n"
-                       << "  for (uint i = 0; i < 4; i++)\n"
+                       << "  uint[](\n"
+                       << "    subgroupQuadBroadcast(gl_SubgroupInvocationID, 0u),\n"
+                       << "    subgroupQuadBroadcast(gl_SubgroupInvocationID, 1u),\n"
+                       << "    subgroupQuadBroadcast(gl_SubgroupInvocationID, 2u),\n"
+                       << "    subgroupQuadBroadcast(gl_SubgroupInvocationID, 3u)\n"
+                       << "  );\n"
+                       << "  uint rootID = gl_SubgroupInvocationID & ~0x3u;\n"
+                       << "  for (uint i = 0u; i < 4u; i++)\n"
                        << "  {\n"
                        << "    uint nextID = rootID + i;\n"
                        << "    if (subgroupBallotBitExtract(mask, nextID) && (cluster[i] != nextID))\n"
@@ -294,7 +294,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
        {
                std::ostringstream src;
 
-               src << "#version 450\n"
+               src << "${VERSION_DECL}\n"
                        << extension
                        << "layout (${LOCAL_SIZE_X}, ${LOCAL_SIZE_Y}, ${LOCAL_SIZE_Z}) in;\n"
                        << "layout(binding = 0, std430) buffer Buffer0\n"
@@ -318,7 +318,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
        {
                {
                        const string vertex =
-                               "#version 450\n"
+                               "${VERSION_DECL}\n"
                                + extension +
                                "layout(binding = 0, std430) buffer Buffer0\n"
                                "{\n"
@@ -339,7 +339,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
 
                {
                        const string tesc =
-                               "#version 450\n"
+                               "${VERSION_DECL}\n"
                                + extension +
                                "layout(vertices=1) out;\n"
                                "layout(binding = 1, std430) buffer Buffer1\n"
@@ -350,7 +350,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                                "void main (void)\n"
                                "{\n"
                                + bdy.str() +
-                               "  b1.result[gl_PrimitiveID] = 1;\n"
+                               "  b1.result[gl_PrimitiveID] = 1u;\n"
                                "  if (gl_InvocationID == 0)\n"
                                "  {\n"
                                "    gl_TessLevelOuter[0] = 1.0f;\n"
@@ -364,7 +364,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
 
                {
                        const string tese =
-                               "#version 450\n"
+                               "${VERSION_DECL}\n"
                                + extension +
                                "layout(isolines) in;\n"
                                "layout(binding = 2, std430) buffer Buffer2\n"
@@ -375,7 +375,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                                "void main (void)\n"
                                "{\n"
                                + bdy.str() +
-                               "  b2.result[gl_PrimitiveID * 2 + uint(gl_TessCoord.x + 0.5)] = 1;\n"
+                               "  b2.result[gl_PrimitiveID * 2 + int(gl_TessCoord.x + 0.5)] = 1u;\n"
                                "  float pixelSize = 2.0f/1024.0f;\n"
                                "  gl_Position = gl_in[0].gl_Position + gl_TessCoord.x * pixelSize / 2.0f;\n"
                                "}\n";
@@ -385,8 +385,8 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
 
                {
                        const string geometry =
-                               "#version 450\n"
-                               extension +
+                               // version added by addGeometryShadersFromTemplate
+                               extension +
                                "layout(${TOPOLOGY}) in;\n"
                                "layout(points, max_vertices = 1) out;\n"
                                "layout(binding = 3, std430) buffer Buffer3\n"
@@ -408,7 +408,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
 
                {
                        const string fragment =
-                               "#version 450\n"
+                               "${VERSION_DECL}\n"
                                + extension +
                                "layout(location = 0) out uint result;\n"
                                "void main (void)\n"
index 33d6692..765baaf 100755 (executable)
@@ -115,17 +115,17 @@ const std::string TestSource(CaseDefinition caseDef)
        const std::string testSource =
                "  uint temp_res;\n"
                "  uvec4 mask = subgroupBallot(true);\n"
-               "  uint id_in = data2[gl_SubgroupInvocationID] & (gl_SubgroupSize - 1);\n"
+               "  uint id_in = data2[gl_SubgroupInvocationID] & (gl_SubgroupSize - 1u);\n"
                "  " + subgroups::getFormatNameForGLSL(caseDef.format) + " op = "
                + getOpTypeName(caseDef.opType) + "(data1[gl_SubgroupInvocationID], id_in);\n"
                "  uint id = " + idTable[caseDef.opType] + ";\n"
                "  if ((id < gl_SubgroupSize) && subgroupBallotBitExtract(mask, id))\n"
                "  {\n"
-               "    temp_res = (op == data1[id]) ? 1 : 0;\n"
+               "    temp_res = (op == data1[id]) ? 1u : 0u;\n"
                "  }\n"
                "  else\n"
                "  {\n"
-               "    temp_res = 1; // Invocation we read from was inactive, so we can't verify results!\n"
+               "    temp_res = 1u; // Invocation we read from was inactive, so we can't verify results!\n"
                "  }\n";
 
        return testSource;
@@ -148,7 +148,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
        if (SHADER_STAGE_VERTEX_BIT == caseDef.shaderStage)
        {
                std::ostringstream vertexSrc;
-               vertexSrc << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n"
+               vertexSrc << "${VERSION_DECL}\n"
                        << extSource
                        << "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        << "layout(location = 0) in highp vec4 in_position;\n"
@@ -165,7 +165,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
                        << "void main (void)\n"
                        << "{\n"
                        << testSource
-                       << "  result = temp_res;\n"
+                       << "  result = float(temp_res);\n"
                        << "  gl_Position = in_position;\n"
                        << "  gl_PointSize = 1.0f;\n"
                        << "}\n";
@@ -175,7 +175,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
        {
                std::ostringstream geometry;
 
-               geometry << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n"
+               geometry << "${VERSION_DECL}\n"
                        << extSource
                        << "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        << "layout(points) in;\n"
@@ -193,7 +193,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
                        << "void main (void)\n"
                        << "{\n"
                        << testSource
-                       << "  out_color = temp_res;\n"
+                       << "  out_color = float(temp_res);\n"
                        << "  gl_Position = gl_in[0].gl_Position;\n"
                        << "  EmitVertex();\n"
                        << "  EndPrimitive();\n"
@@ -205,7 +205,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
        {
                std::ostringstream controlSource;
 
-               controlSource << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n"
+               controlSource << "${VERSION_DECL}\n"
                        << extSource
                        << "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        << "layout(vertices = 2) out;\n"
@@ -227,7 +227,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
                        << "    gl_TessLevelOuter[1] = 1.0f;\n"
                        << "  }\n"
                        << testSource
-                       << "  out_color[gl_InvocationID] = temp_res;\n"
+                       << "  out_color[gl_InvocationID] = float(temp_res);\n"
                        << "  gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position;\n"
                        << "}\n";
 
@@ -238,7 +238,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
        else if (SHADER_STAGE_TESS_EVALUATION_BIT == caseDef.shaderStage)
        {
                std::ostringstream evaluationSource;
-               evaluationSource << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n"
+               evaluationSource << "${VERSION_DECL}\n"
                        << extSource
                        << "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                        << "layout(isolines, equal_spacing, ccw ) in;\n"
@@ -255,7 +255,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
                        << "void main (void)\n"
                        << "{\n"
                        << testSource
-                       << "  out_color = temp_res;\n"
+                       << "  out_color = float(temp_res);\n"
                        << "  gl_Position = mix(gl_in[0].gl_Position, gl_in[1].gl_Position, gl_TessCoord.x);\n"
                        << "}\n";
 
@@ -270,8 +270,9 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
 
 void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
 {
+       const std::string versionSource =
+               "${VERSION_DECL}\n";
        const std::string vSource =
-               "#version 450\n"
                "#extension GL_KHR_shader_subgroup_ballot: enable\n";
        const std::string eSource =
        (OPTYPE_SHUFFLE == caseDef.opType || OPTYPE_SHUFFLE_XOR == caseDef.opType) ?
@@ -285,7 +286,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
        {
                std::ostringstream src;
 
-               src << extSource
+               src << versionSource + extSource
                        << "layout (${LOCAL_SIZE_X}, ${LOCAL_SIZE_Y}, ${LOCAL_SIZE_Z}) in;\n"
                        << "layout(binding = 0, std430) buffer Buffer0\n"
                        << "{\n"
@@ -311,7 +312,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
 
                {
                        const string vertex =
-                               extSource +
+                               versionSource + extSource +
                                "layout(binding = 0, std430) buffer Buffer0\n"
                                "{\n"
                                "  uint result[];\n"
@@ -333,7 +334,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
 
                {
                        const string tesc =
-                               extSource +
+                               versionSource + extSource +
                                "layout(vertices=1) out;\n"
                                "layout(binding = 1, std430)  buffer Buffer1\n"
                                "{\n"
@@ -358,7 +359,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
 
                {
                        const string tese =
-                               extSource +
+                               versionSource + extSource +
                                "layout(isolines) in;\n"
                                "layout(binding = 2, std430) buffer Buffer2\n"
                                "{\n"
@@ -369,7 +370,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                                "void main (void)\n"
                                "{\n"
                                + testSource +
-                               "  b2.result[gl_PrimitiveID * 2 + uint(gl_TessCoord.x + 0.5)] = temp_res;\n"
+                               "  b2.result[gl_PrimitiveID * 2 + int(gl_TessCoord.x + 0.5)] = temp_res;\n"
                                "  float pixelSize = 2.0f/1024.0f;\n"
                                "  gl_Position = gl_in[0].gl_Position + gl_TessCoord.x * pixelSize / 2.0f;\n"
                                "}\n";
@@ -379,6 +380,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
 
                {
                        const string geometry =
+                               // version is added by addGeometryShadersFromTemplate
                                extSource +
                                "layout(${TOPOLOGY}) in;\n"
                                "layout(points, max_vertices = 1) out;\n"
@@ -401,7 +403,8 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                }
                {
                        const string fragment =
-                               extSource +
+                               versionSource + extSource +
+                               "precision highp float;\n"
                                "layout(location = 0) out uint result;\n"
                                + declSource +
                                "void main (void)\n"
index 88eaee4..3c83e6f 100755 (executable)
@@ -148,8 +148,8 @@ de::MovePtr<glu::ShaderProgram> makeGraphicsPipeline(glc::Context&                          context,
        DE_UNREF(stages);                       // only used for asserts
 
        map<string, string>             templateArgs;
-//     string                                  versionDecl(getGLSLVersionDeclaration(context.getGLSLVersion()));
-//     templateArgs.insert(pair<string, string>("VERSION_DECL", versionDecl));
+       string                                  versionDecl(getGLSLVersionDeclaration(context.getGLSLVersion()));
+       templateArgs.insert(pair<string, string>("VERSION_DECL", versionDecl));
 
        string vertSource, tescSource, teseSource, geomSource, fragSource;
        if (vshader)
@@ -269,24 +269,26 @@ de::MovePtr<glu::ShaderProgram> makeComputePipeline(glc::Context& context, const
 
        tcu::StringTemplate computeTemplate(glslTemplate.sources[glu::SHADERTYPE_COMPUTE][0]);
 
-       map<string, string>             localSizeParams;
+       map<string, string>             templateArgs;
        {
                stringstream localSize;
                localSize << "local_size_x = " << localSizeX;
-               localSizeParams.insert(pair<string, string>("LOCAL_SIZE_X", localSize.str()));
+               templateArgs.insert(pair<string, string>("LOCAL_SIZE_X", localSize.str()));
        }
        {
                stringstream localSize;
                localSize << "local_size_y = " << localSizeY;
-               localSizeParams.insert(pair<string, string>("LOCAL_SIZE_Y", localSize.str()));
+               templateArgs.insert(pair<string, string>("LOCAL_SIZE_Y", localSize.str()));
        }
        {
                stringstream localSize;
                localSize << "local_size_z = " << localSizeZ;
-               localSizeParams.insert(pair<string, string>("LOCAL_SIZE_Z", localSize.str()));
+               templateArgs.insert(pair<string, string>("LOCAL_SIZE_Z", localSize.str()));
        }
+       string versionDecl(getGLSLVersionDeclaration(context.getGLSLVersion()));
+       templateArgs.insert(pair<string, string>("VERSION_DECL", versionDecl));
 
-       glu::ComputeSource cshader(glu::ComputeSource(computeTemplate.specialize(localSizeParams)));
+       glu::ComputeSource cshader(glu::ComputeSource(computeTemplate.specialize(templateArgs)));
 
        if (doShaderLog)
        {
@@ -413,7 +415,7 @@ struct Buffer : public BufferOrImage
                m_gl.bindBuffer(m_target, m_objectId);
                GLU_EXPECT_NO_ERROR(m_gl.getError(), "glBindBuffer");
 
-               ptr = m_gl.mapBuffer(m_target, GL_READ_WRITE);
+               ptr = m_gl.mapBufferRange(m_target, 0, m_sizeInBytes, GL_MAP_READ_BIT | GL_MAP_WRITE_BIT);
                GLU_EXPECT_NO_ERROR(m_gl.getError(), "glMapBuffer");
 
                m_gl.bindBuffer(m_target, 0);
@@ -542,14 +544,14 @@ std::string glc::subgroups::getSharedMemoryBallotHelper()
                        "  subgroupMemoryBarrierShared();\n"
                        "  if (vote)\n"
                        "  {\n"
-                       "    const highp uint invocationId = gl_SubgroupInvocationID % 32;\n"
-                       "    const highp uint bitToSet = 1u << invocationId;\n"
-                       "    switch (gl_SubgroupInvocationID / 32)\n"
+                       "    highp uint invocationId = gl_SubgroupInvocationID % 32u;\n"
+                       "    highp uint bitToSet = 1u << invocationId;\n"
+                       "    switch (gl_SubgroupInvocationID / 32u)\n"
                        "    {\n"
-                       "    case 0: atomicOr(superSecretComputeShaderHelper[groupOffset].x, bitToSet); break;\n"
-                       "    case 1: atomicOr(superSecretComputeShaderHelper[groupOffset].y, bitToSet); break;\n"
-                       "    case 2: atomicOr(superSecretComputeShaderHelper[groupOffset].z, bitToSet); break;\n"
-                       "    case 3: atomicOr(superSecretComputeShaderHelper[groupOffset].w, bitToSet); break;\n"
+                       "    case 0u: atomicOr(superSecretComputeShaderHelper[groupOffset].x, bitToSet); break;\n"
+                       "    case 1u: atomicOr(superSecretComputeShaderHelper[groupOffset].y, bitToSet); break;\n"
+                       "    case 2u: atomicOr(superSecretComputeShaderHelper[groupOffset].z, bitToSet); break;\n"
+                       "    case 3u: atomicOr(superSecretComputeShaderHelper[groupOffset].w, bitToSet); break;\n"
                        "    }\n"
                        "  }\n"
                        "  subgroupMemoryBarrierShared();\n"
@@ -624,7 +626,7 @@ void glc::subgroups::addNoSubgroupShader (SourceCollections& programCollection)
 {
        {
                const std::string vertNoSubgroupGLSL =
-                       "#version 450\n"
+                       "${VERSION_DECL}\n"
                        "void main (void)\n"
                        "{\n"
                        "  float pixelSize = 2.0f/1024.0f;\n"
@@ -637,7 +639,7 @@ void glc::subgroups::addNoSubgroupShader (SourceCollections& programCollection)
 
        {
                const std::string tescNoSubgroupGLSL =
-                       "#version 450\n"
+                       "${VERSION_DECL}\n"
                        "layout(vertices=1) out;\n"
                        "\n"
                        "void main (void)\n"
@@ -654,7 +656,7 @@ void glc::subgroups::addNoSubgroupShader (SourceCollections& programCollection)
 
        {
                const std::string teseNoSubgroupGLSL =
-                       "#version 450\n"
+                       "${VERSION_DECL}\n"
                        "layout(isolines) in;\n"
                        "\n"
                        "void main (void)\n"
@@ -677,7 +679,7 @@ std::string glc::subgroups::getVertShaderForStage(const ShaderStageFlags stage)
                        return "";
                case SHADER_STAGE_FRAGMENT_BIT:
                        return
-                               "#version 450\n"
+                               "${VERSION_DECL}\n"
                                "void main (void)\n"
                                "{\n"
                                "  float pixelSize = 2.0f/1024.0f;\n"
@@ -686,14 +688,14 @@ std::string glc::subgroups::getVertShaderForStage(const ShaderStageFlags stage)
                                "}\n";
                case SHADER_STAGE_GEOMETRY_BIT:
                        return
-                               "#version 450\n"
+                               "${VERSION_DECL}\n"
                                "void main (void)\n"
                                "{\n"
                                "}\n";
                case SHADER_STAGE_TESS_CONTROL_BIT:
                case SHADER_STAGE_TESS_EVALUATION_BIT:
                        return
-                               "#version 450\n"
+                               "${VERSION_DECL}\n"
                                "void main (void)\n"
                                "{\n"
                                "}\n";
@@ -826,7 +828,7 @@ std::string glc::subgroups::getFormatNameForGLSL (Format format)
 void glc::subgroups::setVertexShaderFrameBuffer (SourceCollections& programCollection)
 {
        programCollection.add("vert") << glu::VertexSource(
-               "#version 450\n"
+               "${VERSION_DECL}\n"
                "layout(location = 0) in highp vec4 in_position;\n"
                "void main (void)\n"
                "{\n"
@@ -837,8 +839,8 @@ void glc::subgroups::setVertexShaderFrameBuffer (SourceCollections& programColle
 void glc::subgroups::setFragmentShaderFrameBuffer (SourceCollections& programCollection)
 {
        programCollection.add("fragment") << glu::FragmentSource(
-               "#version 450\n"
-               "layout(location = 0) in float in_color;\n"
+               "${VERSION_DECL}\n"
+               "layout(location = 0) in highp float in_color;\n"
                "layout(location = 0) out uint out_color;\n"
                "void main()\n"
                "{\n"
@@ -849,7 +851,7 @@ void glc::subgroups::setFragmentShaderFrameBuffer (SourceCollections& programCol
 void glc::subgroups::setTesCtrlShaderFrameBuffer (SourceCollections& programCollection)
 {
        programCollection.add("tesc") << glu::TessellationControlSource(
-               "#version 450\n"
+               "${VERSION_DECL}\n"
                "#extension GL_KHR_shader_subgroup_basic: enable\n"
                "#extension GL_EXT_tessellation_shader : require\n"
                "layout(vertices = 2) out;\n"
@@ -867,7 +869,7 @@ void glc::subgroups::setTesCtrlShaderFrameBuffer (SourceCollections& programColl
 void glc::subgroups::setTesEvalShaderFrameBuffer (SourceCollections& programCollection)
 {
        programCollection.add("tese") << glu::TessellationEvaluationSource(
-               "#version 450\n"
+               "${VERSION_DECL}\n"
                "#extension GL_KHR_shader_subgroup_ballot: enable\n"
                "#extension GL_EXT_tessellation_shader : require\n"
                "layout(isolines, equal_spacing, ccw ) in;\n"
@@ -891,8 +893,8 @@ void glc::subgroups::addGeometryShadersFromTemplate (const std::string& glslTemp
        map<string, string>             pointsParams;
        pointsParams.insert(pair<string, string>("TOPOLOGY", "points"));
 
-       collection.add("geometry_lines")        << glu::GeometrySource(geometryTemplate.specialize(linesParams));
-       collection.add("geometry_points")       << glu::GeometrySource(geometryTemplate.specialize(pointsParams));
+       collection.add("geometry_lines")        << glu::GeometrySource("${VERSION_DECL}\n" + geometryTemplate.specialize(linesParams));
+       collection.add("geometry_points")       << glu::GeometrySource("${VERSION_DECL}\n" + geometryTemplate.specialize(pointsParams));
 }
 
 void initializeMemory(deqp::Context& context, glw::GLvoid *hostPtr, subgroups::SSBOData& data)
index dbf8d1d..ab7dc22 100755 (executable)
@@ -122,7 +122,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
 
        if (SHADER_STAGE_FRAGMENT_BIT == caseDef.shaderStage)
        {
-               const string vertex     = "#version 450\n"
+               const string vertex     = "${VERSION_DECL}\n"
                        "void main (void)\n"
                        "{\n"
                        "  vec2 uv = vec2(float(gl_VertexID & 1), float((gl_VertexID >> 1) & 1));\n"
@@ -137,36 +137,36 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
        const string source =
                (OPTYPE_ALL == caseDef.opType) ?
                        "  result = " + getOpTypeName(caseDef.opType) +
-                       "(true) ? 0x1 : 0;\n"
+                       "(true) ? 0x1u : 0u;\n"
                        "  result |= " + getOpTypeName(caseDef.opType) +
-                       "(false) ? 0 : 0x1A;\n"
-                       "  result |= 0x4;\n"
+                       "(false) ? 0u : 0x1Au;\n"
+                       "  result |= 0x4u;\n"
                : (OPTYPE_ANY == caseDef.opType) ?
                                "  result = " + getOpTypeName(caseDef.opType) +
-                               "(true) ? 0x1 : 0;\n"
+                               "(true) ? 0x1u : 0u;\n"
                                "  result |= " + getOpTypeName(caseDef.opType) +
-                               "(false) ? 0 : 0x1A;\n"
-                               "  result |= 0x4;\n"
+                               "(false) ? 0u : 0x1Au;\n"
+                               "  result |= 0x4u;\n"
                : (OPTYPE_ALLEQUAL == caseDef.opType) ?
                                "  " + subgroups::getFormatNameForGLSL(caseDef.format) + " valueEqual = " + subgroups::getFormatNameForGLSL(caseDef.format) + "(1.25 * float(data[gl_SubgroupInvocationID]) + 5.0);\n" +
-                               "  " + subgroups::getFormatNameForGLSL(caseDef.format) + " valueNoEqual = " + subgroups::getFormatNameForGLSL(caseDef.format) + (formatIsBoolean ? "(subgroupElect())\n;" : "(12.0 * float(data[gl_SubgroupInvocationID]) + gl_SubgroupInvocationID);\n") +
+                               "  " + subgroups::getFormatNameForGLSL(caseDef.format) + " valueNoEqual = " + subgroups::getFormatNameForGLSL(caseDef.format) + (formatIsBoolean ? "(subgroupElect())\n;" : "(12.0 * float(data[gl_SubgroupInvocationID]) + float(gl_SubgroupInvocationID));\n") +
                                "  result = " + getOpTypeName(caseDef.opType) + "("
-                               + subgroups::getFormatNameForGLSL(caseDef.format) + "(1)) ? 0x1 : 0;\n"
+                               + subgroups::getFormatNameForGLSL(caseDef.format) + "(1)) ? 0x1u : 0u;\n"
                                "  result |= " + getOpTypeName(caseDef.opType) +
-                               "(gl_SubgroupInvocationID) ? 0 : 0x2;\n"
+                               "(gl_SubgroupInvocationID) ? 0u : 0x2u;\n"
                                "  result |= " + getOpTypeName(caseDef.opType) +
-                               "(data[0]) ? 0x4 : 0;\n"
+                               "(data[0]) ? 0x4u : 0u;\n"
                                "  result |= " + getOpTypeName(caseDef.opType) +
-                               "(valueEqual) ? 0x8 : 0x0;\n"
+                               "(valueEqual) ? 0x8u : 0x0u;\n"
                                "  result |= " + getOpTypeName(caseDef.opType) +
-                               "(valueNoEqual) ? 0x0 : 0x10;\n"
-                               "  if (subgroupElect()) result |= 0x2 | 0x10;\n"
+                               "(valueNoEqual) ? 0x0u : 0x10u;\n"
+                               "  if (subgroupElect()) result |= 0x2u | 0x10u;\n"
                : "";
 
        if (SHADER_STAGE_VERTEX_BIT == caseDef.shaderStage)
        {
                std::ostringstream vertexSrc;
-               vertexSrc << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n"
+               vertexSrc << "${VERSION_DECL}\n"
                        << "#extension GL_KHR_shader_subgroup_vote: enable\n"
                        << "layout(location = 0) out float out_color;\n"
                        << "layout(location = 0) in highp vec4 in_position;\n"
@@ -190,7 +190,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
        {
                std::ostringstream geometry;
 
-               geometry << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n"
+               geometry << "${VERSION_DECL}\n"
                        << "#extension GL_KHR_shader_subgroup_vote: enable\n"
                        << "layout(points) in;\n"
                        << "layout(points, max_vertices = 1) out;\n"
@@ -215,7 +215,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
        else if (SHADER_STAGE_TESS_CONTROL_BIT == caseDef.shaderStage)
        {
                std::ostringstream controlSource;
-               controlSource << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n"
+               controlSource << "${VERSION_DECL}\n"
                        << "#extension GL_KHR_shader_subgroup_vote: enable\n"
                        << "layout(vertices = 2) out;\n"
                        << "layout(location = 0) out float out_color[];\n"
@@ -243,7 +243,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
        else if (SHADER_STAGE_TESS_EVALUATION_BIT == caseDef.shaderStage)
        {
                std::ostringstream evaluationSource;
-               evaluationSource << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n"
+               evaluationSource << "${VERSION_DECL}\n"
                        << "#extension GL_KHR_shader_subgroup_vote: enable\n"
                        << "#extension GL_EXT_tessellation_shader : require\n"
                        << "layout(isolines, equal_spacing, ccw ) in;\n"
@@ -256,7 +256,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
                        << "void main (void)\n"
                        << "{\n"
                        << "  uint result;\n"
-                       << "  highp uint offset = gl_PrimitiveID * 2 + uint(gl_TessCoord.x + 0.5);\n"
+                       << "  highp uint offset = uint(gl_PrimitiveID) * 2u + uint(gl_TessCoord.x + 0.5);\n"
                        << source
                        << "  out_color = float(result);\n"
                        << "  gl_Position = mix(gl_in[0].gl_Position, gl_in[1].gl_Position, gl_TessCoord.x);\n"
@@ -270,35 +270,36 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
                const string sourceFragment =
                (OPTYPE_ALL == caseDef.opType) ?
                        "  result |= " + getOpTypeName(caseDef.opType) +
-                       "(!gl_HelperInvocation) ? 0x0 : 0x1;\n"
+                       "(!gl_HelperInvocation) ? 0x0u : 0x1u;\n"
                        "  result |= " + getOpTypeName(caseDef.opType) +
-                       "(false) ? 0 : 0x1A;\n"
-                       "  result |= 0x4;\n"
+                       "(false) ? 0u : 0x1Au;\n"
+                       "  result |= 0x4u;\n"
                : (OPTYPE_ANY == caseDef.opType) ?
                                "  result |= " + getOpTypeName(caseDef.opType) +
-                               "(gl_HelperInvocation) ? 0x1 : 0x0;\n"
+                               "(gl_HelperInvocation) ? 0x1u : 0x0u;\n"
                                "  result |= " + getOpTypeName(caseDef.opType) +
-                               "(false) ? 0 : 0x1A;\n"
-                               "  result |= 0x4;\n"
+                               "(false) ? 0u : 0x1Au;\n"
+                               "  result |= 0x4u;\n"
                : (OPTYPE_ALLEQUAL == caseDef.opType) ?
                                "  " + subgroups::getFormatNameForGLSL(caseDef.format) + " valueEqual = " + subgroups::getFormatNameForGLSL(caseDef.format) + "(1.25 * float(data[gl_SubgroupInvocationID]) + 5.0);\n" +
-                               "  " + subgroups::getFormatNameForGLSL(caseDef.format) + " valueNoEqual = " + subgroups::getFormatNameForGLSL(caseDef.format) + (formatIsBoolean ? "(subgroupElect());\n" : "(12.0 * float(data[gl_SubgroupInvocationID]) + int(gl_FragCoord.x*gl_SubgroupInvocationID));\n") +
+                               "  " + subgroups::getFormatNameForGLSL(caseDef.format) + " valueNoEqual = " + subgroups::getFormatNameForGLSL(caseDef.format) + (formatIsBoolean ? "(subgroupElect());\n" : "(12.0 * float(data[gl_SubgroupInvocationID]) + gl_FragCoord.x * float(gl_SubgroupInvocationID));\n") +
                                "  result |= " + getOpTypeName(caseDef.opType) + "("
-                               + subgroups::getFormatNameForGLSL(caseDef.format) + "(1)) ? 0x10 : 0;\n"
+                               + subgroups::getFormatNameForGLSL(caseDef.format) + "(1)) ? 0x10u : 0u;\n"
                                "  result |= " + getOpTypeName(caseDef.opType) +
-                               "(gl_SubgroupInvocationID) ? 0 : 0x2;\n"
+                               "(gl_SubgroupInvocationID) ? 0u : 0x2u;\n"
                                "  result |= " + getOpTypeName(caseDef.opType) +
-                               "(data[0]) ? 0x4 : 0;\n"
+                               "(data[0]) ? 0x4u : 0u;\n"
                                "  result |= " + getOpTypeName(caseDef.opType) +
-                               "(valueEqual) ? 0x8 : 0x0;\n"
+                               "(valueEqual) ? 0x8u : 0x0u;\n"
                                "  result |= " + getOpTypeName(caseDef.opType) +
-                               "(gl_HelperInvocation) ? 0x0 : 0x1;\n"
-                               "  if (subgroupElect()) result |= 0x2 | 0x10;\n"
+                               "(gl_HelperInvocation) ? 0x0u : 0x1u;\n"
+                               "  if (subgroupElect()) result |= 0x2u | 0x10u;\n"
                : "";
 
                std::ostringstream fragmentSource;
-               fragmentSource << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n"
+               fragmentSource << "${VERSION_DECL}\n"
                << "#extension GL_KHR_shader_subgroup_vote: enable\n"
+               << "precision highp float;\n"
                << "layout(location = 0) out uint out_color;\n"
                << "layout(set = 0, binding = 0) uniform Buffer1\n"
                << "{\n"
@@ -308,14 +309,14 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti
                << "void main()\n"
                << "{\n"
                << "  uint result = 0u;\n"
-               << "  if (dFdx(gl_SubgroupInvocationID * gl_FragCoord.x * gl_FragCoord.y) - dFdy(gl_SubgroupInvocationID * gl_FragCoord.x * gl_FragCoord.y) > 0.0f)\n"
+               << "  if (dFdx(float(gl_SubgroupInvocationID) * gl_FragCoord.x * gl_FragCoord.y) - dFdy(float(gl_SubgroupInvocationID) * gl_FragCoord.x * gl_FragCoord.y) > 0.0f)\n"
                << "  {\n"
-               << "    result |= 0x20;\n" // to be sure that compiler doesn't remove dFdx and dFdy executions
+               << "    result |= 0x20u;\n" // to be sure that compiler doesn't remove dFdx and dFdy executions
                << "  }\n"
                << "  bool helper = subgroupAny(gl_HelperInvocation);\n"
                << "  if (helper)\n"
                << "  {\n"
-               << "    result |= 0x40;\n"
+               << "    result |= 0x40u;\n"
                << "  }\n"
                << sourceFragment
                << "  out_color = result;\n"
@@ -337,7 +338,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
        {
                std::ostringstream src;
 
-               src << "#version 450\n"
+               src << "${VERSION_DECL}\n"
                        << "#extension GL_KHR_shader_subgroup_vote: enable\n"
                        << "layout (${LOCAL_SIZE_X}, ${LOCAL_SIZE_Y}, ${LOCAL_SIZE_Z}) in;\n"
                        << "layout(binding = 0, std430) buffer Buffer1\n"
@@ -358,37 +359,37 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                if (OPTYPE_ALL == caseDef.opType)
                {
                        src << "  result[offset] = " << getOpTypeName(caseDef.opType)
-                               << "(true) ? 0x1 : 0;\n"
+                               << "(true) ? 0x1u : 0u;\n"
                                << "  result[offset] |= " << getOpTypeName(caseDef.opType)
-                               << "(false) ? 0 : 0x1A;\n"
+                               << "(false) ? 0u : 0x1Au;\n"
                                << "  result[offset] |= " << getOpTypeName(caseDef.opType)
-                               << "(data[gl_SubgroupInvocationID] > 0) ? 0x4 : 0;\n";
+                               << "(data[gl_SubgroupInvocationID] > 0u) ? 0x4u : 0u;\n";
                }
                else if (OPTYPE_ANY == caseDef.opType)
                {
                        src << "  result[offset] = " << getOpTypeName(caseDef.opType)
-                               << "(true) ? 0x1 : 0;\n"
+                               << "(true) ? 0x1u : 0u;\n"
                                << "  result[offset] |= " << getOpTypeName(caseDef.opType)
-                               << "(false) ? 0 : 0x1A;\n"
+                               << "(false) ? 0u : 0x1Au;\n"
                                << "  result[offset] |= " << getOpTypeName(caseDef.opType)
-                               << "(data[gl_SubgroupInvocationID] == data[0]) ? 0x4 : 0;\n";
+                               << "(data[gl_SubgroupInvocationID] == data[0]) ? 0x4u : 0u;\n";
                }
 
                else if (OPTYPE_ALLEQUAL == caseDef.opType)
                {
                        src << "  " << subgroups::getFormatNameForGLSL(caseDef.format) <<" valueEqual = " << subgroups::getFormatNameForGLSL(caseDef.format) << "(1.25 * float(data[gl_SubgroupInvocationID]) + 5.0);\n"
-                               << "  " << subgroups::getFormatNameForGLSL(caseDef.format) <<" valueNoEqual = " << subgroups::getFormatNameForGLSL(caseDef.format) << (formatIsBoolean ? "(subgroupElect());\n" : "(12.0 * float(data[gl_SubgroupInvocationID]) + offset);\n")
+                               << "  " << subgroups::getFormatNameForGLSL(caseDef.format) <<" valueNoEqual = " << subgroups::getFormatNameForGLSL(caseDef.format) << (formatIsBoolean ? "(subgroupElect());\n" : "(12.0 * float(data[gl_SubgroupInvocationID]) + float(offset));\n")
                                <<"  result[offset] = " << getOpTypeName(caseDef.opType) << "("
-                               << subgroups::getFormatNameForGLSL(caseDef.format) << "(1)) ? 0x1 : 0x0;\n"
+                               << subgroups::getFormatNameForGLSL(caseDef.format) << "(1)) ? 0x1u : 0x0u;\n"
                                << "  result[offset] |= " << getOpTypeName(caseDef.opType)
-                               << "(gl_SubgroupInvocationID) ? 0x0 : 0x2;\n"
+                               << "(gl_SubgroupInvocationID) ? 0x0u : 0x2u;\n"
                                << "  result[offset] |= " << getOpTypeName(caseDef.opType)
-                               << "(data[0]) ? 0x4 : 0x0;\n"
+                               << "(data[0]) ? 0x4u : 0x0u;\n"
                                << "  result[offset] |= "<< getOpTypeName(caseDef.opType)
-                               << "(valueEqual) ? 0x8 : 0x0;\n"
+                               << "(valueEqual) ? 0x8u : 0x0u;\n"
                                << "  result[offset] |= "<< getOpTypeName(caseDef.opType)
-                               << "(valueNoEqual) ? 0x0 : 0x10;\n"
-                               << "  if (subgroupElect()) result[offset] |= 0x2 | 0x10;\n";
+                               << "(valueNoEqual) ? 0x0u : 0x10u;\n"
+                               << "  if (subgroupElect()) result[offset] |= 0x2u | 0x10u;\n";
                }
 
                src << "}\n";
@@ -400,30 +401,30 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                const string source =
                (OPTYPE_ALL == caseDef.opType) ?
                        "  b${SSBO1}.result[offset] = " + getOpTypeName(caseDef.opType) +
-                       "(true) ? 0x1 : 0;\n"
+                       "(true) ? 0x1u : 0u;\n"
                        "  b${SSBO1}.result[offset] |= " + getOpTypeName(caseDef.opType) +
-                       "(false) ? 0 : 0x1A;\n"
-                       "  b${SSBO1}.result[offset] |= 0x4;\n"
+                       "(false) ? 0u : 0x1Au;\n"
+                       "  b${SSBO1}.result[offset] |= 0x4u;\n"
                : (OPTYPE_ANY == caseDef.opType) ?
                                "  b${SSBO1}.result[offset] = " + getOpTypeName(caseDef.opType) +
-                               "(true) ? 0x1 : 0;\n"
+                               "(true) ? 0x1u : 0u;\n"
                                "  b${SSBO1}.result[offset] |= " + getOpTypeName(caseDef.opType) +
-                               "(false) ? 0 : 0x1A;\n"
-                               "  b${SSBO1}.result[offset] |= 0x4;\n"
+                               "(false) ? 0u : 0x1Au;\n"
+                               "  b${SSBO1}.result[offset] |= 0x4u;\n"
                : (OPTYPE_ALLEQUAL == caseDef.opType) ?
                                "  " + subgroups::getFormatNameForGLSL(caseDef.format) + " valueEqual = " + subgroups::getFormatNameForGLSL(caseDef.format) + "(1.25 * float(data[gl_SubgroupInvocationID]) + 5.0);\n" +
-                               "  " + subgroups::getFormatNameForGLSL(caseDef.format) + " valueNoEqual = " + subgroups::getFormatNameForGLSL(caseDef.format) + (formatIsBoolean ? "(subgroupElect());\n" : "(12.0 * float(data[gl_SubgroupInvocationID]) + gl_SubgroupInvocationID);\n") +
+                               "  " + subgroups::getFormatNameForGLSL(caseDef.format) + " valueNoEqual = " + subgroups::getFormatNameForGLSL(caseDef.format) + (formatIsBoolean ? "(subgroupElect());\n" : "(12.0 * float(data[gl_SubgroupInvocationID]) + float(gl_SubgroupInvocationID));\n") +
                                "  b${SSBO1}.result[offset] = " + getOpTypeName(caseDef.opType) + "("
-                               + subgroups::getFormatNameForGLSL(caseDef.format) + "(1)) ? 0x1 : 0;\n"
+                               + subgroups::getFormatNameForGLSL(caseDef.format) + "(1)) ? 0x1u : 0u;\n"
                                "  b${SSBO1}.result[offset] |= " + getOpTypeName(caseDef.opType) +
-                               "(gl_SubgroupInvocationID) ? 0 : 0x2;\n"
+                               "(gl_SubgroupInvocationID) ? 0u : 0x2u;\n"
                                "  b${SSBO1}.result[offset] |= " + getOpTypeName(caseDef.opType) +
-                               "(data[0]) ? 0x4 : 0;\n"
+                               "(data[0]) ? 0x4u : 0u;\n"
                                "  b${SSBO1}.result[offset] |= " + getOpTypeName(caseDef.opType) +
-                               "(valueEqual) ? 0x8 : 0x0;\n"
+                               "(valueEqual) ? 0x8u : 0x0u;\n"
                                "  b${SSBO1}.result[offset] |= " + getOpTypeName(caseDef.opType) +
-                               "(valueNoEqual) ? 0x0 : 0x10;\n"
-                               "  if (subgroupElect()) b${SSBO1}.result[offset] |= 0x2 | 0x10;\n"
+                               "(valueNoEqual) ? 0x0u : 0x10u;\n"
+                               "  if (subgroupElect()) b${SSBO1}.result[offset] |= 0x2u | 0x10u;\n"
                : "";
 
                tcu::StringTemplate sourceTemplate(source);
@@ -435,7 +436,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                        bufferNameMapping.insert(pair<string, string>("SSBO1", "0"));
 
                        const string vertex =
-                               "#version 450\n"
+                               "${VERSION_DECL}\n"
                                "#extension GL_KHR_shader_subgroup_vote: enable\n"
                                "layout(binding = 0, std430) buffer Buffer0\n"
                                "{\n"
@@ -448,7 +449,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                                "\n"
                                "void main (void)\n"
                                "{\n"
-                               "  highp uint offset = gl_VertexID;\n"
+                               "  highp int offset = gl_VertexID;\n"
                                + sourceTemplate.specialize(bufferNameMapping) +
                                "  float pixelSize = 2.0f/1024.0f;\n"
                                "  float pixelPosition = pixelSize/2.0f - 1.0f;\n"
@@ -463,7 +464,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                        bufferNameMapping.insert(pair<string, string>("SSBO1", "1"));
 
                        const string tesc =
-                               "#version 450\n"
+                               "${VERSION_DECL}\n"
                                "#extension GL_KHR_shader_subgroup_vote: enable\n"
                                "layout(vertices=1) out;\n"
                                "layout(binding = 1, std430) buffer Buffer1\n"
@@ -477,7 +478,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                                "\n"
                                "void main (void)\n"
                                "{\n"
-                               "  highp uint offset = gl_PrimitiveID;\n"
+                               "  highp int offset = gl_PrimitiveID;\n"
                                + sourceTemplate.specialize(bufferNameMapping) +
                                "  if (gl_InvocationID == 0)\n"
                                "  {\n"
@@ -495,7 +496,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                        bufferNameMapping.insert(pair<string, string>("SSBO1", "2"));
 
                        const string tese =
-                               "#version 450\n"
+                               "${VERSION_DECL}\n"
                                "#extension GL_KHR_shader_subgroup_vote: enable\n"
                                "layout(isolines) in;\n"
                                "layout(binding = 2, std430) buffer Buffer2\n"
@@ -509,7 +510,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                                "\n"
                                "void main (void)\n"
                                "{\n"
-                               "  highp uint offset = gl_PrimitiveID * 2 + uint(gl_TessCoord.x + 0.5);\n"
+                               "  highp uint offset = uint(gl_PrimitiveID * 2) + uint(gl_TessCoord.x + 0.5);\n"
                                + sourceTemplate.specialize(bufferNameMapping) +
                                "  float pixelSize = 2.0f/1024.0f;\n"
                                "  gl_Position = gl_in[0].gl_Position + gl_TessCoord.x * pixelSize / 2.0f;\n"
@@ -523,7 +524,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                        bufferNameMapping.insert(pair<string, string>("SSBO1", "3"));
 
                        const string geometry =
-                               "#version 450\n"
+                               // version string added by addGeometryShadersFromTemplate
                                "#extension GL_KHR_shader_subgroup_vote: enable\n"
                                "layout(${TOPOLOGY}) in;\n"
                                "layout(points, max_vertices = 1) out;\n"
@@ -538,7 +539,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                                "\n"
                                "void main (void)\n"
                                "{\n"
-                               "  highp uint offset = gl_PrimitiveIDIn;\n"
+                               "  highp int offset = gl_PrimitiveIDIn;\n"
                                + sourceTemplate.specialize(bufferNameMapping) +
                                "  gl_Position = gl_in[0].gl_Position;\n"
                                "  EmitVertex();\n"
@@ -552,34 +553,35 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
                        const string sourceFragment =
                        (OPTYPE_ALL == caseDef.opType) ?
                                "  result = " + getOpTypeName(caseDef.opType) +
-                               "(true) ? 0x1 : 0;\n"
+                               "(true) ? 0x1u : 0u;\n"
                                "  result |= " + getOpTypeName(caseDef.opType) +
-                               "(false) ? 0 : 0x1A;\n"
-                               "  result |= 0x4;\n"
+                               "(false) ? 0u : 0x1Au;\n"
+                               "  result |= 0x4u;\n"
                        : (OPTYPE_ANY == caseDef.opType) ?
                                        "  result = " + getOpTypeName(caseDef.opType) +
-                                       "(true) ? 0x1 : 0;\n"
+                                       "(true) ? 0x1u : 0u;\n"
                                        "  result |= " + getOpTypeName(caseDef.opType) +
-                                       "(false) ? 0 : 0x1A;\n"
-                                       "  result |= 0x4;\n"
+                                       "(false) ? 0u : 0x1Au;\n"
+                                       "  result |= 0x4u;\n"
                        : (OPTYPE_ALLEQUAL == caseDef.opType) ?
                                        "  " + subgroups::getFormatNameForGLSL(caseDef.format) + " valueEqual = " + subgroups::getFormatNameForGLSL(caseDef.format) + "(1.25 * float(data[gl_SubgroupInvocationID]) + 5.0);\n" +
-                                       "  " + subgroups::getFormatNameForGLSL(caseDef.format) + " valueNoEqual = " + subgroups::getFormatNameForGLSL(caseDef.format) + (formatIsBoolean ? "(subgroupElect());\n" : "(12.0 * float(data[gl_SubgroupInvocationID]) + int(gl_FragCoord.x*gl_SubgroupInvocationID));\n") +
+                                       "  " + subgroups::getFormatNameForGLSL(caseDef.format) + " valueNoEqual = " + subgroups::getFormatNameForGLSL(caseDef.format) + (formatIsBoolean ? "(subgroupElect());\n" : "(12.0 * float(data[gl_SubgroupInvocationID]) + gl_FragCoord.x * float(gl_SubgroupInvocationID));\n") +
                                        "  result = " + getOpTypeName(caseDef.opType) + "("
-                                       + subgroups::getFormatNameForGLSL(caseDef.format) + "(1)) ? 0x1 : 0;\n"
+                                       + subgroups::getFormatNameForGLSL(caseDef.format) + "(1)) ? 0x1u : 0u;\n"
                                        "  result |= " + getOpTypeName(caseDef.opType) +
-                                       "(gl_SubgroupInvocationID) ? 0 : 0x2;\n"
+                                       "(gl_SubgroupInvocationID) ? 0u : 0x2u;\n"
                                        "  result |= " + getOpTypeName(caseDef.opType) +
-                                       "(data[0]) ? 0x4 : 0;\n"
+                                       "(data[0]) ? 0x4u : 0u;\n"
                                        "  result |= " + getOpTypeName(caseDef.opType) +
-                                       "(valueEqual) ? 0x8 : 0x0;\n"
+                                       "(valueEqual) ? 0x8u : 0x0u;\n"
                                        "  result |= " + getOpTypeName(caseDef.opType) +
-                                       "(valueNoEqual) ? 0x0 : 0x10;\n"
-                                       "  if (subgroupElect()) result |= 0x2 | 0x10;\n"
+                                       "(valueNoEqual) ? 0x0u : 0x10u;\n"
+                                       "  if (subgroupElect()) result |= 0x2u | 0x10u;\n"
                        : "";
                        const string fragment =
-                               "#version 450\n"
+                               "${VERSION_DECL}\n"
                                "#extension GL_KHR_shader_subgroup_vote: enable\n"
+                               "precision highp float;\n"
                                "layout(location = 0) out uint result;\n"
                                "layout(binding = 4, std430) readonly buffer Buffer4\n"
                                "{\n"
index 72570af..d020d38 100644 (file)
@@ -45,6 +45,8 @@
 #include "glwFunctions.hpp"
 #include "tcuTestLog.hpp"
 
+#include "../common/subgroups/glcSubgroupsTests.hpp"
+
 #include "../glesext/draw_buffers_indexed/esextcDrawBuffersIndexedTests.hpp"
 #include "../glesext/geometry_shader/esextcGeometryShaderTests.hpp"
 #include "../glesext/gpu_shader5/esextcGPUShader5Tests.hpp"
@@ -166,6 +168,10 @@ void ES32TestPackage::init(void)
                coreGroup->addChild(new glcts::CopyImageTests(getContext()));
                coreGroup->addChild(new glcts::InternalformatTests(getContext()));
                addChild(coreGroup);
+
+               tcu::TestCaseGroup*  khrGroup = new tcu::TestCaseGroup(getTestContext(), "khr", "");
+               khrGroup->addChild(new glc::subgroups::GlSubgroupTests(getContext()));
+               addChild(khrGroup);
        }
        catch (...)
        {