15bd8deadSopenharmony_ciName
25bd8deadSopenharmony_ci
35bd8deadSopenharmony_ci    NV_shader_subgroup_partitioned
45bd8deadSopenharmony_ci
55bd8deadSopenharmony_ciName Strings
65bd8deadSopenharmony_ci
75bd8deadSopenharmony_ci    GL_NV_shader_subgroup_partitioned
85bd8deadSopenharmony_ci
95bd8deadSopenharmony_ciContact
105bd8deadSopenharmony_ci
115bd8deadSopenharmony_ci    Daniel Koch, NVIDIA Corportation
125bd8deadSopenharmony_ci
135bd8deadSopenharmony_ciContributors
145bd8deadSopenharmony_ci
155bd8deadSopenharmony_ci    Jeff Bolz, NVIDIA
165bd8deadSopenharmony_ci    Pyarelal Knowles, NVIDIA
175bd8deadSopenharmony_ci
185bd8deadSopenharmony_ciStatus
195bd8deadSopenharmony_ci
205bd8deadSopenharmony_ci    Complete
215bd8deadSopenharmony_ci
225bd8deadSopenharmony_ciVersion
235bd8deadSopenharmony_ci
245bd8deadSopenharmony_ci    Last Modified:  2019-07-26
255bd8deadSopenharmony_ci    Revision:       1
265bd8deadSopenharmony_ci
275bd8deadSopenharmony_ciNumber
285bd8deadSopenharmony_ci
295bd8deadSopenharmony_ci    OpenGL Extension #544
305bd8deadSopenharmony_ci    OpenGL ES Extension #322
315bd8deadSopenharmony_ci
325bd8deadSopenharmony_ciDependencies
335bd8deadSopenharmony_ci
345bd8deadSopenharmony_ci    This extension is written against the OpenGL 4.6 Specification
355bd8deadSopenharmony_ci    (Core Profile), dated July 30, 2017.
365bd8deadSopenharmony_ci
375bd8deadSopenharmony_ci    This extension requires OpenGL 4.3 or OpenGL ES 3.1.
385bd8deadSopenharmony_ci
395bd8deadSopenharmony_ci    This extension requires the KHR_shader_subgroup API and GLSL extensions.
405bd8deadSopenharmony_ci
415bd8deadSopenharmony_ci    This extension interacts with ARB_gl_spirv and OpenGL 4.6.
425bd8deadSopenharmony_ci
435bd8deadSopenharmony_ci    This extension interacts with ARB_spirv_extensions and OpenGL 4.6.
445bd8deadSopenharmony_ci
455bd8deadSopenharmony_ci    This extension interacts with OpenGL ES 3.x.
465bd8deadSopenharmony_ci
475bd8deadSopenharmony_ci    This extension requires SPV_NV_shader_subgroup_partitioned when SPIR-V is
485bd8deadSopenharmony_ci    supported in OpenGL.
495bd8deadSopenharmony_ci
505bd8deadSopenharmony_ciOverview
515bd8deadSopenharmony_ci
525bd8deadSopenharmony_ci    This extension enables support for the NV_shader_subgroup_partitioned
535bd8deadSopenharmony_ci    shading language extension in OpenGL and OpenGL ES.
545bd8deadSopenharmony_ci
555bd8deadSopenharmony_ci    This extension adds a new SUBGROUP_FEATURE_PARTITIONED_BIT_NV feature bit
565bd8deadSopenharmony_ci    that is returned by queryies for SUBGROUP_SUPPORTED_FEATURES_KHR.
575bd8deadSopenharmony_ci
585bd8deadSopenharmony_ci    In OpenGL implementations supporting SPIR-V, this extension enables
595bd8deadSopenharmony_ci    support for the SPV_NV_shader_subgroup_partitioned extension.
605bd8deadSopenharmony_ci
615bd8deadSopenharmony_ci    In OpenGL ES implementations, this extension does NOT add support for
625bd8deadSopenharmony_ci    SPIR-V or for any of the built-in shading language functions (8.18)
635bd8deadSopenharmony_ci    that have genDType (double) prototypes.
645bd8deadSopenharmony_ci
655bd8deadSopenharmony_ciNew Procedures and Functions
665bd8deadSopenharmony_ci
675bd8deadSopenharmony_ci    None
685bd8deadSopenharmony_ci
695bd8deadSopenharmony_ciNew Tokens
705bd8deadSopenharmony_ci
715bd8deadSopenharmony_ci    Returned as bitfield in the <data> argument when GetIntegerv
725bd8deadSopenharmony_ci    is queried with a <pname> of SUBGROUP_SUPPORTED_FEATURES_KHR:
735bd8deadSopenharmony_ci
745bd8deadSopenharmony_ci        SUBGROUP_FEATURE_PARTITIONED_BIT_NV         0x00000100
755bd8deadSopenharmony_ci
765bd8deadSopenharmony_ci
775bd8deadSopenharmony_ciModifications to the OpenGL 4.6 Specification (Core Profile)
785bd8deadSopenharmony_ci
795bd8deadSopenharmony_ciModifications to Chapter SG, "Subgroups" (as added by KHR_shader_subgroups)
805bd8deadSopenharmony_ci
815bd8deadSopenharmony_ci    (add a new subsection to SG.1, "Subgroup Operations")
825bd8deadSopenharmony_ci
835bd8deadSopenharmony_ci    SG.1.9 Partitioned Subgroup Operations
845bd8deadSopenharmony_ci
855bd8deadSopenharmony_ci    The partitioned subgroup operations allow a subgroup to partition
865bd8deadSopenharmony_ci    its invocations into disjoint subsets and to perform scan and reduction
875bd8deadSopenharmony_ci    operations among invocations belonging to the same subset. The partitions
885bd8deadSopenharmony_ci    for partitioned subgroup operations are specified by a ballot operand and
895bd8deadSopenharmony_ci    can be computed at runtime. The operations supported are add, mul, min,
905bd8deadSopenharmony_ci    max, and, or, xor.
915bd8deadSopenharmony_ci
925bd8deadSopenharmony_ci    (Add a new bullet point to the list in SG.2.3, "Subgroup Supported
935bd8deadSopenharmony_ci     Operations")
945bd8deadSopenharmony_ci
955bd8deadSopenharmony_ci    * SUBGROUP_FEATURE_PARTITIONED_BIT_NV indicates the GL supports shaders
965bd8deadSopenharmony_ci      with the NV_shader_subgroup_partitioned extension enabled. See SG.1.9.
975bd8deadSopenharmony_ci
985bd8deadSopenharmony_ciModifications to Appendix C of the OpenGL 4.6 (Core Profile) Specification
995bd8deadSopenharmony_ci(The OpenGL SPIR-V Execution Environment)
1005bd8deadSopenharmony_ci
1015bd8deadSopenharmony_ci    Additions to section C.3 (Valid SPIR-V Capabilities):
1025bd8deadSopenharmony_ci
1035bd8deadSopenharmony_ci    Add the following rows to Table C.2 (Valid SPIR-V Capabilities):
1045bd8deadSopenharmony_ci
1055bd8deadSopenharmony_ci        GroupNonUniformPartitionedNV   (if SUBGROUP_FEATURE_PARTITIONED_BIT_NV is supported)
1065bd8deadSopenharmony_ci
1075bd8deadSopenharmony_ciModifications to the OpenGL Shading Language Specification, Version 4.60
1085bd8deadSopenharmony_ci
1095bd8deadSopenharmony_ci    See the separate KHR_shader_subgroup GLSL document.
1105bd8deadSopenharmony_ci    https://github.com/KhronosGroup/GLSL/blob/master/extensions/nv/GL_NV_shader_subgroup_partitioned.txt
1115bd8deadSopenharmony_ci
1125bd8deadSopenharmony_ciDependencies on ARB_gl_spirv and OpenGL 4.6
1135bd8deadSopenharmony_ci
1145bd8deadSopenharmony_ci    If ARB_gl_spirv or OpenGL 4.6 are not supported, ignore all
1155bd8deadSopenharmony_ci    references to SPIR-V functionality.
1165bd8deadSopenharmony_ci
1175bd8deadSopenharmony_ciDependencies on ARB_spirv_extensions and OpenGL 4.6
1185bd8deadSopenharmony_ci
1195bd8deadSopenharmony_ci    If ARB_spirv_extensions or OpenGL 4.6 are not supported, ignore
1205bd8deadSopenharmony_ci    references to the ability to advertise additional SPIR-V extensions.
1215bd8deadSopenharmony_ci
1225bd8deadSopenharmony_ciDependencies on OpenGL ES 3.x
1235bd8deadSopenharmony_ci
1245bd8deadSopenharmony_ci    If implemented in OpenGL ES, ignore all references to SPIR-V and to
1255bd8deadSopenharmony_ci    GLSL built-in functions which utilize the genDType (double) types.
1265bd8deadSopenharmony_ci
1275bd8deadSopenharmony_ciAdditions to the AGL/GLX/WGL Specifications
1285bd8deadSopenharmony_ci
1295bd8deadSopenharmony_ci    None
1305bd8deadSopenharmony_ci
1315bd8deadSopenharmony_ciErrors
1325bd8deadSopenharmony_ci
1335bd8deadSopenharmony_ci    None
1345bd8deadSopenharmony_ci
1355bd8deadSopenharmony_ciNew State
1365bd8deadSopenharmony_ci
1375bd8deadSopenharmony_ci    None
1385bd8deadSopenharmony_ci
1395bd8deadSopenharmony_ciNew Implementation Dependent State
1405bd8deadSopenharmony_ci
1415bd8deadSopenharmony_ci    None
1425bd8deadSopenharmony_ci
1435bd8deadSopenharmony_ciIssues
1445bd8deadSopenharmony_ci
1455bd8deadSopenharmony_ci    1. What should we name this extension?
1465bd8deadSopenharmony_ci
1475bd8deadSopenharmony_ci       DISCUSSION. We will use the same name as the GLSL extension.
1485bd8deadSopenharmony_ci
1495bd8deadSopenharmony_ci       RESOLVED: Use NV_shader_subgroup_partitioned.
1505bd8deadSopenharmony_ci
1515bd8deadSopenharmony_ci    2. Should SPV_NV_shader_subgroup_partitioned be advertised in the
1525bd8deadSopenharmony_ci       list of extensions enumerated by the SPIR_V_EXTENSIONS query?
1535bd8deadSopenharmony_ci
1545bd8deadSopenharmony_ci       RESOLVED: Yes. There is no spec language for this because it
1555bd8deadSopenharmony_ci       is just expected when this extension is supported (on an implementation
1565bd8deadSopenharmony_ci       that supports SPIR-V).
1575bd8deadSopenharmony_ci
1585bd8deadSopenharmony_ciRevision History
1595bd8deadSopenharmony_ci
1605bd8deadSopenharmony_ci    Rev.  Date          Author     Changes
1615bd8deadSopenharmony_ci    ----  -----------   --------   -------------------------------------------
1625bd8deadSopenharmony_ci     1    2019-07-27    dgkoch     Internal revisions.
1635bd8deadSopenharmony_ci
164