Register 2 new shader subgroup extensions

- GL_KHR_shader_subgroup
- GL_NV_shader_subgroup_partitioned
diff --git a/api/GL/glcorearb.h b/api/GL/glcorearb.h
index cf6fca8..88dc825 100755
--- a/api/GL/glcorearb.h
+++ b/api/GL/glcorearb.h
@@ -3900,6 +3900,22 @@
 #define GL_CONTEXT_ROBUST_ACCESS          0x90F3
 #endif /* GL_KHR_robustness */
 
+#ifndef GL_KHR_shader_subgroup
+#define GL_KHR_shader_subgroup 1
+#define GL_SUBGROUP_SIZE_KHR              0x9532
+#define GL_SUBGROUP_SUPPORTED_STAGES_KHR  0x9533
+#define GL_SUBGROUP_SUPPORTED_FEATURES_KHR 0x9534
+#define GL_SUBGROUP_QUAD_ALL_STAGES_KHR   0x9535
+#define GL_SUBGROUP_FEATURE_BASIC_BIT_KHR 0x00000001
+#define GL_SUBGROUP_FEATURE_VOTE_BIT_KHR  0x00000002
+#define GL_SUBGROUP_FEATURE_ARITHMETIC_BIT_KHR 0x00000004
+#define GL_SUBGROUP_FEATURE_BALLOT_BIT_KHR 0x00000008
+#define GL_SUBGROUP_FEATURE_SHUFFLE_BIT_KHR 0x00000010
+#define GL_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT_KHR 0x00000020
+#define GL_SUBGROUP_FEATURE_CLUSTERED_BIT_KHR 0x00000040
+#define GL_SUBGROUP_FEATURE_QUAD_BIT_KHR  0x00000080
+#endif /* GL_KHR_shader_subgroup */
+
 #ifndef GL_KHR_texture_compression_astc_hdr
 #define GL_KHR_texture_compression_astc_hdr 1
 #define GL_COMPRESSED_RGBA_ASTC_4x4_KHR   0x93B0
@@ -5662,6 +5678,11 @@
 #define GL_SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV 0x00000010
 #endif /* GL_NV_shader_buffer_store */
 
+#ifndef GL_NV_shader_subgroup_partitioned
+#define GL_NV_shader_subgroup_partitioned 1
+#define GL_SUBGROUP_FEATURE_PARTITIONED_BIT_NV 0x00000100
+#endif /* GL_NV_shader_subgroup_partitioned */
+
 #ifndef GL_NV_shader_texture_footprint
 #define GL_NV_shader_texture_footprint 1
 #endif /* GL_NV_shader_texture_footprint */
diff --git a/api/GL/glext.h b/api/GL/glext.h
index e035352..6a8e07a 100644
--- a/api/GL/glext.h
+++ b/api/GL/glext.h
@@ -4992,6 +4992,22 @@
 #define GL_CONTEXT_ROBUST_ACCESS          0x90F3
 #endif /* GL_KHR_robustness */
 
+#ifndef GL_KHR_shader_subgroup
+#define GL_KHR_shader_subgroup 1
+#define GL_SUBGROUP_SIZE_KHR              0x9532
+#define GL_SUBGROUP_SUPPORTED_STAGES_KHR  0x9533
+#define GL_SUBGROUP_SUPPORTED_FEATURES_KHR 0x9534
+#define GL_SUBGROUP_QUAD_ALL_STAGES_KHR   0x9535
+#define GL_SUBGROUP_FEATURE_BASIC_BIT_KHR 0x00000001
+#define GL_SUBGROUP_FEATURE_VOTE_BIT_KHR  0x00000002
+#define GL_SUBGROUP_FEATURE_ARITHMETIC_BIT_KHR 0x00000004
+#define GL_SUBGROUP_FEATURE_BALLOT_BIT_KHR 0x00000008
+#define GL_SUBGROUP_FEATURE_SHUFFLE_BIT_KHR 0x00000010
+#define GL_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT_KHR 0x00000020
+#define GL_SUBGROUP_FEATURE_CLUSTERED_BIT_KHR 0x00000040
+#define GL_SUBGROUP_FEATURE_QUAD_BIT_KHR  0x00000080
+#endif /* GL_KHR_shader_subgroup */
+
 #ifndef GL_KHR_texture_compression_astc_hdr
 #define GL_KHR_texture_compression_astc_hdr 1
 #define GL_COMPRESSED_RGBA_ASTC_4x4_KHR   0x93B0
@@ -10971,6 +10987,11 @@
 #define GL_NV_shader_storage_buffer_object 1
 #endif /* GL_NV_shader_storage_buffer_object */
 
+#ifndef GL_NV_shader_subgroup_partitioned
+#define GL_NV_shader_subgroup_partitioned 1
+#define GL_SUBGROUP_FEATURE_PARTITIONED_BIT_NV 0x00000100
+#endif /* GL_NV_shader_subgroup_partitioned */
+
 #ifndef GL_NV_shader_texture_footprint
 #define GL_NV_shader_texture_footprint 1
 #endif /* GL_NV_shader_texture_footprint */
diff --git a/api/GLES2/gl2ext.h b/api/GLES2/gl2ext.h
index be8a5d5..758d554 100644
--- a/api/GLES2/gl2ext.h
+++ b/api/GLES2/gl2ext.h
@@ -197,6 +197,22 @@
 #endif
 #endif /* GL_KHR_robustness */
 
+#ifndef GL_KHR_shader_subgroup
+#define GL_KHR_shader_subgroup 1
+#define GL_SUBGROUP_SIZE_KHR              0x9532
+#define GL_SUBGROUP_SUPPORTED_STAGES_KHR  0x9533
+#define GL_SUBGROUP_SUPPORTED_FEATURES_KHR 0x9534
+#define GL_SUBGROUP_QUAD_ALL_STAGES_KHR   0x9535
+#define GL_SUBGROUP_FEATURE_BASIC_BIT_KHR 0x00000001
+#define GL_SUBGROUP_FEATURE_VOTE_BIT_KHR  0x00000002
+#define GL_SUBGROUP_FEATURE_ARITHMETIC_BIT_KHR 0x00000004
+#define GL_SUBGROUP_FEATURE_BALLOT_BIT_KHR 0x00000008
+#define GL_SUBGROUP_FEATURE_SHUFFLE_BIT_KHR 0x00000010
+#define GL_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT_KHR 0x00000020
+#define GL_SUBGROUP_FEATURE_CLUSTERED_BIT_KHR 0x00000040
+#define GL_SUBGROUP_FEATURE_QUAD_BIT_KHR  0x00000080
+#endif /* GL_KHR_shader_subgroup */
+
 #ifndef GL_KHR_texture_compression_astc_hdr
 #define GL_KHR_texture_compression_astc_hdr 1
 #define GL_COMPRESSED_RGBA_ASTC_4x4_KHR   0x93B0
