From: Daniel Koch Date: Thu, 28 Mar 2019 14:59:01 +0000 (-0400) Subject: Enable subgroup tests for ES X-Git-Tag: upstream/1.3.5~1943^2~6 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4a264641e436c83e6cbccc67d0493305752ec177;p=platform%2Fupstream%2FVK-GL-CTS.git Enable subgroup tests for ES 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 --- diff --git a/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.5.x/gles32-khr-master.txt b/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.5.x/gles32-khr-master.txt index 0e615a8..3cd01d7 100644 --- a/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.5.x/gles32-khr-master.txt +++ b/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.5.x/gles32-khr-master.txt @@ -1072,3 +1072,6056 @@ KHR-GLES32.core.internalformat.copy_tex_image.rgb8 KHR-GLES32.core.internalformat.renderbuffer.rgba8 KHR-GLES32.core.internalformat.renderbuffer.rgb8 KHR-GLES32.core.internalformat.renderbuffer.rgb5_a1 +KHR-GLES32.khr.subgroups.builtin_var.graphics.subgroupsize +KHR-GLES32.khr.subgroups.builtin_var.graphics.subgroupinvocationid +KHR-GLES32.khr.subgroups.builtin_var.compute.subgroupsize_compute +KHR-GLES32.khr.subgroups.builtin_var.compute.subgroupinvocationid_compute +KHR-GLES32.khr.subgroups.builtin_var.compute.numsubgroups +KHR-GLES32.khr.subgroups.builtin_var.compute.subgroupid +KHR-GLES32.khr.subgroups.builtin_var.framebuffer.subgroupsize_vertex +KHR-GLES32.khr.subgroups.builtin_var.framebuffer.subgroupsize_tess_eval +KHR-GLES32.khr.subgroups.builtin_var.framebuffer.subgroupsize_tess_control +KHR-GLES32.khr.subgroups.builtin_var.framebuffer.subgroupsize_geometry +KHR-GLES32.khr.subgroups.builtin_var.framebuffer.subgroupinvocationid_vertex +KHR-GLES32.khr.subgroups.builtin_var.framebuffer.subgroupinvocationid_tess_eval +KHR-GLES32.khr.subgroups.builtin_var.framebuffer.subgroupinvocationid_tess_control +KHR-GLES32.khr.subgroups.builtin_var.framebuffer.subgroupinvocationid_geometry +KHR-GLES32.khr.subgroups.builtin_mask_var.graphics.subgroupeqmask +KHR-GLES32.khr.subgroups.builtin_mask_var.graphics.subgroupgemask +KHR-GLES32.khr.subgroups.builtin_mask_var.graphics.subgroupgtmask +KHR-GLES32.khr.subgroups.builtin_mask_var.graphics.subgrouplemask +KHR-GLES32.khr.subgroups.builtin_mask_var.graphics.subgroupltmask +KHR-GLES32.khr.subgroups.builtin_mask_var.compute.subgroupeqmask +KHR-GLES32.khr.subgroups.builtin_mask_var.compute.subgroupgemask +KHR-GLES32.khr.subgroups.builtin_mask_var.compute.subgroupgtmask +KHR-GLES32.khr.subgroups.builtin_mask_var.compute.subgrouplemask +KHR-GLES32.khr.subgroups.builtin_mask_var.compute.subgroupltmask +KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupeqmask_vertex +KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupeqmask_tess_eval +KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupeqmask_tess_control +KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupeqmask_geometry +KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupgemask_vertex +KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupgemask_tess_eval +KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupgemask_tess_control +KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupgemask_geometry +KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupgtmask_vertex +KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupgtmask_tess_eval +KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupgtmask_tess_control +KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupgtmask_geometry +KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgrouplemask_vertex +KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgrouplemask_tess_eval +KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgrouplemask_tess_control +KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgrouplemask_geometry +KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupltmask_vertex +KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupltmask_tess_eval +KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupltmask_tess_control +KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupltmask_geometry +KHR-GLES32.khr.subgroups.basic.graphics.subgroupelect +KHR-GLES32.khr.subgroups.basic.graphics.subgroupbarrier +KHR-GLES32.khr.subgroups.basic.graphics.subgroupmemorybarrier +KHR-GLES32.khr.subgroups.basic.graphics.subgroupmemorybarrierbuffer +KHR-GLES32.khr.subgroups.basic.graphics.subgroupmemorybarrierimage +KHR-GLES32.khr.subgroups.basic.compute.subgroupelect +KHR-GLES32.khr.subgroups.basic.compute.subgroupbarrier +KHR-GLES32.khr.subgroups.basic.compute.subgroupmemorybarrier +KHR-GLES32.khr.subgroups.basic.compute.subgroupmemorybarrierbuffer +KHR-GLES32.khr.subgroups.basic.compute.subgroupmemorybarriershared +KHR-GLES32.khr.subgroups.basic.compute.subgroupmemorybarrierimage +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupelect_vertex +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupelect_tess_eval +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupelect_tess_control +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupelect_geometry +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupbarrier_fragment +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupbarrier_vertex +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupbarrier_tess_eval +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupbarrier_tess_control +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupbarrier_geometry +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrier_fragment +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrier_vertex +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrier_tess_eval +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrier_tess_control +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrier_geometry +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrierbuffer_fragment +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrierbuffer_vertex +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrierbuffer_tess_eval +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrierbuffer_tess_control +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrierbuffer_geometry +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrierimage_fragment +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrierimage_vertex +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrierimage_tess_eval +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrierimage_tess_control +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrierimage_geometry +KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_int +KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_ivec2 +KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_ivec3 +KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_ivec4 +KHR-GLES32.khr.subgroups.vote.graphics.subgroupall_uint +KHR-GLES32.khr.subgroups.vote.graphics.subgroupany_uint +KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_uint +KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_uvec2 +KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_uvec3 +KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_uvec4 +KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_float +KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_vec2 +KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_vec3 +KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_vec4 +KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_double +KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_dvec2 +KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_dvec3 +KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_dvec4 +KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_bool +KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_bvec2 +KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_bvec3 +KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_bvec4 +KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_int +KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_ivec2 +KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_ivec3 +KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_ivec4 +KHR-GLES32.khr.subgroups.vote.compute.subgroupall_uint +KHR-GLES32.khr.subgroups.vote.compute.subgroupany_uint +KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_uint +KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_uvec2 +KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_uvec3 +KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_uvec4 +KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_float +KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_vec2 +KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_vec3 +KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_vec4 +KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_double +KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_dvec2 +KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_dvec3 +KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_dvec4 +KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_bool +KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_bvec2 +KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_bvec3 +KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_bvec4 +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_int_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_int_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_int_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_int_geometry +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec2_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec2_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec2_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec2_geometry +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec3_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec3_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec3_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec3_geometry +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec4_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec4_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec4_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec4_geometry +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupall_uint_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupall_uint_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupall_uint_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupall_uint_geometry +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupany_uint_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupany_uint_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupany_uint_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupany_uint_geometry +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uint_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uint_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uint_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uint_geometry +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec2_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec2_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec2_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec2_geometry +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec3_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec3_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec3_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec3_geometry +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec4_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec4_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec4_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec4_geometry +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_float_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_float_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_float_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_float_geometry +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec2_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec2_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec2_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec2_geometry +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec3_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec3_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec3_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec3_geometry +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec4_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec4_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec4_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec4_geometry +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_double_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_double_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_double_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_double_geometry +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec2_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec2_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec2_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec2_geometry +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec3_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec3_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec3_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec3_geometry +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec4_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec4_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec4_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec4_geometry +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bool_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bool_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bool_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bool_geometry +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec2_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec2_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec2_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec2_geometry +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec3_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec3_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec3_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec3_geometry +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec4_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec4_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec4_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec4_geometry +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_int_fragment +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_ivec2_fragment +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_ivec3_fragment +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_ivec4_fragment +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupall_uint_fragment +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupany_uint_fragment +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_uint_fragment +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_uvec2_fragment +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_uvec3_fragment +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_uvec4_fragment +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_float_fragment +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_vec2_fragment +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_vec3_fragment +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_vec4_fragment +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_double_fragment +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_dvec2_fragment +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_dvec3_fragment +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_dvec4_fragment +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_bool_fragment +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_bvec2_fragment +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_bvec3_fragment +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_bvec4_fragment +KHR-GLES32.khr.subgroups.ballot.graphics.graphic +KHR-GLES32.khr.subgroups.ballot.compute.compute +KHR-GLES32.khr.subgroups.ballot.framebuffer.tess_eval +KHR-GLES32.khr.subgroups.ballot.framebuffer.tess_control +KHR-GLES32.khr.subgroups.ballot.framebuffer.geometry +KHR-GLES32.khr.subgroups.ballot.framebuffer.vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_int +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_int +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_ivec2 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_ivec2 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_ivec3 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_ivec3 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_ivec4 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_ivec4 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uint +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uint +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uvec2 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uvec2 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uvec3 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uvec3 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uvec4 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uvec4 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_float +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_float +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_vec2 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_vec2 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_vec3 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_vec3 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_vec4 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_vec4 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_double +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_double +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_dvec2 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_dvec2 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_dvec3 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_dvec3 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_dvec4 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_dvec4 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_bool +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_bool +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_bvec2 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_bvec2 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_bvec3 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_bvec3 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_bvec4 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_bvec4 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_int +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_int +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_ivec2 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_ivec2 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_ivec3 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_ivec3 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_ivec4 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_ivec4 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_uint +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uint +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_uvec2 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uvec2 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_uvec3 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uvec3 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_uvec4 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uvec4 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_float +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_float +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_vec2 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_vec2 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_vec3 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_vec3 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_vec4 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_vec4 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_double +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_double +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_dvec2 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_dvec2 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_dvec3 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_dvec3 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_dvec4 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_dvec4 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_bool +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_bool +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_bvec2 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_bvec2 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_bvec3 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_bvec3 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_bvec4 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_bvec4 +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_intvertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_inttess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_inttess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_intgeometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_intvertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_inttess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_inttess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_intgeometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec2vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec2tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec2tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec2geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec2vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec2tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec2tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec2geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec3vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec3tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec3tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec3geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec3vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec3tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec3tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec3geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec4vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec4tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec4tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec4geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec4vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec4tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec4tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec4geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uintvertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uinttess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uinttess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uintgeometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uintvertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uinttess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uinttess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uintgeometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec2vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec2tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec2tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec2geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec2vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec2tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec2tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec2geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec3vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec3tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec3tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec3geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec3vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec3tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec3tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec3geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec4vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec4tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec4tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec4geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec4vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec4tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec4tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec4geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_floatvertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_floattess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_floattess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_floatgeometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_floatvertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_floattess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_floattess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_floatgeometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec2vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec2tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec2tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec2geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec2vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec2tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec2tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec2geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec3vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec3tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec3tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec3geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec3vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec3tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec3tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec3geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec4vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec4tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec4tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec4geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec4vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec4tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec4tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec4geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_doublevertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_doubletess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_doubletess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_doublegeometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_doublevertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_doubletess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_doubletess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_doublegeometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec2vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec2tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec2tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec2geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec2vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec2tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec2tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec2geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec3vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec3tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec3tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec3geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec3vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec3tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec3tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec3geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec4vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec4tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec4tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec4geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec4vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec4tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec4tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec4geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_boolvertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_booltess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_booltess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_boolgeometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_boolvertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_booltess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_booltess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_boolgeometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec2vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec2tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec2tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec2geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec2vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec2tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec2tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec2geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec3vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec3tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec3tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec3geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec3vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec3tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec3tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec3geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec4vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec4tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec4tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec4geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec4vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec4tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec4tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec4geometry +KHR-GLES32.khr.subgroups.ballot_other.graphics.subgroupinverseballot +KHR-GLES32.khr.subgroups.ballot_other.graphics.subgroupballotbitextract +KHR-GLES32.khr.subgroups.ballot_other.graphics.subgroupballotbitcount +KHR-GLES32.khr.subgroups.ballot_other.graphics.subgroupballotinclusivebitcount +KHR-GLES32.khr.subgroups.ballot_other.graphics.subgroupballotexclusivebitcount +KHR-GLES32.khr.subgroups.ballot_other.graphics.subgroupballotfindlsb +KHR-GLES32.khr.subgroups.ballot_other.graphics.subgroupballotfindmsb +KHR-GLES32.khr.subgroups.ballot_other.compute.subgroupinverseballot +KHR-GLES32.khr.subgroups.ballot_other.compute.subgroupballotbitextract +KHR-GLES32.khr.subgroups.ballot_other.compute.subgroupballotbitcount +KHR-GLES32.khr.subgroups.ballot_other.compute.subgroupballotinclusivebitcount +KHR-GLES32.khr.subgroups.ballot_other.compute.subgroupballotexclusivebitcount +KHR-GLES32.khr.subgroups.ballot_other.compute.subgroupballotfindlsb +KHR-GLES32.khr.subgroups.ballot_other.compute.subgroupballotfindmsb +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupinverseballot_vertex +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupinverseballot_tess_eval +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupinverseballot_tess_control +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupinverseballot_geometry +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotbitextract_vertex +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotbitextract_tess_eval +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotbitextract_tess_control +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotbitextract_geometry +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotbitcount_vertex +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotbitcount_tess_eval +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotbitcount_tess_control +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotbitcount_geometry +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotinclusivebitcount_vertex +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotinclusivebitcount_tess_eval +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotinclusivebitcount_tess_control +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotinclusivebitcount_geometry +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotexclusivebitcount_vertex +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotexclusivebitcount_tess_eval +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotexclusivebitcount_tess_control +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotexclusivebitcount_geometry +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotfindlsb_vertex +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotfindlsb_tess_eval +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotfindlsb_tess_control +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotfindlsb_geometry +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotfindmsb_vertex +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotfindmsb_tess_eval +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotfindmsb_tess_control +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotfindmsb_geometry +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_int +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_int +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_int +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_int +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_int +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_int +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_int +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_int +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_int +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_int +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_int +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_int +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_int +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_int +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_int +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_int +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_int +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_int +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_int +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_int +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_int +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_uint +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_uint +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_uint +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_uint +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_uint +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_uint +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_uint +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_uint +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_uint +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_uint +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_uint +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_uint +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_uint +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_uint +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_uint +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_uint +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_uint +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_uint +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_uint +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_uint +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_uint +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_float +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_float +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_float +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_float +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_float +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_float +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_float +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_float +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_float +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_float +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_float +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_float +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_vec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_vec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_vec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_vec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_vec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_vec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_vec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_vec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_vec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_vec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_vec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_vec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_vec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_vec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_vec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_vec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_vec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_vec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_vec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_vec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_vec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_vec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_vec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_vec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_vec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_vec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_vec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_vec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_vec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_vec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_vec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_vec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_vec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_vec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_vec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_vec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_double +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_double +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_double +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_double +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_double +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_double +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_double +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_double +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_double +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_double +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_double +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_double +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_bool +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_bool +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_bool +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_bool +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_bool +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_bool +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_bool +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_bool +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_bool +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_bvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_bvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_bvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_bvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_bvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_bvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_bvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_bvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_bvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_bvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_bvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_bvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_bvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_bvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_bvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_bvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_bvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_bvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_bvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_bvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_bvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_bvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_bvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_bvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_bvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_bvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_bvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_int +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_int +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_int +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_int +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_int +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_int +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_int +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_int +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_int +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_int +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_int +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_int +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_int +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_int +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_int +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_int +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_int +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_int +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_int +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_int +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_int +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_uint +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_uint +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_uint +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_uint +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_uint +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_uint +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_uint +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_uint +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_uint +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_uint +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_uint +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_uint +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_uint +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_uint +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_uint +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_uint +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_uint +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_uint +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_uint +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_uint +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_uint +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_float +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_float +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_float +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_float +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_float +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_float +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_float +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_float +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_float +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_float +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_float +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_float +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_vec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_vec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_vec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_vec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_vec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_vec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_vec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_vec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_vec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_vec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_vec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_vec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_vec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_vec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_vec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_vec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_vec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_vec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_vec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_vec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_vec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_vec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_vec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_vec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_vec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_vec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_vec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_vec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_vec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_vec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_vec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_vec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_vec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_vec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_vec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_vec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_double +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_double +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_double +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_double +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_double +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_double +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_double +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_double +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_double +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_double +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_double +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_double +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_bool +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_bool +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_bool +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_bool +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_bool +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_bool +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_bool +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_bool +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_bool +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_bvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_bvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_bvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_bvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_bvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_bvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_bvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_bvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_bvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_bvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_bvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_bvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_bvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_bvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_bvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_bvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_bvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_bvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_bvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_bvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_bvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_bvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_bvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_bvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_bvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_bvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_bvec4 +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_int_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_int_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_int_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_int_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_int_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_int_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_int_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_int_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_int_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_int_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_int_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_int_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_int_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_int_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_int_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_int_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_int_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_int_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_int_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_int_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_int_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_int_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_int_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_int_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_int_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_int_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_int_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_int_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_int_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_int_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_int_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_int_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_int_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_int_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_int_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_int_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_int_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_int_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_int_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_int_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_int_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_int_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_int_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_int_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_int_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_int_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_int_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_int_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_int_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_int_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_int_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_int_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_int_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_int_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_int_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_int_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_int_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_int_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_int_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_int_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_int_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_int_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_int_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_int_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_int_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_int_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_int_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_int_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_int_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_int_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_int_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_int_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_int_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_int_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_int_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_int_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_int_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_int_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_int_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_int_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_int_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_int_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_int_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_int_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uint_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uint_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uint_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uint_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uint_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uint_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uint_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uint_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uint_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uint_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uint_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uint_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uint_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uint_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uint_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uint_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uint_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uint_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uint_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uint_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uint_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uint_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uint_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uint_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uint_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uint_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uint_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uint_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uint_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uint_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uint_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uint_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uint_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uint_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uint_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uint_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uint_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uint_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uint_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uint_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uint_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uint_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uint_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uint_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uint_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uint_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uint_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uint_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uint_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uint_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uint_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uint_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uint_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uint_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uint_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uint_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uint_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uint_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uint_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uint_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uint_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uint_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uint_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uint_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uint_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uint_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uint_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uint_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uint_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uint_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uint_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uint_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uint_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uint_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uint_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uint_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uint_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uint_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uint_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uint_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uint_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uint_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uint_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uint_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_float_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_float_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_float_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_float_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_float_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_float_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_float_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_float_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_float_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_float_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_float_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_float_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_float_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_float_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_float_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_float_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_float_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_float_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_float_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_float_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_float_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_float_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_float_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_float_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_float_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_float_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_float_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_float_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_float_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_float_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_float_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_float_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_float_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_float_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_float_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_float_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_float_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_float_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_float_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_float_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_float_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_float_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_float_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_float_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_float_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_float_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_float_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_float_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_double_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_double_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_double_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_double_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_double_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_double_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_double_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_double_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_double_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_double_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_double_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_double_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_double_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_double_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_double_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_double_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_double_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_double_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_double_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_double_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_double_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_double_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_double_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_double_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_double_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_double_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_double_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_double_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_double_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_double_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_double_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_double_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_double_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_double_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_double_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_double_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_double_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_double_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_double_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_double_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_double_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_double_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_double_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_double_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_double_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_double_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_double_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_double_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bool_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bool_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bool_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bool_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bool_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bool_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bool_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bool_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bool_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bool_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bool_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bool_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bool_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bool_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bool_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bool_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bool_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bool_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bool_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bool_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bool_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bool_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bool_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bool_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bool_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bool_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bool_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bool_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bool_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bool_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bool_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bool_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bool_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bool_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bool_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bool_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec4_geometry +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_int +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_int +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_int +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_int +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_int +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_int +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_int +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_ivec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_ivec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_ivec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_ivec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_ivec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_ivec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_ivec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_ivec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_ivec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_ivec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_ivec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_ivec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_ivec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_ivec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_ivec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_ivec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_ivec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_ivec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_ivec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_ivec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_ivec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_uint +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_uint +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_uint +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_uint +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_uint +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_uint +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_uint +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_uvec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_uvec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_uvec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_uvec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_uvec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_uvec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_uvec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_uvec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_uvec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_uvec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_uvec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_uvec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_uvec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_uvec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_uvec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_uvec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_uvec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_uvec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_uvec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_uvec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_uvec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_float +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_float +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_float +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_float +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_vec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_vec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_vec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_vec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_vec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_vec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_vec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_vec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_vec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_vec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_vec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_vec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_double +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_double +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_double +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_double +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_dvec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_dvec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_dvec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_dvec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_dvec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_dvec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_dvec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_dvec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_dvec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_dvec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_dvec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_dvec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_bool +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_bool +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_bool +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_bvec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_bvec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_bvec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_bvec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_bvec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_bvec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_bvec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_bvec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_bvec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_int +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_int +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_int +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_int +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_int +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_int +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_int +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_ivec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_ivec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_ivec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_ivec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_ivec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_ivec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_ivec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_ivec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_ivec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_ivec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_ivec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_ivec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_ivec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_ivec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_ivec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_ivec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_ivec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_ivec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_ivec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_ivec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_ivec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_uint +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_uint +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_uint +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_uint +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_uint +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_uint +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_uint +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_uvec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_uvec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_uvec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_uvec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_uvec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_uvec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_uvec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_uvec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_uvec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_uvec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_uvec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_uvec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_uvec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_uvec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_uvec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_uvec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_uvec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_uvec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_uvec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_uvec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_uvec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_float +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_float +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_float +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_float +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_vec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_vec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_vec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_vec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_vec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_vec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_vec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_vec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_vec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_vec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_vec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_vec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_double +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_double +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_double +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_double +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_dvec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_dvec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_dvec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_dvec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_dvec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_dvec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_dvec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_dvec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_dvec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_dvec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_dvec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_dvec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_bool +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_bool +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_bool +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_bvec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_bvec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_bvec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_bvec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_bvec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_bvec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_bvec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_bvec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_bvec4 +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_int_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_int_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_int_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_int_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_int_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_int_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_int_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_int_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_int_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_int_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_int_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_int_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_int_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_int_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_int_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_int_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_int_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_int_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_int_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_int_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_int_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_int_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_int_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_int_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_int_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_int_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_int_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_int_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uint_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uint_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uint_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uint_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uint_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uint_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uint_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uint_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uint_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uint_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uint_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uint_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uint_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uint_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uint_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uint_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uint_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uint_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uint_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uint_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uint_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uint_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uint_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uint_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uint_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uint_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uint_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uint_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_float_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_float_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_float_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_float_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_float_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_float_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_float_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_float_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_float_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_float_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_float_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_float_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_float_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_float_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_float_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_float_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_double_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_double_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_double_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_double_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_double_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_double_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_double_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_double_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_double_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_double_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_double_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_double_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_double_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_double_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_double_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_double_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bool_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bool_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bool_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bool_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bool_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bool_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bool_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bool_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bool_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bool_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bool_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bool_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_int +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_int +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_int +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_int +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_int +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_int +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_int +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_int +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_int +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_int +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_int +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_int +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_int +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_int +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_int +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_int +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_int +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_int +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_int +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_int +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_int +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_ivec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_ivec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_ivec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_ivec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_ivec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_ivec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_ivec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_ivec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_ivec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_ivec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_ivec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_ivec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_ivec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_ivec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_ivec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_ivec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_ivec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_ivec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_ivec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_ivec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_ivec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_ivec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_ivec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_ivec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_ivec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_ivec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_ivec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_ivec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_ivec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_ivec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_ivec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_ivec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_ivec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_ivec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_ivec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_ivec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_ivec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_ivec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_ivec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_ivec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_ivec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_ivec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_ivec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_ivec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_ivec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_ivec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_ivec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_ivec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_ivec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_ivec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_ivec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_ivec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_ivec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_ivec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_ivec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_ivec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_ivec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_ivec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_ivec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_ivec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_ivec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_ivec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_ivec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_uint +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_uint +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_uint +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_uint +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_uint +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_uint +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_uint +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_uint +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_uint +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_uint +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_uint +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_uint +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_uint +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_uint +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_uint +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_uint +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_uint +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_uint +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_uint +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_uint +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_uint +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_uvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_uvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_uvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_uvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_uvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_uvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_uvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_uvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_uvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_uvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_uvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_uvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_uvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_uvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_uvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_uvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_uvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_uvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_uvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_uvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_uvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_uvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_uvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_uvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_uvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_uvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_uvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_uvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_uvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_uvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_uvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_uvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_uvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_uvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_uvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_uvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_uvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_uvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_uvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_uvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_uvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_uvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_uvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_uvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_uvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_uvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_uvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_uvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_uvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_uvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_uvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_uvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_uvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_uvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_uvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_uvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_uvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_uvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_uvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_uvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_uvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_uvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_uvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_float +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_float +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_float +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_float +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_float +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_float +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_float +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_float +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_float +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_float +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_float +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_float +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_vec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_vec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_vec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_vec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_vec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_vec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_vec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_vec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_vec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_vec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_vec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_vec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_vec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_vec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_vec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_vec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_vec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_vec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_vec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_vec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_vec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_vec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_vec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_vec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_vec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_vec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_vec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_vec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_vec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_vec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_vec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_vec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_vec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_vec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_vec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_vec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_double +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_double +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_double +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_double +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_double +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_double +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_double +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_double +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_double +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_double +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_double +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_double +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_dvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_dvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_dvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_dvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_dvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_dvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_dvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_dvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_dvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_dvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_dvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_dvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_dvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_dvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_dvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_dvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_dvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_dvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_dvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_dvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_dvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_dvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_dvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_dvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_dvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_dvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_dvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_dvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_dvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_dvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_dvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_dvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_dvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_dvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_dvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_dvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_bool +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_bool +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_bool +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_bool +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_bool +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_bool +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_bool +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_bool +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_bool +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_bvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_bvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_bvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_bvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_bvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_bvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_bvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_bvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_bvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_bvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_bvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_bvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_bvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_bvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_bvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_bvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_bvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_bvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_bvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_bvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_bvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_bvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_bvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_bvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_bvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_bvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_bvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_int +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_int +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_int +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_int +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_int +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_int +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_int +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_int +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_int +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_int +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_int +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_int +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_int +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_int +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_int +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_int +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_int +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_int +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_int +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_int +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_int +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_ivec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_ivec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_ivec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_ivec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_ivec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_ivec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_ivec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_ivec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_ivec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_ivec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_ivec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_ivec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_ivec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_ivec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_ivec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_ivec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_ivec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_ivec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_ivec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_ivec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_ivec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_ivec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_ivec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_ivec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_ivec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_ivec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_ivec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_ivec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_ivec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_ivec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_ivec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_ivec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_ivec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_ivec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_ivec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_ivec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_ivec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_ivec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_ivec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_ivec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_ivec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_ivec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_ivec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_ivec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_ivec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_ivec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_ivec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_ivec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_ivec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_ivec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_ivec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_ivec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_ivec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_ivec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_ivec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_ivec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_ivec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_ivec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_ivec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_ivec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_ivec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_ivec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_ivec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_uint +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_uint +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_uint +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_uint +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_uint +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_uint +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_uint +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_uint +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_uint +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_uint +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_uint +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_uint +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_uint +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_uint +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_uint +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_uint +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_uint +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_uint +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_uint +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_uint +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_uint +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_uvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_uvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_uvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_uvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_uvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_uvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_uvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_uvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_uvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_uvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_uvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_uvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_uvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_uvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_uvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_uvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_uvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_uvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_uvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_uvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_uvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_uvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_uvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_uvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_uvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_uvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_uvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_uvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_uvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_uvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_uvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_uvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_uvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_uvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_uvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_uvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_uvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_uvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_uvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_uvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_uvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_uvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_uvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_uvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_uvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_uvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_uvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_uvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_uvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_uvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_uvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_uvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_uvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_uvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_uvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_uvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_uvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_uvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_uvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_uvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_uvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_uvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_uvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_float +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_float +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_float +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_float +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_float +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_float +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_float +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_float +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_float +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_float +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_float +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_float +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_vec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_vec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_vec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_vec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_vec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_vec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_vec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_vec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_vec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_vec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_vec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_vec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_vec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_vec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_vec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_vec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_vec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_vec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_vec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_vec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_vec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_vec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_vec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_vec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_vec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_vec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_vec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_vec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_vec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_vec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_vec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_vec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_vec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_vec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_vec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_vec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_double +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_double +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_double +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_double +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_double +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_double +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_double +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_double +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_double +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_double +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_double +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_double +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_dvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_dvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_dvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_dvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_dvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_dvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_dvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_dvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_dvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_dvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_dvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_dvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_dvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_dvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_dvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_dvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_dvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_dvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_dvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_dvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_dvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_dvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_dvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_dvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_dvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_dvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_dvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_dvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_dvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_dvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_dvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_dvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_dvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_dvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_dvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_dvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_bool +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_bool +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_bool +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_bool +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_bool +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_bool +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_bool +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_bool +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_bool +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_bvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_bvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_bvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_bvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_bvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_bvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_bvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_bvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_bvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_bvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_bvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_bvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_bvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_bvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_bvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_bvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_bvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_bvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_bvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_bvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_bvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_bvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_bvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_bvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_bvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_bvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_bvec4 +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_int_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_int_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_int_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_int_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_int_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_int_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_int_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_int_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_int_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_int_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_int_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_int_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_int_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_int_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_int_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_int_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_int_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_int_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_int_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_int_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_int_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_int_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_int_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_int_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_int_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_int_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_int_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_int_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_int_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_int_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_int_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_int_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_int_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_int_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_int_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_int_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_int_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_int_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_int_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_int_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_int_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_int_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_int_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_int_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_int_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_int_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_int_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_int_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_int_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_int_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_int_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_int_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_int_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_int_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_int_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_int_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_int_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_int_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_int_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_int_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_int_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_int_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_int_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_int_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_int_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_int_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_int_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_int_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_int_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_int_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_int_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_int_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_int_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_int_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_int_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_int_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_int_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_int_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_int_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_int_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_int_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_int_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_int_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_int_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uint_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uint_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uint_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uint_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uint_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uint_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uint_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uint_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uint_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uint_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uint_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uint_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uint_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uint_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uint_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uint_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uint_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uint_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uint_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uint_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uint_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uint_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uint_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uint_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uint_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uint_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uint_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uint_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uint_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uint_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uint_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uint_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uint_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uint_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uint_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uint_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uint_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uint_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uint_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uint_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uint_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uint_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uint_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uint_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uint_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uint_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uint_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uint_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uint_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uint_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uint_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uint_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uint_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uint_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uint_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uint_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uint_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uint_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uint_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uint_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uint_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uint_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uint_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uint_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uint_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uint_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uint_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uint_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uint_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uint_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uint_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uint_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uint_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uint_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uint_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uint_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uint_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uint_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uint_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uint_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uint_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uint_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uint_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uint_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_float_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_float_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_float_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_float_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_float_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_float_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_float_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_float_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_float_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_float_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_float_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_float_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_float_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_float_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_float_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_float_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_float_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_float_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_float_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_float_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_float_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_float_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_float_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_float_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_float_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_float_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_float_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_float_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_float_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_float_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_float_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_float_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_float_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_float_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_float_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_float_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_float_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_float_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_float_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_float_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_float_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_float_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_float_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_float_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_float_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_float_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_float_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_float_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_double_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_double_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_double_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_double_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_double_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_double_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_double_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_double_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_double_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_double_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_double_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_double_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_double_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_double_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_double_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_double_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_double_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_double_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_double_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_double_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_double_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_double_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_double_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_double_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_double_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_double_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_double_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_double_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_double_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_double_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_double_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_double_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_double_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_double_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_double_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_double_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_double_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_double_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_double_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_double_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_double_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_double_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_double_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_double_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_double_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_double_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_double_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_double_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bool_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bool_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bool_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bool_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bool_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bool_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bool_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bool_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bool_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bool_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bool_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bool_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bool_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bool_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bool_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bool_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bool_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bool_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bool_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bool_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bool_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bool_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bool_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bool_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bool_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bool_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bool_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bool_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bool_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bool_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bool_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bool_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bool_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bool_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bool_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bool_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec4_geometry +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_int +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_int +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_int +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_int +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_ivec2 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_ivec2 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_ivec2 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_ivec2 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_ivec3 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_ivec3 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_ivec3 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_ivec3 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_ivec4 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_ivec4 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_ivec4 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_ivec4 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_uint +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_uint +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_uint +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_uint +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_uvec2 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_uvec2 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_uvec2 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_uvec2 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_uvec3 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_uvec3 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_uvec3 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_uvec3 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_uvec4 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_uvec4 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_uvec4 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_uvec4 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_float +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_float +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_float +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_float +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_vec2 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_vec2 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_vec2 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_vec2 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_vec3 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_vec3 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_vec3 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_vec3 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_vec4 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_vec4 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_vec4 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_vec4 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_double +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_double +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_double +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_double +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_dvec2 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_dvec2 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_dvec2 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_dvec2 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_dvec3 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_dvec3 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_dvec3 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_dvec3 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_dvec4 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_dvec4 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_dvec4 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_dvec4 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_bool +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_bool +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_bool +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_bool +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_bvec2 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_bvec2 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_bvec2 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_bvec2 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_bvec3 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_bvec3 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_bvec3 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_bvec3 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_bvec4 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_bvec4 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_bvec4 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_bvec4 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_int +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_int +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_int +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_int +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_ivec2 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_ivec2 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_ivec2 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_ivec2 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_ivec3 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_ivec3 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_ivec3 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_ivec3 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_ivec4 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_ivec4 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_ivec4 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_ivec4 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_uint +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_uint +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_uint +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_uint +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_uvec2 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_uvec2 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_uvec2 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_uvec2 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_uvec3 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_uvec3 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_uvec3 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_uvec3 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_uvec4 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_uvec4 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_uvec4 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_uvec4 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_float +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_float +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_float +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_float +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_vec2 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_vec2 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_vec2 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_vec2 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_vec3 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_vec3 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_vec3 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_vec3 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_vec4 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_vec4 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_vec4 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_vec4 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_double +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_double +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_double +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_double +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_dvec2 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_dvec2 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_dvec2 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_dvec2 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_dvec3 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_dvec3 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_dvec3 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_dvec3 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_dvec4 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_dvec4 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_dvec4 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_dvec4 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_bool +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_bool +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_bool +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_bool +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_bvec2 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_bvec2 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_bvec2 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_bvec2 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_bvec3 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_bvec3 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_bvec3 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_bvec3 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_bvec4 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_bvec4 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_bvec4 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_bvec4 +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_int_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_int_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_int_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_int_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_int_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_int_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_int_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_int_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_int_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_int_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_int_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_int_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_int_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_int_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_int_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_int_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec2_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec2_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec2_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec2_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec2_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec2_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec2_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec2_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec2_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec2_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec2_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec2_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec2_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec2_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec2_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec2_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec3_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec3_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec3_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec3_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec3_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec3_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec3_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec3_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec3_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec3_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec3_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec3_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec3_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec3_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec3_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec3_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec4_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec4_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec4_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec4_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec4_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec4_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec4_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec4_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec4_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec4_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec4_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec4_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec4_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec4_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec4_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec4_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uint_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uint_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uint_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uint_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uint_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uint_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uint_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uint_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uint_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uint_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uint_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uint_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uint_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uint_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uint_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uint_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec2_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec2_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec2_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec2_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec2_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec2_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec2_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec2_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec2_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec2_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec2_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec2_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec2_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec2_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec2_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec2_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec3_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec3_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec3_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec3_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec3_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec3_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec3_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec3_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec3_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec3_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec3_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec3_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec3_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec3_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec3_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec3_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec4_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec4_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec4_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec4_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec4_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec4_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec4_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec4_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec4_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec4_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec4_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec4_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec4_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec4_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec4_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec4_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_float_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_float_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_float_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_float_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_float_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_float_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_float_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_float_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_float_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_float_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_float_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_float_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_float_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_float_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_float_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_float_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec2_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec2_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec2_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec2_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec2_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec2_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec2_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec2_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec2_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec2_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec2_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec2_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec2_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec2_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec2_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec2_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec3_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec3_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec3_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec3_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec3_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec3_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec3_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec3_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec3_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec3_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec3_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec3_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec3_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec3_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec3_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec3_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec4_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec4_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec4_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec4_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec4_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec4_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec4_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec4_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec4_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec4_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec4_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec4_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec4_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec4_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec4_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec4_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_double_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_double_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_double_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_double_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_double_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_double_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_double_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_double_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_double_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_double_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_double_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_double_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_double_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_double_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_double_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_double_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec2_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec2_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec2_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec2_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec2_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec2_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec2_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec2_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec2_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec2_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec2_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec2_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec2_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec2_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec2_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec2_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec3_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec3_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec3_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec3_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec3_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec3_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec3_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec3_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec3_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec3_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec3_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec3_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec3_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec3_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec3_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec3_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec4_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec4_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec4_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec4_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec4_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec4_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec4_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec4_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec4_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec4_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec4_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec4_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec4_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec4_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec4_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec4_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bool_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bool_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bool_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bool_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bool_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bool_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bool_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bool_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bool_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bool_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bool_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bool_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bool_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bool_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bool_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bool_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec2_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec2_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec2_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec2_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec2_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec2_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec2_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec2_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec2_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec2_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec2_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec2_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec2_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec2_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec2_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec2_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec3_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec3_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec3_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec3_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec3_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec3_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec3_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec3_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec3_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec3_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec3_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec3_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec3_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec3_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec3_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec3_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec4_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec4_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec4_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec4_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec4_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec4_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec4_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec4_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec4_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec4_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec4_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec4_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec4_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec4_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec4_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec4_geometry +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_int +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_int +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_int +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_int +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_ivec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_ivec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_ivec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_ivec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_ivec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_ivec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_ivec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_ivec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_ivec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_ivec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_ivec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_ivec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_uint +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_uint +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_uint +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_uint +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_uvec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_uvec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_uvec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_uvec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_uvec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_uvec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_uvec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_uvec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_uvec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_uvec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_uvec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_uvec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_float +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_float +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_float +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_float +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_vec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_vec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_vec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_vec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_vec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_vec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_vec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_vec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_vec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_vec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_vec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_vec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_double +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_double +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_double +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_double +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_dvec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_dvec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_dvec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_dvec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_dvec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_dvec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_dvec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_dvec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_dvec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_dvec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_dvec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_dvec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_bool +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_bool +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_bool +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_bool +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_bvec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_bvec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_bvec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_bvec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_bvec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_bvec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_bvec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_bvec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_bvec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_bvec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_bvec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_bvec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_int +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_ivec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_ivec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_ivec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_uint +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_uvec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_uvec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_uvec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_float +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_vec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_vec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_vec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_double +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_dvec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_dvec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_dvec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_bool +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_bvec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_bvec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_bvec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_int +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_ivec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_ivec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_ivec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_uint +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_uvec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_uvec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_uvec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_float +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_vec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_vec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_vec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_double +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_dvec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_dvec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_dvec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_bool +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_bvec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_bvec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_bvec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_int +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_ivec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_ivec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_ivec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_uint +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_uvec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_uvec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_uvec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_float +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_vec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_vec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_vec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_double +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_dvec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_dvec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_dvec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_bool +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_bvec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_bvec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_bvec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_int +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_int +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_int +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_int +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_ivec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_ivec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_ivec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_ivec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_ivec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_ivec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_ivec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_ivec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_ivec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_ivec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_ivec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_ivec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_uint +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_uint +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_uint +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_uint +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_uvec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_uvec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_uvec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_uvec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_uvec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_uvec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_uvec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_uvec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_uvec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_uvec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_uvec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_uvec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_float +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_float +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_float +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_float +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_vec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_vec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_vec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_vec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_vec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_vec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_vec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_vec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_vec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_vec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_vec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_vec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_double +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_double +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_double +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_double +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_dvec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_dvec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_dvec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_dvec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_dvec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_dvec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_dvec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_dvec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_dvec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_dvec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_dvec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_dvec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_bool +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_bool +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_bool +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_bool +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_bvec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_bvec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_bvec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_bvec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_bvec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_bvec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_bvec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_bvec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_bvec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_bvec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_bvec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_bvec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_int +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_ivec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_ivec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_ivec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_uint +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_uvec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_uvec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_uvec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_float +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_vec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_vec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_vec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_double +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_dvec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_dvec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_dvec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_bool +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_bvec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_bvec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_bvec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_int +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_ivec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_ivec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_ivec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_uint +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_uvec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_uvec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_uvec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_float +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_vec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_vec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_vec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_double +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_dvec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_dvec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_dvec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_bool +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_bvec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_bvec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_bvec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_int +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_ivec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_ivec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_ivec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_uint +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_uvec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_uvec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_uvec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_float +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_vec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_vec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_vec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_double +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_dvec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_dvec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_dvec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_bool +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_bvec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_bvec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_bvec4 +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_int_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_int_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_int_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_int_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_int_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_int_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_int_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_int_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_int_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_int_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_int_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_int_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_int_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_int_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_int_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_int_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uint_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uint_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uint_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uint_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uint_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uint_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uint_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uint_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uint_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uint_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uint_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uint_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uint_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uint_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uint_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uint_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_float_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_float_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_float_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_float_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_float_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_float_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_float_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_float_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_float_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_float_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_float_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_float_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_float_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_float_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_float_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_float_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_double_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_double_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_double_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_double_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_double_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_double_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_double_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_double_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_double_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_double_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_double_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_double_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_double_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_double_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_double_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_double_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bool_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bool_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bool_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bool_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bool_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bool_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bool_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bool_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bool_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bool_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bool_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bool_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bool_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bool_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bool_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bool_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_int_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_int_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_int_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_int_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uint_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uint_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uint_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uint_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_float_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_float_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_float_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_float_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_double_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_double_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_double_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_double_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bool_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bool_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bool_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bool_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_int_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_int_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_int_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_int_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uint_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uint_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uint_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uint_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_float_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_float_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_float_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_float_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_double_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_double_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_double_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_double_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bool_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bool_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bool_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bool_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_int_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_int_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_int_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_int_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uint_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uint_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uint_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uint_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_float_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_float_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_float_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_float_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_double_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_double_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_double_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_double_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bool_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bool_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bool_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bool_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec4_geometry +KHR-GLES32.khr.subgroups.shape.graphics.clustered +KHR-GLES32.khr.subgroups.shape.graphics.quad +KHR-GLES32.khr.subgroups.shape.compute.clustered +KHR-GLES32.khr.subgroups.shape.compute.quad +KHR-GLES32.khr.subgroups.shape.framebuffer.clustered_vertex +KHR-GLES32.khr.subgroups.shape.framebuffer.clustered_tess_eval +KHR-GLES32.khr.subgroups.shape.framebuffer.clustered_tess_control +KHR-GLES32.khr.subgroups.shape.framebuffer.clustered_geometry +KHR-GLES32.khr.subgroups.shape.framebuffer.quad_vertex +KHR-GLES32.khr.subgroups.shape.framebuffer.quad_tess_eval +KHR-GLES32.khr.subgroups.shape.framebuffer.quad_tess_control +KHR-GLES32.khr.subgroups.shape.framebuffer.quad_geometry diff --git a/external/openglcts/data/mustpass/gles/khronos_mustpass/master/gles32-khr-master.txt b/external/openglcts/data/mustpass/gles/khronos_mustpass/master/gles32-khr-master.txt index 0e615a8..3cd01d7 100644 --- a/external/openglcts/data/mustpass/gles/khronos_mustpass/master/gles32-khr-master.txt +++ b/external/openglcts/data/mustpass/gles/khronos_mustpass/master/gles32-khr-master.txt @@ -1072,3 +1072,6056 @@ KHR-GLES32.core.internalformat.copy_tex_image.rgb8 KHR-GLES32.core.internalformat.renderbuffer.rgba8 KHR-GLES32.core.internalformat.renderbuffer.rgb8 KHR-GLES32.core.internalformat.renderbuffer.rgb5_a1 +KHR-GLES32.khr.subgroups.builtin_var.graphics.subgroupsize +KHR-GLES32.khr.subgroups.builtin_var.graphics.subgroupinvocationid +KHR-GLES32.khr.subgroups.builtin_var.compute.subgroupsize_compute +KHR-GLES32.khr.subgroups.builtin_var.compute.subgroupinvocationid_compute +KHR-GLES32.khr.subgroups.builtin_var.compute.numsubgroups +KHR-GLES32.khr.subgroups.builtin_var.compute.subgroupid +KHR-GLES32.khr.subgroups.builtin_var.framebuffer.subgroupsize_vertex +KHR-GLES32.khr.subgroups.builtin_var.framebuffer.subgroupsize_tess_eval +KHR-GLES32.khr.subgroups.builtin_var.framebuffer.subgroupsize_tess_control +KHR-GLES32.khr.subgroups.builtin_var.framebuffer.subgroupsize_geometry +KHR-GLES32.khr.subgroups.builtin_var.framebuffer.subgroupinvocationid_vertex +KHR-GLES32.khr.subgroups.builtin_var.framebuffer.subgroupinvocationid_tess_eval +KHR-GLES32.khr.subgroups.builtin_var.framebuffer.subgroupinvocationid_tess_control +KHR-GLES32.khr.subgroups.builtin_var.framebuffer.subgroupinvocationid_geometry +KHR-GLES32.khr.subgroups.builtin_mask_var.graphics.subgroupeqmask +KHR-GLES32.khr.subgroups.builtin_mask_var.graphics.subgroupgemask +KHR-GLES32.khr.subgroups.builtin_mask_var.graphics.subgroupgtmask +KHR-GLES32.khr.subgroups.builtin_mask_var.graphics.subgrouplemask +KHR-GLES32.khr.subgroups.builtin_mask_var.graphics.subgroupltmask +KHR-GLES32.khr.subgroups.builtin_mask_var.compute.subgroupeqmask +KHR-GLES32.khr.subgroups.builtin_mask_var.compute.subgroupgemask +KHR-GLES32.khr.subgroups.builtin_mask_var.compute.subgroupgtmask +KHR-GLES32.khr.subgroups.builtin_mask_var.compute.subgrouplemask +KHR-GLES32.khr.subgroups.builtin_mask_var.compute.subgroupltmask +KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupeqmask_vertex +KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupeqmask_tess_eval +KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupeqmask_tess_control +KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupeqmask_geometry +KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupgemask_vertex +KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupgemask_tess_eval +KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupgemask_tess_control +KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupgemask_geometry +KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupgtmask_vertex +KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupgtmask_tess_eval +KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupgtmask_tess_control +KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupgtmask_geometry +KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgrouplemask_vertex +KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgrouplemask_tess_eval +KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgrouplemask_tess_control +KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgrouplemask_geometry +KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupltmask_vertex +KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupltmask_tess_eval +KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupltmask_tess_control +KHR-GLES32.khr.subgroups.builtin_mask_var.framebuffer.subgroupltmask_geometry +KHR-GLES32.khr.subgroups.basic.graphics.subgroupelect +KHR-GLES32.khr.subgroups.basic.graphics.subgroupbarrier +KHR-GLES32.khr.subgroups.basic.graphics.subgroupmemorybarrier +KHR-GLES32.khr.subgroups.basic.graphics.subgroupmemorybarrierbuffer +KHR-GLES32.khr.subgroups.basic.graphics.subgroupmemorybarrierimage +KHR-GLES32.khr.subgroups.basic.compute.subgroupelect +KHR-GLES32.khr.subgroups.basic.compute.subgroupbarrier +KHR-GLES32.khr.subgroups.basic.compute.subgroupmemorybarrier +KHR-GLES32.khr.subgroups.basic.compute.subgroupmemorybarrierbuffer +KHR-GLES32.khr.subgroups.basic.compute.subgroupmemorybarriershared +KHR-GLES32.khr.subgroups.basic.compute.subgroupmemorybarrierimage +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupelect_vertex +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupelect_tess_eval +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupelect_tess_control +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupelect_geometry +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupbarrier_fragment +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupbarrier_vertex +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupbarrier_tess_eval +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupbarrier_tess_control +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupbarrier_geometry +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrier_fragment +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrier_vertex +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrier_tess_eval +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrier_tess_control +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrier_geometry +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrierbuffer_fragment +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrierbuffer_vertex +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrierbuffer_tess_eval +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrierbuffer_tess_control +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrierbuffer_geometry +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrierimage_fragment +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrierimage_vertex +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrierimage_tess_eval +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrierimage_tess_control +KHR-GLES32.khr.subgroups.basic.framebuffer.subgroupmemorybarrierimage_geometry +KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_int +KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_ivec2 +KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_ivec3 +KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_ivec4 +KHR-GLES32.khr.subgroups.vote.graphics.subgroupall_uint +KHR-GLES32.khr.subgroups.vote.graphics.subgroupany_uint +KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_uint +KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_uvec2 +KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_uvec3 +KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_uvec4 +KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_float +KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_vec2 +KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_vec3 +KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_vec4 +KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_double +KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_dvec2 +KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_dvec3 +KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_dvec4 +KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_bool +KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_bvec2 +KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_bvec3 +KHR-GLES32.khr.subgroups.vote.graphics.subgroupallequal_bvec4 +KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_int +KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_ivec2 +KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_ivec3 +KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_ivec4 +KHR-GLES32.khr.subgroups.vote.compute.subgroupall_uint +KHR-GLES32.khr.subgroups.vote.compute.subgroupany_uint +KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_uint +KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_uvec2 +KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_uvec3 +KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_uvec4 +KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_float +KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_vec2 +KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_vec3 +KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_vec4 +KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_double +KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_dvec2 +KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_dvec3 +KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_dvec4 +KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_bool +KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_bvec2 +KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_bvec3 +KHR-GLES32.khr.subgroups.vote.compute.subgroupallequal_bvec4 +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_int_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_int_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_int_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_int_geometry +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec2_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec2_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec2_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec2_geometry +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec3_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec3_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec3_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec3_geometry +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec4_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec4_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec4_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_ivec4_geometry +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupall_uint_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupall_uint_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupall_uint_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupall_uint_geometry +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupany_uint_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupany_uint_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupany_uint_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupany_uint_geometry +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uint_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uint_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uint_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uint_geometry +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec2_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec2_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec2_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec2_geometry +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec3_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec3_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec3_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec3_geometry +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec4_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec4_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec4_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_uvec4_geometry +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_float_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_float_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_float_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_float_geometry +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec2_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec2_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec2_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec2_geometry +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec3_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec3_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec3_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec3_geometry +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec4_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec4_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec4_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_vec4_geometry +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_double_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_double_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_double_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_double_geometry +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec2_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec2_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec2_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec2_geometry +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec3_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec3_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec3_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec3_geometry +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec4_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec4_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec4_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_dvec4_geometry +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bool_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bool_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bool_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bool_geometry +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec2_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec2_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec2_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec2_geometry +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec3_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec3_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec3_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec3_geometry +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec4_vertex +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec4_tess_eval +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec4_tess_control +KHR-GLES32.khr.subgroups.vote.framebuffer.subgroupallequal_bvec4_geometry +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_int_fragment +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_ivec2_fragment +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_ivec3_fragment +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_ivec4_fragment +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupall_uint_fragment +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupany_uint_fragment +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_uint_fragment +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_uvec2_fragment +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_uvec3_fragment +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_uvec4_fragment +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_float_fragment +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_vec2_fragment +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_vec3_fragment +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_vec4_fragment +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_double_fragment +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_dvec2_fragment +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_dvec3_fragment +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_dvec4_fragment +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_bool_fragment +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_bvec2_fragment +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_bvec3_fragment +KHR-GLES32.khr.subgroups.vote.frag_helper.subgroupallequal_bvec4_fragment +KHR-GLES32.khr.subgroups.ballot.graphics.graphic +KHR-GLES32.khr.subgroups.ballot.compute.compute +KHR-GLES32.khr.subgroups.ballot.framebuffer.tess_eval +KHR-GLES32.khr.subgroups.ballot.framebuffer.tess_control +KHR-GLES32.khr.subgroups.ballot.framebuffer.geometry +KHR-GLES32.khr.subgroups.ballot.framebuffer.vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_int +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_int +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_ivec2 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_ivec2 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_ivec3 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_ivec3 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_ivec4 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_ivec4 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uint +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uint +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uvec2 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uvec2 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uvec3 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uvec3 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uvec4 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uvec4 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_float +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_float +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_vec2 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_vec2 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_vec3 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_vec3 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_vec4 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_vec4 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_double +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_double +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_dvec2 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_dvec2 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_dvec3 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_dvec3 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_dvec4 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_dvec4 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_bool +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_bool +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_bvec2 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_bvec2 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_bvec3 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_bvec3 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcast_bvec4 +KHR-GLES32.khr.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_bvec4 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_int +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_int +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_ivec2 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_ivec2 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_ivec3 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_ivec3 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_ivec4 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_ivec4 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_uint +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uint +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_uvec2 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uvec2 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_uvec3 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uvec3 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_uvec4 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uvec4 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_float +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_float +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_vec2 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_vec2 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_vec3 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_vec3 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_vec4 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_vec4 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_double +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_double +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_dvec2 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_dvec2 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_dvec3 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_dvec3 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_dvec4 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_dvec4 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_bool +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_bool +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_bvec2 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_bvec2 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_bvec3 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_bvec3 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcast_bvec4 +KHR-GLES32.khr.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_bvec4 +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_intvertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_inttess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_inttess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_intgeometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_intvertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_inttess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_inttess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_intgeometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec2vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec2tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec2tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec2geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec2vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec2tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec2tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec2geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec3vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec3tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec3tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec3geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec3vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec3tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec3tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec3geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec4vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec4tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec4tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec4geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec4vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec4tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec4tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec4geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uintvertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uinttess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uinttess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uintgeometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uintvertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uinttess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uinttess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uintgeometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec2vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec2tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec2tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec2geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec2vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec2tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec2tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec2geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec3vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec3tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec3tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec3geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec3vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec3tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec3tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec3geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec4vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec4tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec4tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec4geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec4vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec4tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec4tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec4geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_floatvertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_floattess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_floattess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_floatgeometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_floatvertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_floattess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_floattess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_floatgeometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec2vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec2tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec2tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec2geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec2vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec2tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec2tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec2geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec3vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec3tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec3tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec3geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec3vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec3tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec3tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec3geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec4vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec4tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec4tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec4geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec4vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec4tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec4tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec4geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_doublevertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_doubletess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_doubletess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_doublegeometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_doublevertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_doubletess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_doubletess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_doublegeometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec2vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec2tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec2tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec2geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec2vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec2tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec2tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec2geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec3vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec3tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec3tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec3geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec3vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec3tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec3tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec3geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec4vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec4tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec4tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec4geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec4vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec4tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec4tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec4geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_boolvertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_booltess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_booltess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_boolgeometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_boolvertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_booltess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_booltess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_boolgeometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec2vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec2tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec2tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec2geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec2vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec2tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec2tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec2geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec3vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec3tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec3tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec3geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec3vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec3tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec3tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec3geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec4vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec4tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec4tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec4geometry +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec4vertex +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec4tess_eval +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec4tess_control +KHR-GLES32.khr.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec4geometry +KHR-GLES32.khr.subgroups.ballot_other.graphics.subgroupinverseballot +KHR-GLES32.khr.subgroups.ballot_other.graphics.subgroupballotbitextract +KHR-GLES32.khr.subgroups.ballot_other.graphics.subgroupballotbitcount +KHR-GLES32.khr.subgroups.ballot_other.graphics.subgroupballotinclusivebitcount +KHR-GLES32.khr.subgroups.ballot_other.graphics.subgroupballotexclusivebitcount +KHR-GLES32.khr.subgroups.ballot_other.graphics.subgroupballotfindlsb +KHR-GLES32.khr.subgroups.ballot_other.graphics.subgroupballotfindmsb +KHR-GLES32.khr.subgroups.ballot_other.compute.subgroupinverseballot +KHR-GLES32.khr.subgroups.ballot_other.compute.subgroupballotbitextract +KHR-GLES32.khr.subgroups.ballot_other.compute.subgroupballotbitcount +KHR-GLES32.khr.subgroups.ballot_other.compute.subgroupballotinclusivebitcount +KHR-GLES32.khr.subgroups.ballot_other.compute.subgroupballotexclusivebitcount +KHR-GLES32.khr.subgroups.ballot_other.compute.subgroupballotfindlsb +KHR-GLES32.khr.subgroups.ballot_other.compute.subgroupballotfindmsb +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupinverseballot_vertex +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupinverseballot_tess_eval +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupinverseballot_tess_control +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupinverseballot_geometry +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotbitextract_vertex +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotbitextract_tess_eval +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotbitextract_tess_control +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotbitextract_geometry +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotbitcount_vertex +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotbitcount_tess_eval +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotbitcount_tess_control +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotbitcount_geometry +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotinclusivebitcount_vertex +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotinclusivebitcount_tess_eval +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotinclusivebitcount_tess_control +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotinclusivebitcount_geometry +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotexclusivebitcount_vertex +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotexclusivebitcount_tess_eval +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotexclusivebitcount_tess_control +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotexclusivebitcount_geometry +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotfindlsb_vertex +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotfindlsb_tess_eval +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotfindlsb_tess_control +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotfindlsb_geometry +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotfindmsb_vertex +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotfindmsb_tess_eval +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotfindmsb_tess_control +KHR-GLES32.khr.subgroups.ballot_other.framebuffer.subgroupballotfindmsb_geometry +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_int +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_int +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_int +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_int +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_int +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_int +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_int +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_int +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_int +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_int +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_int +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_int +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_int +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_int +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_int +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_int +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_int +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_int +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_int +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_int +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_int +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_uint +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_uint +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_uint +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_uint +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_uint +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_uint +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_uint +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_uint +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_uint +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_uint +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_uint +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_uint +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_uint +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_uint +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_uint +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_uint +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_uint +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_uint +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_uint +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_uint +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_uint +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_float +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_float +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_float +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_float +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_float +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_float +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_float +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_float +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_float +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_float +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_float +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_float +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_vec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_vec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_vec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_vec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_vec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_vec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_vec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_vec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_vec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_vec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_vec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_vec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_vec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_vec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_vec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_vec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_vec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_vec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_vec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_vec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_vec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_vec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_vec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_vec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_vec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_vec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_vec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_vec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_vec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_vec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_vec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_vec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_vec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_vec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_vec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_vec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_double +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_double +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_double +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_double +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_double +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_double +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_double +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_double +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_double +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_double +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_double +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_double +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupadd_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmul_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmin_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupmax_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveadd_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemul_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemin_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivemax_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveadd_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemul_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemin_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivemax_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_bool +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_bool +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_bool +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_bool +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_bool +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_bool +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_bool +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_bool +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_bool +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_bvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_bvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_bvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_bvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_bvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_bvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_bvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_bvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_bvec2 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_bvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_bvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_bvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_bvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_bvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_bvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_bvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_bvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_bvec3 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupand_bvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupor_bvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupxor_bvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveand_bvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusiveor_bvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupinclusivexor_bvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveand_bvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusiveor_bvec4 +KHR-GLES32.khr.subgroups.arithmetic.graphics.subgroupexclusivexor_bvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_int +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_int +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_int +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_int +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_int +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_int +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_int +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_int +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_int +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_int +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_int +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_int +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_int +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_int +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_int +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_int +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_int +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_int +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_int +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_int +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_int +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_ivec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_ivec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_ivec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_uint +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_uint +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_uint +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_uint +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_uint +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_uint +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_uint +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_uint +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_uint +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_uint +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_uint +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_uint +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_uint +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_uint +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_uint +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_uint +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_uint +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_uint +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_uint +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_uint +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_uint +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_uvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_uvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_uvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_float +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_float +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_float +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_float +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_float +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_float +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_float +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_float +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_float +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_float +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_float +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_float +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_vec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_vec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_vec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_vec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_vec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_vec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_vec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_vec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_vec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_vec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_vec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_vec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_vec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_vec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_vec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_vec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_vec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_vec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_vec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_vec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_vec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_vec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_vec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_vec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_vec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_vec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_vec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_vec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_vec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_vec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_vec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_vec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_vec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_vec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_vec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_vec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_double +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_double +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_double +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_double +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_double +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_double +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_double +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_double +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_double +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_double +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_double +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_double +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_dvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_dvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupadd_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmul_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmin_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupmax_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveadd_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemul_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemin_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivemax_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveadd_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemul_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemin_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivemax_dvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_bool +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_bool +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_bool +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_bool +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_bool +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_bool +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_bool +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_bool +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_bool +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_bvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_bvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_bvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_bvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_bvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_bvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_bvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_bvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_bvec2 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_bvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_bvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_bvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_bvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_bvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_bvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_bvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_bvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_bvec3 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupand_bvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupor_bvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupxor_bvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveand_bvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusiveor_bvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupinclusivexor_bvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveand_bvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusiveor_bvec4 +KHR-GLES32.khr.subgroups.arithmetic.compute.subgroupexclusivexor_bvec4 +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_int_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_int_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_int_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_int_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_int_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_int_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_int_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_int_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_int_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_int_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_int_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_int_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_int_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_int_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_int_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_int_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_int_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_int_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_int_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_int_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_int_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_int_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_int_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_int_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_int_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_int_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_int_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_int_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_int_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_int_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_int_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_int_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_int_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_int_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_int_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_int_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_int_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_int_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_int_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_int_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_int_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_int_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_int_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_int_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_int_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_int_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_int_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_int_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_int_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_int_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_int_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_int_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_int_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_int_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_int_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_int_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_int_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_int_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_int_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_int_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_int_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_int_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_int_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_int_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_int_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_int_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_int_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_int_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_int_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_int_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_int_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_int_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_int_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_int_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_int_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_int_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_int_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_int_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_int_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_int_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_int_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_int_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_int_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_int_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_ivec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_ivec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_ivec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_ivec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_ivec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_ivec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_ivec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_ivec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_ivec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_ivec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_ivec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_ivec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_ivec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_ivec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_ivec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_ivec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_ivec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_ivec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_ivec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_ivec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_ivec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uint_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uint_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uint_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uint_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uint_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uint_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uint_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uint_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uint_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uint_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uint_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uint_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uint_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uint_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uint_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uint_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uint_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uint_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uint_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uint_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uint_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uint_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uint_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uint_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uint_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uint_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uint_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uint_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uint_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uint_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uint_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uint_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uint_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uint_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uint_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uint_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uint_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uint_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uint_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uint_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uint_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uint_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uint_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uint_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uint_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uint_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uint_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uint_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uint_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uint_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uint_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uint_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uint_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uint_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uint_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uint_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uint_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uint_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uint_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uint_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uint_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uint_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uint_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uint_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uint_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uint_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uint_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uint_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uint_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uint_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uint_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uint_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uint_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uint_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uint_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uint_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uint_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uint_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uint_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uint_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uint_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uint_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uint_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uint_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_uvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_uvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_uvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_uvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_uvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_uvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_uvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_uvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_uvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_uvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_uvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_uvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_uvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_uvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_uvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_uvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_uvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_uvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_uvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_uvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_uvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_float_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_float_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_float_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_float_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_float_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_float_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_float_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_float_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_float_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_float_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_float_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_float_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_float_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_float_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_float_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_float_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_float_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_float_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_float_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_float_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_float_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_float_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_float_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_float_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_float_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_float_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_float_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_float_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_float_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_float_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_float_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_float_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_float_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_float_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_float_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_float_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_float_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_float_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_float_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_float_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_float_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_float_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_float_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_float_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_float_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_float_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_float_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_float_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_vec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_vec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_vec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_vec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_vec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_vec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_vec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_vec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_vec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_vec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_vec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_vec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_double_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_double_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_double_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_double_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_double_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_double_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_double_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_double_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_double_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_double_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_double_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_double_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_double_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_double_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_double_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_double_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_double_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_double_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_double_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_double_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_double_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_double_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_double_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_double_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_double_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_double_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_double_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_double_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_double_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_double_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_double_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_double_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_double_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_double_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_double_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_double_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_double_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_double_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_double_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_double_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_double_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_double_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_double_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_double_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_double_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_double_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_double_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_double_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupadd_dvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmul_dvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmin_dvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupmax_dvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveadd_dvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemul_dvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemin_dvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivemax_dvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveadd_dvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemul_dvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemin_dvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivemax_dvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bool_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bool_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bool_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bool_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bool_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bool_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bool_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bool_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bool_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bool_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bool_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bool_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bool_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bool_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bool_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bool_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bool_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bool_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bool_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bool_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bool_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bool_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bool_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bool_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bool_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bool_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bool_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bool_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bool_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bool_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bool_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bool_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bool_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bool_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bool_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bool_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec2_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec2_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec2_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec2_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec3_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec3_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec3_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec3_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupand_bvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupor_bvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupxor_bvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveand_bvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusiveor_bvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupinclusivexor_bvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveand_bvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusiveor_bvec4_geometry +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec4_vertex +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec4_tess_eval +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec4_tess_control +KHR-GLES32.khr.subgroups.arithmetic.framebuffer.subgroupexclusivexor_bvec4_geometry +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_int +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_int +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_int +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_int +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_int +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_int +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_int +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_ivec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_ivec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_ivec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_ivec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_ivec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_ivec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_ivec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_ivec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_ivec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_ivec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_ivec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_ivec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_ivec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_ivec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_ivec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_ivec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_ivec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_ivec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_ivec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_ivec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_ivec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_uint +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_uint +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_uint +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_uint +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_uint +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_uint +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_uint +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_uvec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_uvec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_uvec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_uvec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_uvec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_uvec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_uvec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_uvec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_uvec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_uvec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_uvec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_uvec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_uvec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_uvec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_uvec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_uvec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_uvec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_uvec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_uvec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_uvec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_uvec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_float +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_float +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_float +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_float +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_vec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_vec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_vec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_vec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_vec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_vec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_vec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_vec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_vec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_vec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_vec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_vec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_double +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_double +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_double +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_double +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_dvec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_dvec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_dvec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_dvec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_dvec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_dvec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_dvec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_dvec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredadd_dvec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmul_dvec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmin_dvec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredmax_dvec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_bool +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_bool +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_bool +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_bvec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_bvec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_bvec2 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_bvec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_bvec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_bvec3 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredand_bvec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredor_bvec4 +KHR-GLES32.khr.subgroups.clustered.graphics.subgroupclusteredxor_bvec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_int +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_int +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_int +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_int +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_int +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_int +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_int +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_ivec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_ivec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_ivec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_ivec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_ivec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_ivec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_ivec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_ivec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_ivec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_ivec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_ivec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_ivec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_ivec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_ivec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_ivec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_ivec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_ivec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_ivec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_ivec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_ivec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_ivec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_uint +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_uint +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_uint +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_uint +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_uint +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_uint +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_uint +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_uvec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_uvec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_uvec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_uvec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_uvec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_uvec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_uvec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_uvec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_uvec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_uvec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_uvec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_uvec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_uvec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_uvec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_uvec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_uvec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_uvec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_uvec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_uvec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_uvec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_uvec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_float +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_float +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_float +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_float +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_vec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_vec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_vec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_vec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_vec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_vec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_vec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_vec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_vec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_vec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_vec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_vec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_double +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_double +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_double +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_double +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_dvec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_dvec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_dvec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_dvec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_dvec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_dvec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_dvec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_dvec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredadd_dvec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmul_dvec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmin_dvec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredmax_dvec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_bool +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_bool +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_bool +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_bvec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_bvec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_bvec2 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_bvec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_bvec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_bvec3 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredand_bvec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredor_bvec4 +KHR-GLES32.khr.subgroups.clustered.compute.subgroupclusteredxor_bvec4 +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_int_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_int_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_int_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_int_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_int_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_int_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_int_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_int_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_int_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_int_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_int_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_int_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_int_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_int_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_int_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_int_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_int_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_int_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_int_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_int_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_int_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_int_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_int_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_int_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_int_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_int_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_int_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_int_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_ivec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_ivec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_ivec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_ivec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_ivec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_ivec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_ivec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uint_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uint_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uint_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uint_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uint_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uint_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uint_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uint_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uint_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uint_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uint_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uint_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uint_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uint_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uint_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uint_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uint_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uint_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uint_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uint_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uint_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uint_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uint_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uint_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uint_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uint_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uint_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uint_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_uvec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_uvec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_uvec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_uvec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_uvec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_uvec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_uvec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_float_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_float_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_float_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_float_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_float_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_float_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_float_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_float_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_float_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_float_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_float_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_float_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_float_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_float_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_float_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_float_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_vec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_vec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_vec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_vec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_double_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_double_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_double_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_double_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_double_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_double_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_double_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_double_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_double_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_double_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_double_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_double_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_double_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_double_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_double_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_double_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredadd_dvec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmul_dvec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmin_dvec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredmax_dvec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bool_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bool_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bool_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bool_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bool_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bool_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bool_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bool_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bool_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bool_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bool_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bool_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec2_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec2_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec2_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec2_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec3_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec3_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec3_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec3_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredand_bvec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredor_bvec4_geometry +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec4_vertex +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec4_tess_eval +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec4_tess_control +KHR-GLES32.khr.subgroups.clustered.framebuffer.subgroupclusteredxor_bvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_int +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_int +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_int +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_int +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_int +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_int +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_int +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_int +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_int +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_int +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_int +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_int +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_int +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_int +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_int +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_int +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_int +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_int +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_int +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_int +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_int +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_ivec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_ivec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_ivec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_ivec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_ivec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_ivec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_ivec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_ivec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_ivec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_ivec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_ivec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_ivec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_ivec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_ivec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_ivec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_ivec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_ivec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_ivec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_ivec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_ivec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_ivec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_ivec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_ivec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_ivec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_ivec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_ivec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_ivec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_ivec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_ivec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_ivec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_ivec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_ivec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_ivec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_ivec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_ivec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_ivec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_ivec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_ivec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_ivec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_ivec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_ivec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_ivec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_ivec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_ivec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_ivec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_ivec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_ivec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_ivec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_ivec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_ivec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_ivec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_ivec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_ivec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_ivec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_ivec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_ivec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_ivec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_ivec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_ivec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_ivec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_ivec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_ivec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_ivec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_uint +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_uint +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_uint +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_uint +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_uint +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_uint +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_uint +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_uint +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_uint +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_uint +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_uint +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_uint +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_uint +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_uint +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_uint +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_uint +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_uint +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_uint +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_uint +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_uint +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_uint +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_uvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_uvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_uvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_uvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_uvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_uvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_uvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_uvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_uvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_uvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_uvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_uvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_uvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_uvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_uvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_uvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_uvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_uvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_uvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_uvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_uvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_uvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_uvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_uvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_uvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_uvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_uvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_uvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_uvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_uvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_uvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_uvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_uvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_uvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_uvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_uvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_uvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_uvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_uvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_uvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_uvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_uvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_uvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_uvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_uvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_uvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_uvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_uvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_uvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_uvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_uvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_uvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_uvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_uvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_uvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_uvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_uvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_uvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_uvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_uvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_uvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_uvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_uvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_float +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_float +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_float +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_float +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_float +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_float +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_float +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_float +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_float +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_float +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_float +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_float +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_vec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_vec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_vec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_vec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_vec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_vec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_vec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_vec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_vec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_vec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_vec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_vec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_vec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_vec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_vec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_vec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_vec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_vec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_vec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_vec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_vec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_vec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_vec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_vec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_vec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_vec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_vec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_vec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_vec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_vec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_vec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_vec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_vec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_vec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_vec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_vec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_double +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_double +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_double +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_double +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_double +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_double +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_double +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_double +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_double +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_double +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_double +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_double +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_dvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_dvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_dvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_dvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_dvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_dvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_dvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_dvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_dvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_dvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_dvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_dvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_dvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_dvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_dvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_dvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_dvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_dvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_dvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_dvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_dvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_dvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_dvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_dvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupadd_dvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmul_dvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmin_dvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupmax_dvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveadd_dvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemul_dvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemin_dvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivemax_dvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveadd_dvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemul_dvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemin_dvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivemax_dvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_bool +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_bool +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_bool +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_bool +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_bool +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_bool +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_bool +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_bool +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_bool +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_bvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_bvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_bvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_bvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_bvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_bvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_bvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_bvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_bvec2 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_bvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_bvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_bvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_bvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_bvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_bvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_bvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_bvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_bvec3 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupand_bvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupor_bvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupxor_bvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveand_bvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusiveor_bvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupinclusivexor_bvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveand_bvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusiveor_bvec4 +KHR-GLES32.khr.subgroups.partitioned.graphics.subgroupexclusivexor_bvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_int +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_int +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_int +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_int +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_int +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_int +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_int +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_int +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_int +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_int +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_int +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_int +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_int +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_int +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_int +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_int +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_int +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_int +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_int +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_int +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_int +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_ivec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_ivec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_ivec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_ivec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_ivec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_ivec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_ivec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_ivec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_ivec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_ivec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_ivec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_ivec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_ivec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_ivec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_ivec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_ivec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_ivec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_ivec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_ivec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_ivec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_ivec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_ivec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_ivec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_ivec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_ivec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_ivec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_ivec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_ivec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_ivec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_ivec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_ivec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_ivec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_ivec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_ivec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_ivec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_ivec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_ivec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_ivec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_ivec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_ivec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_ivec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_ivec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_ivec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_ivec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_ivec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_ivec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_ivec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_ivec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_ivec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_ivec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_ivec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_ivec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_ivec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_ivec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_ivec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_ivec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_ivec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_ivec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_ivec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_ivec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_ivec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_ivec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_ivec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_uint +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_uint +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_uint +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_uint +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_uint +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_uint +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_uint +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_uint +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_uint +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_uint +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_uint +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_uint +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_uint +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_uint +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_uint +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_uint +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_uint +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_uint +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_uint +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_uint +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_uint +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_uvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_uvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_uvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_uvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_uvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_uvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_uvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_uvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_uvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_uvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_uvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_uvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_uvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_uvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_uvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_uvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_uvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_uvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_uvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_uvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_uvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_uvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_uvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_uvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_uvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_uvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_uvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_uvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_uvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_uvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_uvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_uvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_uvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_uvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_uvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_uvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_uvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_uvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_uvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_uvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_uvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_uvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_uvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_uvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_uvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_uvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_uvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_uvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_uvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_uvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_uvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_uvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_uvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_uvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_uvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_uvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_uvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_uvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_uvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_uvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_uvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_uvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_uvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_float +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_float +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_float +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_float +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_float +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_float +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_float +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_float +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_float +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_float +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_float +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_float +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_vec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_vec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_vec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_vec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_vec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_vec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_vec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_vec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_vec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_vec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_vec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_vec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_vec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_vec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_vec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_vec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_vec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_vec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_vec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_vec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_vec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_vec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_vec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_vec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_vec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_vec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_vec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_vec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_vec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_vec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_vec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_vec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_vec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_vec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_vec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_vec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_double +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_double +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_double +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_double +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_double +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_double +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_double +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_double +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_double +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_double +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_double +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_double +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_dvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_dvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_dvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_dvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_dvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_dvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_dvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_dvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_dvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_dvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_dvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_dvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_dvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_dvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_dvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_dvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_dvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_dvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_dvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_dvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_dvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_dvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_dvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_dvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupadd_dvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmul_dvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmin_dvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupmax_dvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveadd_dvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemul_dvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemin_dvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivemax_dvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveadd_dvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemul_dvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemin_dvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivemax_dvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_bool +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_bool +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_bool +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_bool +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_bool +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_bool +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_bool +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_bool +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_bool +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_bvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_bvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_bvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_bvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_bvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_bvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_bvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_bvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_bvec2 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_bvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_bvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_bvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_bvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_bvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_bvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_bvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_bvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_bvec3 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupand_bvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupor_bvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupxor_bvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveand_bvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusiveor_bvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupinclusivexor_bvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveand_bvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusiveor_bvec4 +KHR-GLES32.khr.subgroups.partitioned.compute.subgroupexclusivexor_bvec4 +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_int_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_int_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_int_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_int_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_int_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_int_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_int_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_int_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_int_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_int_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_int_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_int_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_int_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_int_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_int_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_int_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_int_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_int_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_int_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_int_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_int_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_int_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_int_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_int_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_int_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_int_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_int_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_int_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_int_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_int_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_int_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_int_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_int_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_int_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_int_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_int_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_int_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_int_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_int_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_int_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_int_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_int_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_int_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_int_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_int_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_int_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_int_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_int_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_int_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_int_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_int_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_int_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_int_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_int_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_int_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_int_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_int_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_int_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_int_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_int_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_int_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_int_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_int_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_int_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_int_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_int_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_int_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_int_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_int_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_int_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_int_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_int_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_int_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_int_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_int_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_int_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_int_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_int_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_int_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_int_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_int_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_int_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_int_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_int_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_ivec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_ivec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_ivec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_ivec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_ivec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_ivec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_ivec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_ivec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_ivec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_ivec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_ivec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_ivec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_ivec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_ivec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_ivec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_ivec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_ivec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_ivec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_ivec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_ivec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_ivec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uint_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uint_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uint_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uint_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uint_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uint_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uint_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uint_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uint_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uint_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uint_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uint_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uint_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uint_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uint_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uint_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uint_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uint_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uint_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uint_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uint_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uint_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uint_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uint_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uint_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uint_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uint_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uint_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uint_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uint_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uint_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uint_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uint_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uint_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uint_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uint_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uint_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uint_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uint_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uint_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uint_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uint_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uint_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uint_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uint_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uint_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uint_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uint_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uint_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uint_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uint_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uint_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uint_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uint_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uint_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uint_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uint_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uint_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uint_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uint_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uint_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uint_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uint_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uint_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uint_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uint_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uint_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uint_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uint_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uint_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uint_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uint_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uint_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uint_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uint_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uint_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uint_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uint_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uint_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uint_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uint_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uint_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uint_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uint_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_uvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_uvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_uvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_uvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_uvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_uvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_uvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_uvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_uvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_uvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_uvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_uvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_uvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_uvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_uvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_uvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_uvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_uvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_uvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_uvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_uvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_float_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_float_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_float_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_float_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_float_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_float_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_float_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_float_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_float_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_float_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_float_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_float_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_float_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_float_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_float_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_float_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_float_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_float_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_float_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_float_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_float_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_float_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_float_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_float_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_float_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_float_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_float_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_float_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_float_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_float_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_float_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_float_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_float_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_float_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_float_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_float_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_float_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_float_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_float_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_float_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_float_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_float_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_float_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_float_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_float_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_float_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_float_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_float_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_vec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_vec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_vec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_vec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_vec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_vec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_vec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_vec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_vec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_vec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_vec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_vec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_double_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_double_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_double_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_double_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_double_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_double_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_double_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_double_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_double_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_double_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_double_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_double_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_double_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_double_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_double_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_double_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_double_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_double_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_double_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_double_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_double_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_double_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_double_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_double_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_double_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_double_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_double_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_double_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_double_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_double_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_double_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_double_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_double_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_double_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_double_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_double_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_double_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_double_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_double_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_double_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_double_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_double_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_double_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_double_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_double_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_double_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_double_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_double_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupadd_dvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmul_dvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmin_dvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupmax_dvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveadd_dvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemul_dvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemin_dvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivemax_dvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveadd_dvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemul_dvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemin_dvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivemax_dvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bool_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bool_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bool_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bool_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bool_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bool_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bool_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bool_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bool_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bool_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bool_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bool_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bool_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bool_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bool_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bool_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bool_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bool_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bool_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bool_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bool_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bool_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bool_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bool_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bool_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bool_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bool_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bool_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bool_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bool_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bool_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bool_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bool_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bool_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bool_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bool_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec2_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec2_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec2_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec2_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec3_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec3_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec3_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec3_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupand_bvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupor_bvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupxor_bvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveand_bvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusiveor_bvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupinclusivexor_bvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveand_bvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusiveor_bvec4_geometry +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec4_vertex +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec4_tess_eval +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec4_tess_control +KHR-GLES32.khr.subgroups.partitioned.framebuffer.subgroupexclusivexor_bvec4_geometry +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_int +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_int +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_int +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_int +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_ivec2 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_ivec2 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_ivec2 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_ivec2 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_ivec3 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_ivec3 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_ivec3 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_ivec3 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_ivec4 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_ivec4 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_ivec4 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_ivec4 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_uint +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_uint +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_uint +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_uint +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_uvec2 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_uvec2 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_uvec2 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_uvec2 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_uvec3 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_uvec3 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_uvec3 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_uvec3 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_uvec4 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_uvec4 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_uvec4 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_uvec4 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_float +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_float +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_float +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_float +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_vec2 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_vec2 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_vec2 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_vec2 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_vec3 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_vec3 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_vec3 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_vec3 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_vec4 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_vec4 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_vec4 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_vec4 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_double +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_double +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_double +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_double +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_dvec2 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_dvec2 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_dvec2 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_dvec2 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_dvec3 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_dvec3 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_dvec3 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_dvec3 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_dvec4 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_dvec4 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_dvec4 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_dvec4 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_bool +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_bool +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_bool +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_bool +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_bvec2 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_bvec2 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_bvec2 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_bvec2 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_bvec3 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_bvec3 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_bvec3 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_bvec3 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffle_bvec4 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshufflexor_bvec4 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffleup_bvec4 +KHR-GLES32.khr.subgroups.shuffle.graphics.subgroupshuffledown_bvec4 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_int +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_int +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_int +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_int +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_ivec2 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_ivec2 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_ivec2 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_ivec2 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_ivec3 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_ivec3 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_ivec3 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_ivec3 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_ivec4 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_ivec4 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_ivec4 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_ivec4 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_uint +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_uint +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_uint +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_uint +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_uvec2 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_uvec2 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_uvec2 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_uvec2 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_uvec3 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_uvec3 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_uvec3 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_uvec3 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_uvec4 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_uvec4 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_uvec4 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_uvec4 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_float +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_float +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_float +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_float +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_vec2 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_vec2 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_vec2 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_vec2 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_vec3 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_vec3 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_vec3 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_vec3 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_vec4 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_vec4 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_vec4 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_vec4 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_double +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_double +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_double +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_double +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_dvec2 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_dvec2 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_dvec2 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_dvec2 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_dvec3 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_dvec3 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_dvec3 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_dvec3 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_dvec4 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_dvec4 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_dvec4 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_dvec4 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_bool +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_bool +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_bool +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_bool +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_bvec2 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_bvec2 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_bvec2 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_bvec2 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_bvec3 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_bvec3 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_bvec3 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_bvec3 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffle_bvec4 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshufflexor_bvec4 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffleup_bvec4 +KHR-GLES32.khr.subgroups.shuffle.compute.subgroupshuffledown_bvec4 +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_int_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_int_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_int_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_int_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_int_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_int_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_int_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_int_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_int_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_int_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_int_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_int_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_int_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_int_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_int_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_int_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec2_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec2_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec2_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec2_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec2_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec2_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec2_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec2_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec2_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec2_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec2_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec2_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec2_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec2_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec2_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec2_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec3_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec3_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec3_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec3_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec3_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec3_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec3_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec3_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec3_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec3_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec3_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec3_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec3_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec3_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec3_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec3_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec4_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec4_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec4_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_ivec4_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec4_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec4_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec4_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_ivec4_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec4_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec4_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec4_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_ivec4_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec4_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec4_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec4_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_ivec4_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uint_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uint_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uint_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uint_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uint_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uint_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uint_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uint_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uint_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uint_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uint_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uint_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uint_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uint_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uint_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uint_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec2_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec2_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec2_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec2_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec2_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec2_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec2_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec2_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec2_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec2_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec2_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec2_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec2_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec2_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec2_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec2_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec3_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec3_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec3_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec3_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec3_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec3_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec3_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec3_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec3_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec3_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec3_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec3_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec3_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec3_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec3_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec3_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec4_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec4_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec4_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_uvec4_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec4_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec4_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec4_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_uvec4_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec4_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec4_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec4_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_uvec4_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec4_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec4_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec4_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_uvec4_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_float_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_float_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_float_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_float_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_float_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_float_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_float_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_float_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_float_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_float_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_float_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_float_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_float_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_float_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_float_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_float_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec2_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec2_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec2_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec2_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec2_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec2_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec2_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec2_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec2_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec2_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec2_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec2_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec2_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec2_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec2_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec2_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec3_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec3_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec3_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec3_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec3_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec3_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec3_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec3_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec3_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec3_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec3_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec3_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec3_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec3_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec3_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec3_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec4_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec4_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec4_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_vec4_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec4_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec4_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec4_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_vec4_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec4_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec4_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec4_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_vec4_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec4_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec4_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec4_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_vec4_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_double_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_double_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_double_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_double_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_double_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_double_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_double_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_double_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_double_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_double_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_double_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_double_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_double_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_double_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_double_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_double_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec2_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec2_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec2_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec2_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec2_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec2_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec2_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec2_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec2_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec2_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec2_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec2_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec2_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec2_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec2_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec2_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec3_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec3_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec3_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec3_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec3_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec3_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec3_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec3_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec3_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec3_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec3_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec3_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec3_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec3_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec3_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec3_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec4_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec4_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec4_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_dvec4_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec4_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec4_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec4_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_dvec4_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec4_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec4_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec4_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_dvec4_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec4_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec4_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec4_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_dvec4_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bool_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bool_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bool_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bool_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bool_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bool_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bool_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bool_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bool_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bool_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bool_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bool_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bool_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bool_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bool_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bool_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec2_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec2_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec2_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec2_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec2_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec2_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec2_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec2_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec2_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec2_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec2_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec2_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec2_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec2_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec2_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec2_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec3_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec3_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec3_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec3_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec3_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec3_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec3_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec3_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec3_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec3_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec3_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec3_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec3_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec3_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec3_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec3_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec4_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec4_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec4_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffle_bvec4_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec4_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec4_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec4_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshufflexor_bvec4_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec4_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec4_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec4_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffleup_bvec4_geometry +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec4_vertex +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec4_tess_eval +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec4_tess_control +KHR-GLES32.khr.subgroups.shuffle.framebuffer.subgroupshuffledown_bvec4_geometry +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_int +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_int +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_int +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_int +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_ivec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_ivec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_ivec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_ivec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_ivec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_ivec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_ivec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_ivec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_ivec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_ivec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_ivec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_ivec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_uint +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_uint +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_uint +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_uint +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_uvec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_uvec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_uvec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_uvec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_uvec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_uvec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_uvec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_uvec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_uvec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_uvec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_uvec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_uvec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_float +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_float +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_float +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_float +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_vec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_vec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_vec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_vec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_vec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_vec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_vec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_vec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_vec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_vec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_vec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_vec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_double +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_double +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_double +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_double +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_dvec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_dvec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_dvec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_dvec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_dvec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_dvec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_dvec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_dvec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_dvec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_dvec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_dvec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_dvec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_bool +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_bool +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_bool +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_bool +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_bvec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_bvec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_bvec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_bvec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_bvec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_bvec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_bvec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_bvec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_0_bvec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswaphorizontal_bvec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapvertical_bvec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadswapdiagonal_bvec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_int +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_ivec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_ivec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_ivec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_uint +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_uvec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_uvec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_uvec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_float +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_vec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_vec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_vec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_double +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_dvec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_dvec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_dvec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_bool +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_bvec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_bvec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_1_bvec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_int +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_ivec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_ivec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_ivec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_uint +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_uvec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_uvec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_uvec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_float +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_vec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_vec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_vec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_double +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_dvec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_dvec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_dvec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_bool +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_bvec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_bvec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_2_bvec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_int +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_ivec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_ivec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_ivec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_uint +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_uvec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_uvec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_uvec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_float +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_vec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_vec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_vec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_double +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_dvec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_dvec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_dvec4 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_bool +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_bvec2 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_bvec3 +KHR-GLES32.khr.subgroups.quad.graphics.subgroupquadbroadcast_3_bvec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_int +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_int +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_int +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_int +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_ivec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_ivec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_ivec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_ivec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_ivec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_ivec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_ivec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_ivec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_ivec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_ivec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_ivec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_ivec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_uint +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_uint +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_uint +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_uint +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_uvec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_uvec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_uvec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_uvec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_uvec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_uvec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_uvec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_uvec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_uvec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_uvec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_uvec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_uvec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_float +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_float +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_float +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_float +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_vec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_vec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_vec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_vec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_vec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_vec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_vec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_vec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_vec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_vec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_vec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_vec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_double +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_double +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_double +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_double +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_dvec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_dvec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_dvec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_dvec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_dvec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_dvec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_dvec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_dvec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_dvec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_dvec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_dvec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_dvec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_bool +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_bool +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_bool +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_bool +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_bvec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_bvec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_bvec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_bvec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_bvec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_bvec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_bvec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_bvec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_0_bvec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswaphorizontal_bvec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapvertical_bvec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadswapdiagonal_bvec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_int +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_ivec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_ivec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_ivec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_uint +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_uvec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_uvec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_uvec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_float +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_vec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_vec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_vec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_double +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_dvec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_dvec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_dvec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_bool +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_bvec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_bvec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_1_bvec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_int +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_ivec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_ivec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_ivec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_uint +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_uvec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_uvec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_uvec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_float +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_vec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_vec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_vec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_double +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_dvec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_dvec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_dvec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_bool +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_bvec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_bvec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_2_bvec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_int +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_ivec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_ivec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_ivec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_uint +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_uvec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_uvec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_uvec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_float +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_vec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_vec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_vec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_double +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_dvec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_dvec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_dvec4 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_bool +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_bvec2 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_bvec3 +KHR-GLES32.khr.subgroups.quad.compute.subgroupquadbroadcast_3_bvec4 +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_int_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_int_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_int_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_int_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_int_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_int_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_int_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_int_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_int_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_int_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_int_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_int_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_int_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_int_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_int_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_int_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_ivec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_ivec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_ivec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_ivec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uint_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uint_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uint_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uint_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uint_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uint_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uint_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uint_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uint_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uint_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uint_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uint_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uint_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uint_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uint_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uint_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_uvec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_uvec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_uvec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_uvec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_float_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_float_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_float_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_float_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_float_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_float_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_float_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_float_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_float_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_float_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_float_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_float_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_float_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_float_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_float_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_float_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_vec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_vec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_vec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_vec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_double_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_double_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_double_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_double_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_double_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_double_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_double_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_double_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_double_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_double_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_double_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_double_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_double_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_double_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_double_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_double_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_dvec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_dvec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_dvec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_dvec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bool_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bool_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bool_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bool_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bool_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bool_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bool_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bool_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bool_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bool_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bool_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bool_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bool_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bool_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bool_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bool_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_0_bvec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswaphorizontal_bvec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapvertical_bvec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadswapdiagonal_bvec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_int_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_int_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_int_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_int_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_ivec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uint_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uint_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uint_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uint_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_uvec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_float_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_float_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_float_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_float_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_vec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_double_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_double_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_double_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_double_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_dvec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bool_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bool_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bool_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bool_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_1_bvec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_int_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_int_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_int_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_int_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_ivec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uint_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uint_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uint_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uint_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_uvec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_float_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_float_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_float_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_float_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_vec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_double_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_double_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_double_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_double_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_dvec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bool_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bool_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bool_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bool_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_2_bvec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_int_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_int_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_int_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_int_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_ivec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uint_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uint_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uint_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uint_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_uvec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_float_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_float_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_float_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_float_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_vec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_double_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_double_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_double_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_double_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_dvec4_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bool_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bool_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bool_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bool_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec2_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec2_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec2_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec2_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec3_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec3_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec3_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec3_geometry +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec4_vertex +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec4_tess_eval +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec4_tess_control +KHR-GLES32.khr.subgroups.quad.framebuffer.subgroupquadbroadcast_3_bvec4_geometry +KHR-GLES32.khr.subgroups.shape.graphics.clustered +KHR-GLES32.khr.subgroups.shape.graphics.quad +KHR-GLES32.khr.subgroups.shape.compute.clustered +KHR-GLES32.khr.subgroups.shape.compute.quad +KHR-GLES32.khr.subgroups.shape.framebuffer.clustered_vertex +KHR-GLES32.khr.subgroups.shape.framebuffer.clustered_tess_eval +KHR-GLES32.khr.subgroups.shape.framebuffer.clustered_tess_control +KHR-GLES32.khr.subgroups.shape.framebuffer.clustered_geometry +KHR-GLES32.khr.subgroups.shape.framebuffer.quad_vertex +KHR-GLES32.khr.subgroups.shape.framebuffer.quad_tess_eval +KHR-GLES32.khr.subgroups.shape.framebuffer.quad_tess_control +KHR-GLES32.khr.subgroups.shape.framebuffer.quad_geometry diff --git a/external/openglcts/modules/common/subgroups/glcSubgroupsArithmeticTests.cpp b/external/openglcts/modules/common/subgroups/glcSubgroupsArithmeticTests.cpp index baa09f2..75e3e9e 100755 --- a/external/openglcts/modules/common/subgroups/glcSubgroupsArithmeticTests.cpp +++ b/external/openglcts/modules/common/subgroups/glcSubgroupsArithmeticTests.cpp @@ -317,7 +317,7 @@ std::string getIdentity(int opType, Format format) } else if (isUnsigned) { - return subgroups::getFormatNameForGLSL(format) + "(0)"; + return subgroups::getFormatNameForGLSL(format) + "(0u)"; } else { @@ -405,7 +405,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti switch (caseDef.opType) { default: - indexVars = " uint start = 0, end = gl_SubgroupSize;\n"; + indexVars = " uint start = 0u, end = gl_SubgroupSize;\n"; break; case OPTYPE_INCLUSIVE_ADD: case OPTYPE_INCLUSIVE_MUL: @@ -414,7 +414,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti case OPTYPE_INCLUSIVE_AND: case OPTYPE_INCLUSIVE_OR: case OPTYPE_INCLUSIVE_XOR: - indexVars = " uint start = 0, end = gl_SubgroupInvocationID + 1;\n"; + indexVars = " uint start = 0u, end = gl_SubgroupInvocationID + 1u;\n"; break; case OPTYPE_EXCLUSIVE_ADD: case OPTYPE_EXCLUSIVE_MUL: @@ -423,14 +423,14 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti case OPTYPE_EXCLUSIVE_AND: case OPTYPE_EXCLUSIVE_OR: case OPTYPE_EXCLUSIVE_XOR: - indexVars = " uint start = 0, end = gl_SubgroupInvocationID;\n"; + indexVars = " uint start = 0u, end = gl_SubgroupInvocationID;\n"; break; } bdy << indexVars << " " << subgroups::getFormatNameForGLSL(caseDef.format) << " ref = " << getIdentity(caseDef.opType, caseDef.format) << ";\n" - << " uint tempResult = 0;\n" + << " uint tempResult = 0u;\n" << " for (uint index = start; index < end; index++)\n" << " {\n" << " if (subgroupBallotBitExtract(mask, index))\n" @@ -439,8 +439,8 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti << " }\n" << " }\n" << " tempResult = " << getCompare(caseDef.opType, caseDef.format, "ref", - getOpTypeName(caseDef.opType) + "(data[gl_SubgroupInvocationID])") << " ? 0x1 : 0;\n" - << " if (1 == (gl_SubgroupInvocationID % 2))\n" + getOpTypeName(caseDef.opType) + "(data[gl_SubgroupInvocationID])") << " ? 0x1u : 0u;\n" + << " if (1u == (gl_SubgroupInvocationID % 2u))\n" << " {\n" << " mask = subgroupBallot(true);\n" << " ref = " << getIdentity(caseDef.opType, caseDef.format) << ";\n" @@ -452,17 +452,17 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti << " }\n" << " }\n" << " tempResult |= " << getCompare(caseDef.opType, caseDef.format, "ref", - getOpTypeName(caseDef.opType) + "(data[gl_SubgroupInvocationID])") << " ? 0x2 : 0;\n" + getOpTypeName(caseDef.opType) + "(data[gl_SubgroupInvocationID])") << " ? 0x2u : 0u;\n" << " }\n" << " else\n" << " {\n" - << " tempResult |= 0x2;\n" + << " tempResult |= 0x2u;\n" << " }\n"; if (SHADER_STAGE_VERTEX_BIT == caseDef.shaderStage) { std::ostringstream vertexSrc; - vertexSrc << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n" + vertexSrc << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_arithmetic: enable\n" << "#extension GL_KHR_shader_subgroup_ballot: enable\n" << "layout(location = 0) in highp vec4 in_position;\n" @@ -486,7 +486,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti { std::ostringstream geometry; - geometry << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n" + geometry << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_arithmetic: enable\n" << "#extension GL_KHR_shader_subgroup_ballot: enable\n" << "layout(points) in;\n" @@ -512,7 +512,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti else if (SHADER_STAGE_TESS_CONTROL_BIT == caseDef.shaderStage) { std::ostringstream controlSource; - controlSource << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n" + controlSource << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_arithmetic: enable\n" << "#extension GL_KHR_shader_subgroup_ballot: enable\n" << "layout(vertices = 2) out;\n" @@ -543,7 +543,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti { std::ostringstream evaluationSource; - evaluationSource << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n" + evaluationSource << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_arithmetic: enable\n" << "#extension GL_KHR_shader_subgroup_ballot: enable\n" << "layout(isolines, equal_spacing, ccw ) in;\n" @@ -576,7 +576,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) switch (caseDef.opType) { default: - indexVars = " uint start = 0, end = gl_SubgroupSize;\n"; + indexVars = " uint start = 0u, end = gl_SubgroupSize;\n"; break; case OPTYPE_INCLUSIVE_ADD: case OPTYPE_INCLUSIVE_MUL: @@ -585,7 +585,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) case OPTYPE_INCLUSIVE_AND: case OPTYPE_INCLUSIVE_OR: case OPTYPE_INCLUSIVE_XOR: - indexVars = " uint start = 0, end = gl_SubgroupInvocationID + 1;\n"; + indexVars = " uint start = 0u, end = gl_SubgroupInvocationID + 1u;\n"; break; case OPTYPE_EXCLUSIVE_ADD: case OPTYPE_EXCLUSIVE_MUL: @@ -594,7 +594,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) case OPTYPE_EXCLUSIVE_AND: case OPTYPE_EXCLUSIVE_OR: case OPTYPE_EXCLUSIVE_XOR: - indexVars = " uint start = 0, end = gl_SubgroupInvocationID;\n"; + indexVars = " uint start = 0u, end = gl_SubgroupInvocationID;\n"; break; } @@ -602,7 +602,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) indexVars + " " + subgroups::getFormatNameForGLSL(caseDef.format) + " ref = " + getIdentity(caseDef.opType, caseDef.format) + ";\n" - " uint tempResult = 0;\n" + " uint tempResult = 0u;\n" " for (uint index = start; index < end; index++)\n" " {\n" " if (subgroupBallotBitExtract(mask, index))\n" @@ -610,8 +610,8 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) " ref = " + getOpTypeOperation(caseDef.opType, caseDef.format, "ref", "data[index]") + ";\n" " }\n" " }\n" - " tempResult = " + getCompare(caseDef.opType, caseDef.format, "ref", getOpTypeName(caseDef.opType) + "(data[gl_SubgroupInvocationID])") + " ? 0x1 : 0;\n" - " if (1 == (gl_SubgroupInvocationID % 2))\n" + " tempResult = " + getCompare(caseDef.opType, caseDef.format, "ref", getOpTypeName(caseDef.opType) + "(data[gl_SubgroupInvocationID])") + " ? 0x1u : 0u;\n" + " if (1u == (gl_SubgroupInvocationID % 2u))\n" " {\n" " mask = subgroupBallot(true);\n" " ref = " + getIdentity(caseDef.opType, caseDef.format) + ";\n" @@ -622,18 +622,18 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) " ref = " + getOpTypeOperation(caseDef.opType, caseDef.format, "ref", "data[index]") + ";\n" " }\n" " }\n" - " tempResult |= " + getCompare(caseDef.opType, caseDef.format, "ref", getOpTypeName(caseDef.opType) + "(data[gl_SubgroupInvocationID])") + " ? 0x2 : 0;\n" + " tempResult |= " + getCompare(caseDef.opType, caseDef.format, "ref", getOpTypeName(caseDef.opType) + "(data[gl_SubgroupInvocationID])") + " ? 0x2u : 0u;\n" " }\n" " else\n" " {\n" - " tempResult |= 0x2;\n" + " tempResult |= 0x2u;\n" " }\n"; if (SHADER_STAGE_COMPUTE_BIT == caseDef.shaderStage) { std::ostringstream src; - src << "#version 450\n" + src << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_arithmetic: enable\n" << "#extension GL_KHR_shader_subgroup_ballot: enable\n" << "layout (${LOCAL_SIZE_X}, ${LOCAL_SIZE_Y}, ${LOCAL_SIZE_Z}) in;\n" @@ -663,7 +663,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { { const std::string vertex = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_arithmetic: enable\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" "layout(binding = 0, std430) buffer Buffer0\n" @@ -690,7 +690,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { const std::string tesc = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_arithmetic: enable\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" "layout(vertices=1) out;\n" @@ -720,7 +720,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { const std::string tese = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_arithmetic: enable\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" "layout(isolines) in;\n" @@ -737,7 +737,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) "{\n" " uvec4 mask = subgroupBallot(true);\n" + bdy + - " b2.result[gl_PrimitiveID * 2 + uint(gl_TessCoord.x + 0.5)] = tempResult;\n" + " b2.result[gl_PrimitiveID * 2 + int(gl_TessCoord.x + 0.5)] = tempResult;\n" " float pixelSize = 2.0f/1024.0f;\n" " gl_Position = gl_in[0].gl_Position + gl_TessCoord.x * pixelSize / 2.0f;\n" "}\n"; @@ -746,7 +746,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { const std::string geometry = - "#version 450\n" + // version added by addGeometryShadersFromTemplate "#extension GL_KHR_shader_subgroup_arithmetic: enable\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" "layout(${TOPOLOGY}) in;\n" @@ -774,9 +774,10 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { const std::string fragment = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_arithmetic: enable\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" + "precision highp float;\n" "layout(location = 0) out uint result;\n" "layout(binding = 4, std430) readonly buffer Buffer4\n" "{\n" diff --git a/external/openglcts/modules/common/subgroups/glcSubgroupsBallotBroadcastTests.cpp b/external/openglcts/modules/common/subgroups/glcSubgroupsBallotBroadcastTests.cpp index 456d015..a379ba9 100755 --- a/external/openglcts/modules/common/subgroups/glcSubgroupsBallotBroadcastTests.cpp +++ b/external/openglcts/modules/common/subgroups/glcSubgroupsBallotBroadcastTests.cpp @@ -84,22 +84,22 @@ std::string getBodySource(CaseDefinition caseDef) std::ostringstream bdy; bdy << " uvec4 mask = subgroupBallot(true);\n"; - bdy << " uint tempResult = 0;\n"; + bdy << " uint tempResult = 0u;\n"; if (OPTYPE_BROADCAST == caseDef.opType) { - bdy << " tempResult = 0x3;\n"; + bdy << " tempResult = 0x3u;\n"; for (int i = 0; i < (int)subgroups::maxSupportedSubgroupSize(); i++) { bdy << " {\n" - << " const uint id = "<< i << ";\n" + << " const uint id = "<< i << "u;\n" << " " << subgroups::getFormatNameForGLSL(caseDef.format) << " op = subgroupBroadcast(data1[gl_SubgroupInvocationID], id);\n" << " if ((id < gl_SubgroupSize) && subgroupBallotBitExtract(mask, id))\n" << " {\n" << " if (op != data1[id])\n" << " {\n" - << " tempResult = 0;\n" + << " tempResult = 0u;\n" << " }\n" << " }\n" << " }\n"; @@ -107,8 +107,8 @@ std::string getBodySource(CaseDefinition caseDef) } else { - bdy << " uint firstActive = 0;\n" - << " for (uint i = 0; i < gl_SubgroupSize; i++)\n" + bdy << " uint firstActive = 0u;\n" + << " for (uint i = 0u; i < gl_SubgroupSize; i++)\n" << " {\n" << " if (subgroupBallotBitExtract(mask, i))\n" << " {\n" @@ -116,11 +116,11 @@ std::string getBodySource(CaseDefinition caseDef) << " break;\n" << " }\n" << " }\n" - << " tempResult |= (subgroupBroadcastFirst(data1[gl_SubgroupInvocationID]) == data1[firstActive]) ? 0x1 : 0;\n" + << " tempResult |= (subgroupBroadcastFirst(data1[gl_SubgroupInvocationID]) == data1[firstActive]) ? 0x1u : 0u;\n" << " // make the firstActive invocation inactive now\n" << " if (firstActive == gl_SubgroupInvocationID)\n" << " {\n" - << " for (uint i = 0; i < gl_SubgroupSize; i++)\n" + << " for (uint i = 0u; i < gl_SubgroupSize; i++)\n" << " {\n" << " if (subgroupBallotBitExtract(mask, i))\n" << " {\n" @@ -128,12 +128,12 @@ std::string getBodySource(CaseDefinition caseDef) << " break;\n" << " }\n" << " }\n" - << " tempResult |= (subgroupBroadcastFirst(data1[gl_SubgroupInvocationID]) == data1[firstActive]) ? 0x2 : 0;\n" + << " tempResult |= (subgroupBroadcastFirst(data1[gl_SubgroupInvocationID]) == data1[firstActive]) ? 0x2u : 0u;\n" << " }\n" << " else\n" << " {\n" << " // the firstActive invocation didn't partake in the second result so set it to true\n" - << " tempResult |= 0x2;\n" + << " tempResult |= 0x2u;\n" << " }\n"; } return bdy.str(); @@ -151,7 +151,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio if (SHADER_STAGE_VERTEX_BIT == caseDef.shaderStage) { std::ostringstream vertex; - vertex << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n" + vertex << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_ballot: enable\n" << "layout(location = 0) in highp vec4 in_position;\n" << "layout(location = 0) out float out_color;\n" @@ -173,7 +173,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio { std::ostringstream geometry; - geometry << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n" + geometry << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_ballot: enable\n" << "layout(points) in;\n" << "layout(points, max_vertices = 1) out;\n" @@ -198,7 +198,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio { std::ostringstream controlSource; - controlSource << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n" + controlSource << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_ballot: enable\n" << "layout(vertices = 2) out;\n" << "layout(location = 0) out float out_color[];\n" @@ -225,7 +225,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio else if (SHADER_STAGE_TESS_EVALUATION_BIT == caseDef.shaderStage) { std::ostringstream evaluationSource; - evaluationSource << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n" + evaluationSource << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_ballot: enable\n" << "layout(isolines, equal_spacing, ccw ) in;\n" << "layout(location = 0) out float out_color;\n" @@ -258,7 +258,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { std::ostringstream src; - src << "#version 450\n" + src << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_ballot: enable\n" << "layout (${LOCAL_SIZE_X}, ${LOCAL_SIZE_Y}, ${LOCAL_SIZE_Z}) in;\n" << "layout(binding = 0, std430) buffer Buffer0\n" @@ -285,7 +285,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) else { const string vertex = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" "layout(binding = 0, std430) buffer Buffer0\n" "{\n" @@ -307,7 +307,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) "}\n"; const string tesc = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" "layout(vertices=1) out;\n" "layout(binding = 1, std430) buffer Buffer1\n" @@ -332,7 +332,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) "}\n"; const string tese = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" "layout(isolines) in;\n" "layout(binding = 2, std430) buffer Buffer2\n" @@ -347,13 +347,13 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) "void main (void)\n" "{\n" + bdyStr + - " b2.result[gl_PrimitiveID * 2 + uint(gl_TessCoord.x + 0.5)] = tempResult;\n" + " b2.result[gl_PrimitiveID * 2 + int(gl_TessCoord.x + 0.5)] = tempResult;\n" " float pixelSize = 2.0f/1024.0f;\n" " gl_Position = gl_in[0].gl_Position + gl_TessCoord.x * pixelSize / 2.0f;\n" "}\n"; const string geometry = - "#version 450\n" + //version string added by addGeometryShadersFromTemplate "#extension GL_KHR_shader_subgroup_ballot: enable\n" "layout(${TOPOLOGY}) in;\n" "layout(points, max_vertices = 1) out;\n" @@ -376,8 +376,9 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) "}\n"; const string fragment = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" + "precision highp float;\n" "layout(location = 0) out uint result;\n" "layout(binding = 4, std430) readonly buffer Buffer4\n" "{\n" diff --git a/external/openglcts/modules/common/subgroups/glcSubgroupsBallotOtherTests.cpp b/external/openglcts/modules/common/subgroups/glcSubgroupsBallotOtherTests.cpp index d354fdb..cd74fce 100755 --- a/external/openglcts/modules/common/subgroups/glcSubgroupsBallotOtherTests.cpp +++ b/external/openglcts/modules/common/subgroups/glcSubgroupsBallotOtherTests.cpp @@ -99,17 +99,17 @@ std::string getBodySource(CaseDefinition caseDef) bdy << " uvec4 allOnes = uvec4(0xFFFFFFFF);\n" << " uvec4 allZeros = uvec4(0);\n" - << " uint tempResult = 0;\n" + << " uint tempResult = 0u;\n" << "#define MAKE_HIGH_BALLOT_RESULT(i) uvec4(" - << "i >= 32 ? 0 : (0xFFFFFFFF << i), " - << "i >= 64 ? 0 : (0xFFFFFFFF << ((i < 32) ? 0 : (i - 32))), " - << "i >= 96 ? 0 : (0xFFFFFFFF << ((i < 64) ? 0 : (i - 64))), " - << " 0xFFFFFFFF << ((i < 96) ? 0 : (i - 96)))\n" + << "i >= 32u ? 0u : (0xFFFFFFFFu << i), " + << "i >= 64u ? 0u : (0xFFFFFFFFu << ((i < 32u) ? 0u : (i - 32u))), " + << "i >= 96u ? 0u : (0xFFFFFFFFu << ((i < 64u) ? 0u : (i - 64u))), " + << " 0xFFFFFFFFu << ((i < 96u) ? 0u : (i - 96u)))\n" << "#define MAKE_SINGLE_BIT_BALLOT_RESULT(i) uvec4(" - << "i >= 32 ? 0 : 0x1 << i, " - << "i < 32 || i >= 64 ? 0 : 0x1 << (i - 32), " - << "i < 64 || i >= 96 ? 0 : 0x1 << (i - 64), " - << "i < 96 ? 0 : 0x1 << (i - 96))\n"; + << "i >= 32u ? 0u : 0x1u << i, " + << "i < 32u || i >= 64u ? 0u : 0x1u << (i - 32u), " + << "i < 64u || i >= 96u ? 0u : 0x1u << (i - 64u), " + << "i < 96u ? 0u : 0x1u << (i - 96u))\n"; switch (caseDef.opType) { @@ -117,39 +117,39 @@ std::string getBodySource(CaseDefinition caseDef) DE_FATAL("Unknown op type!"); break; case OPTYPE_INVERSE_BALLOT: - bdy << " tempResult |= subgroupInverseBallot(allOnes) ? 0x1 : 0;\n" - << " tempResult |= subgroupInverseBallot(allZeros) ? 0 : 0x2;\n" - << " tempResult |= subgroupInverseBallot(subgroupBallot(true)) ? 0x4 : 0;\n" - << " tempResult |= 0x8;\n"; + bdy << " tempResult |= subgroupInverseBallot(allOnes) ? 0x1u : 0u;\n" + << " tempResult |= subgroupInverseBallot(allZeros) ? 0u : 0x2u;\n" + << " tempResult |= subgroupInverseBallot(subgroupBallot(true)) ? 0x4u : 0u;\n" + << " tempResult |= 0x8u;\n"; break; case OPTYPE_BALLOT_BIT_EXTRACT: - bdy << " tempResult |= subgroupBallotBitExtract(allOnes, gl_SubgroupInvocationID) ? 0x1 : 0;\n" - << " tempResult |= subgroupBallotBitExtract(allZeros, gl_SubgroupInvocationID) ? 0 : 0x2;\n" - << " tempResult |= subgroupBallotBitExtract(subgroupBallot(true), gl_SubgroupInvocationID) ? 0x4 : 0;\n" - << " tempResult |= 0x8;\n" - << " for (uint i = 0; i < gl_SubgroupSize; i++)\n" + bdy << " tempResult |= subgroupBallotBitExtract(allOnes, gl_SubgroupInvocationID) ? 0x1u : 0u;\n" + << " tempResult |= subgroupBallotBitExtract(allZeros, gl_SubgroupInvocationID) ? 0u : 0x2u;\n" + << " tempResult |= subgroupBallotBitExtract(subgroupBallot(true), gl_SubgroupInvocationID) ? 0x4u : 0u;\n" + << " tempResult |= 0x8u;\n" + << " for (uint i = 0u; i < gl_SubgroupSize; i++)\n" << " {\n" << " if (!subgroupBallotBitExtract(allOnes, gl_SubgroupInvocationID))\n" << " {\n" - << " tempResult &= ~0x8;\n" + << " tempResult &= ~0x8u;\n" << " }\n" << " }\n"; break; case OPTYPE_BALLOT_BIT_COUNT: - bdy << " tempResult |= gl_SubgroupSize == subgroupBallotBitCount(allOnes) ? 0x1 : 0;\n" - << " tempResult |= 0 == subgroupBallotBitCount(allZeros) ? 0x2 : 0;\n" - << " tempResult |= 0 < subgroupBallotBitCount(subgroupBallot(true)) ? 0x4 : 0;\n" - << " tempResult |= 0 == subgroupBallotBitCount(MAKE_HIGH_BALLOT_RESULT(gl_SubgroupSize)) ? 0x8 : 0;\n"; + bdy << " tempResult |= gl_SubgroupSize == subgroupBallotBitCount(allOnes) ? 0x1u : 0u;\n" + << " tempResult |= 0u == subgroupBallotBitCount(allZeros) ? 0x2u : 0u;\n" + << " tempResult |= 0u < subgroupBallotBitCount(subgroupBallot(true)) ? 0x4u : 0u;\n" + << " tempResult |= 0u == subgroupBallotBitCount(MAKE_HIGH_BALLOT_RESULT(gl_SubgroupSize)) ? 0x8u : 0u;\n"; break; case OPTYPE_BALLOT_INCLUSIVE_BIT_COUNT: - bdy << " uint inclusiveOffset = gl_SubgroupInvocationID + 1;\n" - << " tempResult |= inclusiveOffset == subgroupBallotInclusiveBitCount(allOnes) ? 0x1 : 0;\n" - << " tempResult |= 0 == subgroupBallotInclusiveBitCount(allZeros) ? 0x2 : 0;\n" - << " tempResult |= 0 < subgroupBallotInclusiveBitCount(subgroupBallot(true)) ? 0x4 : 0;\n" - << " tempResult |= 0x8;\n" + bdy << " uint inclusiveOffset = gl_SubgroupInvocationID + 1u;\n" + << " tempResult |= inclusiveOffset == subgroupBallotInclusiveBitCount(allOnes) ? 0x1u : 0u;\n" + << " tempResult |= 0u == subgroupBallotInclusiveBitCount(allZeros) ? 0x2u : 0u;\n" + << " tempResult |= 0u < subgroupBallotInclusiveBitCount(subgroupBallot(true)) ? 0x4u : 0u;\n" + << " tempResult |= 0x8u;\n" << " uvec4 inclusiveUndef = MAKE_HIGH_BALLOT_RESULT(inclusiveOffset);\n" << " bool undefTerritory = false;\n" - << " for (uint i = 0; i <= 128; i++)\n" + << " for (uint i = 0u; i <= 128u; i++)\n" << " {\n" << " uvec4 iUndef = MAKE_HIGH_BALLOT_RESULT(i);\n" << " if (iUndef == inclusiveUndef)" @@ -157,25 +157,25 @@ std::string getBodySource(CaseDefinition caseDef) << " undefTerritory = true;\n" << " }\n" << " uint inclusiveBitCount = subgroupBallotInclusiveBitCount(iUndef);\n" - << " if (undefTerritory && (0 != inclusiveBitCount))\n" + << " if (undefTerritory && (0u != inclusiveBitCount))\n" << " {\n" - << " tempResult &= ~0x8;\n" + << " tempResult &= ~0x8u;\n" << " }\n" - << " else if (!undefTerritory && (0 == inclusiveBitCount))\n" + << " else if (!undefTerritory && (0u == inclusiveBitCount))\n" << " {\n" - << " tempResult &= ~0x8;\n" + << " tempResult &= ~0x8u;\n" << " }\n" << " }\n"; break; case OPTYPE_BALLOT_EXCLUSIVE_BIT_COUNT: bdy << " uint exclusiveOffset = gl_SubgroupInvocationID;\n" - << " tempResult |= exclusiveOffset == subgroupBallotExclusiveBitCount(allOnes) ? 0x1 : 0;\n" - << " tempResult |= 0 == subgroupBallotExclusiveBitCount(allZeros) ? 0x2 : 0;\n" - << " tempResult |= 0x4;\n" - << " tempResult |= 0x8;\n" + << " tempResult |= exclusiveOffset == subgroupBallotExclusiveBitCount(allOnes) ? 0x1u : 0u;\n" + << " tempResult |= 0u == subgroupBallotExclusiveBitCount(allZeros) ? 0x2u : 0u;\n" + << " tempResult |= 0x4u;\n" + << " tempResult |= 0x8u;\n" << " uvec4 exclusiveUndef = MAKE_HIGH_BALLOT_RESULT(exclusiveOffset);\n" << " bool undefTerritory = false;\n" - << " for (uint i = 0; i <= 128; i++)\n" + << " for (uint i = 0u; i <= 128u; i++)\n" << " {\n" << " uvec4 iUndef = MAKE_HIGH_BALLOT_RESULT(i);\n" << " if (iUndef == exclusiveUndef)" @@ -183,53 +183,53 @@ std::string getBodySource(CaseDefinition caseDef) << " undefTerritory = true;\n" << " }\n" << " uint exclusiveBitCount = subgroupBallotExclusiveBitCount(iUndef);\n" - << " if (undefTerritory && (0 != exclusiveBitCount))\n" + << " if (undefTerritory && (0u != exclusiveBitCount))\n" << " {\n" - << " tempResult &= ~0x4;\n" + << " tempResult &= ~0x4u;\n" << " }\n" - << " else if (!undefTerritory && (0 == exclusiveBitCount))\n" + << " else if (!undefTerritory && (0u == exclusiveBitCount))\n" << " {\n" - << " tempResult &= ~0x8;\n" + << " tempResult &= ~0x8u;\n" << " }\n" << " }\n"; break; case OPTYPE_BALLOT_FIND_LSB: - bdy << " tempResult |= 0 == subgroupBallotFindLSB(allOnes) ? 0x1 : 0;\n" + bdy << " tempResult |= 0u == subgroupBallotFindLSB(allOnes) ? 0x1u : 0u;\n" << " if (subgroupElect())\n" << " {\n" - << " tempResult |= 0x2;\n" + << " tempResult |= 0x2u;\n" << " }\n" << " else\n" << " {\n" - << " tempResult |= 0 < subgroupBallotFindLSB(subgroupBallot(true)) ? 0x2 : 0;\n" + << " tempResult |= 0u < subgroupBallotFindLSB(subgroupBallot(true)) ? 0x2u : 0u;\n" << " }\n" - << " tempResult |= gl_SubgroupSize > subgroupBallotFindLSB(subgroupBallot(true)) ? 0x4 : 0;\n" - << " tempResult |= 0x8;\n" - << " for (uint i = 0; i < gl_SubgroupSize; i++)\n" + << " tempResult |= gl_SubgroupSize > subgroupBallotFindLSB(subgroupBallot(true)) ? 0x4u : 0u;\n" + << " tempResult |= 0x8u;\n" + << " for (uint i = 0u; i < gl_SubgroupSize; i++)\n" << " {\n" << " if (i != subgroupBallotFindLSB(MAKE_HIGH_BALLOT_RESULT(i)))\n" << " {\n" - << " tempResult &= ~0x8;\n" + << " tempResult &= ~0x8u;\n" << " }\n" << " }\n"; break; case OPTYPE_BALLOT_FIND_MSB: - bdy << " tempResult |= (gl_SubgroupSize - 1) == subgroupBallotFindMSB(allOnes) ? 0x1 : 0;\n" + bdy << " tempResult |= (gl_SubgroupSize - 1u) == subgroupBallotFindMSB(allOnes) ? 0x1u : 0u;\n" << " if (subgroupElect())\n" << " {\n" - << " tempResult |= 0x2;\n" + << " tempResult |= 0x2u;\n" << " }\n" << " else\n" << " {\n" - << " tempResult |= 0 < subgroupBallotFindMSB(subgroupBallot(true)) ? 0x2 : 0;\n" + << " tempResult |= 0u < subgroupBallotFindMSB(subgroupBallot(true)) ? 0x2u : 0u;\n" << " }\n" - << " tempResult |= gl_SubgroupSize > subgroupBallotFindMSB(subgroupBallot(true)) ? 0x4 : 0;\n" - << " tempResult |= 0x8;\n" - << " for (uint i = 0; i < gl_SubgroupSize; i++)\n" + << " tempResult |= gl_SubgroupSize > subgroupBallotFindMSB(subgroupBallot(true)) ? 0x4u : 0u;\n" + << " tempResult |= 0x8u;\n" + << " for (uint i = 0u; i < gl_SubgroupSize; i++)\n" << " {\n" << " if (i != subgroupBallotFindMSB(MAKE_SINGLE_BIT_BALLOT_RESULT(i)))\n" << " {\n" - << " tempResult &= ~0x8;\n" + << " tempResult &= ~0x8u;\n" << " }\n" << " }\n"; break; @@ -249,7 +249,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio if (SHADER_STAGE_VERTEX_BIT == caseDef.shaderStage) { std::ostringstream vertex; - vertex << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n" + vertex << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_ballot: enable\n" << "layout(location = 0) in highp vec4 in_position;\n" << "layout(location = 0) out float out_color;\n" @@ -267,7 +267,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio { std::ostringstream geometry; - geometry << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n" + geometry << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_ballot: enable\n" << "layout(points) in;\n" << "layout(points, max_vertices = 1) out;\n" @@ -287,7 +287,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio { std::ostringstream controlSource; - controlSource << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n" + controlSource << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_ballot: enable\n" << "layout(vertices = 2) out;\n" << "layout(location = 0) out float out_color[];\n" @@ -310,7 +310,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio else if (SHADER_STAGE_TESS_EVALUATION_BIT == caseDef.shaderStage) { std::ostringstream evaluationSource; - evaluationSource << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n" + evaluationSource << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_ballot: enable\n" << "layout(isolines, equal_spacing, ccw ) in;\n" << "layout(location = 0) out float out_color;\n" @@ -338,7 +338,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { std::ostringstream src; - src << "#version 450\n" + src << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_ballot: enable\n" << "layout (${LOCAL_SIZE_X}, ${LOCAL_SIZE_Y}, ${LOCAL_SIZE_Z}) in;\n" << "layout(binding = 0, std430) buffer Buffer0\n" @@ -361,7 +361,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) else { const string vertex = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" "layout(binding = 0, std430) buffer Buffer0\n" "{\n" @@ -379,7 +379,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) "}\n"; const string tesc = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" "layout(vertices=1) out;\n" "layout(binding = 1, std430) buffer Buffer1\n" @@ -400,7 +400,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) "}\n"; const string tese = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" "layout(isolines) in;\n" "layout(binding = 2, std430) buffer Buffer2\n" @@ -411,13 +411,13 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) "void main (void)\n" "{\n" + bdyStr + - " b2.result[gl_PrimitiveID * 2 + uint(gl_TessCoord.x + 0.5)] = tempResult;\n" + " b2.result[gl_PrimitiveID * 2 + int(gl_TessCoord.x + 0.5)] = tempResult;\n" " float pixelSize = 2.0f/1024.0f;\n" " gl_Position = gl_in[0].gl_Position + gl_TessCoord.x * pixelSize / 2.0f;\n" "}\n"; const string geometry = - "#version 450\n" + // version string added by addGeometryShadersFromTemplate "#extension GL_KHR_shader_subgroup_ballot: enable\n" "layout(${TOPOLOGY}) in;\n" "layout(points, max_vertices = 1) out;\n" @@ -436,7 +436,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) "}\n"; const string fragment = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" "layout(location = 0) out uint result;\n" "void main (void)\n" diff --git a/external/openglcts/modules/common/subgroups/glcSubgroupsBallotTests.cpp b/external/openglcts/modules/common/subgroups/glcSubgroupsBallotTests.cpp index ac52444..8d226c0 100755 --- a/external/openglcts/modules/common/subgroups/glcSubgroupsBallotTests.cpp +++ b/external/openglcts/modules/common/subgroups/glcSubgroupsBallotTests.cpp @@ -69,7 +69,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio if (SHADER_STAGE_VERTEX_BIT == caseDef.shaderStage) { const string vertexGLSL = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" "layout(location = 0) in highp vec4 in_position;\n" "layout(location = 0) out float out_color;\n" @@ -80,11 +80,11 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio "\n" "void main (void)\n" "{\n" - " uint tempResult = 0;\n" - " tempResult |= !bool(uvec4(0) == subgroupBallot(true)) ? 0x1 : 0;\n" - " bool bData = data[gl_SubgroupInvocationID] != 0;\n" - " tempResult |= !bool(uvec4(0) == subgroupBallot(bData)) ? 0x2 : 0;\n" - " tempResult |= uvec4(0) == subgroupBallot(false) ? 0x4 : 0;\n" + " uint tempResult = 0u;\n" + " tempResult |= !bool(uvec4(0) == subgroupBallot(true)) ? 0x1u : 0u;\n" + " bool bData = data[gl_SubgroupInvocationID] != 0u;\n" + " tempResult |= !bool(uvec4(0) == subgroupBallot(bData)) ? 0x2u : 0u;\n" + " tempResult |= uvec4(0) == subgroupBallot(false) ? 0x4u : 0u;\n" " out_color = float(tempResult);\n" " gl_Position = in_position;\n" " gl_PointSize = 1.0f;\n" @@ -94,7 +94,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio else if (SHADER_STAGE_GEOMETRY_BIT == caseDef.shaderStage) { const string geometryGLSL = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" "layout(points) in;\n" "layout(points, max_vertices = 1) out;\n" @@ -106,11 +106,11 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio "\n" "void main (void)\n" "{\n" - " uint tempResult = 0;\n" - " tempResult |= !bool(uvec4(0) == subgroupBallot(true)) ? 0x1 : 0;\n" - " bool bData = data[gl_SubgroupInvocationID] != 0;\n" - " tempResult |= !bool(uvec4(0) == subgroupBallot(bData)) ? 0x2 : 0;\n" - " tempResult |= uvec4(0) == subgroupBallot(false) ? 0x4 : 0;\n" + " uint tempResult = 0u;\n" + " tempResult |= !bool(uvec4(0) == subgroupBallot(true)) ? 0x1u : 0u;\n" + " bool bData = data[gl_SubgroupInvocationID] != 0u;\n" + " tempResult |= !bool(uvec4(0) == subgroupBallot(bData)) ? 0x2u : 0u;\n" + " tempResult |= uvec4(0) == subgroupBallot(false) ? 0x4u : 0u;\n" " out_color = float(tempResult);\n" " gl_Position = gl_in[0].gl_Position;\n" " EmitVertex();\n" @@ -121,7 +121,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio else if (SHADER_STAGE_TESS_CONTROL_BIT == caseDef.shaderStage) { const string controlSourceGLSL = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" "layout(vertices = 2) out;\n" "layout(location = 0) out float out_color[];\n" @@ -137,11 +137,11 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio " gl_TessLevelOuter[0] = 1.0f;\n" " gl_TessLevelOuter[1] = 1.0f;\n" " }\n" - " uint tempResult = 0;\n" - " tempResult |= !bool(uvec4(0) == subgroupBallot(true)) ? 0x1 : 0;\n" - " bool bData = data[gl_SubgroupInvocationID] != 0;\n" - " tempResult |= !bool(uvec4(0) == subgroupBallot(bData)) ? 0x2 : 0;\n" - " tempResult |= uvec4(0) == subgroupBallot(false) ? 0x4 : 0;\n" + " uint tempResult = 0u;\n" + " tempResult |= !bool(uvec4(0) == subgroupBallot(true)) ? 0x1u : 0u;\n" + " bool bData = data[gl_SubgroupInvocationID] != 0u;\n" + " tempResult |= !bool(uvec4(0) == subgroupBallot(bData)) ? 0x2u : 0u;\n" + " tempResult |= uvec4(0) == subgroupBallot(false) ? 0x4u : 0u;\n" " out_color[gl_InvocationID] = float(tempResult);\n" " gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position;\n" "}\n"; @@ -152,7 +152,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio else if (SHADER_STAGE_TESS_EVALUATION_BIT == caseDef.shaderStage) { const string evaluationSourceGLSL = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" "layout(isolines, equal_spacing, ccw ) in;\n" "layout(location = 0) out float out_color;\n" @@ -163,11 +163,11 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio "\n" "void main (void)\n" "{\n" - " uint tempResult = 0;\n" - " tempResult |= !bool(uvec4(0) == subgroupBallot(true)) ? 0x1 : 0;\n" - " bool bData = data[gl_SubgroupInvocationID] != 0;\n" - " tempResult |= !bool(uvec4(0) == subgroupBallot(bData)) ? 0x2 : 0;\n" - " tempResult |= uvec4(0) == subgroupBallot(false) ? 0x4 : 0;\n" + " uint tempResult = 0u;\n" + " tempResult |= !bool(uvec4(0) == subgroupBallot(true)) ? 0x1u : 0u;\n" + " bool bData = data[gl_SubgroupInvocationID] != 0u;\n" + " tempResult |= !bool(uvec4(0) == subgroupBallot(bData)) ? 0x2u : 0u;\n" + " tempResult |= uvec4(0) == subgroupBallot(false) ? 0x4u : 0u;\n" " out_color = float(tempResult);\n" " gl_Position = mix(gl_in[0].gl_Position, gl_in[1].gl_Position, gl_TessCoord.x);\n" "}\n"; @@ -188,7 +188,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { std::ostringstream src; - src << "#version 450\n" + src << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_ballot: enable\n" << "layout (${LOCAL_SIZE_X}, ${LOCAL_SIZE_Y}, ${LOCAL_SIZE_Z}) in;\n" << "layout(binding = 0, std430) buffer Buffer1\n" @@ -207,11 +207,11 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) << " highp uint offset = globalSize.x * ((globalSize.y * " "gl_GlobalInvocationID.z) + gl_GlobalInvocationID.y) + " "gl_GlobalInvocationID.x;\n" - << " uint tempResult = 0;\n" - << " tempResult |= sharedMemoryBallot(true) == subgroupBallot(true) ? 0x1 : 0;\n" - << " bool bData = data[gl_SubgroupInvocationID] != 0;\n" - << " tempResult |= sharedMemoryBallot(bData) == subgroupBallot(bData) ? 0x2 : 0;\n" - << " tempResult |= uvec4(0) == subgroupBallot(false) ? 0x4 : 0;\n" + << " uint tempResult = 0u;\n" + << " tempResult |= sharedMemoryBallot(true) == subgroupBallot(true) ? 0x1u : 0u;\n" + << " bool bData = data[gl_SubgroupInvocationID] != 0u;\n" + << " tempResult |= sharedMemoryBallot(bData) == subgroupBallot(bData) ? 0x2u : 0u;\n" + << " tempResult |= uvec4(0) == subgroupBallot(false) ? 0x4u : 0u;\n" << " result[offset] = tempResult;\n" << "}\n"; @@ -220,7 +220,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) else { const string vertex = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" "layout(binding = 0, std430) buffer Buffer0\n" "{\n" @@ -233,11 +233,11 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) "\n" "void main (void)\n" "{\n" - " uint tempResult = 0;\n" - " tempResult |= !bool(uvec4(0) == subgroupBallot(true)) ? 0x1 : 0;\n" - " bool bData = data[gl_SubgroupInvocationID] != 0;\n" - " tempResult |= !bool(uvec4(0) == subgroupBallot(bData)) ? 0x2 : 0;\n" - " tempResult |= uvec4(0) == subgroupBallot(false) ? 0x4 : 0;\n" + " uint tempResult = 0u;\n" + " tempResult |= !bool(uvec4(0) == subgroupBallot(true)) ? 0x1u : 0u;\n" + " bool bData = data[gl_SubgroupInvocationID] != 0u;\n" + " tempResult |= !bool(uvec4(0) == subgroupBallot(bData)) ? 0x2u : 0u;\n" + " tempResult |= uvec4(0) == subgroupBallot(false) ? 0x4u : 0u;\n" " b0.result[gl_VertexID] = tempResult;\n" " float pixelSize = 2.0f/1024.0f;\n" " float pixelPosition = pixelSize/2.0f - 1.0f;\n" @@ -246,7 +246,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) "}\n"; const string tesc = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" "layout(vertices=1) out;\n" "layout(binding = 1, std430) buffer Buffer1\n" @@ -260,11 +260,11 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) "\n" "void main (void)\n" "{\n" - " uint tempResult = 0;\n" - " tempResult |= !bool(uvec4(0) == subgroupBallot(true)) ? 0x1 : 0;\n" - " bool bData = data[gl_SubgroupInvocationID] != 0;\n" - " tempResult |= !bool(uvec4(0) == subgroupBallot(bData)) ? 0x2 : 0;\n" - " tempResult |= uvec4(0) == subgroupBallot(false) ? 0x4 : 0;\n" + " uint tempResult = 0u;\n" + " tempResult |= !bool(uvec4(0) == subgroupBallot(true)) ? 0x1u : 0u;\n" + " bool bData = data[gl_SubgroupInvocationID] != 0u;\n" + " tempResult |= !bool(uvec4(0) == subgroupBallot(bData)) ? 0x2u : 0u;\n" + " tempResult |= uvec4(0) == subgroupBallot(false) ? 0x4u : 0u;\n" " b1.result[gl_PrimitiveID] = tempResult;\n" " if (gl_InvocationID == 0)\n" " {\n" @@ -275,7 +275,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) "}\n"; const string tese = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" "layout(isolines) in;\n" "layout(binding = 2, std430) buffer Buffer2\n" @@ -289,18 +289,18 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) "\n" "void main (void)\n" "{\n" - " uint tempResult = 0;\n" - " tempResult |= !bool(uvec4(0) == subgroupBallot(true)) ? 0x1 : 0;\n" - " bool bData = data[gl_SubgroupInvocationID] != 0;\n" - " tempResult |= !bool(uvec4(0) == subgroupBallot(bData)) ? 0x2 : 0;\n" - " tempResult |= uvec4(0) == subgroupBallot(false) ? 0x4 : 0;\n" - " b2.result[gl_PrimitiveID * 2 + uint(gl_TessCoord.x + 0.5)] = tempResult;\n" + " uint tempResult = 0u;\n" + " tempResult |= !bool(uvec4(0) == subgroupBallot(true)) ? 0x1u : 0u;\n" + " bool bData = data[gl_SubgroupInvocationID] != 0u;\n" + " tempResult |= !bool(uvec4(0) == subgroupBallot(bData)) ? 0x2u : 0u;\n" + " tempResult |= uvec4(0) == subgroupBallot(false) ? 0x4u : 0u;\n" + " b2.result[gl_PrimitiveID * 2 + int(gl_TessCoord.x + 0.5)] = tempResult;\n" " float pixelSize = 2.0f/1024.0f;\n" " gl_Position = gl_in[0].gl_Position + gl_TessCoord.x * pixelSize / 2.0f;\n" "}\n"; const string geometry = - "#version 450\n" + // version string added by addGeometryShadersFromTemplate "#extension GL_KHR_shader_subgroup_ballot: enable\n" "layout(${TOPOLOGY}) in;\n" "layout(points, max_vertices = 1) out;\n" @@ -315,11 +315,11 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) "\n" "void main (void)\n" "{\n" - " uint tempResult = 0;\n" - " tempResult |= !bool(uvec4(0) == subgroupBallot(true)) ? 0x1 : 0;\n" - " bool bData = data[gl_SubgroupInvocationID] != 0;\n" - " tempResult |= !bool(uvec4(0) == subgroupBallot(bData)) ? 0x2 : 0;\n" - " tempResult |= uvec4(0) == subgroupBallot(false) ? 0x4 : 0;\n" + " uint tempResult = 0u;\n" + " tempResult |= !bool(uvec4(0) == subgroupBallot(true)) ? 0x1u : 0u;\n" + " bool bData = data[gl_SubgroupInvocationID] != 0u;\n" + " tempResult |= !bool(uvec4(0) == subgroupBallot(bData)) ? 0x2u : 0u;\n" + " tempResult |= uvec4(0) == subgroupBallot(false) ? 0x4u : 0u;\n" " b3.result[gl_PrimitiveIDIn] = tempResult;\n" " gl_Position = gl_in[0].gl_Position;\n" " EmitVertex();\n" @@ -327,7 +327,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) "}\n"; const string fragment = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" "layout(location = 0) out uint result;\n" "layout(binding = 4, std430) readonly buffer Buffer4\n" @@ -336,11 +336,11 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) "};\n" "void main (void)\n" "{\n" - " uint tempResult = 0;\n" - " tempResult |= !bool(uvec4(0) == subgroupBallot(true)) ? 0x1 : 0;\n" - " bool bData = data[gl_SubgroupInvocationID] != 0;\n" - " tempResult |= !bool(uvec4(0) == subgroupBallot(bData)) ? 0x2 : 0;\n" - " tempResult |= uvec4(0) == subgroupBallot(false) ? 0x4 : 0;\n" + " uint tempResult = 0u;\n" + " tempResult |= !bool(uvec4(0) == subgroupBallot(true)) ? 0x1u : 0u;\n" + " bool bData = data[gl_SubgroupInvocationID] != 0u;\n" + " tempResult |= !bool(uvec4(0) == subgroupBallot(bData)) ? 0x2u : 0u;\n" + " tempResult |= uvec4(0) == subgroupBallot(false) ? 0x4u : 0u;\n" " result = tempResult;\n" "}\n"; diff --git a/external/openglcts/modules/common/subgroups/glcSubgroupsBasicTests.cpp b/external/openglcts/modules/common/subgroups/glcSubgroupsBasicTests.cpp index db64e48..7b0c4b7 100755 --- a/external/openglcts/modules/common/subgroups/glcSubgroupsBasicTests.cpp +++ b/external/openglcts/modules/common/subgroups/glcSubgroupsBasicTests.cpp @@ -25,7 +25,6 @@ #include "glcSubgroupsBasicTests.hpp" #include "glcSubgroupsTestsUtils.hpp" -#include "gluContextInfo.hpp" #include #include @@ -246,9 +245,9 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio if(subgroups::SHADER_STAGE_FRAGMENT_BIT != caseDef.shaderStage) { const string fragmentGLSL = - "#version 450\n" - "layout(location = 0) in vec4 in_color;\n" - "layout(location = 0) out vec4 out_color;\n" + "${VERSION_DECL}\n" + "layout(location = 0) in highp vec4 in_color;\n" + "layout(location = 0) out highp vec4 out_color;\n" "void main()\n" "{\n" " out_color = in_color;\n" @@ -259,7 +258,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio if (subgroups::SHADER_STAGE_FRAGMENT_BIT == caseDef.shaderStage) { const string vertexGLSL = - "#version 450\n" + "${VERSION_DECL}\n" "void main (void)\n" "{\n" " vec2 uv = vec2((gl_VertexID << 1) & 2, gl_VertexID & 2);\n" @@ -282,7 +281,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio if (subgroups::SHADER_STAGE_VERTEX_BIT == caseDef.shaderStage) { const string vertexGLSL = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_basic: enable\n" "layout(location = 0) out vec4 out_color;\n" "layout(location = 0) in highp vec4 in_position;\n" @@ -291,12 +290,12 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio "{\n" " if (subgroupElect())\n" " {\n" - " out_color.r = " + electedValue.str() + ";\n" + " out_color.r = " + electedValue.str() + ".0f;\n" " out_color.g = 1.0f;\n" " }\n" " else\n" " {\n" - " out_color.r = " + unelectedValue.str() + ";\n" + " out_color.r = " + unelectedValue.str() + ".0f;\n" " out_color.g = 0.0f;\n" " }\n" " gl_Position = in_position;\n" @@ -308,7 +307,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio else if (subgroups::SHADER_STAGE_GEOMETRY_BIT == caseDef.shaderStage) { const string geometryGLSL = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_basic: enable\n" "layout(points) in;\n" "layout(points, max_vertices = 1) out;\n" @@ -317,12 +316,12 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio "{\n" " if (subgroupElect())\n" " {\n" - " out_color.r = " + electedValue.str() + ";\n" + " out_color.r = " + electedValue.str() + ".0f;\n" " out_color.g = 1.0f;\n" " }\n" " else\n" " {\n" - " out_color.r = " + unelectedValue.str() + ";\n" + " out_color.r = " + unelectedValue.str() + ".0f;\n" " out_color.g = 0.0f;\n" " }\n" " gl_Position = gl_in[0].gl_Position;\n" @@ -335,7 +334,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio else if (subgroups::SHADER_STAGE_TESS_EVALUATION_BIT == caseDef.shaderStage) { const string controlSourceGLSL = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_basic: enable\n" "#extension GL_EXT_tessellation_shader : require\n" "layout(vertices = 2) out;\n" @@ -352,7 +351,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio programCollection.add("tesc") << glu::TessellationControlSource(controlSourceGLSL); const string evaluationSourceGLSL = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_basic: enable\n" "#extension GL_EXT_tessellation_shader : require\n" "layout(isolines, equal_spacing, ccw ) in;\n" @@ -367,7 +366,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio " }\n" " else\n" " {\n" - " out_color.r = " + unelectedValue.str() + ";\n" + " out_color.r = " + unelectedValue.str() + ".0f;\n" " out_color.g = 0.0f;\n" " }\n" " gl_Position = mix(gl_in[0].gl_Position, gl_in[1].gl_Position, gl_TessCoord.x);\n" @@ -378,7 +377,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio else if (subgroups::SHADER_STAGE_TESS_CONTROL_BIT == caseDef.shaderStage) { const string controlSourceGLSL = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_basic: enable\n" "#extension GL_EXT_tessellation_shader : require\n" "layout(vertices = 2) out;\n" @@ -392,12 +391,12 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio " }\n" " if (subgroupElect())\n" " {\n" - " out_color[gl_InvocationID].r = " + electedValue.str() + ";\n" + " out_color[gl_InvocationID].r = " + electedValue.str() + ".0f;\n" " out_color[gl_InvocationID].g = 1.0f;\n" " }\n" " else\n" " {\n" - " out_color[gl_InvocationID].r = " + unelectedValue.str() + ";\n" + " out_color[gl_InvocationID].r = " + unelectedValue.str() + ".0f;\n" " out_color[gl_InvocationID].g = 0.0f;\n" " }\n" " gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position;\n" @@ -406,7 +405,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio programCollection.add("tesc") << glu::TessellationControlSource(controlSourceGLSL); const string evaluationSourceGLSL = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" "#extension GL_EXT_tessellation_shader : require\n" "layout(isolines, equal_spacing, ccw ) in;\n" @@ -471,10 +470,10 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio if (subgroups::SHADER_STAGE_FRAGMENT_BIT == caseDef.shaderStage) { std::ostringstream fragment; - fragment << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n" + fragment << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_basic: enable\n" << "#extension GL_KHR_shader_subgroup_ballot: enable\n" - << "layout(location = 0) out vec4 out_color;\n" + << "layout(location = 0) out highp vec4 out_color;\n" << "\n" << "layout(binding = 0) uniform Buffer1\n" << "{\n" @@ -489,7 +488,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio << "void main (void)\n" << "{\n" << " if (gl_HelperInvocation) return;\n" - << " uint id = 0;\n" + << " uint id = 0u;\n" << " if (subgroupElect())\n" << " {\n" << " id = uint(gl_FragCoord.x);\n" @@ -509,7 +508,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio else if (subgroups::SHADER_STAGE_VERTEX_BIT == caseDef.shaderStage) { std::ostringstream vertex; - vertex << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n" + vertex << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_basic: enable\n" << "#extension GL_KHR_shader_subgroup_ballot: enable\n" <<"\n" @@ -528,10 +527,10 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio << (OPTYPE_SUBGROUP_MEMORY_BARRIER_IMAGE == caseDef.opType ? "layout(binding = 0, r32ui) readonly uniform highp uimage2D tempImage;\n" : "\n") << "void main (void)\n" << "{\n" - << " uint id = 0;\n" + << " uint id = 0u;\n" << " if (subgroupElect())\n" << " {\n" - << " id = gl_VertexID;\n" + << " id = uint(gl_VertexID);\n" << " }\n" << " id = subgroupBroadcastFirst(id);\n" << " uint tempResult = 0u;\n" @@ -550,7 +549,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio { std::ostringstream geometry; - geometry << "#version 450\n" + geometry << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_ballot: enable\n" << "#extension GL_KHR_shader_subgroup_basic: enable\n" << "layout(points) in;\n" @@ -568,10 +567,10 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio << (OPTYPE_SUBGROUP_MEMORY_BARRIER_IMAGE == caseDef.opType ? "layout(binding = 0, r32ui) readonly uniform highp uimage2D tempImage;\n" : "\n") << "void main (void)\n" << "{\n" - << " uint id = 0;\n" + << " uint id = 0u;\n" << " if (subgroupElect())\n" << " {\n" - << " id = gl_InvocationID;\n" + << " id = uint(gl_InvocationID);\n" << " }\n" << " id = subgroupBroadcastFirst(id);\n" << " uint tempResult = 0u;\n" @@ -593,7 +592,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio std::ostringstream controlSource; std::ostringstream evaluationSource; - controlSource << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n" + controlSource << "${VERSION_DECL}\n" << "#extension GL_EXT_tessellation_shader : require\n" << "layout(vertices = 2) out;\n" << "void main (void)\n" @@ -606,7 +605,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio << " gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position;\n" << "}\n"; - evaluationSource << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n" + evaluationSource << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_basic: enable\n" << "#extension GL_KHR_shader_subgroup_ballot: enable\n" << "#extension GL_EXT_tessellation_shader : require\n" @@ -624,10 +623,10 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio << (OPTYPE_SUBGROUP_MEMORY_BARRIER_IMAGE == caseDef.opType ? "layout(binding = 0, r32ui) readonly uniform highp uimage2D tempImage;\n" : "\n") << "void main (void)\n" << "{\n" - << " uint id = 0;\n" + << " uint id = 0u;\n" << " if (subgroupElect())\n" << " {\n" - << " id = gl_PrimitiveID;\n" + << " id = uint(gl_PrimitiveID);\n" << " }\n" << " id = subgroupBroadcastFirst(id);\n" << " uint tempResult = 0u;\n" @@ -648,7 +647,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio std::ostringstream controlSource; std::ostringstream evaluationSource; - controlSource << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n" + controlSource << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_basic: enable\n" << "#extension GL_KHR_shader_subgroup_ballot: enable\n" << "#extension GL_EXT_tessellation_shader : require\n" @@ -666,7 +665,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio << (OPTYPE_SUBGROUP_MEMORY_BARRIER_IMAGE == caseDef.opType ? "layout(binding = 0, r32ui) readonly uniform highp uimage2D tempImage;\n" : "\n") << "void main (void)\n" << "{\n" - << " uint id = 0;\n" + << " uint id = 0u;\n" << " if (gl_InvocationID == 0)\n" <<" {\n" << " gl_TessLevelOuter[0] = 1.0f;\n" @@ -674,7 +673,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio << " }\n" << " if (subgroupElect())\n" << " {\n" - << " id = gl_InvocationID;\n" + << " id = uint(gl_InvocationID);\n" << " }\n" << " id = subgroupBroadcastFirst(id);\n" << " uint tempResult = 0u;\n" @@ -687,7 +686,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio << " gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position;\n" << "}\n"; - evaluationSource << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n" + evaluationSource << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_ballot: enable\n" << "#extension GL_EXT_tessellation_shader : require\n" << "layout(isolines, equal_spacing, ccw ) in;\n" @@ -718,7 +717,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { std::ostringstream src; - src << "#version 450\n" + src << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_basic: enable\n" << "layout (${LOCAL_SIZE_X}, ${LOCAL_SIZE_Y}, ${LOCAL_SIZE_Z}) in;\n" << "layout(binding = 0, std430) buffer Buffer1\n" @@ -733,12 +732,12 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) << " highp uint offset = globalSize.x * ((globalSize.y * " "gl_GlobalInvocationID.z) + gl_GlobalInvocationID.y) + " "gl_GlobalInvocationID.x;\n" - << " uint value = " << UNELECTED_VALUE << ";\n" + << " uint value = " << UNELECTED_VALUE << "u;\n" << " if (subgroupElect())\n" << " {\n" - << " value = " << ELECTED_VALUE << ";\n" + << " value = " << ELECTED_VALUE << "u;\n" << " }\n" - << " uvec4 bits = bitCount(sharedMemoryBallot(value == " << ELECTED_VALUE << "));\n" + << " uvec4 bits = uvec4(bitCount(sharedMemoryBallot(value == " << ELECTED_VALUE << "u)));\n" << " result[offset] = bits.x + bits.y + bits.z + bits.w;\n" << "}\n"; @@ -748,7 +747,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { { std::ostringstream vertex; - vertex << "#version 450\n" + vertex << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_basic: enable\n" << "layout(binding = 0, std430) buffer Buffer0\n" << "{\n" @@ -763,12 +762,12 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) << "{\n" << " if (subgroupElect())\n" << " {\n" - << " b0.result[gl_VertexID] = " << ELECTED_VALUE << ";\n" - << " atomicAdd(b4.numSubgroupsExecuted, 1);\n" + << " b0.result[gl_VertexID] = " << ELECTED_VALUE << "u;\n" + << " atomicAdd(b4.numSubgroupsExecuted, 1u);\n" << " }\n" << " else\n" << " {\n" - << " b0.result[gl_VertexID] = " << UNELECTED_VALUE << ";\n" + << " b0.result[gl_VertexID] = " << UNELECTED_VALUE << "u;\n" << " }\n" << " float pixelSize = 2.0f/1024.0f;\n" << " float pixelPosition = pixelSize/2.0f - 1.0f;\n" @@ -780,7 +779,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { std::ostringstream tesc; - tesc << "#version 450\n" + tesc << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_basic: enable\n" << "layout(vertices=1) out;\n" << "layout(binding = 1, std430) buffer Buffer1\n" @@ -796,12 +795,12 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) << "{\n" << " if (subgroupElect())\n" << " {\n" - << " b1.result[gl_PrimitiveID] = " << ELECTED_VALUE << ";\n" - << " atomicAdd(b5.numSubgroupsExecuted, 1);\n" + << " b1.result[gl_PrimitiveID] = " << ELECTED_VALUE << "u;\n" + << " atomicAdd(b5.numSubgroupsExecuted, 1u);\n" << " }\n" << " else\n" << " {\n" - << " b1.result[gl_PrimitiveID] = " << UNELECTED_VALUE << ";\n" + << " b1.result[gl_PrimitiveID] = " << UNELECTED_VALUE << "u;\n" << " }\n" << " if (gl_InvocationID == 0)\n" << " {\n" @@ -815,7 +814,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { std::ostringstream tese; - tese << "#version 450\n" + tese << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_basic: enable\n" << "layout(isolines) in;\n" << "layout(binding = 2, std430) buffer Buffer2\n" @@ -831,12 +830,12 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) << "{\n" << " if (subgroupElect())\n" << " {\n" - << " b2.result[gl_PrimitiveID * 2 + uint(gl_TessCoord.x + 0.5)] = " << ELECTED_VALUE << ";\n" - << " atomicAdd(b6.numSubgroupsExecuted, 1);\n" + << " b2.result[gl_PrimitiveID * 2 + int(gl_TessCoord.x + 0.5)] = " << ELECTED_VALUE << "u;\n" + << " atomicAdd(b6.numSubgroupsExecuted, 1u);\n" << " }\n" << " else\n" << " {\n" - << " b2.result[gl_PrimitiveID * 2 + uint(gl_TessCoord.x + 0.5)] = " << UNELECTED_VALUE << ";\n" + << " b2.result[gl_PrimitiveID * 2 + int(gl_TessCoord.x + 0.5)] = " << UNELECTED_VALUE << "u;\n" << " }\n" << " float pixelSize = 2.0f/1024.0f;\n" << " gl_Position = gl_in[0].gl_Position + gl_TessCoord.x * pixelSize / 2.0f;\n" @@ -845,8 +844,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) } { std::ostringstream geometry; - geometry << "#version 450\n" - << "#extension GL_KHR_shader_subgroup_basic: enable\n" + geometry << "#extension GL_KHR_shader_subgroup_basic: enable\n" << "layout(${TOPOLOGY}) in;\n" << "layout(points, max_vertices = 1) out;\n" << "layout(binding = 3, std430) buffer Buffer3\n" @@ -862,12 +860,12 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) << "{\n" << " if (subgroupElect())\n" << " {\n" - << " b3.result[gl_PrimitiveIDIn] = " << ELECTED_VALUE << ";\n" - << " atomicAdd(b7.numSubgroupsExecuted, 1);\n" + << " b3.result[gl_PrimitiveIDIn] = " << ELECTED_VALUE << "u;\n" + << " atomicAdd(b7.numSubgroupsExecuted, 1u);\n" << " }\n" << " else\n" << " {\n" - << " b3.result[gl_PrimitiveIDIn] = " << UNELECTED_VALUE << ";\n" + << " b3.result[gl_PrimitiveIDIn] = " << UNELECTED_VALUE << "u;\n" << " }\n" << " gl_Position = gl_in[0].gl_Position;\n" << " EmitVertex();\n" @@ -878,7 +876,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { std::ostringstream fragment; - fragment << "#version 450\n" + fragment << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_basic: enable\n" << "layout(location = 0) out uint data;\n" << "layout(binding = 8, std430) buffer Buffer8\n" @@ -890,12 +888,12 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) << " if (gl_HelperInvocation) return;\n" << " if (subgroupElect())\n" << " {\n" - << " data = " << ELECTED_VALUE << ";\n" - << " atomicAdd(b8.numSubgroupsExecuted, 1);\n" + << " data = " << ELECTED_VALUE << "u;\n" + << " atomicAdd(b8.numSubgroupsExecuted, 1u);\n" << " }\n" << " else\n" << " {\n" - << " data = " << UNELECTED_VALUE << ";\n" + << " data = " << UNELECTED_VALUE << "u;\n" << " }\n" << "}\n"; programCollection.add("fragment") << glu::FragmentSource(fragment.str()); @@ -933,7 +931,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) case OPTYPE_SUBGROUP_MEMORY_BARRIER_IMAGE: bdy << " if (subgroupElect())\n" << " {\n" - << " imageStore(tempImage${IMG1}, ivec2(id, 0), ivec4(b${SSBO2}.value));\n" + << " imageStore(tempImage${IMG1}, ivec2(id, 0), uvec4(b${SSBO2}.value));\n" << " }\n" << " subgroupMemoryBarrierImage();\n" << " tempResult = imageLoad(tempImage${IMG1}, ivec2(id, 0)).x;\n"; @@ -950,7 +948,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) bufferNameMapping.insert(pair("SSBO2", "2")); bufferNameMapping.insert(pair("IMG1", "0")); - src << "#version 450\n" + src << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_basic: enable\n" << "layout (${LOCAL_SIZE_X}, ${LOCAL_SIZE_Y}, ${LOCAL_SIZE_Z}) in;\n" << "layout(binding = 0, std430) buffer Buffer0\n" @@ -965,7 +963,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) << "{\n" << " uint value;\n" << "} b2;\n" - << "layout(binding = 0, r32ui) uniform uimage2D tempImage0;\n" + << "layout(binding = 0, r32ui) uniform highp uimage2D tempImage0;\n" << "shared uint tempShared[gl_WorkGroupSize.x * gl_WorkGroupSize.y * gl_WorkGroupSize.z];\n" << "\n" << "void main (void)\n" @@ -978,7 +976,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) << " uint id = globalSize.x * ((globalSize.y * " "gl_WorkGroupID.z) + gl_WorkGroupID.y) + " "gl_WorkGroupID.x + localId;\n" - << " uint tempResult = 0;\n" + << " uint tempResult = 0u;\n" << bdyTemplate.specialize(bufferNameMapping) << " b0.result[offset] = tempResult;\n" << "}\n"; @@ -994,7 +992,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) bufferNameMapping.insert(pair("IMG1", "0")); const string vertex = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_basic: enable\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" "layout(binding = 0, std430) buffer Buffer0\n" @@ -1013,17 +1011,17 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) "{\n" " uint value;\n" "} b6;\n" - "layout(binding = 0, r32ui) uniform uimage2D tempImage0;\n" + "layout(binding = 0, r32ui) uniform highp uimage2D tempImage0;\n" "void main (void)\n" "{\n" - " uint id = 0;\n" + " uint id = 0u;\n" " if (subgroupElect())\n" " {\n" - " id = atomicAdd(b5.subgroupID, 1);\n" + " id = atomicAdd(b5.subgroupID, 1u);\n" " }\n" " id = subgroupBroadcastFirst(id);\n" " uint localId = id;\n" - " uint tempResult = 0;\n" + " uint tempResult = 0u;\n" + bdyTemplate.specialize(bufferNameMapping) + " b0.result[gl_VertexID] = tempResult;\n" " float pixelSize = 2.0f/1024.0f;\n" @@ -1041,7 +1039,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) bufferNameMapping.insert(pair("IMG1", "1")); const string tesc = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_basic: enable\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" "layout(vertices=1) out;\n" @@ -1061,17 +1059,17 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) "{\n" " uint value;\n" "} b9;\n" - "layout(binding = 1, r32ui) uniform uimage2D tempImage1;\n" + "layout(binding = 1, r32ui) uniform highp uimage2D tempImage1;\n" "void main (void)\n" "{\n" - " uint id = 0;\n" + " uint id = 0u;\n" " if (subgroupElect())\n" " {\n" - " id = atomicAdd(b8.subgroupID, 1);\n" + " id = atomicAdd(b8.subgroupID, 1u);\n" " }\n" " id = subgroupBroadcastFirst(id);\n" " uint localId = id;\n" - " uint tempResult = 0;\n" + " uint tempResult = 0u;\n" + bdyTemplate.specialize(bufferNameMapping) + " b1.result[gl_PrimitiveID] = tempResult;\n" " if (gl_InvocationID == 0)\n" @@ -1091,7 +1089,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) bufferNameMapping.insert(pair("IMG1", "2")); const string tese = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_basic: enable\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" "layout(isolines) in;\n" @@ -1111,19 +1109,19 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) "{\n" " uint value;\n" "} b12;\n" - "layout(binding = 2, r32ui) uniform uimage2D tempImage2;\n" + "layout(binding = 2, r32ui) uniform highp uimage2D tempImage2;\n" "void main (void)\n" "{\n" - " uint id = 0;\n" + " uint id = 0u;\n" " if (subgroupElect())\n" " {\n" - " id = atomicAdd(b11.subgroupID, 1);\n" + " id = atomicAdd(b11.subgroupID, 1u);\n" " }\n" " id = subgroupBroadcastFirst(id);\n" " uint localId = id;\n" - " uint tempResult = 0;\n" + " uint tempResult = 0u;\n" + bdyTemplate.specialize(bufferNameMapping) + - " b2.result[gl_PrimitiveID * 2 + uint(gl_TessCoord.x + 0.5)] = tempResult;\n" + " b2.result[gl_PrimitiveID * 2 + int(gl_TessCoord.x + 0.5)] = tempResult;\n" " float pixelSize = 2.0f/1024.0f;\n"" gl_Position = gl_in[0].gl_Position + gl_TessCoord.x * pixelSize / 2.0f;\n" "}\n"; programCollection.add("tese") << glu::TessellationEvaluationSource(tese); @@ -1135,7 +1133,6 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) bufferNameMapping.insert(pair("IMG1", "3")); const string geometry = - "#version 450\n" "#extension GL_KHR_shader_subgroup_basic: enable\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" "layout(${TOPOLOGY}) in;\n" @@ -1156,17 +1153,17 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) "{\n" " uint value;\n" "} b15;\n" - "layout(binding = 3, r32ui) uniform uimage2D tempImage3;\n" + "layout(binding = 3, r32ui) uniform highp uimage2D tempImage3;\n" "void main (void)\n" "{\n" - " uint id = 0;\n" + " uint id = 0u;\n" " if (subgroupElect())\n" " {\n" - " id = atomicAdd(b14.subgroupID, 1);\n" + " id = atomicAdd(b14.subgroupID, 1u);\n" " }\n" " id = subgroupBroadcastFirst(id);\n" " uint localId = id;\n" - " uint tempResult = 0;\n" + " uint tempResult = 0u;\n" + bdyTemplate.specialize(bufferNameMapping) + " b3.result[gl_PrimitiveIDIn] = tempResult;\n" " gl_Position = gl_in[0].gl_Position;\n" @@ -1183,7 +1180,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) bufferNameMapping.insert(pair("IMG1", "4")); const string fragment = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_basic: enable\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" "layout(location = 0) out uint result;\n" @@ -1199,18 +1196,18 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) "{\n" " uint value;\n" "} b18;\n" - "layout(binding = 4, r32ui) uniform uimage2D tempImage4;\n" + "layout(binding = 4, r32ui) uniform highp uimage2D tempImage4;\n" "void main (void)\n" "{\n" " if (gl_HelperInvocation) return;\n" - " uint id = 0;\n" + " uint id = 0u;\n" " if (subgroupElect())\n" " {\n" - " id = atomicAdd(b17.subgroupID, 1);\n" + " id = atomicAdd(b17.subgroupID, 1u);\n" " }\n" " id = subgroupBroadcastFirst(id);\n" " uint localId = id;\n" - " uint tempResult = 0;\n" + " uint tempResult = 0u;\n" + bdyTemplate.specialize(bufferNameMapping) + " result = tempResult;\n" "}\n"; diff --git a/external/openglcts/modules/common/subgroups/glcSubgroupsBuiltinMaskVarTests.cpp b/external/openglcts/modules/common/subgroups/glcSubgroupsBuiltinMaskVarTests.cpp index 901d770..ae9be21 100755 --- a/external/openglcts/modules/common/subgroups/glcSubgroupsBuiltinMaskVarTests.cpp +++ b/external/openglcts/modules/common/subgroups/glcSubgroupsBuiltinMaskVarTests.cpp @@ -63,74 +63,74 @@ std::string subgroupMask (const CaseDefinition& caseDef) { std::ostringstream bdy; - bdy << " uint tempResult = 0x1;\n" - << " uint bit = 0x1;\n" - << " uint bitCount = 0x0;\n" + bdy << " uint tempResult = 0x1u;\n" + << " uint bit = 0x1u;\n" + << " uint bitCount = 0x0u;\n" << " uvec4 mask = subgroupBallot(true);\n" - << " const uvec4 var = " << caseDef.varName << ";\n" - << " for (uint i = 0; i < gl_SubgroupSize; i++)\n" + << " uvec4 var = " << caseDef.varName << ";\n" + << " for (uint i = 0u; i < gl_SubgroupSize; i++)\n" << " {\n"; if ("gl_SubgroupEqMask" == caseDef.varName) { bdy << " if ((i == gl_SubgroupInvocationID) ^^ subgroupBallotBitExtract(var, i))\n" << " {\n" - << " tempResult = 0;\n" + << " tempResult = 0u;\n" << " }\n"; } else if ("gl_SubgroupGeMask" == caseDef.varName) { bdy << " if ((i >= gl_SubgroupInvocationID) ^^ subgroupBallotBitExtract(var, i))\n" << " {\n" - << " tempResult = 0;\n" + << " tempResult = 0u;\n" << " }\n"; } else if ("gl_SubgroupGtMask" == caseDef.varName) { bdy << " if ((i > gl_SubgroupInvocationID) ^^ subgroupBallotBitExtract(var, i))\n" << " {\n" - << " tempResult = 0;\n" + << " tempResult = 0u;\n" << " }\n"; } else if ("gl_SubgroupLeMask" == caseDef.varName) { bdy << " if ((i <= gl_SubgroupInvocationID) ^^ subgroupBallotBitExtract(var, i))\n" << " {\n" - << " tempResult = 0;\n" + << " tempResult = 0u;\n" << " }\n"; } else if ("gl_SubgroupLtMask" == caseDef.varName) { bdy << " if ((i < gl_SubgroupInvocationID) ^^ subgroupBallotBitExtract(var, i))\n" << " {\n" - << " tempResult = 0;\n" + << " tempResult = 0u;\n" << " }\n"; } bdy << " }\n" - << " for (uint i = 0; i < 32; i++)\n" + << " for (uint i = 0u; i < 32u; i++)\n" << " {\n" - << " if ((var.x & bit) > 0)\n" + << " if ((var.x & bit) > 0u)\n" << " {\n" << " bitCount++;\n" << " }\n" - << " if ((var.y & bit) > 0)\n" + << " if ((var.y & bit) > 0u)\n" << " {\n" << " bitCount++;\n" << " }\n" - << " if ((var.z & bit) > 0)\n" + << " if ((var.z & bit) > 0u)\n" << " {\n" << " bitCount++;\n" << " }\n" - << " if ((var.w & bit) > 0)\n" + << " if ((var.w & bit) > 0u)\n" << " {\n" << " bitCount++;\n" << " }\n" - << " bit = bit<<1;\n" + << " bit = bit << 1u;\n" << " }\n" << " if (subgroupBallotBitCount(var) != bitCount)\n" << " {\n" - << " tempResult = 0;\n" + << " tempResult = 0u;\n" << " }\n"; return bdy.str(); } @@ -146,7 +146,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio { const string bdy = subgroupMask(caseDef); const string vertexGLSL = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" "layout(location = 0) out float out_color;\n" "layout(location = 0) in highp vec4 in_position;\n" @@ -164,7 +164,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio { const string bdy = subgroupMask(caseDef); const string evaluationSourceGLSL = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" "#extension GL_EXT_tessellation_shader : require\n" "layout(isolines, equal_spacing, ccw ) in;\n" @@ -183,7 +183,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio { const string bdy = subgroupMask(caseDef); const string controlSourceGLSL = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_EXT_tessellation_shader : require\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" "layout(vertices = 2) out;\n" @@ -206,7 +206,7 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio { const string bdy = subgroupMask(caseDef); const string geometryGLSL = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" "layout(points) in;\n" "layout(points, max_vertices = 1) out;\n" @@ -237,7 +237,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { std::ostringstream src; - src << "#version 450\n" + src << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_ballot: enable\n" << "layout (${LOCAL_SIZE_X}, ${LOCAL_SIZE_Y}, ${LOCAL_SIZE_Z}) in;\n" << "layout(binding = 0, std430) buffer Output\n" @@ -261,7 +261,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { { const string vertex = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" "layout(binding = 0, std430) buffer Output0\n" "{\n" @@ -282,7 +282,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { const string tesc = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" "layout(vertices=1) out;\n" "layout(binding = 1, std430) buffer Output1\n" @@ -306,7 +306,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { const string tese = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" "layout(isolines) in;\n" "layout(binding = 2, std430) buffer Output2\n" @@ -317,7 +317,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) "void main (void)\n" "{\n" + bdy + - " b2.result[gl_PrimitiveID * 2 + uint(gl_TessCoord.x + 0.5)] = tempResult;\n" + " b2.result[gl_PrimitiveID * 2 + int(gl_TessCoord.x + 0.5)] = tempResult;\n" " float pixelSize = 2.0f/1024.0f;\n" " gl_Position = gl_in[0].gl_Position + gl_TessCoord.x * pixelSize / 2.0f;\n" "}\n"; @@ -327,7 +327,6 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { const string geometry = - "#version 450\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" "layout(${TOPOLOGY}) in;\n" "layout(points, max_vertices = 1) out;\n" @@ -350,7 +349,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { const string fragment = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" "layout(location = 0) out uint result;\n" "void main (void)\n" diff --git a/external/openglcts/modules/common/subgroups/glcSubgroupsBuiltinVarTests.cpp b/external/openglcts/modules/common/subgroups/glcSubgroupsBuiltinVarTests.cpp index 9d77480..0a32b95 100755 --- a/external/openglcts/modules/common/subgroups/glcSubgroupsBuiltinVarTests.cpp +++ b/external/openglcts/modules/common/subgroups/glcSubgroupsBuiltinVarTests.cpp @@ -323,13 +323,13 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti { { const string fragmentGLSL = - "#version 450\n" - "layout(location = 0) in vec4 in_color;\n" + "${VERSION_DECL}\n" + "layout(location = 0) in highp vec4 in_color;\n" "layout(location = 0) out uvec4 out_color;\n" "void main()\n" "{\n" - " out_color = uvec4(in_color);\n" - "}\n"; + " out_color = uvec4(in_color);\n" + "}\n"; programCollection.add("fragment") << glu::FragmentSource(fragmentGLSL); } @@ -339,7 +339,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti if (SHADER_STAGE_VERTEX_BIT == caseDef.shaderStage) { const string vertexGLSL = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_basic: enable\n" "layout(location = 0) out vec4 out_color;\n" "layout(location = 0) in highp vec4 in_position;\n" @@ -355,7 +355,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti else if (SHADER_STAGE_TESS_EVALUATION_BIT == caseDef.shaderStage) { const string controlSourceGLSL = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_EXT_tessellation_shader : require\n" "layout(vertices = 2) out;\n" "layout(location = 0) out vec4 out_color[];\n" @@ -372,7 +372,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti programCollection.add("tesc") << glu::TessellationControlSource(controlSourceGLSL); const string evaluationSourceGLSL = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_basic: enable\n" "#extension GL_EXT_tessellation_shader : require\n" "layout(isolines, equal_spacing, ccw ) in;\n" @@ -389,7 +389,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti else if (SHADER_STAGE_TESS_CONTROL_BIT == caseDef.shaderStage) { const string controlSourceGLSL = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_EXT_tessellation_shader : require\n" "#extension GL_KHR_shader_subgroup_basic: enable\n" "layout(vertices = 2) out;\n" @@ -407,7 +407,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti programCollection.add("tesc") << glu::TessellationControlSource(controlSourceGLSL); const string evaluationSourceGLSL = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_basic: enable\n" "#extension GL_EXT_tessellation_shader : require\n" "layout(isolines, equal_spacing, ccw ) in;\n" @@ -424,7 +424,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti else if (SHADER_STAGE_GEOMETRY_BIT == caseDef.shaderStage) { const string geometryGLSL = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_basic: enable\n" "layout(points) in;\n" "layout(points, max_vertices = 1) out;\n" @@ -450,7 +450,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { std::ostringstream src; - src << "#version 450\n" + src << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_basic: enable\n" << "layout (${LOCAL_SIZE_X}, ${LOCAL_SIZE_Y}, ${LOCAL_SIZE_Z}) in;\n" << "layout(binding = 0, std430) buffer Output\n" @@ -473,7 +473,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { { const string vertexGLSL = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_basic: enable\n" "layout(binding = 0, std430) buffer Output0\n" "{\n" @@ -493,7 +493,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { const string tescGLSL = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_basic: enable\n" "layout(vertices=1) out;\n" "layout(binding = 1, std430) buffer Output1\n" @@ -516,7 +516,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { const string teseGLSL = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_basic: enable\n" "layout(isolines) in;\n" "layout(binding = 2, std430) buffer Output2\n" @@ -526,7 +526,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) "\n" "void main (void)\n" "{\n" - " b2.result[gl_PrimitiveID * 2 + uint(gl_TessCoord.x + 0.5)] = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0);\n" + " b2.result[gl_PrimitiveID * 2 + int(gl_TessCoord.x + 0.5)] = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0);\n" " float pixelSize = 2.0f/1024.0f;\n" " gl_Position = gl_in[0].gl_Position + gl_TessCoord.x * pixelSize / 2.0f;\n" "}\n"; @@ -535,7 +535,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { const string geometryGLSL = - "#version 450\n" + // version string is added by addGeometryShadersFromTemplate "#extension GL_KHR_shader_subgroup_basic: enable\n" "layout(${TOPOLOGY}) in;\n" "layout(points, max_vertices = 1) out;\n" @@ -556,7 +556,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { const string fragmentGLSL = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_basic: enable\n" "layout(location = 0) out uvec4 data;\n" "void main (void)\n" diff --git a/external/openglcts/modules/common/subgroups/glcSubgroupsClusteredTests.cpp b/external/openglcts/modules/common/subgroups/glcSubgroupsClusteredTests.cpp index 5c3ac2f..385c153 100755 --- a/external/openglcts/modules/common/subgroups/glcSubgroupsClusteredTests.cpp +++ b/external/openglcts/modules/common/subgroups/glcSubgroupsClusteredTests.cpp @@ -253,7 +253,7 @@ std::string getIdentity(int opType, Format format) } else if (isUnsigned) { - return subgroups::getFormatNameForGLSL(format) + "(0)"; + return subgroups::getFormatNameForGLSL(format) + "(0u)"; } else { @@ -322,12 +322,12 @@ std::string getBodySource(CaseDefinition caseDef) for (deUint32 i = 1; i <= subgroups::maxSupportedSubgroupSize(); i *= 2) { bdy << " {\n" - << " const uint clusterSize = " << i << ";\n" + << " const uint clusterSize = " << i << "u;\n" << " if (clusterSize <= gl_SubgroupSize)\n" << " {\n" << " " << subgroups::getFormatNameForGLSL(caseDef.format) << " op = " << getOpTypeName(caseDef.opType) + "(data[gl_SubgroupInvocationID], clusterSize);\n" - << " for (uint clusterOffset = 0; clusterOffset < gl_SubgroupSize; clusterOffset += clusterSize)\n" + << " for (uint clusterOffset = 0u; clusterOffset < gl_SubgroupSize; clusterOffset += clusterSize)\n" << " {\n" << " " << subgroups::getFormatNameForGLSL(caseDef.format) << " ref = " << getIdentity(caseDef.opType, caseDef.format) << ";\n" @@ -364,7 +364,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti if (SHADER_STAGE_VERTEX_BIT == caseDef.shaderStage) { std::ostringstream vertexSrc; - vertexSrc << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450 )<< "\n" + vertexSrc << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_clustered: enable\n" << "#extension GL_KHR_shader_subgroup_ballot: enable\n" << "layout(location = 0) in highp vec4 in_position;\n" @@ -388,7 +388,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti { std::ostringstream geometry; - geometry << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n" + geometry << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_clustered: enable\n" << "#extension GL_KHR_shader_subgroup_ballot: enable\n" << "layout(points) in;\n" @@ -415,7 +415,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti { std::ostringstream controlSource; - controlSource << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n" + controlSource << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_clustered: enable\n" << "#extension GL_KHR_shader_subgroup_ballot: enable\n" << "layout(vertices = 2) out;\n" @@ -445,7 +445,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti { std::ostringstream evaluationSource; - evaluationSource << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n" + evaluationSource << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_clustered: enable\n" << "#extension GL_KHR_shader_subgroup_ballot: enable\n" << "layout(isolines, equal_spacing, ccw ) in;\n" @@ -480,7 +480,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { std::ostringstream src; - src << "#version 450\n" + src << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_clustered: enable\n" << "#extension GL_KHR_shader_subgroup_ballot: enable\n" << "layout (${LOCAL_SIZE_X}, ${LOCAL_SIZE_Y}, ${LOCAL_SIZE_Z}) in;\n" @@ -501,7 +501,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) "gl_GlobalInvocationID.x;\n" << " uvec4 mask = subgroupBallot(true);\n" << bdy - << " result[offset] = tempResult ? 1 : 0;\n" + << " result[offset] = tempResult ? 1u : 0u;\n" << "}\n"; programCollection.add("comp") << glu::ComputeSource(src.str()); @@ -510,7 +510,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { { const string vertex = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_clustered: enable\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" "layout(binding = 0, std430) buffer Buffer0\n" @@ -526,7 +526,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) "{\n" " uvec4 mask = subgroupBallot(true);\n" + bdy + - " b0.result[gl_VertexID] = tempResult ? 1 : 0;\n" + " b0.result[gl_VertexID] = tempResult ? 1u : 0u;\n" " float pixelSize = 2.0f/1024.0f;\n" " float pixelPosition = pixelSize/2.0f - 1.0f;\n" " gl_Position = vec4(float(gl_VertexID) * pixelSize + pixelPosition, 0.0f, 0.0f, 1.0f);\n" @@ -537,7 +537,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { const string tesc = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_clustered: enable\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" "layout(vertices=1) out;\n" @@ -554,7 +554,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) "{\n" " uvec4 mask = subgroupBallot(true);\n" + bdy + - " b1.result[gl_PrimitiveID] = tempResult ? 1 : 0;\n" + " b1.result[gl_PrimitiveID] = tempResult ? 1u : 0u;\n" " if (gl_InvocationID == 0)\n" " {\n" " gl_TessLevelOuter[0] = 1.0f;\n" @@ -568,7 +568,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { const string tese = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_clustered: enable\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" "layout(isolines) in;\n" @@ -585,7 +585,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) "{\n" " uvec4 mask = subgroupBallot(true);\n" + bdy + - " b2.result[gl_PrimitiveID * 2 + uint(gl_TessCoord.x + 0.5)] = tempResult ? 1 : 0;\n" + " b2.result[gl_PrimitiveID * 2 + int(gl_TessCoord.x + 0.5)] = tempResult ? 1u : 0u;\n" " float pixelSize = 2.0f/1024.0f;\n" " gl_Position = gl_in[0].gl_Position + gl_TessCoord.x * pixelSize / 2.0f;\n" "}\n"; @@ -594,7 +594,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { const string geometry = - "#version 450\n" + // version string added by addGeometryShadersFromTemplate "#extension GL_KHR_shader_subgroup_clustered: enable\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" "layout(${TOPOLOGY}) in;\n" @@ -612,7 +612,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) "{\n" " uvec4 mask = subgroupBallot(true);\n" + bdy + - " b3.result[gl_PrimitiveIDIn] = tempResult ? 1 : 0;\n" + " b3.result[gl_PrimitiveIDIn] = tempResult ? 1u : 0u;\n" " gl_Position = gl_in[0].gl_Position;\n" " EmitVertex();\n" " EndPrimitive();\n" @@ -622,9 +622,10 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { const string fragment = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_clustered: enable\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" + "precision highp float;\n" "layout(location = 0) out uint result;\n" "layout(binding = 4, std430) readonly buffer Buffer4\n" "{\n" @@ -634,7 +635,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) "{\n" " uvec4 mask = subgroupBallot(true);\n" + bdy + - " result = tempResult ? 1 : 0;\n" + " result = tempResult ? 1u : 0u;\n" "}\n"; programCollection.add("fragment") << glu::FragmentSource(fragment); } diff --git a/external/openglcts/modules/common/subgroups/glcSubgroupsPartitionedTests.cpp b/external/openglcts/modules/common/subgroups/glcSubgroupsPartitionedTests.cpp index 04e92ec..660a569 100755 --- a/external/openglcts/modules/common/subgroups/glcSubgroupsPartitionedTests.cpp +++ b/external/openglcts/modules/common/subgroups/glcSubgroupsPartitionedTests.cpp @@ -267,7 +267,7 @@ std::string getIdentity(int opType, Format format) } else if (isUnsigned) { - return subgroups::getFormatNameForGLSL(format) + "(0)"; + return subgroups::getFormatNameForGLSL(format) + "(0u)"; } else { @@ -348,7 +348,7 @@ string getTestString(const CaseDefinition &caseDef) // conversion overflow in framebuffer tests. string fmt = subgroups::getFormatNameForGLSL(caseDef.format); string bdy = - " uint tempResult = 0;\n" + " uint tempResult = 0u;\n" " uint id = gl_SubgroupInvocationID;\n"; // Test the case where the partition has a single subset with all invocations in it. @@ -358,21 +358,21 @@ string getTestString(const CaseDefinition &caseDef) " " + fmt + " allResult = " + getOpTypeNamePartitioned(caseDef.opType) + "(data[gl_SubgroupInvocationID], allBallot);\n" " " + fmt + " refResult = " + getOpTypeName(caseDef.opType) + "(data[gl_SubgroupInvocationID]);\n" " if (" + getCompare(caseDef.opType, caseDef.format, "allResult", "refResult") + ") {\n" - " tempResult |= 0x1;\n" + " tempResult |= 0x1u;\n" " }\n"; // The definition of a partition doesn't forbid bits corresponding to inactive // invocations being in the subset with active invocations. In other words, test that // bits corresponding to inactive invocations are ignored. bdy += - " if (0 == (gl_SubgroupInvocationID % 2)) {\n" + " if (0u == (gl_SubgroupInvocationID % 2u)) {\n" " " + fmt + " allResult = " + getOpTypeNamePartitioned(caseDef.opType) + "(data[gl_SubgroupInvocationID], allBallot);\n" " " + fmt + " refResult = " + getOpTypeName(caseDef.opType) + "(data[gl_SubgroupInvocationID]);\n" " if (" + getCompare(caseDef.opType, caseDef.format, "allResult", "refResult") + ") {\n" - " tempResult |= 0x2;\n" + " tempResult |= 0x2u;\n" " }\n" " } else {\n" - " tempResult |= 0x2;\n" + " tempResult |= 0x2u;\n" " }\n"; // Test the case where the partition has each invocation in a unique subset. For @@ -387,42 +387,42 @@ string getTestString(const CaseDefinition &caseDef) " uvec4 selfBallot = subgroupPartitionNV(gl_SubgroupInvocationID);\n" " " + fmt + " selfResult = " + getOpTypeNamePartitioned(caseDef.opType) + "(data[gl_SubgroupInvocationID], selfBallot);\n" " if (" + getCompare(caseDef.opType, caseDef.format, "selfResult", expectedSelfResult) + ") {\n" - " tempResult |= 0x4;\n" + " tempResult |= 0x4u;\n" " }\n"; // Test "random" partitions based on a hash of the invocation id. // This "hash" function produces interesting/randomish partitions. - static const char *idhash = "((id%N)+(id%(N+1))-(id%2)+(id/2))%((N+1)/2)"; + static const char *idhash = "((id%N)+(id%(N+1u))-(id%2u)+(id/2u))%((N+1u)/2u)"; bdy += - " for (uint N = 1; N < 16; ++N) {\n" + " for (uint N = 1u; N < 16u; ++N) {\n" " " + fmt + " idhashFmt = " + fmt + "(" + idhash + ");\n" " uvec4 partitionBallot = subgroupPartitionNV(idhashFmt) & mask;\n" " " + fmt + " partitionedResult = " + getOpTypeNamePartitioned(caseDef.opType) + "(data[gl_SubgroupInvocationID], partitionBallot);\n" - " for (uint i = 0; i < N; ++i) {\n" + " for (uint i = 0u; i < N; ++i) {\n" " " + fmt + " iFmt = " + fmt + "(i);\n" " if (" + getCompare(caseDef.opType, caseDef.format, "idhashFmt", "iFmt") + ") {\n" " " + fmt + " subsetResult = " + getOpTypeName(caseDef.opType) + "(data[gl_SubgroupInvocationID]);\n" - " tempResult |= " + getCompare(caseDef.opType, caseDef.format, "partitionedResult", "subsetResult") + " ? (0x4 << N) : 0;\n" + " tempResult |= " + getCompare(caseDef.opType, caseDef.format, "partitionedResult", "subsetResult") + " ? (0x4u << N) : 0u;\n" " }\n" " }\n" " }\n" // tests in flow control: - " if (1 == (gl_SubgroupInvocationID % 2)) {\n" - " for (uint N = 1; N < 7; ++N) {\n" + " if (1u == (gl_SubgroupInvocationID % 2u)) {\n" + " for (uint N = 1u; N < 7u; ++N) {\n" " " + fmt + " idhashFmt = " + fmt + "(" + idhash + ");\n" " uvec4 partitionBallot = subgroupPartitionNV(idhashFmt) & mask;\n" " " + fmt + " partitionedResult = " + getOpTypeNamePartitioned(caseDef.opType) + "(data[gl_SubgroupInvocationID], partitionBallot);\n" - " for (uint i = 0; i < N; ++i) {\n" + " for (uint i = 0u; i < N; ++i) {\n" " " + fmt + " iFmt = " + fmt + "(i);\n" " if (" + getCompare(caseDef.opType, caseDef.format, "idhashFmt", "iFmt") + ") {\n" " " + fmt + " subsetResult = " + getOpTypeName(caseDef.opType) + "(data[gl_SubgroupInvocationID]);\n" - " tempResult |= " + getCompare(caseDef.opType, caseDef.format, "partitionedResult", "subsetResult") + " ? (0x20000 << N) : 0;\n" + " tempResult |= " + getCompare(caseDef.opType, caseDef.format, "partitionedResult", "subsetResult") + " ? (0x20000u << N) : 0u;\n" " }\n" " }\n" " }\n" " } else {\n" - " tempResult |= 0xFC0000;\n" + " tempResult |= 0xFC0000u;\n" " }\n" ; @@ -443,7 +443,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti if (SHADER_STAGE_VERTEX_BIT == caseDef.shaderStage) { std::ostringstream vertexSrc; - vertexSrc << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n" + vertexSrc << "${VERSION_DECL}\n" << "#extension GL_NV_shader_subgroup_partitioned: enable\n" << "#extension GL_KHR_shader_subgroup_arithmetic: enable\n" << "#extension GL_KHR_shader_subgroup_ballot: enable\n" @@ -468,7 +468,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti { std::ostringstream geometry; - geometry << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n" + geometry << "${VERSION_DECL}\n" << "#extension GL_NV_shader_subgroup_partitioned: enable\n" << "#extension GL_KHR_shader_subgroup_arithmetic: enable\n" << "#extension GL_KHR_shader_subgroup_ballot: enable\n" @@ -495,7 +495,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti else if (SHADER_STAGE_TESS_CONTROL_BIT == caseDef.shaderStage) { std::ostringstream controlSource; - controlSource << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n" + controlSource << "${VERSION_DECL}\n" << "#extension GL_NV_shader_subgroup_partitioned: enable\n" << "#extension GL_KHR_shader_subgroup_arithmetic: enable\n" << "#extension GL_KHR_shader_subgroup_ballot: enable\n" @@ -527,7 +527,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti { std::ostringstream evaluationSource; - evaluationSource << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n" + evaluationSource << "${VERSION_DECL}\n" << "#extension GL_NV_shader_subgroup_partitioned: enable\n" << "#extension GL_KHR_shader_subgroup_arithmetic: enable\n" << "#extension GL_KHR_shader_subgroup_ballot: enable\n" @@ -563,7 +563,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { std::ostringstream src; - src << "#version 450\n" + src << "${VERSION_DECL}\n" << "#extension GL_NV_shader_subgroup_partitioned: enable\n" << "#extension GL_KHR_shader_subgroup_arithmetic: enable\n" << "#extension GL_KHR_shader_subgroup_ballot: enable\n" @@ -594,7 +594,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { { const std::string vertex = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_NV_shader_subgroup_partitioned: enable\n" "#extension GL_KHR_shader_subgroup_arithmetic: enable\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" @@ -622,7 +622,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { const std::string tesc = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_NV_shader_subgroup_partitioned: enable\n" "#extension GL_KHR_shader_subgroup_arithmetic: enable\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" @@ -653,7 +653,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { const std::string tese = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_NV_shader_subgroup_partitioned: enable\n" "#extension GL_KHR_shader_subgroup_arithmetic: enable\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" @@ -671,7 +671,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) "{\n" " uvec4 mask = subgroupBallot(true);\n" + bdy + - " b2.result[gl_PrimitiveID * 2 + uint(gl_TessCoord.x + 0.5)] = tempResult;\n" + " b2.result[gl_PrimitiveID * 2 + int(gl_TessCoord.x + 0.5)] = tempResult;\n" " float pixelSize = 2.0f/1024.0f;\n" " gl_Position = gl_in[0].gl_Position + gl_TessCoord.x * pixelSize / 2.0f;\n" "}\n"; @@ -680,7 +680,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { const std::string geometry = - "#version 450\n" + // version added by addGeometryShadersFromTemplate "#extension GL_NV_shader_subgroup_partitioned: enable\n" "#extension GL_KHR_shader_subgroup_arithmetic: enable\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" @@ -709,10 +709,11 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { const std::string fragment = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_NV_shader_subgroup_partitioned: enable\n" "#extension GL_KHR_shader_subgroup_arithmetic: enable\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" + "precision highp float;\n" "layout(location = 0) out uint result;\n" "layout(binding = 4, std430) readonly buffer Buffer4\n" "{\n" diff --git a/external/openglcts/modules/common/subgroups/glcSubgroupsQuadTests.cpp b/external/openglcts/modules/common/subgroups/glcSubgroupsQuadTests.cpp index bdf5d6f..4848823 100755 --- a/external/openglcts/modules/common/subgroups/glcSubgroupsQuadTests.cpp +++ b/external/openglcts/modules/common/subgroups/glcSubgroupsQuadTests.cpp @@ -96,14 +96,14 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti subgroups::setVertexShaderFrameBuffer(programCollection); swapTable[OPTYPE_QUAD_BROADCAST] = ""; - swapTable[OPTYPE_QUAD_SWAP_HORIZONTAL] = " const uint swapTable[4] = {1, 0, 3, 2};\n"; - swapTable[OPTYPE_QUAD_SWAP_VERTICAL] = " const uint swapTable[4] = {2, 3, 0, 1};\n"; - swapTable[OPTYPE_QUAD_SWAP_DIAGONAL] = " const uint swapTable[4] = {3, 2, 1, 0};\n"; + swapTable[OPTYPE_QUAD_SWAP_HORIZONTAL] = " const uint swapTable[4] = uint[](1u, 0u, 3u, 2u);\n"; + swapTable[OPTYPE_QUAD_SWAP_VERTICAL] = " const uint swapTable[4] = uint[](2u, 3u, 0u, 1u);\n"; + swapTable[OPTYPE_QUAD_SWAP_DIAGONAL] = " const uint swapTable[4] = uint[](3u, 2u, 1u, 0u);\n"; if (SHADER_STAGE_VERTEX_BIT == caseDef.shaderStage) { std::ostringstream vertexSrc; - vertexSrc << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n" + vertexSrc << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_quad: enable\n" << "#extension GL_KHR_shader_subgroup_ballot: enable\n" << "layout(location = 0) in highp vec4 in_position;\n" @@ -121,14 +121,14 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti if (OPTYPE_QUAD_BROADCAST == caseDef.opType) { vertexSrc << " " << subgroups::getFormatNameForGLSL(caseDef.format) << " op = " - << getOpTypeName(caseDef.opType) << "(data[gl_SubgroupInvocationID], " << caseDef.direction << ");\n" - << " uint otherID = (gl_SubgroupInvocationID & ~0x3) + " << caseDef.direction << ";\n"; + << getOpTypeName(caseDef.opType) << "(data[gl_SubgroupInvocationID], " << caseDef.direction << "u);\n" + << " uint otherID = (gl_SubgroupInvocationID & ~0x3u) + " << caseDef.direction << "u;\n"; } else { vertexSrc << " " << subgroups::getFormatNameForGLSL(caseDef.format) << " op = " << getOpTypeName(caseDef.opType) << "(data[gl_SubgroupInvocationID]);\n" - << " uint otherID = (gl_SubgroupInvocationID & ~0x3) + swapTable[gl_SubgroupInvocationID & 0x3];\n"; + << " uint otherID = (gl_SubgroupInvocationID & ~0x3u) + swapTable[gl_SubgroupInvocationID & 0x3u];\n"; } vertexSrc << " if (subgroupBallotBitExtract(mask, otherID))\n" @@ -148,7 +148,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti { std::ostringstream geometry; - geometry << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n" + geometry << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_quad: enable\n" << "#extension GL_KHR_shader_subgroup_ballot: enable\n" << "layout(points) in;\n" @@ -167,14 +167,14 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti if (OPTYPE_QUAD_BROADCAST == caseDef.opType) { geometry << " " << subgroups::getFormatNameForGLSL(caseDef.format) << " op = " - << getOpTypeName(caseDef.opType) << "(data[gl_SubgroupInvocationID], " << caseDef.direction << ");\n" - << " uint otherID = (gl_SubgroupInvocationID & ~0x3) + " << caseDef.direction << ";\n"; + << getOpTypeName(caseDef.opType) << "(data[gl_SubgroupInvocationID], " << caseDef.direction << "u);\n" + << " uint otherID = (gl_SubgroupInvocationID & ~0x3u) + " << caseDef.direction << "u;\n"; } else { geometry << " " << subgroups::getFormatNameForGLSL(caseDef.format) << " op = " << getOpTypeName(caseDef.opType) << "(data[gl_SubgroupInvocationID]);\n" - << " uint otherID = (gl_SubgroupInvocationID & ~0x3) + swapTable[gl_SubgroupInvocationID & 0x3];\n"; + << " uint otherID = (gl_SubgroupInvocationID & ~0x3u) + swapTable[gl_SubgroupInvocationID & 0x3u];\n"; } geometry << " if (subgroupBallotBitExtract(mask, otherID))\n" @@ -196,7 +196,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti { std::ostringstream controlSource; - controlSource << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n" + controlSource << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_quad: enable\n" << "#extension GL_KHR_shader_subgroup_ballot: enable\n" << "layout(vertices = 2) out;\n" @@ -219,14 +219,14 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti if (OPTYPE_QUAD_BROADCAST == caseDef.opType) { controlSource << " " << subgroups::getFormatNameForGLSL(caseDef.format) << " op = " - << getOpTypeName(caseDef.opType) << "(data[gl_SubgroupInvocationID], " << caseDef.direction << ");\n" - << " uint otherID = (gl_SubgroupInvocationID & ~0x3) + " << caseDef.direction << ";\n"; + << getOpTypeName(caseDef.opType) << "(data[gl_SubgroupInvocationID], " << caseDef.direction << "u);\n" + << " uint otherID = (gl_SubgroupInvocationID & ~0x3u) + " << caseDef.direction << "u;\n"; } else { controlSource << " " << subgroups::getFormatNameForGLSL(caseDef.format) << " op = " << getOpTypeName(caseDef.opType) << "(data[gl_SubgroupInvocationID]);\n" - << " uint otherID = (gl_SubgroupInvocationID & ~0x3) + swapTable[gl_SubgroupInvocationID & 0x3];\n"; + << " uint otherID = (gl_SubgroupInvocationID & ~0x3u) + swapTable[gl_SubgroupInvocationID & 0x3u];\n"; } controlSource << " if (subgroupBallotBitExtract(mask, otherID))\n" @@ -246,7 +246,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti else if (SHADER_STAGE_TESS_EVALUATION_BIT == caseDef.shaderStage) { ostringstream evaluationSource; - evaluationSource << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n" + evaluationSource << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_quad: enable\n" << "#extension GL_KHR_shader_subgroup_ballot: enable\n" << "layout(isolines, equal_spacing, ccw ) in;\n" @@ -264,14 +264,14 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti if (OPTYPE_QUAD_BROADCAST == caseDef.opType) { evaluationSource << " " << subgroups::getFormatNameForGLSL(caseDef.format) << " op = " - << getOpTypeName(caseDef.opType) << "(data[gl_SubgroupInvocationID], " << caseDef.direction << ");\n" - << " uint otherID = (gl_SubgroupInvocationID & ~0x3) + " << caseDef.direction << ";\n"; + << getOpTypeName(caseDef.opType) << "(data[gl_SubgroupInvocationID], " << caseDef.direction << "u);\n" + << " uint otherID = (gl_SubgroupInvocationID & ~0x3u) + " << caseDef.direction << "u;\n"; } else { evaluationSource << " " << subgroups::getFormatNameForGLSL(caseDef.format) << " op = " << getOpTypeName(caseDef.opType) << "(data[gl_SubgroupInvocationID]);\n" - << " uint otherID = (gl_SubgroupInvocationID & ~0x3) + swapTable[gl_SubgroupInvocationID & 0x3];\n"; + << " uint otherID = (gl_SubgroupInvocationID & ~0x3u) + swapTable[gl_SubgroupInvocationID & 0x3u];\n"; } evaluationSource << " if (subgroupBallotBitExtract(mask, otherID))\n" @@ -298,15 +298,15 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { std::string swapTable[OPTYPE_LAST]; swapTable[OPTYPE_QUAD_BROADCAST] = ""; - swapTable[OPTYPE_QUAD_SWAP_HORIZONTAL] = " const uint swapTable[4] = {1, 0, 3, 2};\n"; - swapTable[OPTYPE_QUAD_SWAP_VERTICAL] = " const uint swapTable[4] = {2, 3, 0, 1};\n"; - swapTable[OPTYPE_QUAD_SWAP_DIAGONAL] = " const uint swapTable[4] = {3, 2, 1, 0};\n"; + swapTable[OPTYPE_QUAD_SWAP_HORIZONTAL] = " const uint swapTable[4] = uint[](1u, 0u, 3u, 2u);\n"; + swapTable[OPTYPE_QUAD_SWAP_VERTICAL] = " const uint swapTable[4] = uint[](2u, 3u, 0u, 1u);\n"; + swapTable[OPTYPE_QUAD_SWAP_DIAGONAL] = " const uint swapTable[4] = uint[](3u, 2u, 1u, 0u);\n"; if (SHADER_STAGE_COMPUTE_BIT == caseDef.shaderStage) { std::ostringstream src; - src << "#version 450\n" + src << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_quad: enable\n" << "#extension GL_KHR_shader_subgroup_ballot: enable\n" << "layout (${LOCAL_SIZE_X}, ${LOCAL_SIZE_Y}, ${LOCAL_SIZE_Z}) in;\n" @@ -332,23 +332,23 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) if (OPTYPE_QUAD_BROADCAST == caseDef.opType) { src << " " << subgroups::getFormatNameForGLSL(caseDef.format) << " op = " - << getOpTypeName(caseDef.opType) << "(data[gl_SubgroupInvocationID], " << caseDef.direction << ");\n" - << " uint otherID = (gl_SubgroupInvocationID & ~0x3) + " << caseDef.direction << ";\n"; + << getOpTypeName(caseDef.opType) << "(data[gl_SubgroupInvocationID], " << caseDef.direction << "u);\n" + << " uint otherID = (gl_SubgroupInvocationID & ~0x3u) + " << caseDef.direction << "u;\n"; } else { src << " " << subgroups::getFormatNameForGLSL(caseDef.format) << " op = " << getOpTypeName(caseDef.opType) << "(data[gl_SubgroupInvocationID]);\n" - << " uint otherID = (gl_SubgroupInvocationID & ~0x3) + swapTable[gl_SubgroupInvocationID & 0x3];\n"; + << " uint otherID = (gl_SubgroupInvocationID & ~0x3u) + swapTable[gl_SubgroupInvocationID & 0x3u];\n"; } src << " if (subgroupBallotBitExtract(mask, otherID))\n" << " {\n" - << " result[offset] = (op == data[otherID]) ? 1 : 0;\n" + << " result[offset] = (op == data[otherID]) ? 1u : 0u;\n" << " }\n" << " else\n" << " {\n" - << " result[offset] = 1; // Invocation we read from was inactive, so we can't verify results!\n" + << " result[offset] = 1u; // Invocation we read from was inactive, so we can't verify results!\n" << " }\n" << "}\n"; @@ -360,20 +360,20 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) if (OPTYPE_QUAD_BROADCAST == caseDef.opType) { src << " " << subgroups::getFormatNameForGLSL(caseDef.format) << " op = " - << getOpTypeName(caseDef.opType) << "(data[gl_SubgroupInvocationID], " << caseDef.direction << ");\n" - << " uint otherID = (gl_SubgroupInvocationID & ~0x3) + " << caseDef.direction << ";\n"; + << getOpTypeName(caseDef.opType) << "(data[gl_SubgroupInvocationID], " << caseDef.direction << "u);\n" + << " uint otherID = (gl_SubgroupInvocationID & ~0x3u) + " << caseDef.direction << "u;\n"; } else { src << " " << subgroups::getFormatNameForGLSL(caseDef.format) << " op = " << getOpTypeName(caseDef.opType) << "(data[gl_SubgroupInvocationID]);\n" - << " uint otherID = (gl_SubgroupInvocationID & ~0x3) + swapTable[gl_SubgroupInvocationID & 0x3];\n"; + << " uint otherID = (gl_SubgroupInvocationID & ~0x3u) + swapTable[gl_SubgroupInvocationID & 0x3u];\n"; } const string sourceType = src.str(); { const string vertex = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_quad: enable\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" "layout(binding = 0, std430) buffer Buffer0\n" @@ -392,11 +392,11 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) + sourceType + " if (subgroupBallotBitExtract(mask, otherID))\n" " {\n" - " b0.result[gl_VertexID] = (op == data[otherID]) ? 1 : 0;\n" + " b0.result[gl_VertexID] = (op == data[otherID]) ? 1u : 0u;\n" " }\n" " else\n" " {\n" - " b0.result[gl_VertexID] = 1; // Invocation we read from was inactive, so we can't verify results!\n" + " b0.result[gl_VertexID] = 1u; // Invocation we read from was inactive, so we can't verify results!\n" " }\n" " float pixelSize = 2.0f/1024.0f;\n" " float pixelPosition = pixelSize/2.0f - 1.0f;\n" @@ -407,7 +407,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { const string tesc = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_quad: enable\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" "layout(vertices=1) out;\n" @@ -427,11 +427,11 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) + sourceType + " if (subgroupBallotBitExtract(mask, otherID))\n" " {\n" - " b1.result[gl_PrimitiveID] = (op == data[otherID]) ? 1 : 0;\n" + " b1.result[gl_PrimitiveID] = (op == data[otherID]) ? 1u : 0u;\n" " }\n" " else\n" " {\n" - " b1.result[gl_PrimitiveID] = 1; // Invocation we read from was inactive, so we can't verify results!\n" + " b1.result[gl_PrimitiveID] = 1u; // Invocation we read from was inactive, so we can't verify results!\n" " }\n" " if (gl_InvocationID == 0)\n" " {\n" @@ -445,7 +445,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { const string tese = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_quad: enable\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" "layout(isolines) in;\n" @@ -465,11 +465,11 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) + sourceType + " if (subgroupBallotBitExtract(mask, otherID))\n" " {\n" - " b2.result[gl_PrimitiveID * 2 + uint(gl_TessCoord.x + 0.5)] = (op == data[otherID]) ? 1 : 0;\n" + " b2.result[gl_PrimitiveID * 2 + int(gl_TessCoord.x + 0.5)] = (op == data[otherID]) ? 1u : 0u;\n" " }\n" " else\n" " {\n" - " b2.result[gl_PrimitiveID * 2 + uint(gl_TessCoord.x + 0.5)] = 1; // Invocation we read from was inactive, so we can't verify results!\n" + " b2.result[gl_PrimitiveID * 2 + int(gl_TessCoord.x + 0.5)] = 1u; // Invocation we read from was inactive, so we can't verify results!\n" " }\n" " float pixelSize = 2.0f/1024.0f;\n" " gl_Position = gl_in[0].gl_Position + gl_TessCoord.x * pixelSize / 2.0f;\n" @@ -479,7 +479,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { const string geometry = - "#version 450\n" + // version added by addGeometryShadersFromTemplate "#extension GL_KHR_shader_subgroup_quad: enable\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" "layout(${TOPOLOGY}) in;\n" @@ -500,11 +500,11 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) + sourceType + " if (subgroupBallotBitExtract(mask, otherID))\n" " {\n" - " b3.result[gl_PrimitiveIDIn] = (op == data[otherID]) ? 1 : 0;\n" + " b3.result[gl_PrimitiveIDIn] = (op == data[otherID]) ? 1u : 0u;\n" " }\n" " else\n" " {\n" - " b3.result[gl_PrimitiveIDIn] = 1; // Invocation we read from was inactive, so we can't verify results!\n" + " b3.result[gl_PrimitiveIDIn] = 1u; // Invocation we read from was inactive, so we can't verify results!\n" " }\n" " gl_Position = gl_in[0].gl_Position;\n" " EmitVertex();\n" @@ -515,9 +515,10 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { const string fragment = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_quad: enable\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" + "precision highp float;\n" "layout(location = 0) out uint result;\n" "layout(binding = 4, std430) readonly buffer Buffer4\n" "{\n" @@ -530,11 +531,11 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) + sourceType + " if (subgroupBallotBitExtract(mask, otherID))\n" " {\n" - " result = (op == data[otherID]) ? 1 : 0;\n" + " result = (op == data[otherID]) ? 1u : 0u;\n" " }\n" " else\n" " {\n" - " result = 1; // Invocation we read from was inactive, so we can't verify results!\n" + " result = 1u; // Invocation we read from was inactive, so we can't verify results!\n" " }\n" "}\n"; programCollection.add("fragment") << glu::FragmentSource(fragment); diff --git a/external/openglcts/modules/common/subgroups/glcSubgroupsShapeTests.cpp b/external/openglcts/modules/common/subgroups/glcSubgroupsShapeTests.cpp index b7d4df7..c35bea4 100755 --- a/external/openglcts/modules/common/subgroups/glcSubgroupsShapeTests.cpp +++ b/external/openglcts/modules/common/subgroups/glcSubgroupsShapeTests.cpp @@ -92,32 +92,32 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti extension += "#extension GL_KHR_shader_subgroup_ballot: enable\n"; - bdy << " uint tempResult = 0x1;\n" + bdy << " uint tempResult = 0x1u;\n" << " uvec4 mask = subgroupBallot(true);\n"; if (OPTYPE_CLUSTERED == caseDef.opType) { for (deUint32 i = 1; i <= subgroups::maxSupportedSubgroupSize(); i *= 2) { - bdy << " if (gl_SubgroupSize >= " << i << ")\n" + bdy << " if (gl_SubgroupSize >= " << i << "u)\n" << " {\n" << " uvec4 contribution = uvec4(0);\n" - << " const uint modID = gl_SubgroupInvocationID % 32;\n" - << " switch (gl_SubgroupInvocationID / 32)\n" + << " uint modID = gl_SubgroupInvocationID % 32u;\n" + << " switch (gl_SubgroupInvocationID / 32u)\n" << " {\n" - << " case 0: contribution.x = 1 << modID; break;\n" - << " case 1: contribution.y = 1 << modID; break;\n" - << " case 2: contribution.z = 1 << modID; break;\n" - << " case 3: contribution.w = 1 << modID; break;\n" + << " case 0u: contribution.x = 1u << modID; break;\n" + << " case 1u: contribution.y = 1u << modID; break;\n" + << " case 2u: contribution.z = 1u << modID; break;\n" + << " case 3u: contribution.w = 1u << modID; break;\n" << " }\n" - << " uvec4 result = subgroupClusteredOr(contribution, " << i << ");\n" - << " uint rootID = gl_SubgroupInvocationID & ~(" << i - 1 << ");\n" - << " for (uint i = 0; i < " << i << "; i++)\n" + << " uvec4 result = subgroupClusteredOr(contribution, " << i << "u);\n" + << " uint rootID = gl_SubgroupInvocationID & ~(" << i - 1 << "u);\n" + << " for (uint i = 0u; i < " << i << "u; i++)\n" << " {\n" << " uint nextID = rootID + i;\n" << " if (subgroupBallotBitExtract(mask, nextID) ^^ subgroupBallotBitExtract(result, nextID))\n" << " {\n" - << " tempResult = 0;\n" + << " tempResult = 0u;\n" << " }\n" << " }\n" << " }\n"; @@ -126,14 +126,14 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti else { bdy << " uint cluster[4] =\n" - << " {\n" - << " subgroupQuadBroadcast(gl_SubgroupInvocationID, 0),\n" - << " subgroupQuadBroadcast(gl_SubgroupInvocationID, 1),\n" - << " subgroupQuadBroadcast(gl_SubgroupInvocationID, 2),\n" - << " subgroupQuadBroadcast(gl_SubgroupInvocationID, 3)\n" - << " };\n" - << " uint rootID = gl_SubgroupInvocationID & ~0x3;\n" - << " for (uint i = 0; i < 4; i++)\n" + << " uint[](\n" + << " subgroupQuadBroadcast(gl_SubgroupInvocationID, 0u),\n" + << " subgroupQuadBroadcast(gl_SubgroupInvocationID, 1u),\n" + << " subgroupQuadBroadcast(gl_SubgroupInvocationID, 2u),\n" + << " subgroupQuadBroadcast(gl_SubgroupInvocationID, 3u)\n" + << " );\n" + << " uint rootID = gl_SubgroupInvocationID & ~0x3u;\n" + << " for (uint i = 0u; i < 4u; i++)\n" << " {\n" << " uint nextID = rootID + i;\n" << " if (subgroupBallotBitExtract(mask, nextID) && (cluster[i] != nextID))\n" @@ -146,7 +146,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti if (SHADER_STAGE_VERTEX_BIT == caseDef.shaderStage) { std::ostringstream vertexSrc; - vertexSrc << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n" + vertexSrc << "${VERSION_DECL}\n" << extension << "layout(location = 0) in highp vec4 in_position;\n" << "layout(location = 0) out float result;\n" @@ -164,7 +164,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti { std::ostringstream geometry; - geometry << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n" + geometry << "${VERSION_DECL}\n" << extension << "layout(points) in;\n" << "layout(points, max_vertices = 1) out;\n" @@ -185,7 +185,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti { std::ostringstream controlSource; - controlSource << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n" + controlSource << "${VERSION_DECL}\n" << extension << "layout(vertices = 2) out;\n" << "layout(location = 0) out float out_color[];\n" @@ -209,9 +209,9 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti { std::ostringstream evaluationSource; - evaluationSource << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n" + evaluationSource << "${VERSION_DECL}\n" << extension - << "layout(isolines, equal_spacing, ccw ) in;\n" + << "layout(isolines, equal_spacing, ccw) in;\n" << "layout(location = 0) out float out_color;\n" << "void main (void)\n" << "{\n" @@ -239,32 +239,32 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) std::ostringstream bdy; - bdy << " uint tempResult = 0x1;\n" + bdy << " uint tempResult = 0x1u;\n" << " uvec4 mask = subgroupBallot(true);\n"; if (OPTYPE_CLUSTERED == caseDef.opType) { for (deUint32 i = 1; i <= subgroups::maxSupportedSubgroupSize(); i *= 2) { - bdy << " if (gl_SubgroupSize >= " << i << ")\n" + bdy << " if (gl_SubgroupSize >= " << i << "u)\n" << " {\n" << " uvec4 contribution = uvec4(0);\n" - << " const uint modID = gl_SubgroupInvocationID % 32;\n" - << " switch (gl_SubgroupInvocationID / 32)\n" + << " uint modID = gl_SubgroupInvocationID % 32u;\n" + << " switch (gl_SubgroupInvocationID / 32u)\n" << " {\n" - << " case 0: contribution.x = 1 << modID; break;\n" - << " case 1: contribution.y = 1 << modID; break;\n" - << " case 2: contribution.z = 1 << modID; break;\n" - << " case 3: contribution.w = 1 << modID; break;\n" + << " case 0u: contribution.x = 1u << modID; break;\n" + << " case 1u: contribution.y = 1u << modID; break;\n" + << " case 2u: contribution.z = 1u << modID; break;\n" + << " case 3u: contribution.w = 1u << modID; break;\n" << " }\n" - << " uvec4 result = subgroupClusteredOr(contribution, " << i << ");\n" - << " uint rootID = gl_SubgroupInvocationID & ~(" << i - 1 << ");\n" - << " for (uint i = 0; i < " << i << "; i++)\n" + << " uvec4 result = subgroupClusteredOr(contribution, " << i << "u);\n" + << " uint rootID = gl_SubgroupInvocationID & ~(" << i - 1 << "u);\n" + << " for (uint i = 0u; i < " << i << "u; i++)\n" << " {\n" << " uint nextID = rootID + i;\n" << " if (subgroupBallotBitExtract(mask, nextID) ^^ subgroupBallotBitExtract(result, nextID))\n" << " {\n" - << " tempResult = 0;\n" + << " tempResult = 0u;\n" << " }\n" << " }\n" << " }\n"; @@ -273,14 +273,14 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) else { bdy << " uint cluster[4] =\n" - << " {\n" - << " subgroupQuadBroadcast(gl_SubgroupInvocationID, 0),\n" - << " subgroupQuadBroadcast(gl_SubgroupInvocationID, 1),\n" - << " subgroupQuadBroadcast(gl_SubgroupInvocationID, 2),\n" - << " subgroupQuadBroadcast(gl_SubgroupInvocationID, 3)\n" - << " };\n" - << " uint rootID = gl_SubgroupInvocationID & ~0x3;\n" - << " for (uint i = 0; i < 4; i++)\n" + << " uint[](\n" + << " subgroupQuadBroadcast(gl_SubgroupInvocationID, 0u),\n" + << " subgroupQuadBroadcast(gl_SubgroupInvocationID, 1u),\n" + << " subgroupQuadBroadcast(gl_SubgroupInvocationID, 2u),\n" + << " subgroupQuadBroadcast(gl_SubgroupInvocationID, 3u)\n" + << " );\n" + << " uint rootID = gl_SubgroupInvocationID & ~0x3u;\n" + << " for (uint i = 0u; i < 4u; i++)\n" << " {\n" << " uint nextID = rootID + i;\n" << " if (subgroupBallotBitExtract(mask, nextID) && (cluster[i] != nextID))\n" @@ -294,7 +294,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { std::ostringstream src; - src << "#version 450\n" + src << "${VERSION_DECL}\n" << extension << "layout (${LOCAL_SIZE_X}, ${LOCAL_SIZE_Y}, ${LOCAL_SIZE_Z}) in;\n" << "layout(binding = 0, std430) buffer Buffer0\n" @@ -318,7 +318,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { { const string vertex = - "#version 450\n" + "${VERSION_DECL}\n" + extension + "layout(binding = 0, std430) buffer Buffer0\n" "{\n" @@ -339,7 +339,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { const string tesc = - "#version 450\n" + "${VERSION_DECL}\n" + extension + "layout(vertices=1) out;\n" "layout(binding = 1, std430) buffer Buffer1\n" @@ -350,7 +350,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) "void main (void)\n" "{\n" + bdy.str() + - " b1.result[gl_PrimitiveID] = 1;\n" + " b1.result[gl_PrimitiveID] = 1u;\n" " if (gl_InvocationID == 0)\n" " {\n" " gl_TessLevelOuter[0] = 1.0f;\n" @@ -364,7 +364,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { const string tese = - "#version 450\n" + "${VERSION_DECL}\n" + extension + "layout(isolines) in;\n" "layout(binding = 2, std430) buffer Buffer2\n" @@ -375,7 +375,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) "void main (void)\n" "{\n" + bdy.str() + - " b2.result[gl_PrimitiveID * 2 + uint(gl_TessCoord.x + 0.5)] = 1;\n" + " b2.result[gl_PrimitiveID * 2 + int(gl_TessCoord.x + 0.5)] = 1u;\n" " float pixelSize = 2.0f/1024.0f;\n" " gl_Position = gl_in[0].gl_Position + gl_TessCoord.x * pixelSize / 2.0f;\n" "}\n"; @@ -385,8 +385,8 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { const string geometry = - "#version 450\n" - + extension + + // version added by addGeometryShadersFromTemplate + extension + "layout(${TOPOLOGY}) in;\n" "layout(points, max_vertices = 1) out;\n" "layout(binding = 3, std430) buffer Buffer3\n" @@ -408,7 +408,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { const string fragment = - "#version 450\n" + "${VERSION_DECL}\n" + extension + "layout(location = 0) out uint result;\n" "void main (void)\n" diff --git a/external/openglcts/modules/common/subgroups/glcSubgroupsShuffleTests.cpp b/external/openglcts/modules/common/subgroups/glcSubgroupsShuffleTests.cpp index 33d6692..765baaf 100755 --- a/external/openglcts/modules/common/subgroups/glcSubgroupsShuffleTests.cpp +++ b/external/openglcts/modules/common/subgroups/glcSubgroupsShuffleTests.cpp @@ -115,17 +115,17 @@ const std::string TestSource(CaseDefinition caseDef) const std::string testSource = " uint temp_res;\n" " uvec4 mask = subgroupBallot(true);\n" - " uint id_in = data2[gl_SubgroupInvocationID] & (gl_SubgroupSize - 1);\n" + " uint id_in = data2[gl_SubgroupInvocationID] & (gl_SubgroupSize - 1u);\n" " " + subgroups::getFormatNameForGLSL(caseDef.format) + " op = " + getOpTypeName(caseDef.opType) + "(data1[gl_SubgroupInvocationID], id_in);\n" " uint id = " + idTable[caseDef.opType] + ";\n" " if ((id < gl_SubgroupSize) && subgroupBallotBitExtract(mask, id))\n" " {\n" - " temp_res = (op == data1[id]) ? 1 : 0;\n" + " temp_res = (op == data1[id]) ? 1u : 0u;\n" " }\n" " else\n" " {\n" - " temp_res = 1; // Invocation we read from was inactive, so we can't verify results!\n" + " temp_res = 1u; // Invocation we read from was inactive, so we can't verify results!\n" " }\n"; return testSource; @@ -148,7 +148,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti if (SHADER_STAGE_VERTEX_BIT == caseDef.shaderStage) { std::ostringstream vertexSrc; - vertexSrc << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n" + vertexSrc << "${VERSION_DECL}\n" << extSource << "#extension GL_KHR_shader_subgroup_ballot: enable\n" << "layout(location = 0) in highp vec4 in_position;\n" @@ -165,7 +165,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti << "void main (void)\n" << "{\n" << testSource - << " result = temp_res;\n" + << " result = float(temp_res);\n" << " gl_Position = in_position;\n" << " gl_PointSize = 1.0f;\n" << "}\n"; @@ -175,7 +175,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti { std::ostringstream geometry; - geometry << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n" + geometry << "${VERSION_DECL}\n" << extSource << "#extension GL_KHR_shader_subgroup_ballot: enable\n" << "layout(points) in;\n" @@ -193,7 +193,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti << "void main (void)\n" << "{\n" << testSource - << " out_color = temp_res;\n" + << " out_color = float(temp_res);\n" << " gl_Position = gl_in[0].gl_Position;\n" << " EmitVertex();\n" << " EndPrimitive();\n" @@ -205,7 +205,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti { std::ostringstream controlSource; - controlSource << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n" + controlSource << "${VERSION_DECL}\n" << extSource << "#extension GL_KHR_shader_subgroup_ballot: enable\n" << "layout(vertices = 2) out;\n" @@ -227,7 +227,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti << " gl_TessLevelOuter[1] = 1.0f;\n" << " }\n" << testSource - << " out_color[gl_InvocationID] = temp_res;\n" + << " out_color[gl_InvocationID] = float(temp_res);\n" << " gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position;\n" << "}\n"; @@ -238,7 +238,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti else if (SHADER_STAGE_TESS_EVALUATION_BIT == caseDef.shaderStage) { std::ostringstream evaluationSource; - evaluationSource << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n" + evaluationSource << "${VERSION_DECL}\n" << extSource << "#extension GL_KHR_shader_subgroup_ballot: enable\n" << "layout(isolines, equal_spacing, ccw ) in;\n" @@ -255,7 +255,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti << "void main (void)\n" << "{\n" << testSource - << " out_color = temp_res;\n" + << " out_color = float(temp_res);\n" << " gl_Position = mix(gl_in[0].gl_Position, gl_in[1].gl_Position, gl_TessCoord.x);\n" << "}\n"; @@ -270,8 +270,9 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { + const std::string versionSource = + "${VERSION_DECL}\n"; const std::string vSource = - "#version 450\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n"; const std::string eSource = (OPTYPE_SHUFFLE == caseDef.opType || OPTYPE_SHUFFLE_XOR == caseDef.opType) ? @@ -285,7 +286,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { std::ostringstream src; - src << extSource + src << versionSource + extSource << "layout (${LOCAL_SIZE_X}, ${LOCAL_SIZE_Y}, ${LOCAL_SIZE_Z}) in;\n" << "layout(binding = 0, std430) buffer Buffer0\n" << "{\n" @@ -311,7 +312,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { const string vertex = - extSource + + versionSource + extSource + "layout(binding = 0, std430) buffer Buffer0\n" "{\n" " uint result[];\n" @@ -333,7 +334,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { const string tesc = - extSource + + versionSource + extSource + "layout(vertices=1) out;\n" "layout(binding = 1, std430) buffer Buffer1\n" "{\n" @@ -358,7 +359,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { const string tese = - extSource + + versionSource + extSource + "layout(isolines) in;\n" "layout(binding = 2, std430) buffer Buffer2\n" "{\n" @@ -369,7 +370,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) "void main (void)\n" "{\n" + testSource + - " b2.result[gl_PrimitiveID * 2 + uint(gl_TessCoord.x + 0.5)] = temp_res;\n" + " b2.result[gl_PrimitiveID * 2 + int(gl_TessCoord.x + 0.5)] = temp_res;\n" " float pixelSize = 2.0f/1024.0f;\n" " gl_Position = gl_in[0].gl_Position + gl_TessCoord.x * pixelSize / 2.0f;\n" "}\n"; @@ -379,6 +380,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { const string geometry = + // version is added by addGeometryShadersFromTemplate extSource + "layout(${TOPOLOGY}) in;\n" "layout(points, max_vertices = 1) out;\n" @@ -401,7 +403,8 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) } { const string fragment = - extSource + + versionSource + extSource + + "precision highp float;\n" "layout(location = 0) out uint result;\n" + declSource + "void main (void)\n" diff --git a/external/openglcts/modules/common/subgroups/glcSubgroupsTestsUtils.cpp b/external/openglcts/modules/common/subgroups/glcSubgroupsTestsUtils.cpp index 88eaee4..3c83e6f 100755 --- a/external/openglcts/modules/common/subgroups/glcSubgroupsTestsUtils.cpp +++ b/external/openglcts/modules/common/subgroups/glcSubgroupsTestsUtils.cpp @@ -148,8 +148,8 @@ de::MovePtr makeGraphicsPipeline(glc::Context& context, DE_UNREF(stages); // only used for asserts map templateArgs; -// string versionDecl(getGLSLVersionDeclaration(context.getGLSLVersion())); -// templateArgs.insert(pair("VERSION_DECL", versionDecl)); + string versionDecl(getGLSLVersionDeclaration(context.getGLSLVersion())); + templateArgs.insert(pair("VERSION_DECL", versionDecl)); string vertSource, tescSource, teseSource, geomSource, fragSource; if (vshader) @@ -269,24 +269,26 @@ de::MovePtr makeComputePipeline(glc::Context& context, const tcu::StringTemplate computeTemplate(glslTemplate.sources[glu::SHADERTYPE_COMPUTE][0]); - map localSizeParams; + map templateArgs; { stringstream localSize; localSize << "local_size_x = " << localSizeX; - localSizeParams.insert(pair("LOCAL_SIZE_X", localSize.str())); + templateArgs.insert(pair("LOCAL_SIZE_X", localSize.str())); } { stringstream localSize; localSize << "local_size_y = " << localSizeY; - localSizeParams.insert(pair("LOCAL_SIZE_Y", localSize.str())); + templateArgs.insert(pair("LOCAL_SIZE_Y", localSize.str())); } { stringstream localSize; localSize << "local_size_z = " << localSizeZ; - localSizeParams.insert(pair("LOCAL_SIZE_Z", localSize.str())); + templateArgs.insert(pair("LOCAL_SIZE_Z", localSize.str())); } + string versionDecl(getGLSLVersionDeclaration(context.getGLSLVersion())); + templateArgs.insert(pair("VERSION_DECL", versionDecl)); - glu::ComputeSource cshader(glu::ComputeSource(computeTemplate.specialize(localSizeParams))); + glu::ComputeSource cshader(glu::ComputeSource(computeTemplate.specialize(templateArgs))); if (doShaderLog) { @@ -413,7 +415,7 @@ struct Buffer : public BufferOrImage m_gl.bindBuffer(m_target, m_objectId); GLU_EXPECT_NO_ERROR(m_gl.getError(), "glBindBuffer"); - ptr = m_gl.mapBuffer(m_target, GL_READ_WRITE); + ptr = m_gl.mapBufferRange(m_target, 0, m_sizeInBytes, GL_MAP_READ_BIT | GL_MAP_WRITE_BIT); GLU_EXPECT_NO_ERROR(m_gl.getError(), "glMapBuffer"); m_gl.bindBuffer(m_target, 0); @@ -542,14 +544,14 @@ std::string glc::subgroups::getSharedMemoryBallotHelper() " subgroupMemoryBarrierShared();\n" " if (vote)\n" " {\n" - " const highp uint invocationId = gl_SubgroupInvocationID % 32;\n" - " const highp uint bitToSet = 1u << invocationId;\n" - " switch (gl_SubgroupInvocationID / 32)\n" + " highp uint invocationId = gl_SubgroupInvocationID % 32u;\n" + " highp uint bitToSet = 1u << invocationId;\n" + " switch (gl_SubgroupInvocationID / 32u)\n" " {\n" - " case 0: atomicOr(superSecretComputeShaderHelper[groupOffset].x, bitToSet); break;\n" - " case 1: atomicOr(superSecretComputeShaderHelper[groupOffset].y, bitToSet); break;\n" - " case 2: atomicOr(superSecretComputeShaderHelper[groupOffset].z, bitToSet); break;\n" - " case 3: atomicOr(superSecretComputeShaderHelper[groupOffset].w, bitToSet); break;\n" + " case 0u: atomicOr(superSecretComputeShaderHelper[groupOffset].x, bitToSet); break;\n" + " case 1u: atomicOr(superSecretComputeShaderHelper[groupOffset].y, bitToSet); break;\n" + " case 2u: atomicOr(superSecretComputeShaderHelper[groupOffset].z, bitToSet); break;\n" + " case 3u: atomicOr(superSecretComputeShaderHelper[groupOffset].w, bitToSet); break;\n" " }\n" " }\n" " subgroupMemoryBarrierShared();\n" @@ -624,7 +626,7 @@ void glc::subgroups::addNoSubgroupShader (SourceCollections& programCollection) { { const std::string vertNoSubgroupGLSL = - "#version 450\n" + "${VERSION_DECL}\n" "void main (void)\n" "{\n" " float pixelSize = 2.0f/1024.0f;\n" @@ -637,7 +639,7 @@ void glc::subgroups::addNoSubgroupShader (SourceCollections& programCollection) { const std::string tescNoSubgroupGLSL = - "#version 450\n" + "${VERSION_DECL}\n" "layout(vertices=1) out;\n" "\n" "void main (void)\n" @@ -654,7 +656,7 @@ void glc::subgroups::addNoSubgroupShader (SourceCollections& programCollection) { const std::string teseNoSubgroupGLSL = - "#version 450\n" + "${VERSION_DECL}\n" "layout(isolines) in;\n" "\n" "void main (void)\n" @@ -677,7 +679,7 @@ std::string glc::subgroups::getVertShaderForStage(const ShaderStageFlags stage) return ""; case SHADER_STAGE_FRAGMENT_BIT: return - "#version 450\n" + "${VERSION_DECL}\n" "void main (void)\n" "{\n" " float pixelSize = 2.0f/1024.0f;\n" @@ -686,14 +688,14 @@ std::string glc::subgroups::getVertShaderForStage(const ShaderStageFlags stage) "}\n"; case SHADER_STAGE_GEOMETRY_BIT: return - "#version 450\n" + "${VERSION_DECL}\n" "void main (void)\n" "{\n" "}\n"; case SHADER_STAGE_TESS_CONTROL_BIT: case SHADER_STAGE_TESS_EVALUATION_BIT: return - "#version 450\n" + "${VERSION_DECL}\n" "void main (void)\n" "{\n" "}\n"; @@ -826,7 +828,7 @@ std::string glc::subgroups::getFormatNameForGLSL (Format format) void glc::subgroups::setVertexShaderFrameBuffer (SourceCollections& programCollection) { programCollection.add("vert") << glu::VertexSource( - "#version 450\n" + "${VERSION_DECL}\n" "layout(location = 0) in highp vec4 in_position;\n" "void main (void)\n" "{\n" @@ -837,8 +839,8 @@ void glc::subgroups::setVertexShaderFrameBuffer (SourceCollections& programColle void glc::subgroups::setFragmentShaderFrameBuffer (SourceCollections& programCollection) { programCollection.add("fragment") << glu::FragmentSource( - "#version 450\n" - "layout(location = 0) in float in_color;\n" + "${VERSION_DECL}\n" + "layout(location = 0) in highp float in_color;\n" "layout(location = 0) out uint out_color;\n" "void main()\n" "{\n" @@ -849,7 +851,7 @@ void glc::subgroups::setFragmentShaderFrameBuffer (SourceCollections& programCol void glc::subgroups::setTesCtrlShaderFrameBuffer (SourceCollections& programCollection) { programCollection.add("tesc") << glu::TessellationControlSource( - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_basic: enable\n" "#extension GL_EXT_tessellation_shader : require\n" "layout(vertices = 2) out;\n" @@ -867,7 +869,7 @@ void glc::subgroups::setTesCtrlShaderFrameBuffer (SourceCollections& programColl void glc::subgroups::setTesEvalShaderFrameBuffer (SourceCollections& programCollection) { programCollection.add("tese") << glu::TessellationEvaluationSource( - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_ballot: enable\n" "#extension GL_EXT_tessellation_shader : require\n" "layout(isolines, equal_spacing, ccw ) in;\n" @@ -891,8 +893,8 @@ void glc::subgroups::addGeometryShadersFromTemplate (const std::string& glslTemp map pointsParams; pointsParams.insert(pair("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) diff --git a/external/openglcts/modules/common/subgroups/glcSubgroupsVoteTests.cpp b/external/openglcts/modules/common/subgroups/glcSubgroupsVoteTests.cpp index dbf8d1d..ab7dc22 100755 --- a/external/openglcts/modules/common/subgroups/glcSubgroupsVoteTests.cpp +++ b/external/openglcts/modules/common/subgroups/glcSubgroupsVoteTests.cpp @@ -122,7 +122,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti if (SHADER_STAGE_FRAGMENT_BIT == caseDef.shaderStage) { - const string vertex = "#version 450\n" + const string vertex = "${VERSION_DECL}\n" "void main (void)\n" "{\n" " vec2 uv = vec2(float(gl_VertexID & 1), float((gl_VertexID >> 1) & 1));\n" @@ -137,36 +137,36 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti const string source = (OPTYPE_ALL == caseDef.opType) ? " result = " + getOpTypeName(caseDef.opType) + - "(true) ? 0x1 : 0;\n" + "(true) ? 0x1u : 0u;\n" " result |= " + getOpTypeName(caseDef.opType) + - "(false) ? 0 : 0x1A;\n" - " result |= 0x4;\n" + "(false) ? 0u : 0x1Au;\n" + " result |= 0x4u;\n" : (OPTYPE_ANY == caseDef.opType) ? " result = " + getOpTypeName(caseDef.opType) + - "(true) ? 0x1 : 0;\n" + "(true) ? 0x1u : 0u;\n" " result |= " + getOpTypeName(caseDef.opType) + - "(false) ? 0 : 0x1A;\n" - " result |= 0x4;\n" + "(false) ? 0u : 0x1Au;\n" + " result |= 0x4u;\n" : (OPTYPE_ALLEQUAL == caseDef.opType) ? " " + subgroups::getFormatNameForGLSL(caseDef.format) + " valueEqual = " + subgroups::getFormatNameForGLSL(caseDef.format) + "(1.25 * float(data[gl_SubgroupInvocationID]) + 5.0);\n" + - " " + subgroups::getFormatNameForGLSL(caseDef.format) + " valueNoEqual = " + subgroups::getFormatNameForGLSL(caseDef.format) + (formatIsBoolean ? "(subgroupElect())\n;" : "(12.0 * float(data[gl_SubgroupInvocationID]) + gl_SubgroupInvocationID);\n") + + " " + subgroups::getFormatNameForGLSL(caseDef.format) + " valueNoEqual = " + subgroups::getFormatNameForGLSL(caseDef.format) + (formatIsBoolean ? "(subgroupElect())\n;" : "(12.0 * float(data[gl_SubgroupInvocationID]) + float(gl_SubgroupInvocationID));\n") + " result = " + getOpTypeName(caseDef.opType) + "(" - + subgroups::getFormatNameForGLSL(caseDef.format) + "(1)) ? 0x1 : 0;\n" + + subgroups::getFormatNameForGLSL(caseDef.format) + "(1)) ? 0x1u : 0u;\n" " result |= " + getOpTypeName(caseDef.opType) + - "(gl_SubgroupInvocationID) ? 0 : 0x2;\n" + "(gl_SubgroupInvocationID) ? 0u : 0x2u;\n" " result |= " + getOpTypeName(caseDef.opType) + - "(data[0]) ? 0x4 : 0;\n" + "(data[0]) ? 0x4u : 0u;\n" " result |= " + getOpTypeName(caseDef.opType) + - "(valueEqual) ? 0x8 : 0x0;\n" + "(valueEqual) ? 0x8u : 0x0u;\n" " result |= " + getOpTypeName(caseDef.opType) + - "(valueNoEqual) ? 0x0 : 0x10;\n" - " if (subgroupElect()) result |= 0x2 | 0x10;\n" + "(valueNoEqual) ? 0x0u : 0x10u;\n" + " if (subgroupElect()) result |= 0x2u | 0x10u;\n" : ""; if (SHADER_STAGE_VERTEX_BIT == caseDef.shaderStage) { std::ostringstream vertexSrc; - vertexSrc << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n" + vertexSrc << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_vote: enable\n" << "layout(location = 0) out float out_color;\n" << "layout(location = 0) in highp vec4 in_position;\n" @@ -190,7 +190,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti { std::ostringstream geometry; - geometry << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n" + geometry << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_vote: enable\n" << "layout(points) in;\n" << "layout(points, max_vertices = 1) out;\n" @@ -215,7 +215,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti else if (SHADER_STAGE_TESS_CONTROL_BIT == caseDef.shaderStage) { std::ostringstream controlSource; - controlSource << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n" + controlSource << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_vote: enable\n" << "layout(vertices = 2) out;\n" << "layout(location = 0) out float out_color[];\n" @@ -243,7 +243,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti else if (SHADER_STAGE_TESS_EVALUATION_BIT == caseDef.shaderStage) { std::ostringstream evaluationSource; - evaluationSource << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n" + evaluationSource << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_vote: enable\n" << "#extension GL_EXT_tessellation_shader : require\n" << "layout(isolines, equal_spacing, ccw ) in;\n" @@ -256,7 +256,7 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti << "void main (void)\n" << "{\n" << " uint result;\n" - << " highp uint offset = gl_PrimitiveID * 2 + uint(gl_TessCoord.x + 0.5);\n" + << " highp uint offset = uint(gl_PrimitiveID) * 2u + uint(gl_TessCoord.x + 0.5);\n" << source << " out_color = float(result);\n" << " gl_Position = mix(gl_in[0].gl_Position, gl_in[1].gl_Position, gl_TessCoord.x);\n" @@ -270,35 +270,36 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti const string sourceFragment = (OPTYPE_ALL == caseDef.opType) ? " result |= " + getOpTypeName(caseDef.opType) + - "(!gl_HelperInvocation) ? 0x0 : 0x1;\n" + "(!gl_HelperInvocation) ? 0x0u : 0x1u;\n" " result |= " + getOpTypeName(caseDef.opType) + - "(false) ? 0 : 0x1A;\n" - " result |= 0x4;\n" + "(false) ? 0u : 0x1Au;\n" + " result |= 0x4u;\n" : (OPTYPE_ANY == caseDef.opType) ? " result |= " + getOpTypeName(caseDef.opType) + - "(gl_HelperInvocation) ? 0x1 : 0x0;\n" + "(gl_HelperInvocation) ? 0x1u : 0x0u;\n" " result |= " + getOpTypeName(caseDef.opType) + - "(false) ? 0 : 0x1A;\n" - " result |= 0x4;\n" + "(false) ? 0u : 0x1Au;\n" + " result |= 0x4u;\n" : (OPTYPE_ALLEQUAL == caseDef.opType) ? " " + subgroups::getFormatNameForGLSL(caseDef.format) + " valueEqual = " + subgroups::getFormatNameForGLSL(caseDef.format) + "(1.25 * float(data[gl_SubgroupInvocationID]) + 5.0);\n" + - " " + subgroups::getFormatNameForGLSL(caseDef.format) + " valueNoEqual = " + subgroups::getFormatNameForGLSL(caseDef.format) + (formatIsBoolean ? "(subgroupElect());\n" : "(12.0 * float(data[gl_SubgroupInvocationID]) + int(gl_FragCoord.x*gl_SubgroupInvocationID));\n") + + " " + subgroups::getFormatNameForGLSL(caseDef.format) + " valueNoEqual = " + subgroups::getFormatNameForGLSL(caseDef.format) + (formatIsBoolean ? "(subgroupElect());\n" : "(12.0 * float(data[gl_SubgroupInvocationID]) + gl_FragCoord.x * float(gl_SubgroupInvocationID));\n") + " result |= " + getOpTypeName(caseDef.opType) + "(" - + subgroups::getFormatNameForGLSL(caseDef.format) + "(1)) ? 0x10 : 0;\n" + + subgroups::getFormatNameForGLSL(caseDef.format) + "(1)) ? 0x10u : 0u;\n" " result |= " + getOpTypeName(caseDef.opType) + - "(gl_SubgroupInvocationID) ? 0 : 0x2;\n" + "(gl_SubgroupInvocationID) ? 0u : 0x2u;\n" " result |= " + getOpTypeName(caseDef.opType) + - "(data[0]) ? 0x4 : 0;\n" + "(data[0]) ? 0x4u : 0u;\n" " result |= " + getOpTypeName(caseDef.opType) + - "(valueEqual) ? 0x8 : 0x0;\n" + "(valueEqual) ? 0x8u : 0x0u;\n" " result |= " + getOpTypeName(caseDef.opType) + - "(gl_HelperInvocation) ? 0x0 : 0x1;\n" - " if (subgroupElect()) result |= 0x2 | 0x10;\n" + "(gl_HelperInvocation) ? 0x0u : 0x1u;\n" + " if (subgroupElect()) result |= 0x2u | 0x10u;\n" : ""; std::ostringstream fragmentSource; - fragmentSource << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450)<<"\n" + fragmentSource << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_vote: enable\n" + << "precision highp float;\n" << "layout(location = 0) out uint out_color;\n" << "layout(set = 0, binding = 0) uniform Buffer1\n" << "{\n" @@ -308,14 +309,14 @@ void initFrameBufferPrograms (SourceCollections& programCollection, CaseDefiniti << "void main()\n" << "{\n" << " uint result = 0u;\n" - << " if (dFdx(gl_SubgroupInvocationID * gl_FragCoord.x * gl_FragCoord.y) - dFdy(gl_SubgroupInvocationID * gl_FragCoord.x * gl_FragCoord.y) > 0.0f)\n" + << " if (dFdx(float(gl_SubgroupInvocationID) * gl_FragCoord.x * gl_FragCoord.y) - dFdy(float(gl_SubgroupInvocationID) * gl_FragCoord.x * gl_FragCoord.y) > 0.0f)\n" << " {\n" - << " result |= 0x20;\n" // to be sure that compiler doesn't remove dFdx and dFdy executions + << " result |= 0x20u;\n" // to be sure that compiler doesn't remove dFdx and dFdy executions << " }\n" << " bool helper = subgroupAny(gl_HelperInvocation);\n" << " if (helper)\n" << " {\n" - << " result |= 0x40;\n" + << " result |= 0x40u;\n" << " }\n" << sourceFragment << " out_color = result;\n" @@ -337,7 +338,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) { std::ostringstream src; - src << "#version 450\n" + src << "${VERSION_DECL}\n" << "#extension GL_KHR_shader_subgroup_vote: enable\n" << "layout (${LOCAL_SIZE_X}, ${LOCAL_SIZE_Y}, ${LOCAL_SIZE_Z}) in;\n" << "layout(binding = 0, std430) buffer Buffer1\n" @@ -358,37 +359,37 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) if (OPTYPE_ALL == caseDef.opType) { src << " result[offset] = " << getOpTypeName(caseDef.opType) - << "(true) ? 0x1 : 0;\n" + << "(true) ? 0x1u : 0u;\n" << " result[offset] |= " << getOpTypeName(caseDef.opType) - << "(false) ? 0 : 0x1A;\n" + << "(false) ? 0u : 0x1Au;\n" << " result[offset] |= " << getOpTypeName(caseDef.opType) - << "(data[gl_SubgroupInvocationID] > 0) ? 0x4 : 0;\n"; + << "(data[gl_SubgroupInvocationID] > 0u) ? 0x4u : 0u;\n"; } else if (OPTYPE_ANY == caseDef.opType) { src << " result[offset] = " << getOpTypeName(caseDef.opType) - << "(true) ? 0x1 : 0;\n" + << "(true) ? 0x1u : 0u;\n" << " result[offset] |= " << getOpTypeName(caseDef.opType) - << "(false) ? 0 : 0x1A;\n" + << "(false) ? 0u : 0x1Au;\n" << " result[offset] |= " << getOpTypeName(caseDef.opType) - << "(data[gl_SubgroupInvocationID] == data[0]) ? 0x4 : 0;\n"; + << "(data[gl_SubgroupInvocationID] == data[0]) ? 0x4u : 0u;\n"; } else if (OPTYPE_ALLEQUAL == caseDef.opType) { src << " " << subgroups::getFormatNameForGLSL(caseDef.format) <<" valueEqual = " << subgroups::getFormatNameForGLSL(caseDef.format) << "(1.25 * float(data[gl_SubgroupInvocationID]) + 5.0);\n" - << " " << subgroups::getFormatNameForGLSL(caseDef.format) <<" valueNoEqual = " << subgroups::getFormatNameForGLSL(caseDef.format) << (formatIsBoolean ? "(subgroupElect());\n" : "(12.0 * float(data[gl_SubgroupInvocationID]) + offset);\n") + << " " << subgroups::getFormatNameForGLSL(caseDef.format) <<" valueNoEqual = " << subgroups::getFormatNameForGLSL(caseDef.format) << (formatIsBoolean ? "(subgroupElect());\n" : "(12.0 * float(data[gl_SubgroupInvocationID]) + float(offset));\n") <<" result[offset] = " << getOpTypeName(caseDef.opType) << "(" - << subgroups::getFormatNameForGLSL(caseDef.format) << "(1)) ? 0x1 : 0x0;\n" + << subgroups::getFormatNameForGLSL(caseDef.format) << "(1)) ? 0x1u : 0x0u;\n" << " result[offset] |= " << getOpTypeName(caseDef.opType) - << "(gl_SubgroupInvocationID) ? 0x0 : 0x2;\n" + << "(gl_SubgroupInvocationID) ? 0x0u : 0x2u;\n" << " result[offset] |= " << getOpTypeName(caseDef.opType) - << "(data[0]) ? 0x4 : 0x0;\n" + << "(data[0]) ? 0x4u : 0x0u;\n" << " result[offset] |= "<< getOpTypeName(caseDef.opType) - << "(valueEqual) ? 0x8 : 0x0;\n" + << "(valueEqual) ? 0x8u : 0x0u;\n" << " result[offset] |= "<< getOpTypeName(caseDef.opType) - << "(valueNoEqual) ? 0x0 : 0x10;\n" - << " if (subgroupElect()) result[offset] |= 0x2 | 0x10;\n"; + << "(valueNoEqual) ? 0x0u : 0x10u;\n" + << " if (subgroupElect()) result[offset] |= 0x2u | 0x10u;\n"; } src << "}\n"; @@ -400,30 +401,30 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) const string source = (OPTYPE_ALL == caseDef.opType) ? " b${SSBO1}.result[offset] = " + getOpTypeName(caseDef.opType) + - "(true) ? 0x1 : 0;\n" + "(true) ? 0x1u : 0u;\n" " b${SSBO1}.result[offset] |= " + getOpTypeName(caseDef.opType) + - "(false) ? 0 : 0x1A;\n" - " b${SSBO1}.result[offset] |= 0x4;\n" + "(false) ? 0u : 0x1Au;\n" + " b${SSBO1}.result[offset] |= 0x4u;\n" : (OPTYPE_ANY == caseDef.opType) ? " b${SSBO1}.result[offset] = " + getOpTypeName(caseDef.opType) + - "(true) ? 0x1 : 0;\n" + "(true) ? 0x1u : 0u;\n" " b${SSBO1}.result[offset] |= " + getOpTypeName(caseDef.opType) + - "(false) ? 0 : 0x1A;\n" - " b${SSBO1}.result[offset] |= 0x4;\n" + "(false) ? 0u : 0x1Au;\n" + " b${SSBO1}.result[offset] |= 0x4u;\n" : (OPTYPE_ALLEQUAL == caseDef.opType) ? " " + subgroups::getFormatNameForGLSL(caseDef.format) + " valueEqual = " + subgroups::getFormatNameForGLSL(caseDef.format) + "(1.25 * float(data[gl_SubgroupInvocationID]) + 5.0);\n" + - " " + subgroups::getFormatNameForGLSL(caseDef.format) + " valueNoEqual = " + subgroups::getFormatNameForGLSL(caseDef.format) + (formatIsBoolean ? "(subgroupElect());\n" : "(12.0 * float(data[gl_SubgroupInvocationID]) + gl_SubgroupInvocationID);\n") + + " " + subgroups::getFormatNameForGLSL(caseDef.format) + " valueNoEqual = " + subgroups::getFormatNameForGLSL(caseDef.format) + (formatIsBoolean ? "(subgroupElect());\n" : "(12.0 * float(data[gl_SubgroupInvocationID]) + float(gl_SubgroupInvocationID));\n") + " b${SSBO1}.result[offset] = " + getOpTypeName(caseDef.opType) + "(" - + subgroups::getFormatNameForGLSL(caseDef.format) + "(1)) ? 0x1 : 0;\n" + + subgroups::getFormatNameForGLSL(caseDef.format) + "(1)) ? 0x1u : 0u;\n" " b${SSBO1}.result[offset] |= " + getOpTypeName(caseDef.opType) + - "(gl_SubgroupInvocationID) ? 0 : 0x2;\n" + "(gl_SubgroupInvocationID) ? 0u : 0x2u;\n" " b${SSBO1}.result[offset] |= " + getOpTypeName(caseDef.opType) + - "(data[0]) ? 0x4 : 0;\n" + "(data[0]) ? 0x4u : 0u;\n" " b${SSBO1}.result[offset] |= " + getOpTypeName(caseDef.opType) + - "(valueEqual) ? 0x8 : 0x0;\n" + "(valueEqual) ? 0x8u : 0x0u;\n" " b${SSBO1}.result[offset] |= " + getOpTypeName(caseDef.opType) + - "(valueNoEqual) ? 0x0 : 0x10;\n" - " if (subgroupElect()) b${SSBO1}.result[offset] |= 0x2 | 0x10;\n" + "(valueNoEqual) ? 0x0u : 0x10u;\n" + " if (subgroupElect()) b${SSBO1}.result[offset] |= 0x2u | 0x10u;\n" : ""; tcu::StringTemplate sourceTemplate(source); @@ -435,7 +436,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) bufferNameMapping.insert(pair("SSBO1", "0")); const string vertex = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_vote: enable\n" "layout(binding = 0, std430) buffer Buffer0\n" "{\n" @@ -448,7 +449,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) "\n" "void main (void)\n" "{\n" - " highp uint offset = gl_VertexID;\n" + " highp int offset = gl_VertexID;\n" + sourceTemplate.specialize(bufferNameMapping) + " float pixelSize = 2.0f/1024.0f;\n" " float pixelPosition = pixelSize/2.0f - 1.0f;\n" @@ -463,7 +464,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) bufferNameMapping.insert(pair("SSBO1", "1")); const string tesc = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_vote: enable\n" "layout(vertices=1) out;\n" "layout(binding = 1, std430) buffer Buffer1\n" @@ -477,7 +478,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) "\n" "void main (void)\n" "{\n" - " highp uint offset = gl_PrimitiveID;\n" + " highp int offset = gl_PrimitiveID;\n" + sourceTemplate.specialize(bufferNameMapping) + " if (gl_InvocationID == 0)\n" " {\n" @@ -495,7 +496,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) bufferNameMapping.insert(pair("SSBO1", "2")); const string tese = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_vote: enable\n" "layout(isolines) in;\n" "layout(binding = 2, std430) buffer Buffer2\n" @@ -509,7 +510,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) "\n" "void main (void)\n" "{\n" - " highp uint offset = gl_PrimitiveID * 2 + uint(gl_TessCoord.x + 0.5);\n" + " highp uint offset = uint(gl_PrimitiveID * 2) + uint(gl_TessCoord.x + 0.5);\n" + sourceTemplate.specialize(bufferNameMapping) + " float pixelSize = 2.0f/1024.0f;\n" " gl_Position = gl_in[0].gl_Position + gl_TessCoord.x * pixelSize / 2.0f;\n" @@ -523,7 +524,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) bufferNameMapping.insert(pair("SSBO1", "3")); const string geometry = - "#version 450\n" + // version string added by addGeometryShadersFromTemplate "#extension GL_KHR_shader_subgroup_vote: enable\n" "layout(${TOPOLOGY}) in;\n" "layout(points, max_vertices = 1) out;\n" @@ -538,7 +539,7 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) "\n" "void main (void)\n" "{\n" - " highp uint offset = gl_PrimitiveIDIn;\n" + " highp int offset = gl_PrimitiveIDIn;\n" + sourceTemplate.specialize(bufferNameMapping) + " gl_Position = gl_in[0].gl_Position;\n" " EmitVertex();\n" @@ -552,34 +553,35 @@ void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef) const string sourceFragment = (OPTYPE_ALL == caseDef.opType) ? " result = " + getOpTypeName(caseDef.opType) + - "(true) ? 0x1 : 0;\n" + "(true) ? 0x1u : 0u;\n" " result |= " + getOpTypeName(caseDef.opType) + - "(false) ? 0 : 0x1A;\n" - " result |= 0x4;\n" + "(false) ? 0u : 0x1Au;\n" + " result |= 0x4u;\n" : (OPTYPE_ANY == caseDef.opType) ? " result = " + getOpTypeName(caseDef.opType) + - "(true) ? 0x1 : 0;\n" + "(true) ? 0x1u : 0u;\n" " result |= " + getOpTypeName(caseDef.opType) + - "(false) ? 0 : 0x1A;\n" - " result |= 0x4;\n" + "(false) ? 0u : 0x1Au;\n" + " result |= 0x4u;\n" : (OPTYPE_ALLEQUAL == caseDef.opType) ? " " + subgroups::getFormatNameForGLSL(caseDef.format) + " valueEqual = " + subgroups::getFormatNameForGLSL(caseDef.format) + "(1.25 * float(data[gl_SubgroupInvocationID]) + 5.0);\n" + - " " + subgroups::getFormatNameForGLSL(caseDef.format) + " valueNoEqual = " + subgroups::getFormatNameForGLSL(caseDef.format) + (formatIsBoolean ? "(subgroupElect());\n" : "(12.0 * float(data[gl_SubgroupInvocationID]) + int(gl_FragCoord.x*gl_SubgroupInvocationID));\n") + + " " + subgroups::getFormatNameForGLSL(caseDef.format) + " valueNoEqual = " + subgroups::getFormatNameForGLSL(caseDef.format) + (formatIsBoolean ? "(subgroupElect());\n" : "(12.0 * float(data[gl_SubgroupInvocationID]) + gl_FragCoord.x * float(gl_SubgroupInvocationID));\n") + " result = " + getOpTypeName(caseDef.opType) + "(" - + subgroups::getFormatNameForGLSL(caseDef.format) + "(1)) ? 0x1 : 0;\n" + + subgroups::getFormatNameForGLSL(caseDef.format) + "(1)) ? 0x1u : 0u;\n" " result |= " + getOpTypeName(caseDef.opType) + - "(gl_SubgroupInvocationID) ? 0 : 0x2;\n" + "(gl_SubgroupInvocationID) ? 0u : 0x2u;\n" " result |= " + getOpTypeName(caseDef.opType) + - "(data[0]) ? 0x4 : 0;\n" + "(data[0]) ? 0x4u : 0u;\n" " result |= " + getOpTypeName(caseDef.opType) + - "(valueEqual) ? 0x8 : 0x0;\n" + "(valueEqual) ? 0x8u : 0x0u;\n" " result |= " + getOpTypeName(caseDef.opType) + - "(valueNoEqual) ? 0x0 : 0x10;\n" - " if (subgroupElect()) result |= 0x2 | 0x10;\n" + "(valueNoEqual) ? 0x0u : 0x10u;\n" + " if (subgroupElect()) result |= 0x2u | 0x10u;\n" : ""; const string fragment = - "#version 450\n" + "${VERSION_DECL}\n" "#extension GL_KHR_shader_subgroup_vote: enable\n" + "precision highp float;\n" "layout(location = 0) out uint result;\n" "layout(binding = 4, std430) readonly buffer Buffer4\n" "{\n" diff --git a/external/openglcts/modules/gles32/es32cTestPackage.cpp b/external/openglcts/modules/gles32/es32cTestPackage.cpp index 72570af..d020d38 100644 --- a/external/openglcts/modules/gles32/es32cTestPackage.cpp +++ b/external/openglcts/modules/gles32/es32cTestPackage.cpp @@ -45,6 +45,8 @@ #include "glwFunctions.hpp" #include "tcuTestLog.hpp" +#include "../common/subgroups/glcSubgroupsTests.hpp" + #include "../glesext/draw_buffers_indexed/esextcDrawBuffersIndexedTests.hpp" #include "../glesext/geometry_shader/esextcGeometryShaderTests.hpp" #include "../glesext/gpu_shader5/esextcGPUShader5Tests.hpp" @@ -166,6 +168,10 @@ void ES32TestPackage::init(void) coreGroup->addChild(new glcts::CopyImageTests(getContext())); coreGroup->addChild(new glcts::InternalformatTests(getContext())); addChild(coreGroup); + + tcu::TestCaseGroup* khrGroup = new tcu::TestCaseGroup(getTestContext(), "khr", ""); + khrGroup->addChild(new glc::subgroups::GlSubgroupTests(getContext())); + addChild(khrGroup); } catch (...) {