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 argument when GetIntegerv is queried with a 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.