1 spv.460.subgroupEXT.mesh
2 // Module Version 10400
3 // Generated by (magic number): 8000b
4 // Id's are bound by 279
6 Capability ClipDistance
7 Capability CullDistance
8 Capability GroupNonUniform
9 Capability GroupNonUniformVote
10 Capability GroupNonUniformArithmetic
11 Capability GroupNonUniformBallot
12 Capability GroupNonUniformShuffle
13 Capability GroupNonUniformShuffleRelative
14 Capability GroupNonUniformClustered
15 Capability GroupNonUniformQuad
16 Capability FragmentShadingRateKHR
17 Capability MeshShadingEXT
18 Extension "SPV_EXT_mesh_shader"
19 Extension "SPV_KHR_fragment_shading_rate"
20 1: ExtInstImport "GLSL.std.450"
21 MemoryModel Logical GLSL450
22 EntryPoint MeshEXT 4 "main" 35 41 57 109 147 161 162 167 168 171 172 173 174 175
23 ExecutionMode 4 LocalSize 32 1 1
24 ExecutionMode 4 OutputVertices 81
25 ExecutionMode 4 OutputPrimitivesNV 32
26 ExecutionMode 4 OutputTrianglesNV
28 SourceExtension "GL_EXT_mesh_shader"
29 SourceExtension "GL_KHR_shader_subgroup_arithmetic"
30 SourceExtension "GL_KHR_shader_subgroup_ballot"
31 SourceExtension "GL_KHR_shader_subgroup_basic"
32 SourceExtension "GL_KHR_shader_subgroup_clustered"
33 SourceExtension "GL_KHR_shader_subgroup_quad"
34 SourceExtension "GL_KHR_shader_subgroup_shuffle"
35 SourceExtension "GL_KHR_shader_subgroup_shuffle_relative"
36 SourceExtension "GL_KHR_shader_subgroup_vote"
39 Name 13 "ballot_works(vf4;"
41 Name 16 "vote_works(vf4;"
43 Name 19 "shuffle_works(vf4;"
45 Name 22 "arith_works(vf4;"
47 Name 25 "clustered_works(vf4;"
49 Name 28 "quad_works(vf4;"
52 Name 35 "gl_LocalInvocationID"
54 Name 41 "gl_WorkGroupID"
56 Name 46 "primitiveCount"
57 Name 54 "gl_MeshPerVertexEXT"
58 MemberName 54(gl_MeshPerVertexEXT) 0 "gl_Position"
59 MemberName 54(gl_MeshPerVertexEXT) 1 "gl_PointSize"
60 MemberName 54(gl_MeshPerVertexEXT) 2 "gl_ClipDistance"
61 MemberName 54(gl_MeshPerVertexEXT) 3 "gl_CullDistance"
62 Name 57 "gl_MeshVerticesEXT"
63 Name 106 "gl_MeshPerPrimitiveEXT"
64 MemberName 106(gl_MeshPerPrimitiveEXT) 0 "gl_PrimitiveID"
65 MemberName 106(gl_MeshPerPrimitiveEXT) 1 "gl_Layer"
66 MemberName 106(gl_MeshPerPrimitiveEXT) 2 "gl_ViewportIndex"
67 MemberName 106(gl_MeshPerPrimitiveEXT) 3 "gl_CullPrimitiveEXT"
68 MemberName 106(gl_MeshPerPrimitiveEXT) 4 "gl_PrimitiveShadingRateEXT"
69 Name 109 "gl_MeshPrimitivesEXT"
70 Name 147 "gl_PrimitiveTriangleIndicesEXT"
71 Name 161 "gl_SubgroupSize"
72 Name 162 "gl_SubgroupInvocationID"
73 Name 167 "gl_NumSubgroups"
74 Name 168 "gl_SubgroupID"
75 Name 171 "gl_SubgroupEqMask"
76 Name 172 "gl_SubgroupGeMask"
77 Name 173 "gl_SubgroupGtMask"
78 Name 174 "gl_SubgroupLeMask"
79 Name 175 "gl_SubgroupLtMask"
83 Decorate 35(gl_LocalInvocationID) BuiltIn LocalInvocationId
84 Decorate 41(gl_WorkGroupID) BuiltIn WorkgroupId
85 MemberDecorate 54(gl_MeshPerVertexEXT) 0 BuiltIn Position
86 MemberDecorate 54(gl_MeshPerVertexEXT) 1 BuiltIn PointSize
87 MemberDecorate 54(gl_MeshPerVertexEXT) 2 BuiltIn ClipDistance
88 MemberDecorate 54(gl_MeshPerVertexEXT) 3 BuiltIn CullDistance
89 Decorate 54(gl_MeshPerVertexEXT) Block
90 MemberDecorate 106(gl_MeshPerPrimitiveEXT) 0 PerPrimitiveNV
91 MemberDecorate 106(gl_MeshPerPrimitiveEXT) 0 BuiltIn PrimitiveId
92 MemberDecorate 106(gl_MeshPerPrimitiveEXT) 1 PerPrimitiveNV
93 MemberDecorate 106(gl_MeshPerPrimitiveEXT) 1 BuiltIn Layer
94 MemberDecorate 106(gl_MeshPerPrimitiveEXT) 2 PerPrimitiveNV
95 MemberDecorate 106(gl_MeshPerPrimitiveEXT) 2 BuiltIn ViewportIndex
96 MemberDecorate 106(gl_MeshPerPrimitiveEXT) 3 PerPrimitiveNV
97 MemberDecorate 106(gl_MeshPerPrimitiveEXT) 3 BuiltIn CullPrimitiveEXT
98 MemberDecorate 106(gl_MeshPerPrimitiveEXT) 4 PerPrimitiveNV
99 MemberDecorate 106(gl_MeshPerPrimitiveEXT) 4 BuiltIn PrimitiveShadingRateKHR
100 Decorate 106(gl_MeshPerPrimitiveEXT) Block
101 Decorate 147(gl_PrimitiveTriangleIndicesEXT) BuiltIn PrimitiveTriangleIndicesEXT
102 Decorate 161(gl_SubgroupSize) RelaxedPrecision
103 Decorate 161(gl_SubgroupSize) BuiltIn SubgroupSize
104 Decorate 162(gl_SubgroupInvocationID) RelaxedPrecision
105 Decorate 162(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
106 Decorate 167(gl_NumSubgroups) BuiltIn NumSubgroups
107 Decorate 168(gl_SubgroupID) BuiltIn SubgroupId
108 Decorate 171(gl_SubgroupEqMask) BuiltIn SubgroupEqMaskKHR
109 Decorate 172(gl_SubgroupGeMask) BuiltIn SubgroupGeMaskKHR
110 Decorate 173(gl_SubgroupGtMask) BuiltIn SubgroupGtMaskKHR
111 Decorate 174(gl_SubgroupLeMask) BuiltIn SubgroupLeMaskKHR
112 Decorate 175(gl_SubgroupLtMask) BuiltIn SubgroupLtMaskKHR
113 Decorate 278 BuiltIn WorkgroupSize
117 9: TypeVector 8(float) 4
118 10: TypePointer Function 9(fvec4)
119 11: TypeFunction 2 10(ptr)
121 31: TypePointer Function 30(int)
122 33: TypeVector 30(int) 3
123 34: TypePointer Input 33(ivec3)
124 35(gl_LocalInvocationID): 34(ptr) Variable Input
125 36: 30(int) Constant 0
126 37: TypePointer Input 30(int)
127 41(gl_WorkGroupID): 34(ptr) Variable Input
128 45: 30(int) Constant 81
129 47: 30(int) Constant 32
130 50: 30(int) Constant 4
131 51: TypeArray 8(float) 50
132 52: 30(int) Constant 3
133 53: TypeArray 8(float) 52
134 54(gl_MeshPerVertexEXT): TypeStruct 9(fvec4) 8(float) 51 53
135 55: TypeArray 54(gl_MeshPerVertexEXT) 45
136 56: TypePointer Output 55
137 57(gl_MeshVerticesEXT): 56(ptr) Variable Output
139 60: 59(int) Constant 0
140 61: 8(float) Constant 1065353216
141 62: 9(fvec4) ConstantComposite 61 61 61 61
142 63: TypePointer Output 9(fvec4)
143 66: 59(int) Constant 1
144 67: 8(float) Constant 1073741824
145 68: TypePointer Output 8(float)
146 71: 59(int) Constant 2
147 72: 59(int) Constant 3
148 73: 8(float) Constant 1077936128
149 76: 8(float) Constant 1082130432
150 78: 30(int) Constant 1
151 79: 30(int) Constant 264
152 80: 30(int) Constant 2
154 106(gl_MeshPerPrimitiveEXT): TypeStruct 59(int) 59(int) 59(int) 105(bool) 59(int)
155 107: TypeArray 106(gl_MeshPerPrimitiveEXT) 47
156 108: TypePointer Output 107
157 109(gl_MeshPrimitivesEXT): 108(ptr) Variable Output
158 111: 59(int) Constant 6
159 112: TypePointer Output 59(int)
160 115: 59(int) Constant 7
161 118: 59(int) Constant 8
162 121: 105(bool) ConstantFalse
163 122: TypePointer Output 105(bool)
164 145: TypeArray 33(ivec3) 47
165 146: TypePointer Output 145
166 147(gl_PrimitiveTriangleIndicesEXT): 146(ptr) Variable Output
167 148: 33(ivec3) ConstantComposite 78 78 78
168 149: TypePointer Output 33(ivec3)
169 153: 33(ivec3) ConstantComposite 80 80 80
170 161(gl_SubgroupSize): 37(ptr) Variable Input
171 162(gl_SubgroupInvocationID): 37(ptr) Variable Input
172 163: 30(int) Constant 3400
173 164: 30(int) Constant 72
174 165: 30(int) Constant 2056
175 167(gl_NumSubgroups): 37(ptr) Variable Input
176 168(gl_SubgroupID): 37(ptr) Variable Input
177 169: TypeVector 30(int) 4
178 170: TypePointer Input 169(ivec4)
179 171(gl_SubgroupEqMask): 170(ptr) Variable Input
180 172(gl_SubgroupGeMask): 170(ptr) Variable Input
181 173(gl_SubgroupGtMask): 170(ptr) Variable Input
182 174(gl_SubgroupLeMask): 170(ptr) Variable Input
183 175(gl_SubgroupLtMask): 170(ptr) Variable Input
184 180: TypePointer Function 169(ivec4)
185 183: 169(ivec4) ConstantComposite 78 78 78 78
186 197: 105(bool) ConstantTrue
187 254: 30(int) Constant 85
188 255: 169(ivec4) ConstantComposite 254 36 36 36
189 278: 33(ivec3) ConstantComposite 47 78 78
190 4(main): 2 Function None 3
192 32(iid): 31(ptr) Variable Function
193 40(gid): 31(ptr) Variable Function
194 44(vertexCount): 31(ptr) Variable Function
195 46(primitiveCount): 31(ptr) Variable Function
196 38: 37(ptr) AccessChain 35(gl_LocalInvocationID) 36
199 42: 37(ptr) AccessChain 41(gl_WorkGroupID) 36
202 Store 44(vertexCount) 45
203 Store 46(primitiveCount) 47
204 48: 30(int) Load 44(vertexCount)
205 49: 30(int) Load 46(primitiveCount)
206 SetMeshOutputsEXT 48 49
207 58: 30(int) Load 32(iid)
208 64: 63(ptr) AccessChain 57(gl_MeshVerticesEXT) 58 60
210 65: 30(int) Load 32(iid)
211 69: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 65 66
213 70: 30(int) Load 32(iid)
214 74: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 70 71 72
216 75: 30(int) Load 32(iid)
217 77: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 75 72 71
220 ControlBarrier 80 80 79
221 81: 30(int) Load 32(iid)
222 82: 30(int) IAdd 81 78
223 83: 30(int) Load 32(iid)
224 84: 63(ptr) AccessChain 57(gl_MeshVerticesEXT) 83 60
226 86: 63(ptr) AccessChain 57(gl_MeshVerticesEXT) 82 60
228 87: 30(int) Load 32(iid)
229 88: 30(int) IAdd 87 78
230 89: 30(int) Load 32(iid)
231 90: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 89 66
233 92: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 88 66
235 93: 30(int) Load 32(iid)
236 94: 30(int) IAdd 93 78
237 95: 30(int) Load 32(iid)
238 96: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 95 71 72
240 98: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 94 71 72
242 99: 30(int) Load 32(iid)
243 100: 30(int) IAdd 99 78
244 101: 30(int) Load 32(iid)
245 102: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 101 72 71
246 103: 8(float) Load 102
247 104: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 100 72 71
250 ControlBarrier 80 80 79
251 110: 30(int) Load 32(iid)
252 113: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 110 60
254 114: 30(int) Load 32(iid)
255 116: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 114 66
257 117: 30(int) Load 32(iid)
258 119: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 117 71
260 120: 30(int) Load 32(iid)
261 123: 122(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 120 72
264 ControlBarrier 80 80 79
265 124: 30(int) Load 32(iid)
266 125: 30(int) IAdd 124 78
267 126: 30(int) Load 32(iid)
268 127: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 126 60
269 128: 59(int) Load 127
270 129: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 125 60
272 130: 30(int) Load 32(iid)
273 131: 30(int) IAdd 130 78
274 132: 30(int) Load 32(iid)
275 133: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 132 66
276 134: 59(int) Load 133
277 135: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 131 66
279 136: 30(int) Load 32(iid)
280 137: 30(int) IAdd 136 78
281 138: 30(int) Load 32(iid)
282 139: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 138 71
283 140: 59(int) Load 139
284 141: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 137 71
286 142: 30(int) Load 32(iid)
287 143: 30(int) IAdd 142 78
288 144: 122(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 143 72
291 ControlBarrier 80 80 79
292 150: 149(ptr) AccessChain 147(gl_PrimitiveTriangleIndicesEXT) 60
294 151: 30(int) Load 46(primitiveCount)
295 152: 30(int) ISub 151 78
296 154: 149(ptr) AccessChain 147(gl_PrimitiveTriangleIndicesEXT) 152
298 155: 30(int) Load 40(gid)
299 156: 30(int) Load 40(gid)
300 157: 30(int) ISub 156 78
301 158: 149(ptr) AccessChain 147(gl_PrimitiveTriangleIndicesEXT) 157
302 159: 33(ivec3) Load 158
303 160: 149(ptr) AccessChain 147(gl_PrimitiveTriangleIndicesEXT) 155
306 ControlBarrier 80 80 79
309 6(basic_works(): 2 Function None 3
311 ControlBarrier 52 52 163
315 166: 105(bool) GroupNonUniformElect 52
319 13(ballot_works(vf4;): 2 Function None 11
320 12(f4): 10(ptr) FunctionParameter
322 181(ballot): 180(ptr) Variable Function
323 176: 9(fvec4) Load 12(f4)
324 177: 9(fvec4) GroupNonUniformBroadcast 52 176 36
325 178: 9(fvec4) Load 12(f4)
326 179: 9(fvec4) GroupNonUniformBroadcastFirst 52 178
327 182: 169(ivec4) GroupNonUniformBallot 52 121
328 Store 181(ballot) 182
329 184: 105(bool) GroupNonUniformInverseBallot 52 183
330 185: 169(ivec4) Load 181(ballot)
331 186: 105(bool) GroupNonUniformBallotBitExtract 52 185 36
332 187: 169(ivec4) Load 181(ballot)
333 188: 30(int) GroupNonUniformBallotBitCount 52 Reduce 187
334 189: 169(ivec4) Load 181(ballot)
335 190: 30(int) GroupNonUniformBallotBitCount 52 InclusiveScan 189
336 191: 169(ivec4) Load 181(ballot)
337 192: 30(int) GroupNonUniformBallotBitCount 52 ExclusiveScan 191
338 193: 169(ivec4) Load 181(ballot)
339 194: 30(int) GroupNonUniformBallotFindLSB 52 193
340 195: 169(ivec4) Load 181(ballot)
341 196: 30(int) GroupNonUniformBallotFindMSB 52 195
344 16(vote_works(vf4;): 2 Function None 11
345 15(f4): 10(ptr) FunctionParameter
347 198: 105(bool) GroupNonUniformAll 52 197
348 199: 105(bool) GroupNonUniformAny 52 121
349 200: 9(fvec4) Load 15(f4)
350 201: 105(bool) GroupNonUniformAllEqual 52 200
353 19(shuffle_works(vf4;): 2 Function None 11
354 18(f4): 10(ptr) FunctionParameter
356 202: 9(fvec4) Load 18(f4)
357 203: 9(fvec4) GroupNonUniformShuffle 52 202 36
358 204: 9(fvec4) Load 18(f4)
359 205: 9(fvec4) GroupNonUniformShuffleXor 52 204 78
360 206: 9(fvec4) Load 18(f4)
361 207: 9(fvec4) GroupNonUniformShuffleUp 52 206 78
362 208: 9(fvec4) Load 18(f4)
363 209: 9(fvec4) GroupNonUniformShuffleDown 52 208 78
366 22(arith_works(vf4;): 2 Function None 11
367 21(f4): 10(ptr) FunctionParameter
369 218(ballot): 180(ptr) Variable Function
370 210: 9(fvec4) Load 21(f4)
371 211: 9(fvec4) GroupNonUniformFAdd 52 Reduce 210
372 212: 9(fvec4) Load 21(f4)
373 213: 9(fvec4) GroupNonUniformFMul 52 Reduce 212
374 214: 9(fvec4) Load 21(f4)
375 215: 9(fvec4) GroupNonUniformFMin 52 Reduce 214
376 216: 9(fvec4) Load 21(f4)
377 217: 9(fvec4) GroupNonUniformFMax 52 Reduce 216
378 219: 169(ivec4) Load 218(ballot)
379 220: 169(ivec4) GroupNonUniformBitwiseAnd 52 Reduce 219
380 221: 169(ivec4) Load 218(ballot)
381 222: 169(ivec4) GroupNonUniformBitwiseOr 52 Reduce 221
382 223: 169(ivec4) Load 218(ballot)
383 224: 169(ivec4) GroupNonUniformBitwiseXor 52 Reduce 223
384 225: 9(fvec4) Load 21(f4)
385 226: 9(fvec4) GroupNonUniformFAdd 52 InclusiveScan 225
386 227: 9(fvec4) Load 21(f4)
387 228: 9(fvec4) GroupNonUniformFMul 52 InclusiveScan 227
388 229: 9(fvec4) Load 21(f4)
389 230: 9(fvec4) GroupNonUniformFMin 52 InclusiveScan 229
390 231: 9(fvec4) Load 21(f4)
391 232: 9(fvec4) GroupNonUniformFMax 52 InclusiveScan 231
392 233: 169(ivec4) Load 218(ballot)
393 234: 169(ivec4) GroupNonUniformBitwiseAnd 52 InclusiveScan 233
394 235: 169(ivec4) Load 218(ballot)
395 236: 169(ivec4) GroupNonUniformBitwiseOr 52 InclusiveScan 235
396 237: 169(ivec4) Load 218(ballot)
397 238: 169(ivec4) GroupNonUniformBitwiseXor 52 InclusiveScan 237
398 239: 9(fvec4) Load 21(f4)
399 240: 9(fvec4) GroupNonUniformFAdd 52 ExclusiveScan 239
400 241: 9(fvec4) Load 21(f4)
401 242: 9(fvec4) GroupNonUniformFMul 52 ExclusiveScan 241
402 243: 9(fvec4) Load 21(f4)
403 244: 9(fvec4) GroupNonUniformFMin 52 ExclusiveScan 243
404 245: 9(fvec4) Load 21(f4)
405 246: 9(fvec4) GroupNonUniformFMax 52 ExclusiveScan 245
406 247: 169(ivec4) Load 218(ballot)
407 248: 169(ivec4) GroupNonUniformBitwiseAnd 52 ExclusiveScan 247
408 249: 169(ivec4) Load 218(ballot)
409 250: 169(ivec4) GroupNonUniformBitwiseOr 52 ExclusiveScan 249
410 251: 169(ivec4) Load 218(ballot)
411 252: 169(ivec4) GroupNonUniformBitwiseXor 52 ExclusiveScan 251
414 25(clustered_works(vf4;): 2 Function None 11
415 24(f4): 10(ptr) FunctionParameter
417 253(ballot): 180(ptr) Variable Function
418 Store 253(ballot) 255
419 256: 9(fvec4) Load 24(f4)
420 257: 9(fvec4) GroupNonUniformFAdd 52 ClusteredReduce 256 80
421 258: 9(fvec4) Load 24(f4)
422 259: 9(fvec4) GroupNonUniformFMul 52 ClusteredReduce 258 80
423 260: 9(fvec4) Load 24(f4)
424 261: 9(fvec4) GroupNonUniformFMin 52 ClusteredReduce 260 80
425 262: 9(fvec4) Load 24(f4)
426 263: 9(fvec4) GroupNonUniformFMax 52 ClusteredReduce 262 80
427 264: 169(ivec4) Load 253(ballot)
428 265: 169(ivec4) GroupNonUniformBitwiseAnd 52 ClusteredReduce 264 80
429 266: 169(ivec4) Load 253(ballot)
430 267: 169(ivec4) GroupNonUniformBitwiseOr 52 ClusteredReduce 266 80
431 268: 169(ivec4) Load 253(ballot)
432 269: 169(ivec4) GroupNonUniformBitwiseXor 52 ClusteredReduce 268 80
435 28(quad_works(vf4;): 2 Function None 11
436 27(f4): 10(ptr) FunctionParameter
438 270: 9(fvec4) Load 27(f4)
439 271: 9(fvec4) GroupNonUniformQuadBroadcast 52 270 36
440 272: 9(fvec4) Load 27(f4)
441 273: 9(fvec4) GroupNonUniformQuadSwap 52 272 36
442 274: 9(fvec4) Load 27(f4)
443 275: 9(fvec4) GroupNonUniformQuadSwap 52 274 78
444 276: 9(fvec4) Load 27(f4)
445 277: 9(fvec4) GroupNonUniformQuadSwap 52 276 80