| 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. |
| |