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