blob: efe30b75a1a7393d2d1c5d47f44270810ed54ad3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
|
spv.460.subgroupEXT.task
// Module Version 10400
// Generated by (magic number): 8000b
// Id's are bound by 243
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 123 124 129 130 133 134 135 136 137
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 123 "gl_SubgroupSize"
Name 124 "gl_SubgroupInvocationID"
Name 129 "gl_NumSubgroups"
Name 130 "gl_SubgroupID"
Name 133 "gl_SubgroupEqMask"
Name 134 "gl_SubgroupGeMask"
Name 135 "gl_SubgroupGtMask"
Name 136 "gl_SubgroupLeMask"
Name 137 "gl_SubgroupLtMask"
Name 143 "ballot"
Name 181 "ballot"
Name 216 "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 123(gl_SubgroupSize) RelaxedPrecision
Decorate 123(gl_SubgroupSize) BuiltIn SubgroupSize
Decorate 124(gl_SubgroupInvocationID) RelaxedPrecision
Decorate 124(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
Decorate 129(gl_NumSubgroups) BuiltIn NumSubgroups
Decorate 130(gl_SubgroupID) BuiltIn SubgroupId
Decorate 133(gl_SubgroupEqMask) BuiltIn SubgroupEqMaskKHR
Decorate 134(gl_SubgroupGeMask) BuiltIn SubgroupGeMaskKHR
Decorate 135(gl_SubgroupGtMask) BuiltIn SubgroupGtMaskKHR
Decorate 136(gl_SubgroupLeMask) BuiltIn SubgroupLeMaskKHR
Decorate 137(gl_SubgroupLtMask) BuiltIn SubgroupLtMaskKHR
Decorate 242 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
123(gl_SubgroupSize): 37(ptr) Variable Input
124(gl_SubgroupInvocationID): 37(ptr) Variable Input
125: 30(int) Constant 3400
126: 30(int) Constant 72
127: 30(int) Constant 2056
129(gl_NumSubgroups): 37(ptr) Variable Input
130(gl_SubgroupID): 37(ptr) Variable Input
131: TypeVector 30(int) 4
132: TypePointer Input 131(ivec4)
133(gl_SubgroupEqMask): 132(ptr) Variable Input
134(gl_SubgroupGeMask): 132(ptr) Variable Input
135(gl_SubgroupGtMask): 132(ptr) Variable Input
136(gl_SubgroupLeMask): 132(ptr) Variable Input
137(gl_SubgroupLtMask): 132(ptr) Variable Input
142: TypePointer Function 131(ivec4)
144: 52(bool) ConstantFalse
146: 131(ivec4) ConstantComposite 91 91 91 91
160: 52(bool) ConstantTrue
217: 30(int) Constant 85
218: 131(ivec4) ConstantComposite 217 36 36 36
241: 30(int) Constant 32
242: 33(ivec3) ConstantComposite 241 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)
FunctionEnd
6(basic_works(): 2 Function None 3
7: Label
ControlBarrier 98 98 125
MemoryBarrier 98 125
MemoryBarrier 98 126
MemoryBarrier 98 127
128: 52(bool) GroupNonUniformElect 98
MemoryBarrier 98 95
Return
FunctionEnd
13(ballot_works(vf4;): 2 Function None 11
12(f4): 10(ptr) FunctionParameter
14: Label
143(ballot): 142(ptr) Variable Function
138: 9(fvec4) Load 12(f4)
139: 9(fvec4) GroupNonUniformBroadcast 98 138 36
140: 9(fvec4) Load 12(f4)
141: 9(fvec4) GroupNonUniformBroadcastFirst 98 140
145: 131(ivec4) GroupNonUniformBallot 98 144
Store 143(ballot) 145
147: 52(bool) GroupNonUniformInverseBallot 98 146
148: 131(ivec4) Load 143(ballot)
149: 52(bool) GroupNonUniformBallotBitExtract 98 148 36
150: 131(ivec4) Load 143(ballot)
151: 30(int) GroupNonUniformBallotBitCount 98 Reduce 150
152: 131(ivec4) Load 143(ballot)
153: 30(int) GroupNonUniformBallotBitCount 98 InclusiveScan 152
154: 131(ivec4) Load 143(ballot)
155: 30(int) GroupNonUniformBallotBitCount 98 ExclusiveScan 154
156: 131(ivec4) Load 143(ballot)
157: 30(int) GroupNonUniformBallotFindLSB 98 156
158: 131(ivec4) Load 143(ballot)
159: 30(int) GroupNonUniformBallotFindMSB 98 158
Return
FunctionEnd
16(vote_works(vf4;): 2 Function None 11
15(f4): 10(ptr) FunctionParameter
17: Label
161: 52(bool) GroupNonUniformAll 98 160
162: 52(bool) GroupNonUniformAny 98 144
163: 9(fvec4) Load 15(f4)
164: 52(bool) GroupNonUniformAllEqual 98 163
Return
FunctionEnd
19(shuffle_works(vf4;): 2 Function None 11
18(f4): 10(ptr) FunctionParameter
20: Label
165: 9(fvec4) Load 18(f4)
166: 9(fvec4) GroupNonUniformShuffle 98 165 36
167: 9(fvec4) Load 18(f4)
168: 9(fvec4) GroupNonUniformShuffleXor 98 167 91
169: 9(fvec4) Load 18(f4)
170: 9(fvec4) GroupNonUniformShuffleUp 98 169 91
171: 9(fvec4) Load 18(f4)
172: 9(fvec4) GroupNonUniformShuffleDown 98 171 91
Return
FunctionEnd
22(arith_works(vf4;): 2 Function None 11
21(f4): 10(ptr) FunctionParameter
23: Label
181(ballot): 142(ptr) Variable Function
173: 9(fvec4) Load 21(f4)
174: 9(fvec4) GroupNonUniformFAdd 98 Reduce 173
175: 9(fvec4) Load 21(f4)
176: 9(fvec4) GroupNonUniformFMul 98 Reduce 175
177: 9(fvec4) Load 21(f4)
178: 9(fvec4) GroupNonUniformFMin 98 Reduce 177
179: 9(fvec4) Load 21(f4)
180: 9(fvec4) GroupNonUniformFMax 98 Reduce 179
182: 131(ivec4) Load 181(ballot)
183: 131(ivec4) GroupNonUniformBitwiseAnd 98 Reduce 182
184: 131(ivec4) Load 181(ballot)
185: 131(ivec4) GroupNonUniformBitwiseOr 98 Reduce 184
186: 131(ivec4) Load 181(ballot)
187: 131(ivec4) GroupNonUniformBitwiseXor 98 Reduce 186
188: 9(fvec4) Load 21(f4)
189: 9(fvec4) GroupNonUniformFAdd 98 InclusiveScan 188
190: 9(fvec4) Load 21(f4)
191: 9(fvec4) GroupNonUniformFMul 98 InclusiveScan 190
192: 9(fvec4) Load 21(f4)
193: 9(fvec4) GroupNonUniformFMin 98 InclusiveScan 192
194: 9(fvec4) Load 21(f4)
195: 9(fvec4) GroupNonUniformFMax 98 InclusiveScan 194
196: 131(ivec4) Load 181(ballot)
197: 131(ivec4) GroupNonUniformBitwiseAnd 98 InclusiveScan 196
198: 131(ivec4) Load 181(ballot)
199: 131(ivec4) GroupNonUniformBitwiseOr 98 InclusiveScan 198
200: 131(ivec4) Load 181(ballot)
201: 131(ivec4) GroupNonUniformBitwiseXor 98 InclusiveScan 200
202: 9(fvec4) Load 21(f4)
203: 9(fvec4) GroupNonUniformFAdd 98 ExclusiveScan 202
204: 9(fvec4) Load 21(f4)
205: 9(fvec4) GroupNonUniformFMul 98 ExclusiveScan 204
206: 9(fvec4) Load 21(f4)
207: 9(fvec4) GroupNonUniformFMin 98 ExclusiveScan 206
208: 9(fvec4) Load 21(f4)
209: 9(fvec4) GroupNonUniformFMax 98 ExclusiveScan 208
210: 131(ivec4) Load 181(ballot)
211: 131(ivec4) GroupNonUniformBitwiseAnd 98 ExclusiveScan 210
212: 131(ivec4) Load 181(ballot)
213: 131(ivec4) GroupNonUniformBitwiseOr 98 ExclusiveScan 212
214: 131(ivec4) Load 181(ballot)
215: 131(ivec4) GroupNonUniformBitwiseXor 98 ExclusiveScan 214
Return
FunctionEnd
25(clustered_works(vf4;): 2 Function None 11
24(f4): 10(ptr) FunctionParameter
26: Label
216(ballot): 142(ptr) Variable Function
Store 216(ballot) 218
219: 9(fvec4) Load 24(f4)
220: 9(fvec4) GroupNonUniformFAdd 98 ClusteredReduce 219 96
221: 9(fvec4) Load 24(f4)
222: 9(fvec4) GroupNonUniformFMul 98 ClusteredReduce 221 96
223: 9(fvec4) Load 24(f4)
224: 9(fvec4) GroupNonUniformFMin 98 ClusteredReduce 223 96
225: 9(fvec4) Load 24(f4)
226: 9(fvec4) GroupNonUniformFMax 98 ClusteredReduce 225 96
227: 131(ivec4) Load 216(ballot)
228: 131(ivec4) GroupNonUniformBitwiseAnd 98 ClusteredReduce 227 96
229: 131(ivec4) Load 216(ballot)
230: 131(ivec4) GroupNonUniformBitwiseOr 98 ClusteredReduce 229 96
231: 131(ivec4) Load 216(ballot)
232: 131(ivec4) GroupNonUniformBitwiseXor 98 ClusteredReduce 231 96
Return
FunctionEnd
28(quad_works(vf4;): 2 Function None 11
27(f4): 10(ptr) FunctionParameter
29: Label
233: 9(fvec4) Load 27(f4)
234: 9(fvec4) GroupNonUniformQuadBroadcast 98 233 36
235: 9(fvec4) Load 27(f4)
236: 9(fvec4) GroupNonUniformQuadSwap 98 235 36
237: 9(fvec4) Load 27(f4)
238: 9(fvec4) GroupNonUniformQuadSwap 98 237 91
239: 9(fvec4) Load 27(f4)
240: 9(fvec4) GroupNonUniformQuadSwap 98 239 96
Return
FunctionEnd
|