
Added following updates to GL_EXT_mesh_shader implementation: 1. Added SPIRV and GLSL test cases 2. Added checks to ensure NV and EXT mesh shader builtins cannot be used interchangeably. 3. Updated the language name by removing the postfix "NV" to MeshShader and TaskShader. 4. Added checks for grammar checking to comply with the spec. 5. Added gl_NumWorkGroups builtin to Mesh shader 6. Fixed data type of gl_PrimitiveLineIndicesEXT and gl_PrimitiveTriangleIndicesEXT 7. Added new constants to the resources table 8. Updates to handle new storage qualifier "taskPayloadSharedEXT" 9. Updated test cases by replacing "taskEXT" with storage qualifier "taskPayloadSharedEXT" Addressed Review comments 1. Fixed instruction description used by glslang disassembly. 2. Updated OpEmitMeshTasksEXT as per spec update 3. Fixed implementation that errors out if there are more then one taskPayloadSharedEXT varjables. 4. Fixed miscellaneous error logs and removed unwanted code. SPIRV 1.6 related build failure fixes - Update SPIRV header to 1.6 - Fix conflict wiht SPIRV 1.6 change, where localSizeId is used for execution mode for mesh/task shaders Enable SPIRV generated for EXT_mesh_shader to be version 1.4 GL_EXT_mesh_shader: Add checks for atomic support and corresponding test cases
377 lines
20 KiB
Plaintext
377 lines
20 KiB
Plaintext
spv.460.subgroupEXT.task
|
|
// Module Version 10400
|
|
// Generated by (magic number): 8000a
|
|
// Id's are bound by 242
|
|
|
|
Capability StorageImageWriteWithoutFormat
|
|
Capability GroupNonUniform
|
|
Capability GroupNonUniformVote
|
|
Capability GroupNonUniformArithmetic
|
|
Capability GroupNonUniformBallot
|
|
Capability GroupNonUniformShuffle
|
|
Capability GroupNonUniformShuffleRelative
|
|
Capability GroupNonUniformClustered
|
|
Capability GroupNonUniformQuad
|
|
Capability MeshShadingEXT
|
|
Extension "SPV_EXT_mesh_shader"
|
|
1: ExtInstImport "GLSL.std.450"
|
|
MemoryModel Logical GLSL450
|
|
EntryPoint TaskEXT 4 "main" 35 41 56 61 77 102 122 123 128 129 132 133 134 135 136
|
|
ExecutionMode 4 LocalSize 32 1 1
|
|
Source GLSL 460
|
|
SourceExtension "GL_EXT_mesh_shader"
|
|
SourceExtension "GL_KHR_shader_subgroup_arithmetic"
|
|
SourceExtension "GL_KHR_shader_subgroup_ballot"
|
|
SourceExtension "GL_KHR_shader_subgroup_basic"
|
|
SourceExtension "GL_KHR_shader_subgroup_clustered"
|
|
SourceExtension "GL_KHR_shader_subgroup_quad"
|
|
SourceExtension "GL_KHR_shader_subgroup_shuffle"
|
|
SourceExtension "GL_KHR_shader_subgroup_shuffle_relative"
|
|
SourceExtension "GL_KHR_shader_subgroup_vote"
|
|
Name 4 "main"
|
|
Name 6 "basic_works("
|
|
Name 13 "ballot_works(vf4;"
|
|
Name 12 "f4"
|
|
Name 16 "vote_works(vf4;"
|
|
Name 15 "f4"
|
|
Name 19 "shuffle_works(vf4;"
|
|
Name 18 "f4"
|
|
Name 22 "arith_works(vf4;"
|
|
Name 21 "f4"
|
|
Name 25 "clustered_works(vf4;"
|
|
Name 24 "f4"
|
|
Name 28 "quad_works(vf4;"
|
|
Name 27 "f4"
|
|
Name 32 "iid"
|
|
Name 35 "gl_LocalInvocationID"
|
|
Name 40 "gid"
|
|
Name 41 "gl_WorkGroupID"
|
|
Name 44 "i"
|
|
Name 56 "mem"
|
|
Name 59 "block0"
|
|
MemberName 59(block0) 0 "uni_value"
|
|
Name 61 ""
|
|
Name 77 "uni_image"
|
|
Name 100 "Task"
|
|
MemberName 100(Task) 0 "dummy"
|
|
MemberName 100(Task) 1 "submesh"
|
|
Name 102 "mytask"
|
|
Name 122 "gl_SubgroupSize"
|
|
Name 123 "gl_SubgroupInvocationID"
|
|
Name 128 "gl_NumSubgroups"
|
|
Name 129 "gl_SubgroupID"
|
|
Name 132 "gl_SubgroupEqMask"
|
|
Name 133 "gl_SubgroupGeMask"
|
|
Name 134 "gl_SubgroupGtMask"
|
|
Name 135 "gl_SubgroupLeMask"
|
|
Name 136 "gl_SubgroupLtMask"
|
|
Name 142 "ballot"
|
|
Name 180 "ballot"
|
|
Name 215 "ballot"
|
|
Decorate 35(gl_LocalInvocationID) BuiltIn LocalInvocationId
|
|
Decorate 41(gl_WorkGroupID) BuiltIn WorkgroupId
|
|
MemberDecorate 59(block0) 0 Offset 0
|
|
Decorate 59(block0) Block
|
|
Decorate 61 DescriptorSet 0
|
|
Decorate 61 Binding 1
|
|
Decorate 77(uni_image) DescriptorSet 0
|
|
Decorate 77(uni_image) Binding 0
|
|
Decorate 77(uni_image) NonReadable
|
|
Decorate 122(gl_SubgroupSize) RelaxedPrecision
|
|
Decorate 122(gl_SubgroupSize) BuiltIn SubgroupSize
|
|
Decorate 123(gl_SubgroupInvocationID) RelaxedPrecision
|
|
Decorate 123(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
|
|
Decorate 128(gl_NumSubgroups) BuiltIn NumSubgroups
|
|
Decorate 129(gl_SubgroupID) BuiltIn SubgroupId
|
|
Decorate 132(gl_SubgroupEqMask) BuiltIn SubgroupEqMaskKHR
|
|
Decorate 133(gl_SubgroupGeMask) BuiltIn SubgroupGeMaskKHR
|
|
Decorate 134(gl_SubgroupGtMask) BuiltIn SubgroupGtMaskKHR
|
|
Decorate 135(gl_SubgroupLeMask) BuiltIn SubgroupLeMaskKHR
|
|
Decorate 136(gl_SubgroupLtMask) BuiltIn SubgroupLtMaskKHR
|
|
Decorate 241 BuiltIn WorkgroupSize
|
|
2: TypeVoid
|
|
3: TypeFunction 2
|
|
8: TypeFloat 32
|
|
9: TypeVector 8(float) 4
|
|
10: TypePointer Function 9(fvec4)
|
|
11: TypeFunction 2 10(ptr)
|
|
30: TypeInt 32 0
|
|
31: TypePointer Function 30(int)
|
|
33: TypeVector 30(int) 3
|
|
34: TypePointer Input 33(ivec3)
|
|
35(gl_LocalInvocationID): 34(ptr) Variable Input
|
|
36: 30(int) Constant 0
|
|
37: TypePointer Input 30(int)
|
|
41(gl_WorkGroupID): 34(ptr) Variable Input
|
|
51: 30(int) Constant 10
|
|
52: TypeBool
|
|
54: TypeArray 9(fvec4) 51
|
|
55: TypePointer Workgroup 54
|
|
56(mem): 55(ptr) Variable Workgroup
|
|
59(block0): TypeStruct 30(int)
|
|
60: TypePointer Uniform 59(block0)
|
|
61: 60(ptr) Variable Uniform
|
|
62: TypeInt 32 1
|
|
63: 62(int) Constant 0
|
|
64: TypePointer Uniform 30(int)
|
|
70: TypePointer Workgroup 9(fvec4)
|
|
73: 62(int) Constant 1
|
|
75: TypeImage 8(float) 2D nonsampled format:Unknown
|
|
76: TypePointer UniformConstant 75
|
|
77(uni_image): 76(ptr) Variable UniformConstant
|
|
81: TypeVector 62(int) 2
|
|
91: 30(int) Constant 1
|
|
95: 30(int) Constant 264
|
|
96: 30(int) Constant 2
|
|
97: TypeVector 8(float) 2
|
|
98: 30(int) Constant 3
|
|
99: TypeArray 97(fvec2) 98
|
|
100(Task): TypeStruct 97(fvec2) 99
|
|
101: TypePointer TaskPayloadWorkgroupEXT 100(Task)
|
|
102(mytask): 101(ptr) Variable TaskPayloadWorkgroupEXT
|
|
103: 8(float) Constant 1106247680
|
|
104: 8(float) Constant 1106771968
|
|
105: 97(fvec2) ConstantComposite 103 104
|
|
106: TypePointer TaskPayloadWorkgroupEXT 97(fvec2)
|
|
108: 8(float) Constant 1107296256
|
|
109: 8(float) Constant 1107558400
|
|
110: 97(fvec2) ConstantComposite 108 109
|
|
112: 8(float) Constant 1107820544
|
|
113: 8(float) Constant 1108082688
|
|
114: 97(fvec2) ConstantComposite 112 113
|
|
116: 62(int) Constant 2
|
|
122(gl_SubgroupSize): 37(ptr) Variable Input
|
|
123(gl_SubgroupInvocationID): 37(ptr) Variable Input
|
|
124: 30(int) Constant 3400
|
|
125: 30(int) Constant 72
|
|
126: 30(int) Constant 2056
|
|
128(gl_NumSubgroups): 37(ptr) Variable Input
|
|
129(gl_SubgroupID): 37(ptr) Variable Input
|
|
130: TypeVector 30(int) 4
|
|
131: TypePointer Input 130(ivec4)
|
|
132(gl_SubgroupEqMask): 131(ptr) Variable Input
|
|
133(gl_SubgroupGeMask): 131(ptr) Variable Input
|
|
134(gl_SubgroupGtMask): 131(ptr) Variable Input
|
|
135(gl_SubgroupLeMask): 131(ptr) Variable Input
|
|
136(gl_SubgroupLtMask): 131(ptr) Variable Input
|
|
141: TypePointer Function 130(ivec4)
|
|
143: 52(bool) ConstantFalse
|
|
145: 130(ivec4) ConstantComposite 91 91 91 91
|
|
159: 52(bool) ConstantTrue
|
|
216: 30(int) Constant 85
|
|
217: 130(ivec4) ConstantComposite 216 36 36 36
|
|
240: 30(int) Constant 32
|
|
241: 33(ivec3) ConstantComposite 240 91 91
|
|
4(main): 2 Function None 3
|
|
5: Label
|
|
32(iid): 31(ptr) Variable Function
|
|
40(gid): 31(ptr) Variable Function
|
|
44(i): 31(ptr) Variable Function
|
|
38: 37(ptr) AccessChain 35(gl_LocalInvocationID) 36
|
|
39: 30(int) Load 38
|
|
Store 32(iid) 39
|
|
42: 37(ptr) AccessChain 41(gl_WorkGroupID) 36
|
|
43: 30(int) Load 42
|
|
Store 40(gid) 43
|
|
Store 44(i) 36
|
|
Branch 45
|
|
45: Label
|
|
LoopMerge 47 48 None
|
|
Branch 49
|
|
49: Label
|
|
50: 30(int) Load 44(i)
|
|
53: 52(bool) ULessThan 50 51
|
|
BranchConditional 53 46 47
|
|
46: Label
|
|
57: 30(int) Load 44(i)
|
|
58: 30(int) Load 44(i)
|
|
65: 64(ptr) AccessChain 61 63
|
|
66: 30(int) Load 65
|
|
67: 30(int) IAdd 58 66
|
|
68: 8(float) ConvertUToF 67
|
|
69: 9(fvec4) CompositeConstruct 68 68 68 68
|
|
71: 70(ptr) AccessChain 56(mem) 57
|
|
Store 71 69
|
|
Branch 48
|
|
48: Label
|
|
72: 30(int) Load 44(i)
|
|
74: 30(int) IAdd 72 73
|
|
Store 44(i) 74
|
|
Branch 45
|
|
47: Label
|
|
78: 75 Load 77(uni_image)
|
|
79: 30(int) Load 32(iid)
|
|
80: 62(int) Bitcast 79
|
|
82: 81(ivec2) CompositeConstruct 80 80
|
|
83: 30(int) Load 40(gid)
|
|
84: 70(ptr) AccessChain 56(mem) 83
|
|
85: 9(fvec4) Load 84
|
|
ImageWrite 78 82 85
|
|
86: 75 Load 77(uni_image)
|
|
87: 30(int) Load 32(iid)
|
|
88: 62(int) Bitcast 87
|
|
89: 81(ivec2) CompositeConstruct 88 88
|
|
90: 30(int) Load 40(gid)
|
|
92: 30(int) IAdd 90 91
|
|
93: 70(ptr) AccessChain 56(mem) 92
|
|
94: 9(fvec4) Load 93
|
|
ImageWrite 86 89 94
|
|
MemoryBarrier 91 95
|
|
ControlBarrier 96 96 95
|
|
107: 106(ptr) AccessChain 102(mytask) 63
|
|
Store 107 105
|
|
111: 106(ptr) AccessChain 102(mytask) 73 63
|
|
Store 111 110
|
|
115: 106(ptr) AccessChain 102(mytask) 73 73
|
|
Store 115 114
|
|
117: 30(int) Load 40(gid)
|
|
118: 30(int) UMod 117 96
|
|
119: 106(ptr) AccessChain 102(mytask) 73 118
|
|
120: 97(fvec2) Load 119
|
|
121: 106(ptr) AccessChain 102(mytask) 73 116
|
|
Store 121 120
|
|
MemoryBarrier 91 95
|
|
ControlBarrier 96 96 95
|
|
EmitMeshTasksEXT 98 91 91 102(mytask)
|
|
Return
|
|
FunctionEnd
|
|
6(basic_works(): 2 Function None 3
|
|
7: Label
|
|
ControlBarrier 98 98 124
|
|
MemoryBarrier 98 124
|
|
MemoryBarrier 98 125
|
|
MemoryBarrier 98 126
|
|
127: 52(bool) GroupNonUniformElect 98
|
|
MemoryBarrier 98 95
|
|
Return
|
|
FunctionEnd
|
|
13(ballot_works(vf4;): 2 Function None 11
|
|
12(f4): 10(ptr) FunctionParameter
|
|
14: Label
|
|
142(ballot): 141(ptr) Variable Function
|
|
137: 9(fvec4) Load 12(f4)
|
|
138: 9(fvec4) GroupNonUniformBroadcast 98 137 36
|
|
139: 9(fvec4) Load 12(f4)
|
|
140: 9(fvec4) GroupNonUniformBroadcastFirst 98 139
|
|
144: 130(ivec4) GroupNonUniformBallot 98 143
|
|
Store 142(ballot) 144
|
|
146: 52(bool) GroupNonUniformInverseBallot 98 145
|
|
147: 130(ivec4) Load 142(ballot)
|
|
148: 52(bool) GroupNonUniformBallotBitExtract 98 147 36
|
|
149: 130(ivec4) Load 142(ballot)
|
|
150: 30(int) GroupNonUniformBallotBitCount 98 Reduce 149
|
|
151: 130(ivec4) Load 142(ballot)
|
|
152: 30(int) GroupNonUniformBallotBitCount 98 InclusiveScan 151
|
|
153: 130(ivec4) Load 142(ballot)
|
|
154: 30(int) GroupNonUniformBallotBitCount 98 ExclusiveScan 153
|
|
155: 130(ivec4) Load 142(ballot)
|
|
156: 30(int) GroupNonUniformBallotFindLSB 98 155
|
|
157: 130(ivec4) Load 142(ballot)
|
|
158: 30(int) GroupNonUniformBallotFindMSB 98 157
|
|
Return
|
|
FunctionEnd
|
|
16(vote_works(vf4;): 2 Function None 11
|
|
15(f4): 10(ptr) FunctionParameter
|
|
17: Label
|
|
160: 52(bool) GroupNonUniformAll 98 159
|
|
161: 52(bool) GroupNonUniformAny 98 143
|
|
162: 9(fvec4) Load 15(f4)
|
|
163: 52(bool) GroupNonUniformAllEqual 98 162
|
|
Return
|
|
FunctionEnd
|
|
19(shuffle_works(vf4;): 2 Function None 11
|
|
18(f4): 10(ptr) FunctionParameter
|
|
20: Label
|
|
164: 9(fvec4) Load 18(f4)
|
|
165: 9(fvec4) GroupNonUniformShuffle 98 164 36
|
|
166: 9(fvec4) Load 18(f4)
|
|
167: 9(fvec4) GroupNonUniformShuffleXor 98 166 91
|
|
168: 9(fvec4) Load 18(f4)
|
|
169: 9(fvec4) GroupNonUniformShuffleUp 98 168 91
|
|
170: 9(fvec4) Load 18(f4)
|
|
171: 9(fvec4) GroupNonUniformShuffleDown 98 170 91
|
|
Return
|
|
FunctionEnd
|
|
22(arith_works(vf4;): 2 Function None 11
|
|
21(f4): 10(ptr) FunctionParameter
|
|
23: Label
|
|
180(ballot): 141(ptr) Variable Function
|
|
172: 9(fvec4) Load 21(f4)
|
|
173: 9(fvec4) GroupNonUniformFAdd 98 Reduce 172
|
|
174: 9(fvec4) Load 21(f4)
|
|
175: 9(fvec4) GroupNonUniformFMul 98 Reduce 174
|
|
176: 9(fvec4) Load 21(f4)
|
|
177: 9(fvec4) GroupNonUniformFMin 98 Reduce 176
|
|
178: 9(fvec4) Load 21(f4)
|
|
179: 9(fvec4) GroupNonUniformFMax 98 Reduce 178
|
|
181: 130(ivec4) Load 180(ballot)
|
|
182: 130(ivec4) GroupNonUniformBitwiseAnd 98 Reduce 181
|
|
183: 130(ivec4) Load 180(ballot)
|
|
184: 130(ivec4) GroupNonUniformBitwiseOr 98 Reduce 183
|
|
185: 130(ivec4) Load 180(ballot)
|
|
186: 130(ivec4) GroupNonUniformBitwiseXor 98 Reduce 185
|
|
187: 9(fvec4) Load 21(f4)
|
|
188: 9(fvec4) GroupNonUniformFAdd 98 InclusiveScan 187
|
|
189: 9(fvec4) Load 21(f4)
|
|
190: 9(fvec4) GroupNonUniformFMul 98 InclusiveScan 189
|
|
191: 9(fvec4) Load 21(f4)
|
|
192: 9(fvec4) GroupNonUniformFMin 98 InclusiveScan 191
|
|
193: 9(fvec4) Load 21(f4)
|
|
194: 9(fvec4) GroupNonUniformFMax 98 InclusiveScan 193
|
|
195: 130(ivec4) Load 180(ballot)
|
|
196: 130(ivec4) GroupNonUniformBitwiseAnd 98 InclusiveScan 195
|
|
197: 130(ivec4) Load 180(ballot)
|
|
198: 130(ivec4) GroupNonUniformBitwiseOr 98 InclusiveScan 197
|
|
199: 130(ivec4) Load 180(ballot)
|
|
200: 130(ivec4) GroupNonUniformBitwiseXor 98 InclusiveScan 199
|
|
201: 9(fvec4) Load 21(f4)
|
|
202: 9(fvec4) GroupNonUniformFAdd 98 ExclusiveScan 201
|
|
203: 9(fvec4) Load 21(f4)
|
|
204: 9(fvec4) GroupNonUniformFMul 98 ExclusiveScan 203
|
|
205: 9(fvec4) Load 21(f4)
|
|
206: 9(fvec4) GroupNonUniformFMin 98 ExclusiveScan 205
|
|
207: 9(fvec4) Load 21(f4)
|
|
208: 9(fvec4) GroupNonUniformFMax 98 ExclusiveScan 207
|
|
209: 130(ivec4) Load 180(ballot)
|
|
210: 130(ivec4) GroupNonUniformBitwiseAnd 98 ExclusiveScan 209
|
|
211: 130(ivec4) Load 180(ballot)
|
|
212: 130(ivec4) GroupNonUniformBitwiseOr 98 ExclusiveScan 211
|
|
213: 130(ivec4) Load 180(ballot)
|
|
214: 130(ivec4) GroupNonUniformBitwiseXor 98 ExclusiveScan 213
|
|
Return
|
|
FunctionEnd
|
|
25(clustered_works(vf4;): 2 Function None 11
|
|
24(f4): 10(ptr) FunctionParameter
|
|
26: Label
|
|
215(ballot): 141(ptr) Variable Function
|
|
Store 215(ballot) 217
|
|
218: 9(fvec4) Load 24(f4)
|
|
219: 9(fvec4) GroupNonUniformFAdd 98 ClusteredReduce 218 96
|
|
220: 9(fvec4) Load 24(f4)
|
|
221: 9(fvec4) GroupNonUniformFMul 98 ClusteredReduce 220 96
|
|
222: 9(fvec4) Load 24(f4)
|
|
223: 9(fvec4) GroupNonUniformFMin 98 ClusteredReduce 222 96
|
|
224: 9(fvec4) Load 24(f4)
|
|
225: 9(fvec4) GroupNonUniformFMax 98 ClusteredReduce 224 96
|
|
226: 130(ivec4) Load 215(ballot)
|
|
227: 130(ivec4) GroupNonUniformBitwiseAnd 98 ClusteredReduce 226 96
|
|
228: 130(ivec4) Load 215(ballot)
|
|
229: 130(ivec4) GroupNonUniformBitwiseOr 98 ClusteredReduce 228 96
|
|
230: 130(ivec4) Load 215(ballot)
|
|
231: 130(ivec4) GroupNonUniformBitwiseXor 98 ClusteredReduce 230 96
|
|
Return
|
|
FunctionEnd
|
|
28(quad_works(vf4;): 2 Function None 11
|
|
27(f4): 10(ptr) FunctionParameter
|
|
29: Label
|
|
232: 9(fvec4) Load 27(f4)
|
|
233: 9(fvec4) GroupNonUniformQuadBroadcast 98 232 36
|
|
234: 9(fvec4) Load 27(f4)
|
|
235: 9(fvec4) GroupNonUniformQuadSwap 98 234 36
|
|
236: 9(fvec4) Load 27(f4)
|
|
237: 9(fvec4) GroupNonUniformQuadSwap 98 236 91
|
|
238: 9(fvec4) Load 27(f4)
|
|
239: 9(fvec4) GroupNonUniformQuadSwap 98 238 96
|
|
Return
|
|
FunctionEnd
|