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
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
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
}
else if (isUnsigned)
{
- return subgroups::getFormatNameForGLSL(format) + "(0)";
+ return subgroups::getFormatNameForGLSL(format) + "(0u)";
}
else
{
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:
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:
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"
<< " }\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"
<< " }\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"
{
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"
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"
{
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"
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:
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:
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;
}
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"
" 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"
" 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"
{
{
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"
{
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"
{
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"
"{\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";
{
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"
{
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"
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";
}
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"
<< " 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"
<< " 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();
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"
{
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"
{
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"
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"
{
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"
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"
"}\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"
"}\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"
"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"
"}\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"
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)
{
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)"
<< " 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)"
<< " 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;
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"
{
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"
{
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"
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"
{
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"
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"
"}\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"
"}\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"
"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"
"}\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"
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"
"\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"
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"
"\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"
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"
" 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";
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"
"\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";
{
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"
<< " 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";
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"
"\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"
"}\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"
"\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"
"}\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"
"\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"
"\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"
"}\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"
"};\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";
#include "glcSubgroupsBasicTests.hpp"
#include "glcSubgroupsTestsUtils.hpp"
-#include "gluContextInfo.hpp"
#include <string>
#include <vector>
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"
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"
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"
"{\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"
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"
"{\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"
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"
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"
" }\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"
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"
" }\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"
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"
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"
<< "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"
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"
<< (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"
{
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"
<< (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"
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"
<< " 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"
<< (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"
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"
<< (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"
<< " }\n"
<< " if (subgroupElect())\n"
<< " {\n"
- << " id = gl_InvocationID;\n"
+ << " id = uint(gl_InvocationID);\n"
<< " }\n"
<< " id = subgroupBroadcastFirst(id);\n"
<< " uint tempResult = 0u;\n"
<< " 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"
{
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"
<< " 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";
{
{
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"
<< "{\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"
{
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"
<< "{\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"
{
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"
<< "{\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"
}
{
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"
<< "{\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"
{
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"
<< " 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());
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";
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"
<< "{\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"
<< " 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";
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"
"{\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"
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"
"{\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"
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"
"{\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);
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"
"{\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"
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"
"{\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";
{
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();
}
{
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"
{
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"
{
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"
{
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"
{
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"
{
{
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"
{
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"
{
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"
"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";
{
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"
{
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"
{
{
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);
}
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"
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"
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"
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"
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"
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"
{
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"
{
{
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"
{
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"
{
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"
"\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";
{
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"
{
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"
}
else if (isUnsigned)
{
- return subgroups::getFormatNameForGLSL(format) + "(0)";
+ return subgroups::getFormatNameForGLSL(format) + "(0u)";
}
else
{
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"
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"
{
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"
{
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"
{
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"
{
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"
"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());
{
{
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"
"{\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"
{
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"
"{\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"
{
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"
"{\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";
{
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"
"{\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"
{
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"
"{\n"
" uvec4 mask = subgroupBallot(true);\n"
+ bdy +
- " result = tempResult ? 1 : 0;\n"
+ " result = tempResult ? 1u : 0u;\n"
"}\n";
programCollection.add("fragment") << glu::FragmentSource(fragment);
}
}
else if (isUnsigned)
{
- return subgroups::getFormatNameForGLSL(format) + "(0)";
+ return subgroups::getFormatNameForGLSL(format) + "(0u)";
}
else
{
// 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.
" " + 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
" 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"
;
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"
{
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"
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"
{
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"
{
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"
{
{
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"
{
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"
{
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"
"{\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";
{
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"
{
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"
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"
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"
{
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"
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"
{
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"
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"
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"
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"
{
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"
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";
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"
+ 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"
{
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"
+ 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"
{
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"
+ 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"
{
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"
+ 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"
{
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"
+ 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);
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";
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"
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"
{
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"
{
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"
{
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"
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";
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"
{
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"
{
{
const string vertex =
- "#version 450\n"
+ "${VERSION_DECL}\n"
+ extension +
"layout(binding = 0, std430) buffer Buffer0\n"
"{\n"
{
const string tesc =
- "#version 450\n"
+ "${VERSION_DECL}\n"
+ extension +
"layout(vertices=1) out;\n"
"layout(binding = 1, std430) buffer Buffer1\n"
"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"
{
const string tese =
- "#version 450\n"
+ "${VERSION_DECL}\n"
+ extension +
"layout(isolines) in;\n"
"layout(binding = 2, std430) buffer Buffer2\n"
"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";
{
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"
{
const string fragment =
- "#version 450\n"
+ "${VERSION_DECL}\n"
+ extension +
"layout(location = 0) out uint result;\n"
"void main (void)\n"
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;
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"
<< "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";
{
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"
<< "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"
{
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"
<< " 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";
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"
<< "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";
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) ?
{
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"
{
const string vertex =
- extSource +
+ versionSource + extSource +
"layout(binding = 0, std430) buffer Buffer0\n"
"{\n"
" uint result[];\n"
{
const string tesc =
- extSource +
+ versionSource + extSource +
"layout(vertices=1) out;\n"
"layout(binding = 1, std430) buffer Buffer1\n"
"{\n"
{
const string tese =
- extSource +
+ versionSource + extSource +
"layout(isolines) in;\n"
"layout(binding = 2, std430) buffer Buffer2\n"
"{\n"
"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";
{
const string geometry =
+ // version is added by addGeometryShadersFromTemplate
extSource +
"layout(${TOPOLOGY}) in;\n"
"layout(points, max_vertices = 1) out;\n"
}
{
const string fragment =
- extSource +
+ versionSource + extSource +
+ "precision highp float;\n"
"layout(location = 0) out uint result;\n"
+ declSource +
"void main (void)\n"
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)
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)
{
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);
" 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"
{
{
const std::string vertNoSubgroupGLSL =
- "#version 450\n"
+ "${VERSION_DECL}\n"
"void main (void)\n"
"{\n"
" float pixelSize = 2.0f/1024.0f;\n"
{
const std::string tescNoSubgroupGLSL =
- "#version 450\n"
+ "${VERSION_DECL}\n"
"layout(vertices=1) out;\n"
"\n"
"void main (void)\n"
{
const std::string teseNoSubgroupGLSL =
- "#version 450\n"
+ "${VERSION_DECL}\n"
"layout(isolines) in;\n"
"\n"
"void main (void)\n"
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"
"}\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";
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"
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"
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"
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"
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)
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"
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"
{
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"
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"
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"
<< "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"
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"
<< "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"
{
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"
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";
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);
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"
"\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"
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"
"\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"
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"
"\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"
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"
"\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"
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"
#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"
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 (...)
{