@@ -3492,6 +3508,11 @@
 #define GL_NV_shader_noperspective_interpolation 1
 #endif /* GL_NV_shader_noperspective_interpolation */
 
+#ifndef GL_NV_shader_subgroup_partitioned
+#define GL_NV_shader_subgroup_partitioned 1
+#define GL_SUBGROUP_FEATURE_PARTITIONED_BIT_NV 0x00000100
+#endif /* GL_NV_shader_subgroup_partitioned */
+
 #ifndef GL_NV_shader_texture_footprint
 #define GL_NV_shader_texture_footprint 1
 #endif /* GL_NV_shader_texture_footprint */
diff --git a/extensions/KHR/KHR_shader_subgroup.txt b/extensions/KHR/KHR_shader_subgroup.txt
new file mode 100644
index 0000000..54ff406
--- /dev/null
+++ b/extensions/KHR/KHR_shader_subgroup.txt
@@ -0,0 +1,635 @@
+Name
+
+    KHR_shader_subgroup
+
+Name Strings
+
+    GL_KHR_shader_subgroup
+
+Contact
+
+    Daniel Koch, NVIDIA Corportation
+
+Contributors
+
+    Neil Henning, Codeplay
+    Contributors to GL_KHR_shader_subgroup (GLSL)
+    James Glanville, Imagination
+    Jan-Harald Fredriksen, Arm
+    Graeme Leese, Broadcom
+    Jesse Hall, Google
+
+Status
+
+    Complete
+    Approved by the OpenGL Working Group on 2019-05-29
+    Approved by the OpenGL ES Working Group on 2019-05-29
+    Approved by the Khronos Promoters on 2019-07-26
+
+Version
+
+    Last Modified:  2019-07-26
+    Revision:       8
+
+Number
+
+    ARB Extension #196
+    OpenGL ES Extension #321
+
+Dependencies
+
+    This extension is written against the OpenGL 4.6 Specification
+    (Core Profile), dated July 30, 2017.
+
+    This extension requires OpenGL 4.3 or OpenGL ES 3.1.
+
+    This extension requires the KHR_shader_subgroup GLSL extension.
+
+    This extension interacts with ARB_gl_spirv and OpenGL 4.6.
+
+    This extension interacts with ARB_spirv_extensions and OpenGL 4.6.
+
+    This extension interacts with OpenGL ES 3.x.
+
+    This extension interacts with ARB_shader_draw_parameters and
+    SPV_KHR_shader_draw_parameters.
+
+    This extension interacts with SPV_KHR_storage_buffer_storage_class.
+
+    This extension requires SPIR-V 1.3 when SPIR-V is supported in OpenGL.
+
+Overview
+
+    This extension enables support for the KHR_shader_subgroup shading
+    language extension in OpenGL and OpenGL ES.
+
+    The extension adds API queries to be able to query
+
+      - the size of subgroups in this implementation (SUBGROUP_SIZE_KHR)
+      - which shader stages support subgroup operations
+        (SUBGROUP_SUPPORTED_STAGES_KHR)
+      - which subgroup features are supported (SUBGROUP_SUPPORTED_FEATURES_KHR)
+      - whether quad subgroup operations are supported in all
+        stages supporting subgroup operations (SUBGROUP_QUAD_ALL_STAGES_KHR)
+
+    In OpenGL implementations supporting SPIR-V, this extension enables the
+    minimal subset of SPIR-V 1.3 which is required to support the subgroup
+    features that are supported by the implementation.
+
+    In OpenGL ES implementations, this extension does NOT add support for
+    SPIR-V or for any of the built-in shading language functions (8.18)
+    that have genDType (double) prototypes.
+
+New Procedures and Functions
+
+    None
+
+New Tokens
+
+    Accepted as the <pname> argument for GetIntegerv and
+    GetInteger64v:
+
+        SUBGROUP_SIZE_KHR                           0x9532
+        SUBGROUP_SUPPORTED_STAGES_KHR               0x9533
+        SUBGROUP_SUPPORTED_FEATURES_KHR             0x9534
+
+    Accepted as the <pname> argument for GetBooleanv:
+
+        SUBGROUP_QUAD_ALL_STAGES_KHR                0x9535
+
+    Returned as a bitfield in the <data> argument when GetIntegerv
+    is queried with a <pname> of SUBGROUP_SUPPORTED_STAGES_KHR
+
+        (existing tokens)
+        VERTEX_SHADER_BIT
+        TESS_CONTROL_SHADER_BIT
+        TESS_EVALUATION_SHADER_BIT
+        GEOMETRY_SHADER_BIT
+        FRAGMENT_SHADER_BIT
+        COMPUTE_SHADER_BIT
+
+    Returned as bitfield in the <data> argument when GetIntegerv
+    is queried with a <pname> of SUBGROUP_SUPPORTED_FEATURES_KHR:
+
+        SUBGROUP_FEATURE_BASIC_BIT_KHR              0x00000001
+        SUBGROUP_FEATURE_VOTE_BIT_KHR               0x00000002
+        SUBGROUP_FEATURE_ARITHMETIC_BIT_KHR         0x00000004
+        SUBGROUP_FEATURE_BALLOT_BIT_KHR             0x00000008
+        SUBGROUP_FEATURE_SHUFFLE_BIT_KHR            0x00000010
+        SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT_KHR   0x00000020
+        SUBGROUP_FEATURE_CLUSTERED_BIT_KHR          0x00000040
+        SUBGROUP_FEATURE_QUAD_BIT_KHR               0x00000080
+
+
+Modifications to the OpenGL 4.6 Specification (Core Profile)
+
+Add a new Chapter SG, "Subgroups"
+
+    A subgroup is a set of invocations that can synchronize and share data
+    with each other efficiently. An invocation group is partitioned into
+    one or more subgroups.
+
+    Subgroup operations are divided into various categories as described
+    by SUBGROUP_SUPPORTED_FEATURES_KHR.
+
+    SG.1 Subgroup Operations
+
+    Subgroup operations are divided into a number of categories as
+    described in this section.
+
+    SG.1.1 Basic Subgroup Operations
+
+    The basic subgroup operations allow two classes of functionality within
+    shaders - elect and barrier. Invocations within a subgroup can choose a
+    single invocation to perform some task for the subgroup as a whole using
+    elect. Invocations within a subgroup can perform a subgroup barrier to
+    ensure the ordering of execution or memory accesses within a subgroup.
+    Barriers can be performed on buffer memory accesses, shared memory
+    accesses, and image memory accesses to ensure that any results written are
+    visible by other invocations within the subgroup. A _subgroupBarrier_ can
+    also be used to perform a full execution control barrier. A full execution
+    control barrier will ensure that each active invocation within the
+    subgroup reaches a point of execution before any are allowed to continue.
+
+    SG.1.2 Vote Subgroup Operations
+
+    The vote subgroup operations allow invocations within a subgroup to
+    compare values across a subgroup. The types of votes enabled are:
+
+    * Do all active subgroup invocations agree that an expression is true?
+    * Do any active subgroup invocations evaluate an expression to true?
+    * Do all active subgroup invocations have the same value of an expression?
+
+    Note:
+    These operations are useful in combination with control flow in that
+    they allow for developers to check whether conditions match across the
+    subgroup and choose potentially faster code-paths in these cases.
+
+    SG.1.3 Arithmetic Subgroup Operations
+
+    The arithmetic subgroup operations allow invocations to perform scan
+    and reduction operations across a subgroup. For reduction operations,
+    each invocation in a subgroup will obtain the same result of these
+    arithmetic operations applied across the subgroup. For scan operations,
+    each invocation in the subgroup will perform an inclusive or exclusive
+    scan, cumulatively applying the operation across the invocations in a
+    subgroup in an implementation-defined order. The operations supported
+    are add, mul, min, max, and, or, xor.
+
+    SG.1.4 Ballot Subgroup Operations
+
+    The ballot subgroup operations allow invocations to perform more
+    complex votes across the subgroup. The ballot functionality allows
+    all invocations within a subgroup to provide a boolean value and get
+    as a result what each invocation provided as their boolean value. The
+    broadcast functionality allows values to be broadcast from an
+    invocation to all other invocations within the subgroup, given that
+    the invocation to be broadcast from is known at shader compilation
+    time.
+
+    SG.1.5 Shuffle Subgroup Operations
+
+    The shuffle subgroup operations allow invocations to read values from
+    other invocations within a subgroup.
+
+    SG.1.6 Shuffle Relative Subgroup Operations
+
+    The shuffle relative subgroup operations allow invocations to read
+    values from other invocations within the subgroup relative to the
+    current invocation in the group. The relative operations supported
+    allow data to be shifted up and down through the invocations within
+    a subgroup.
+
+    SG.1.7 Clustered Subgroup Operations
+
+    The clustered subgroup operations allow invocations to perform
+    arithmetic operations among partitions of a subgroup, such that the
+    operation is only performed within the subgroup invocations within a
+    partition. The partitions for clustered subgroup operations are
+    consecutive power-of-two size groups of invocations and the cluster size
+    must be known at compilation time. The operations supported are
+    add, mul, min, max, and, or, xor.
+
+    SG.1.8 Quad Subgroup Operations
+
+    The quad subgroup operations allow clusters of 4 invocations (a quad),
+    to share data efficiently with each other. For fragment shaders, if the
+    value of SUBGROUP_SIZE_KHR is at least 4, each quad corresponds to one
+    of the groups of four shader invocations used for derivatives. The order
+    in which the fragments appear within the quad is implementation-defined.
+
+    Note:
+    In OpenGL and OpenGL ES, the order of invocations within a quad may
+    depend on the rendering orientation and whether rendering to a framebuffer
+    object or to the default framebuffer (window).
+
+    This language supersedes the quad arrangement described in the GLSL
+    KHR_shader_subgroup document.
+
+    SG.2 Subgroup Queries
+
+    SG.2.1 Subgroup Size
+
+    The subgroup size is the maximum number of invocations in a subgroup.
+    This is an implementation-dependent value which can be obtained by
+    calling GetIntegerv with a <pname> of SUBGROUP_SIZE_KHR. This value
+    is also provided in the gl_SubgroupSize built-in shading language
+    variable.  The subgroup size must be at least 1, and must be a power
+    of 2. The maximum number of invocations an implementation can support
+    per subgroup is 128.
+
+    SG.2.2 Subgroup Supported Stages
+
+    Subgroup operations may not be supported in all shader stages. To
+    determine which shader stages support the subgroup operations, call
+    GetIntegerv with a <pname> of SUBGROUP_SUPPORTED_STAGES_KHR. On
+    return, <data> will contain the bitwise OR of the *_SHADER_BIT flags
+    indicating which of the vertex, tessellation control, tessellation
+    evaluation, geometry, fragment, and compute shader stages support
+    subgroup operations.  All implementations must support at least
+    COMPUTE_SHADER_BIT.
+
+    SG.2.3 Subgroup Supported Operations
+
+    To determine which subgroup operations are supported by an
+    implementation, call GetIntegerv with a <pname> of
+    SUBGROUP_SUPPORTED_FEATURES_KHR. On return, <data> will
+    contain the bitwise OR of the SUBGROUP_FEATURE_*_BIT_KHR
+    flags indicating which subgroup operations are supported by the
+    implementation. Possible values include:
+
+    * SUBGROUP_FEATURE_BASIC_BIT_KHR indicates the GL supports shaders
+      with the KHR_shader_subgroup_basic extension enabled. See SG.1.1.
+
+    * SUBGROUP_FEATURE_VOTE_BIT_KHR indicates the GL supports shaders
+      with the KHR_shader_subgroup_vote extension enabled. See SG.1.2.
+
+    * SUBGROUP_FEATURE_ARITHMETIC_BIT_KHR indicates the GL supports
+      shaders with the KHR_shader_subgroup_arithmetic extension enabled.
+      See SG.1.3.
+
+    * SUBGROUP_FEATURE_BALLOT_BIT_KHR indicates the GL supports
+      shaders with the KHR_shader_subgroup_ballot extension enabled.
+      See SG.1.4.
+
+    * SUBGROUP_FEATURE_SHUFFLE_BIT_KHR indicates the GL supports
+      shaders with the KHR_shader_subgroup_shuffle extension enabled.
+      See SG.1.5.
+
+    * SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT_KHR indicates the GL
+      supports shaders with the KHR_shader_subgroup_shuffle_relative
+      extension enabled. See SG.1.6.
+
+    * SUBGROUP_FEATURE_CLUSTERED_BIT_KHR indicates the GL supports
+      shaders with the KHR_shader_subgroup_clustered extension enabled.
+      See SG.1.7.
+
+    * SUBGROUP_FEATURE_QUAD_BIT_KHR indicates the GL supports shaders
+      with the GL_KHR_shader_subgroup_quad extension enabled. See SG.1.8.
+
+    All implementations must support SUBGROUP_FEATURE_BASIC_BIT_KHR.
+
+    SG.2.4 Subgroup Quads Support
+
+    To determine whether subgroup quad operations (See SG.1.8) are
+    available in all stages, call GetBooleanv with a <pname> of
+    SUBGROUP_QUAD_ALL_STAGES_KHR. On return, <data> will be TRUE
+    if subgroup quad operations are supported in all shader stages
+    which support subgroup operations. FALSE is returned if subgroup quad
+    operations are not supported, or if they are restricted to fragment
+    and compute stages.
+
+Modifications to Appendix C of the OpenGL 4.6 (Core Profile) Specification
+(The OpenGL SPIR-V Execution Environment)
+
+    Modifications to section C.1 (Required Versions and Formats) [p661]
+
+      Replace the first sentence with the following:
+
+        "Implementations must support the 1.0 and 1.3 versions of SPIR-V
+        and the 1.0 version of the SPIR-V Extended Instructions
+        for the OpenGL Shading Language (see section 1.3.4)."
+
+    Modifications to section C.2 (Valid SPIR-V Built-In Variable
+    Decorations) [661]
+
+      Add the following rows to Table C.1 (Built-in Variable Decorations)
+
+        NumSubgroups            (if SUBGROUP_FEATURE_BASIC_BIT_KHR is supported)
+        SubgroupId              (if SUBGROUP_FEATURE_BASIC_BIT_KHR is supported)
+        SubgroupSize            (if SUBGROUP_FEATURE_BASIC_BIT_KHR is supported)
+        SubgroupLocalInvocationId (if SUBGROUP_FEATURE_BASIC_BIT_KHR is supported)
+        SubgroupEqMask          (if SUBGROUP_FEATURE_BALLOT_BIT_KHR is supported)
+        SubgroupGeMask          (if SUBGROUP_FEATURE_BALLOT_BIT_KHR is supported)
+        SubgroupGtMask          (if SUBGROUP_FEATURE_BALLOT_BIT_KHR is supported)
+        SubgroupLeMask          (if SUBGROUP_FEATURE_BALLOT_BIT_KHR is supported)
+        SubgroupLtMask          (if SUBGROUP_FEATURE_BALLOT_BIT_KHR is supported)
+
+    Additions to section C.3 (Valid SPIR-V Capabilities):
+
+    Add the following rows to Table C.2 (Valid SPIR-V Capabilities):
+
+        GroupNonUniform                (if SUBGROUP_FEATURE_BASIC_BIT_KHR is supported)
+        GroupNonUniformVote            (if SUBGROUP_FEATURE_VOTE_BIT_KHR is supported)
+        GroupNonUniformArithmetic      (if SUBGROUP_FEATURE_ARITHMETIC_BIT_KHR is supported)
+        GroupNonUniformBallot          (if SUBGROUP_FEATURE_BALLOT_BIT_KHR is supported)
+        GroupNonUniformShuffle         (if SUBGROUP_FEATURE_SHUFFLE_BIT_KHR is supported)
+        GroupNonUniformShuffleRelative (if SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT_KHR is supported)
+        GroupNonUniformClustered       (if SUBGROUP_FEATURE_CLUSTERED_BIT_KHR is supported)
+        GroupNonUniformQuad            (if SUBGROUP_FEATURE_QUAD_BIT_KHR is supported)
+
+    Additions to section C.4 (Validation Rules):
+
+      Make the following changes to the validation rules:
+
+        Add *Subgroup* to the list of acceptable scopes for memory.
+
+      Add:
+
+        *Scope* for *Non Uniform Group Operations* must be limited to:
+          - *Subgroup*
+
+        * If OpControlBarrier is used in fragment, vertex, tessellation
+           evaluation, or geometry stages, the execution Scope must be
+           *Subgroup*.
+
+        * "`Result Type`" for *Non Uniform Group Operations* must be
+          limited to 32-bit float, 32-bit integer, boolean, or vectors
+          of these types. If the Float64 capability is enabled, double
+          and vectors of double types are also permitted.
+
+        * If OpGroupNonUniformBallotBitCount is used, the group operation
+          must be one of:
+          - *Reduce*
+          - *InclusiveScan*
+          - *ExclusiveScan*
+
+      Add the following restrictions (disallowing SPIR-V 1.1, 1.2, and
+      1.3 features not related to subgroups);
+
+        * The *LocalSizeId* Execution Mode must not be used.
+
+        [[If SPV_KHR_storage_buffer_storage_class is not supported]]
+        * The *StorageBuffer* Storage Class must not be used.
+
+        * The *DependencyInfinite* and *DependencyLength* Loop Control
+          masks must not be used.
+
+        [[If SPV_KHR_shader_draw_parameters or OpenGL 4.6 is not supported]]
+        * The *DrawParameters* Capability must not be used.
+
+        * The *StorageBuffer16BitAccess*, *UniformAndStorageBuffer16BitAccess*,
+          *StoragePushConstant16*, *StorageInputOutput16* Capabilities must
+          not be used.
+
+        * The *DeviceGroup*, *MultiView*, *VariablePointersStorageBuffer*, and
+          *VariablePointers* Capabilities must not be used.
+
+        * The *OpModuleProcessed*, *OpDecorateId*, and *OpExecutionModeId*
+          Instructions must not be used.
+
+Modifications to the OpenGL Shading Language Specification, Version 4.60
+
+    See the separate KHR_shader_subgroup GLSL document.
+    https://github.com/KhronosGroup/GLSL/blob/master/extensions/khr/GL_KHR_shader_subgroup.txt
+
+Dependencies on ARB_gl_spirv and OpenGL 4.6
+
+    If ARB_gl_spirv or OpenGL 4.6 are not supported, ignore all
+    references to SPIR-V functionality.
+
+Dependencies on ARB_spirv_extensions and OpenGL 4.6
+
+    If ARB_spirv_extensions or OpenGL 4.6 are not supported, ignore
+    references to the ability to advertise additional SPIR-V extensions.
+
+Dependencies on OpenGL ES 3.x
+
+    If implemented in OpenGL ES, ignore all references to SPIR-V and to
+    GLSL built-in functions which utilize the genDType (double) types.
+
+Dependencies on ARB_shader_draw_parameters and SPV_KHR_shader_draw_parameters
+
+    If neither OpenGL 4.6, nor ARB_shader_draw_parameters and
+    SPV_KHR_shader_draw_parameters are supported, the *DrawParameters*
+    Capability is not supported.
+
+Dependencies on SPV_KHR_storage_buffer_storage_class
+
+    If SPV_KHR_storage_buffer_storage_class is not supported, the
+    *StorageBuffer* Storage Class must not be used.
+
+Additions to the AGL/GLX/WGL Specifications
+
+    None
+
+Errors
+
+    None
+
+New State
+
+    None
+
+New Implementation Dependent State
+
+    Additions to table 2.53 - Implementation Dependent Values
+
+                                                    Minimum
+    Get Value                Type  Get Command      Value   Description                   Sec.
+    ---------                ----- ---------------  ------- ------------------------      ------
+    SUBGROUP_SIZE_KHR        Z+    GetIntegerv      1       No. of invocations in         SG.2.1
+                                                            each subgroup
+
+    SUBGROUP_SUPPORTED_      E     GetIntegerv      Sec     Bitfield of stages that       SG.2.2
+      STAGES_KHR                                    SG.2.2  subgroups are supported in
+
+    SUBGROUP_SUPPORTED_      E     GetIntegerv      Sec     Bitfield of subgroup          SG.2.3
+      FEATURES_KHR                                  SG.2.3  operations supported
+
+    SUBGROUP_QUAD_           B     GetBooleanv      -       Quad subgroups supported      SG.2.4
+      ALL_STAGES_KHR                                        in all stages
+
+Issues
+
+    1. What should we name this extension?
+
+       DISCUSSION. We will use the same name as the GLSL extension
+       in order to minimize confusion. This has been done for other
+       extensions and people seem to have figured it out. Other
+       options considered: KHR_subgroups, KHR_shader_subgroup_operations,
+       KHR_subgroup_operations.
+
+       RESOLVED: use KHR_shader_subgroup to match the GLSL extension.
+
+    2. What should happen if subgroup operations are attempted on
+       unsupported stages?
+
+       DISCUSSION: There are basically two options
+         A. compile or link-time error?
+         B. draw time invalid_op error?
+       Seems like Option (A) would be more user friendly, and there doesn't
+       seem to be much point in requiring an implementation to
+       support compiling the functionality in stages they won't work in.
+       Typically this should be detectable by an implementation at compile
+       time since this will just require them to reject shaders with
+       #extension GL_KHR_shader_subgroup* in shader stages that they don't
+       support. However, for SPIR-V implementations, this may happen at
+       lowering time, so it may happen at either compile or link-time.
+
+       RESOLVED: Compile or link-time error.
+
+    3. How should we enable SPIR-V support for this extension?
+
+       DISCUSSION: Options could include:
+         A. add support for SPIR-V 1.1, 1.2, and 1.3.
+         B. add support for only the subgroups capabilities from SPIR-V 1.3.
+
+       Doing option (A) seems like a weird way of submarining support
+       for new versions of SPIR-V into OpenGL, and it seems like there
+       should be a separate extension for that.
+       If option (B) is selected, we need to be sure to disallow other
+       new capabilities that are added in SPIR-V 1.1, 1.2, and 1.3
+
+       RESOLVED: (B) only add support for subgroup capabilities from SPIR-V
+       1.3. If a future GL core version incorporates this extension it should
+       add support for all of SPIR-V 1.3.
+
+    4. What functionality of SPIR-V 1.1, 1.2, and 1.3 needs to be disallowed?
+
+       RESOLVED:
+       Additions that aren't gated by specific capabilities and are disallowed
+       are the following:
+
+         LocalSizeId (1.2)
+         DependencyInfinite (1.1)
+         DependencyLength (1.1)
+         OpModuleProcessed (1.1)
+         OpDecorateId (1.2)
+         OpExecutionModeId (1.2)
+
+       Additions that are gated by graphics-compatible capabilities not
+       being enabled by this extension (but could be enabled by other
+       extensions):
+
+       Capabilities                                 Enabling extension
+
+         StorageBuffer (1.3)                        SPV_KHR_storage_buffer_storage_class
+
+         DrawParameters (1.3)                       SPV_KHR_shader_draw_parameters
+           - BaseVertex
+           - BaseInstance
+           - DrawIndex
+
+         DeviceGroup (1.3)                          SPV_KHR_device_group
+           - DeviceIndex
+
+         MultiView (1.3)                            SPV_KHR_multiview
+           - ViewIndex
+
+         StorageBuffer16BitAccess (1.3)             SPV_KHR_16bit_storage
+         StorageUniformBufferBlock16 (1.3)          SPV_KHR_16bit_storage
+         UniformAndStorageBuffer16BitAccess (1.3)   SPV_KHR_16bit_storage
+         StorageUniform16 (1.3)                     SPV_KHR_16bit_storage
+         StoragePushConstant16 (1.3)                SPV_KHR_16bit_storage
+         StorageInputOutput16 (1.3)                 SPV_KHR_16bit_storage
+
+         VariablePointersStorageBuffer (1.3)        SPV_KHR_variable_pointers
+         VariablePointers (1.3)                     SPV_KHR_variable_pointers
+
+    5. Given Issues (3) and (4) what exactly are the additional SPIR-V
+       requirements are being added by this extension?
+
+       RESOLVED: We add support for the following from SPIR-V 1.3:
+
+       Capabilities (3.31)                  Enabling API Feature
+
+         GroupNonUniform                    SUBGROUP_FEATURE_BASIC_BIT_KHR
+         GroupNonUniformVote                SUBGROUP_FEATURE_VOTE_BIT_KHR
+         GroupNonUniformArithmetic          SUBGROUP_FEATURE_ARITHMETIC_BIT_KHR
+         GroupNonUniformBallot              SUBGROUP_FEATURE_BALLOT_BIT_KHR
+         GroupNonUniformShuffle             SUBGROUP_FEATURE_SHUFFLE_BIT_KHR
+         GroupNonUniformShuffleRelative     SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT_KHR
+         GroupNonUniformClustered           SUBGROUP_FEATURE_CLUSTERED_BIT_KHR
+         GroupNonUniformQuad                SUBGROUP_FEATURE_QUAD_BIT_KHR
+
+       Builtins (3.21)              Enabling Capability
+
+         SubgroupSize               GroupNonUniform
+         NumSubgroups               GroupNonUniform
+         SubgroupId                 GroupNonUniform
+         SubgroupLocalInvocationId  GroupNonUniform
+         SubgroupEqMask             GroupNonUniformBallot
+         SubgroupGeMask             GroupNonUniformBallot
+         SubgroupGtMask             GroupNonUniformBallot
+         SubgroupLeMask             GroupNonUniformBallot
+         SubgroupLtMask             GroupNonUniformBallot
+
+       Group Operations         Enabling Capability
+       (3.28)
+
+         Reduce                 GroupNonUniformArithmetic, GroupNonUniformBallot
+         InclusiveScan          GroupNonUniformArithmetic, GroupNonUniformBallot
+         ExclusiveScan          GroupNonUniformArithmetic, GroupNonUniformBallot
+         ClusteredReduce        GroupNonUniformClustered
+
+       Non-Uniform Instructions             Enabling Capability
+       (3.32.24)
+
+         OpGroupNonUniformElect             GroupNonUniform
+         OpGroupNonUniformAll               GroupNonUniformVote
+         OpGroupNonUniformAny               GroupNonUniformVote
+         OpGroupNonUniformAllEqual          GroupNonUniformVote
+         OpGroupNonUniformBroadcast         GroupNonUniformBallot
+         OpGroupNonUniformBroadcastFirst    GroupNonUniformBallot
+         OpGroupNonUniformBallot            GroupNonUniformBallot
+         OpGroupNonUniformInverseBallot     GroupNonUniformBallot
+         OpGroupNonUniformBallotBitExtract  GroupNonUniformBallot
+         OpGroupNonUniformBallotBitCount    GroupNonUniformBallot
+         OpGroupNonUniformBallotFindLSB     GroupNonUniformBallot
+         OpGroupNonUniformBallotFindMSB     GroupNonUniformBallot
+         OpGroupNonUniformShuffle           GroupNonUniformShuffle
+         OpGroupNonUniformShuffleXor        GroupNonUniformShuffle
+         OpGroupNonUniformShuffleUp         GroupNonUniformShuffle
+         OpGroupNonUniformShuffleDown       GroupNonUniformShuffle
+         OpGroupNonUniformIAdd              GroupNonUniformArithmetic, GroupNonUniformClustered
+         OpGroupNonUniformFAdd              GroupNonUniformArithmetic, GroupNonUniformClustered
+         OpGroupNonUniformIMul              GroupNonUniformArithmetic, GroupNonUniformClustered
+         OpGroupNonUniformFMul              GroupNonUniformArithmetic, GroupNonUniformClustered
+         OpGroupNonUniformSMin              GroupNonUniformArithmetic, GroupNonUniformClustered
+         OpGroupNonUniformUMin              GroupNonUniformArithmetic, GroupNonUniformClustered
+         OpGroupNonUniformFMin              GroupNonUniformArithmetic, GroupNonUniformClustered
+         OpGroupNonUniformSMax              GroupNonUniformArithmetic, GroupNonUniformClustered
+         OpGroupNonUniformUMax              GroupNonUniformArithmetic, GroupNonUniformClustered
+         OpGroupNonUniformFMax              GroupNonUniformArithmetic, GroupNonUniformClustered
+         OpGroupNonUniformBitwiseAnd        GroupNonUniformArithmetic, GroupNonUniformClustered
+         OpGroupNonUniformBitwiseOr         GroupNonUniformArithmetic, GroupNonUniformClustered
+         OpGroupNonUniformBitwiseXor        GroupNonUniformArithmetic, GroupNonUniformClustered
+         OpGroupNonUniformLogicalAnd        GroupNonUniformArithmetic, GroupNonUniformClustered
+         OpGroupNonUniformLogicalOr         GroupNonUniformArithmetic, GroupNonUniformClustered
+         OpGroupNonUniformLogicalXor        GroupNonUniformArithmetic, GroupNonUniformClustered
+         OpGroupNonUniformQuadBroadcast     GroupNonUniformQuad
+         OpGroupNonUniformQuadSwap          GroupNonUniformQuad
+
+       *Subgroup* as an acceptable memory scope.
+
+       OpControlBarrier in fragment, vertex, tessellation evaluation, tessellation
+       control, and geometry stages with the *Subgroup* execution Scope.
+
+
+Revision History
+
+    Rev.  Date          Author     Changes
+    ----  -----------   --------   -------------------------------------------
+     8    2019-07-26    dgkoch     Update status and assign extension numbers
+     7    2019-05-22    dgkoch     Resync language with Vulkan spec. Address feedback
+                                   from Graeme. Relax quad ordering definition.
+     6    2019-03-28    dgkoch     rename to KHR_shader_subgroup, update some issues
+     5    2018-05-30    dgkoch     Address feedback from Graeme and Jesse.
+     4    2018-05-28    dgkoch     change ALLSTAGES -> ALL_STAGES, fix typos
+     3    2018-05-23    dgkoch     Add overview and interactions, add SPIR-V 1.3
+                                   restrictions, Issues 4 and 5.
+     2    2018-04-26    dgkoch     Various updates to match latest vulkan spec
+                                   Assign tokens. Add SPIR-V support.
+     1    2018-01-19    dgkoch     Initial revision.
+
diff --git a/extensions/NV/NV_shader_subgroup_partitioned.txt b/extensions/NV/NV_shader_subgroup_partitioned.txt
new file mode 100644
index 0000000..5fcbee7
--- /dev/null
+++ b/extensions/NV/NV_shader_subgroup_partitioned.txt
@@ -0,0 +1,163 @@
+Name
+
+    NV_shader_subgroup_partitioned
+
+Name Strings
+
+    GL_NV_shader_subgroup_partitioned
+
+Contact
+
+    Daniel Koch, NVIDIA Corportation
+
+Contributors
+
+    Jeff Bolz, NVIDIA
+    Pyarelal Knowles, NVIDIA
+
+Status
+
+    Complete
+
+Version
+
+    Last Modified:  2019-07-26
+    Revision:       1
+
+Number
+
+    OpenGL Extension #544
+    OpenGL ES Extension #322
+
+Dependencies
+
+    This extension is written against the OpenGL 4.6 Specification
+    (Core Profile), dated July 30, 2017.
+
+    This extension requires OpenGL 4.3 or OpenGL ES 3.1.
+
+    This extension requires the KHR_shader_subgroup API and GLSL extensions.
+
+    This extension interacts with ARB_gl_spirv and OpenGL 4.6.
+
+    This extension interacts with ARB_spirv_extensions and OpenGL 4.6.
+
+    This extension interacts with OpenGL ES 3.x.
+
+    This extension requires SPV_NV_shader_subgroup_partitioned when SPIR-V is
+    supported in OpenGL.
+
+Overview
+
+    This extension enables support for the NV_shader_subgroup_partitioned
+    shading language extension in OpenGL and OpenGL ES.
+
+    This extension adds a new SUBGROUP_FEATURE_PARTITIONED_BIT_NV feature bit
+    that is returned by queryies for SUBGROUP_SUPPORTED_FEATURES_KHR.
+
+    In OpenGL implementations supporting SPIR-V, this extension enables
+    support for the SPV_NV_shader_subgroup_partitioned extension.
+
+    In OpenGL ES implementations, this extension does NOT add support for
+    SPIR-V or for any of the built-in shading language functions (8.18)
+    that have genDType (double) prototypes.
+
+New Procedures and Functions
+
+    None
+
+New Tokens
+
+    Returned as bitfield in the <data> argument when GetIntegerv
+    is queried with a <pname> of SUBGROUP_SUPPORTED_FEATURES_KHR:
+
+        SUBGROUP_FEATURE_PARTITIONED_BIT_NV         0x00000100
+
+
+Modifications to the OpenGL 4.6 Specification (Core Profile)
+
+Modifications to Chapter SG, "Subgroups" (as added by KHR_shader_subgroups)
+
+    (add a new subsection to SG.1, "Subgroup Operations")
+
+    SG.1.9 Partitioned Subgroup Operations
+
+    The partitioned subgroup operations allow a subgroup to partition
+    its invocations into disjoint subsets and to perform scan and reduction
+    operations among invocations belonging to the same subset. The partitions
+    for partitioned subgroup operations are specified by a ballot operand and
+    can be computed at runtime. The operations supported are add, mul, min,
+    max, and, or, xor.
+
+    (Add a new bullet point to the list in SG.2.3, "Subgroup Supported
+     Operations")
+
+    * SUBGROUP_FEATURE_PARTITIONED_BIT_NV indicates the GL supports shaders
+      with the NV_shader_subgroup_partitioned extension enabled. See SG.1.9.
+
+Modifications to Appendix C of the OpenGL 4.6 (Core Profile) Specification
+(The OpenGL SPIR-V Execution Environment)
+
+    Additions to section C.3 (Valid SPIR-V Capabilities):
+
+    Add the following rows to Table C.2 (Valid SPIR-V Capabilities):
+
+        GroupNonUniformPartitionedNV   (if SUBGROUP_FEATURE_PARTITIONED_BIT_NV is supported)
+
+Modifications to the OpenGL Shading Language Specification, Version 4.60
+
+    See the separate KHR_shader_subgroup GLSL document.
+    https://github.com/KhronosGroup/GLSL/blob/master/extensions/nv/GL_NV_shader_subgroup_partitioned.txt
+
+Dependencies on ARB_gl_spirv and OpenGL 4.6
+
+    If ARB_gl_spirv or OpenGL 4.6 are not supported, ignore all
+    references to SPIR-V functionality.
+
+Dependencies on ARB_spirv_extensions and OpenGL 4.6
+
+    If ARB_spirv_extensions or OpenGL 4.6 are not supported, ignore
+    references to the ability to advertise additional SPIR-V extensions.
+
+Dependencies on OpenGL ES 3.x
+
+    If implemented in OpenGL ES, ignore all references to SPIR-V and to
+    GLSL built-in functions which utilize the genDType (double) types.
+
+Additions to the AGL/GLX/WGL Specifications
+
+    None
+
+Errors
+
+    None
+
+New State
+
+    None
+
+New Implementation Dependent State
+
+    None
+
+Issues
+
+    1. What should we name this extension?
+
+       DISCUSSION. We will use the same name as the GLSL extension.
+
+       RESOLVED: Use NV_shader_subgroup_partitioned.
+
+    2. Should SPV_NV_shader_subgroup_partitioned be advertised in the
+       list of extensions enumerated by the SPIR_V_EXTENSIONS query?
+
+       RESOLVED: Yes. There is no spec language for this because it
+       is just expected when this extension is supported (on an implementation
+       that supports SPIR-V).
+
+Revision History
+
+    Rev.  Date          Author     Changes
+    ----  -----------   --------   -------------------------------------------
+     1    2019-07-27    dgkoch     Internal revisions.
+
diff --git a/extensions/arbext.php b/extensions/arbext.php
index 3fe5a59..1a91efb 100644
--- a/extensions/arbext.php
+++ b/extensions/arbext.php
@@ -419,4 +419,6 @@
 </li>
 <li value=195><a href="extensions/ARB/ARB_texture_filter_anisotropic.txt">GL_ARB_texture_filter_anisotropic</a>
 </li>
+<li value=196><a href="extensions/KHR/KHR_shader_subgroup.txt">GL_KHR_shader_subgroup</a>
+</li>
 </ol>
diff --git a/extensions/esext.php b/extensions/esext.php
index 07650c5..7230491 100644
--- a/extensions/esext.php
+++ b/extensions/esext.php
@@ -665,4 +665,8 @@
 </li>
 <li value=320><a href="extensions/EXT/EXT_texture_shadow_lod.txt">GL_EXT_texture_shadow_lod</a>
 </li>
+<li value=321><a href="extensions/KHR/KHR_shader_subgroup.txt">GL_KHR_shader_subgroup</a>
+</li>
+<li value=322><a href="extensions/NV/NV_shader_subgroup_partitioned.txt">GL_NV_shader_subgroup_partitioned</a>
+</li>
 </ol>
diff --git a/extensions/glext.php b/extensions/glext.php
index dbdfc6f..c0204bd 100644
--- a/extensions/glext.php
+++ b/extensions/glext.php
@@ -1025,4 +1025,6 @@
 </li>
 <li value=543><a href="extensions/NVX/NVX_gpu_multicast2.txt">GL_NVX_gpu_multicast2</a>
 </li>
+<li value=544><a href="extensions/NV/NV_shader_subgroup_partitioned.txt">GL_NV_shader_subgroup_partitioned</a>
+</li>
 </ol>
diff --git a/extensions/registry.py b/extensions/registry.py
index b603b7c..1c176f4 100644
--- a/extensions/registry.py
+++ b/extensions/registry.py
@@ -2935,6 +2935,12 @@
         'flags' : { 'public' },
         'url' : 'extensions/KHR/KHR_robustness.txt',
     },
