Name Strings
SPV_NV_shader_subgroup_partitioned
Contact
To report problems with this extension, please open a new issue at:
Contributors
-
Jeff Bolz, NVIDIA
Status
-
Complete
Version
Last Modified Date |
2018-03-14 |
Revision |
1 |
Dependencies
This extension is written against the SPIR-V Specification, Version 1.3 Revision 1.
This extension requires SPIR-V 1.3.
This extension provides SPIR-V support for the GL_NV_shader_subgroup_partitioned GLSL extension.
Overview
This extension adds new subgroup functionality to support the Vulkan GL_NV_shader_subgroup_partitioned GLSL extension.
OpGroupNonUniformPartitionNV is a new instruction that computes a partition (a ballot value indicating which other invocations in the subgroup have the same value of the operand).
PartitionedReduceNV, PartitionedInclusiveScanNV, and PartitionedExclusiveScanNV are new GroupOperation enum values that select the partitioned reduce/scan functionality.
GroupNonUniformPartitionedNV is a capability that indicates a module uses these new features.
Extension Name
To use this extension within a SPIR-V module, the following OpExtension must be present in the module:
OpExtension "SPV_NV_shader_subgroup_partitioned"
New Capabilities
This extension introduces the following new capabilities:
GroupNonUniformPartitionedNV
New Decorations
None
New Builtins
None.
New Instructions
OpGroupNonUniformPartitionNV
Token Number Assignments
Name | Value | Usage |
---|---|---|
GroupNonUniformPartitionedNV |
5297 |
Capability |
OpGroupNonUniformPartitionNV |
5296 |
Opcode |
PartitionedReduceNV |
6 |
GroupOperation |
PartitionedInclusiveScanNV |
7 |
GroupOperation |
PartitionedExclusiveScanNV |
8 |
GroupOperation |
Modifications to the SPIR-V Specification, Version 1.3
(Add to the table in 3.28, Group Operation):
6 |
PartitionedReduceNV |
GroupNonUniformPartitionedNV |
7 |
PartitionedInclusiveScanNV |
GroupNonUniformPartitionedNV |
8 |
PartitionedExclusiveScanNV |
GroupNonUniformPartitionedNV |
Add: "The ballot parameter to the partitioned operations must form a valid partition of the active invocations in the subgroup. The values of ballot are a valid partition if:
-
for each active invocation i, the bit corresponding to i is set in i's value of ballot, and
-
for any two active invocations i and j, if the bit corresponding to invocation j is set in invocation i's value of ballot, then invocation j's value of ballot must equal invocation i's value of ballot, and
-
bits not corresponding to any invocation in the subgroup are ignored.
If two active invocations i and j have the same value of ballot, they are said to be "in the same subset of the partition"."
- (Modify Section 3.32.21, Group Instructions, adding to the end of the list of instructions)
-
- (Modify Section 3.32.21, Group Instructions, modify each GroupNonUniformArithmetic instruction)
-
Add an optional operand "Optional <id> ballot".
Add "If Operation is PartitionedReduceNV, PartitionedInclusiveScanNV, or PartitionedExclusiveScanNV, ballot must be specified. ballot specifies the partition of invocations to use when computing a partitioned operation."
Add GroupNonUniformPartitionedNV to the capability list.
- (Modify Section 3.31, Capability, adding new rows to the Capability table)
-
Capability Depends On Enabled by Extension 5301
GroupNonUniformPartitionedNV
Uses partitioned subgroup operations.Shader
SPV_NV_shader_subgroup_partitioned
Validation Rules
An OpExtension must be added to the SPIR-V for validation layers to check legal use of this extension:
OpExtension "SPV_NV_shader_subgroup_partitioned"
Issues
None.
Revision History
Rev | Date | Author | Changes |
---|---|---|---|
1 |
2018-03-14 |
Jeff Bolz |
Initial draft |