• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1Name
2
3    NV_shader_subgroup_partitioned
4
5Name Strings
6
7    GL_NV_shader_subgroup_partitioned
8
9Contact
10
11    Daniel Koch, NVIDIA Corportation
12
13Contributors
14
15    Jeff Bolz, NVIDIA
16    Pyarelal Knowles, NVIDIA
17
18Status
19
20    Complete
21
22Version
23
24    Last Modified:  2019-07-26
25    Revision:       1
26
27Number
28
29    OpenGL Extension #544
30    OpenGL ES Extension #322
31
32Dependencies
33
34    This extension is written against the OpenGL 4.6 Specification
35    (Core Profile), dated July 30, 2017.
36
37    This extension requires OpenGL 4.3 or OpenGL ES 3.1.
38
39    This extension requires the KHR_shader_subgroup API and GLSL extensions.
40
41    This extension interacts with ARB_gl_spirv and OpenGL 4.6.
42
43    This extension interacts with ARB_spirv_extensions and OpenGL 4.6.
44
45    This extension interacts with OpenGL ES 3.x.
46
47    This extension requires SPV_NV_shader_subgroup_partitioned when SPIR-V is
48    supported in OpenGL.
49
50Overview
51
52    This extension enables support for the NV_shader_subgroup_partitioned
53    shading language extension in OpenGL and OpenGL ES.
54
55    This extension adds a new SUBGROUP_FEATURE_PARTITIONED_BIT_NV feature bit
56    that is returned by queryies for SUBGROUP_SUPPORTED_FEATURES_KHR.
57
58    In OpenGL implementations supporting SPIR-V, this extension enables
59    support for the SPV_NV_shader_subgroup_partitioned extension.
60
61    In OpenGL ES implementations, this extension does NOT add support for
62    SPIR-V or for any of the built-in shading language functions (8.18)
63    that have genDType (double) prototypes.
64
65New Procedures and Functions
66
67    None
68
69New Tokens
70
71    Returned as bitfield in the <data> argument when GetIntegerv
72    is queried with a <pname> of SUBGROUP_SUPPORTED_FEATURES_KHR:
73
74        SUBGROUP_FEATURE_PARTITIONED_BIT_NV         0x00000100
75
76
77Modifications to the OpenGL 4.6 Specification (Core Profile)
78
79Modifications to Chapter SG, "Subgroups" (as added by KHR_shader_subgroups)
80
81    (add a new subsection to SG.1, "Subgroup Operations")
82
83    SG.1.9 Partitioned Subgroup Operations
84
85    The partitioned subgroup operations allow a subgroup to partition
86    its invocations into disjoint subsets and to perform scan and reduction
87    operations among invocations belonging to the same subset. The partitions
88    for partitioned subgroup operations are specified by a ballot operand and
89    can be computed at runtime. The operations supported are add, mul, min,
90    max, and, or, xor.
91
92    (Add a new bullet point to the list in SG.2.3, "Subgroup Supported
93     Operations")
94
95    * SUBGROUP_FEATURE_PARTITIONED_BIT_NV indicates the GL supports shaders
96      with the NV_shader_subgroup_partitioned extension enabled. See SG.1.9.
97
98Modifications to Appendix C of the OpenGL 4.6 (Core Profile) Specification
99(The OpenGL SPIR-V Execution Environment)
100
101    Additions to section C.3 (Valid SPIR-V Capabilities):
102
103    Add the following rows to Table C.2 (Valid SPIR-V Capabilities):
104
105        GroupNonUniformPartitionedNV   (if SUBGROUP_FEATURE_PARTITIONED_BIT_NV is supported)
106
107Modifications to the OpenGL Shading Language Specification, Version 4.60
108
109    See the separate KHR_shader_subgroup GLSL document.
110    https://github.com/KhronosGroup/GLSL/blob/master/extensions/nv/GL_NV_shader_subgroup_partitioned.txt
111
112Dependencies on ARB_gl_spirv and OpenGL 4.6
113
114    If ARB_gl_spirv or OpenGL 4.6 are not supported, ignore all
115    references to SPIR-V functionality.
116
117Dependencies on ARB_spirv_extensions and OpenGL 4.6
118
119    If ARB_spirv_extensions or OpenGL 4.6 are not supported, ignore
120    references to the ability to advertise additional SPIR-V extensions.
121
122Dependencies on OpenGL ES 3.x
123
124    If implemented in OpenGL ES, ignore all references to SPIR-V and to
125    GLSL built-in functions which utilize the genDType (double) types.
126
127Additions to the AGL/GLX/WGL Specifications
128
129    None
130
131Errors
132
133    None
134
135New State
136
137    None
138
139New Implementation Dependent State
140
141    None
142
143Issues
144
145    1. What should we name this extension?
146
147       DISCUSSION. We will use the same name as the GLSL extension.
148
149       RESOLVED: Use NV_shader_subgroup_partitioned.
150
151    2. Should SPV_NV_shader_subgroup_partitioned be advertised in the
152       list of extensions enumerated by the SPIR_V_EXTENSIONS query?
153
154       RESOLVED: Yes. There is no spec language for this because it
155       is just expected when this extension is supported (on an implementation
156       that supports SPIR-V).
157
158Revision History
159
160    Rev.  Date          Author     Changes
161    ----  -----------   --------   -------------------------------------------
162     1    2019-07-27    dgkoch     Internal revisions.
163
164