+    'GL_KHR_shader_subgroup' : {
+        'arbnumber' : 196,
+        'esnumber' : 321,
+        'flags' : { 'public' },
+        'url' : 'extensions/KHR/KHR_shader_subgroup.txt',
+    },
     'GL_KHR_texture_compression_astc_hdr' : {
         'arbnumber' : 118,
         'esnumber' : 117,
@@ -3744,6 +3750,12 @@
         'flags' : { 'public' },
         'url' : 'extensions/NV/NV_shader_thread_shuffle.txt',
     },
+    'GL_NV_shader_subgroup_partitioned' : {
+        'number' : 544,
+        'esnumber' : 322,
+        'flags' : { 'public' },
+        'url' : 'extensions/NV/NV_shader_subgroup_partitioned.txt',
+    },
     'GL_NV_shading_rate_image' : {
         'number' : 531,
         'esnumber' : 315,
diff --git a/xml/gl.xml b/xml/gl.xml
index 18d8d2e..0c20877 100644
--- a/xml/gl.xml
+++ b/xml/gl.xml
@@ -2990,6 +2990,18 @@
             <enum name="GL_ALL_SHADER_BITS_EXT"/>
         </group>
 
+        <group name="SubgroupSupportedFeatures">
+            <enum name="GL_SUBGROUP_FEATURE_BASIC_BIT_KHR"/>
+            <enum name="GL_SUBGROUP_FEATURE_VOTE_BIT_KHR"/>
+            <enum name="GL_SUBGROUP_FEATURE_ARITHMETIC_BIT_KHR"/>
+            <enum name="GL_SUBGROUP_FEATURE_BALLOT_BIT_KHR"/>
+            <enum name="GL_SUBGROUP_FEATURE_SHUFFLE_BIT_KHR"/>
+            <enum name="GL_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT_KHR"/>
+            <enum name="GL_SUBGROUP_FEATURE_CLUSTERED_BIT_KHR"/>
+            <enum name="GL_SUBGROUP_FEATURE_QUAD_BIT_KHR"/>
+            <enum name="GL_SUBGROUP_FEATURE_PARTITIONED_BIT_NV"/>
+        </group>
+
         <group name="VertexPointerType">
             <enum name="GL_DOUBLE"/>
             <enum name="GL_FLOAT"/>
@@ -4416,6 +4428,18 @@
         <enum value="0xFFFFFFFF" name="GL_ALL_SHADER_BITS_EXT"/>
     </enums>
 
+    <enums namespace="GL" group="SubgroupSupportedFeatures" type="bitmask">
+        <enum value="0x00000001" name="GL_SUBGROUP_FEATURE_BASIC_BIT_KHR"/>
+        <enum value="0x00000002" name="GL_SUBGROUP_FEATURE_VOTE_BIT_KHR"/>
+        <enum value="0x00000004" name="GL_SUBGROUP_FEATURE_ARITHMETIC_BIT_KHR"/>
+        <enum value="0x00000008" name="GL_SUBGROUP_FEATURE_BALLOT_BIT_KHR"/>
+        <enum value="0x00000010" name="GL_SUBGROUP_FEATURE_SHUFFLE_BIT_KHR"/>
+        <enum value="0x00000020" name="GL_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT_KHR"/>
+        <enum value="0x00000040" name="GL_SUBGROUP_FEATURE_CLUSTERED_BIT_KHR"/>
+        <enum value="0x00000080" name="GL_SUBGROUP_FEATURE_QUAD_BIT_KHR"/>
+        <enum value="0x00000100" name="GL_SUBGROUP_FEATURE_PARTITIONED_BIT_NV"/>
+    </enums>
+
     <!-- Bitmasks defined by vendor extensions -->
 
     <enums namespace="GL" group="TextureStorageMaskAMD" type="bitmask">
@@ -10893,7 +10917,10 @@
     <enums namespace="GL" start="0x9530" end="0x962F" vendor="NV" comment="Khronos bug 12977">
         <enum value="0x9530" name="GL_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_EXT"/>
         <enum value="0x9531" name="GL_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_EXT"/>
-            <unused start="0x9532" end="0x9535" vendor="NV"/>
+        <enum value="0x9532" name="GL_SUBGROUP_SIZE_KHR"/>
+        <enum value="0x9533" name="GL_SUBGROUP_SUPPORTED_STAGES_KHR"/>
+        <enum value="0x9534" name="GL_SUBGROUP_SUPPORTED_FEATURES_KHR"/>
+        <enum value="0x9535" name="GL_SUBGROUP_QUAD_ALL_STAGES_KHR"/>
         <enum value="0x9536" name="GL_MAX_MESH_TOTAL_MEMORY_SIZE_NV"/>
         <enum value="0x9537" name="GL_MAX_TASK_TOTAL_MEMORY_SIZE_NV"/>
         <enum value="0x9538" name="GL_MAX_MESH_OUTPUT_VERTICES_NV"/>
@@ -46975,6 +47002,22 @@
                 <command name="glGetnUniformuivKHR"/>
             </require>
         </extension>
+        <extension name="GL_KHR_shader_subgroup" supported="gl|glcore|gles2">
+            <require>
+                <enum name="GL_SUBGROUP_SIZE_KHR"/>
+                <enum name="GL_SUBGROUP_SUPPORTED_STAGES_KHR"/>
+                <enum name="GL_SUBGROUP_SUPPORTED_FEATURES_KHR"/>
+                <enum name="GL_SUBGROUP_QUAD_ALL_STAGES_KHR"/>
+                <enum name="GL_SUBGROUP_FEATURE_BASIC_BIT_KHR"/>
+                <enum name="GL_SUBGROUP_FEATURE_VOTE_BIT_KHR"/>
+                <enum name="GL_SUBGROUP_FEATURE_ARITHMETIC_BIT_KHR"/>
+                <enum name="GL_SUBGROUP_FEATURE_BALLOT_BIT_KHR"/>
+                <enum name="GL_SUBGROUP_FEATURE_SHUFFLE_BIT_KHR"/>
+                <enum name="GL_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT_KHR"/>
+                <enum name="GL_SUBGROUP_FEATURE_CLUSTERED_BIT_KHR"/>
+                <enum name="GL_SUBGROUP_FEATURE_QUAD_BIT_KHR"/>
+            </require>
+        </extension>
         <extension name="GL_KHR_texture_compression_astc_hdr" supported="gl|glcore|gles2">
             <require>
                 <enum name="GL_COMPRESSED_RGBA_ASTC_4x4_KHR"/>
@@ -48594,6 +48637,11 @@
         </extension>
         <extension name="GL_NV_shader_noperspective_interpolation" supported="gles2"/>
         <extension name="GL_NV_shader_storage_buffer_object" supported="gl"/>
+        <extension name="GL_NV_shader_subgroup_partitioned" supported="gl|glcore|gles2">
+            <require>
+                <enum name="GL_SUBGROUP_FEATURE_PARTITIONED_BIT_NV"/>
+            </require>
+        </extension>
         <extension name="GL_NV_shader_texture_footprint" supported="gl|glcore|gles2"/>
         <extension name="GL_NV_shader_thread_group" supported="gl|glcore">
             <require>