Merge pull request #3050 from Try/mesh-shader-ibo-fixup
mesh shader: fix implicit index-array size calculation for lines and triangles
This commit is contained in:
commit
1a8869e4d1
@ -1,7 +1,7 @@
|
|||||||
spv.460.subgroupEXT.mesh
|
spv.460.subgroupEXT.mesh
|
||||||
// Module Version 10400
|
// Module Version 10400
|
||||||
// Generated by (magic number): 8000b
|
// Generated by (magic number): 8000b
|
||||||
// Id's are bound by 280
|
// Id's are bound by 279
|
||||||
|
|
||||||
Capability ClipDistance
|
Capability ClipDistance
|
||||||
Capability CullDistance
|
Capability CullDistance
|
||||||
@ -19,7 +19,7 @@ spv.460.subgroupEXT.mesh
|
|||||||
Extension "SPV_KHR_fragment_shading_rate"
|
Extension "SPV_KHR_fragment_shading_rate"
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint MeshEXT 4 "main" 35 41 57 109 148 162 163 168 169 172 173 174 175 176
|
EntryPoint MeshEXT 4 "main" 35 41 57 109 147 161 162 167 168 171 172 173 174 175
|
||||||
ExecutionMode 4 LocalSize 32 1 1
|
ExecutionMode 4 LocalSize 32 1 1
|
||||||
ExecutionMode 4 OutputVertices 81
|
ExecutionMode 4 OutputVertices 81
|
||||||
ExecutionMode 4 OutputPrimitivesNV 32
|
ExecutionMode 4 OutputPrimitivesNV 32
|
||||||
@ -67,19 +67,19 @@ spv.460.subgroupEXT.mesh
|
|||||||
MemberName 106(gl_MeshPerPrimitiveEXT) 3 "gl_CullPrimitiveEXT"
|
MemberName 106(gl_MeshPerPrimitiveEXT) 3 "gl_CullPrimitiveEXT"
|
||||||
MemberName 106(gl_MeshPerPrimitiveEXT) 4 "gl_PrimitiveShadingRateEXT"
|
MemberName 106(gl_MeshPerPrimitiveEXT) 4 "gl_PrimitiveShadingRateEXT"
|
||||||
Name 109 "gl_MeshPrimitivesEXT"
|
Name 109 "gl_MeshPrimitivesEXT"
|
||||||
Name 148 "gl_PrimitiveTriangleIndicesEXT"
|
Name 147 "gl_PrimitiveTriangleIndicesEXT"
|
||||||
Name 162 "gl_SubgroupSize"
|
Name 161 "gl_SubgroupSize"
|
||||||
Name 163 "gl_SubgroupInvocationID"
|
Name 162 "gl_SubgroupInvocationID"
|
||||||
Name 168 "gl_NumSubgroups"
|
Name 167 "gl_NumSubgroups"
|
||||||
Name 169 "gl_SubgroupID"
|
Name 168 "gl_SubgroupID"
|
||||||
Name 172 "gl_SubgroupEqMask"
|
Name 171 "gl_SubgroupEqMask"
|
||||||
Name 173 "gl_SubgroupGeMask"
|
Name 172 "gl_SubgroupGeMask"
|
||||||
Name 174 "gl_SubgroupGtMask"
|
Name 173 "gl_SubgroupGtMask"
|
||||||
Name 175 "gl_SubgroupLeMask"
|
Name 174 "gl_SubgroupLeMask"
|
||||||
Name 176 "gl_SubgroupLtMask"
|
Name 175 "gl_SubgroupLtMask"
|
||||||
Name 182 "ballot"
|
Name 181 "ballot"
|
||||||
Name 219 "ballot"
|
Name 218 "ballot"
|
||||||
Name 254 "ballot"
|
Name 253 "ballot"
|
||||||
Decorate 35(gl_LocalInvocationID) BuiltIn LocalInvocationId
|
Decorate 35(gl_LocalInvocationID) BuiltIn LocalInvocationId
|
||||||
Decorate 41(gl_WorkGroupID) BuiltIn WorkgroupId
|
Decorate 41(gl_WorkGroupID) BuiltIn WorkgroupId
|
||||||
MemberDecorate 54(gl_MeshPerVertexEXT) 0 BuiltIn Position
|
MemberDecorate 54(gl_MeshPerVertexEXT) 0 BuiltIn Position
|
||||||
@ -98,19 +98,19 @@ spv.460.subgroupEXT.mesh
|
|||||||
MemberDecorate 106(gl_MeshPerPrimitiveEXT) 4 PerPrimitiveNV
|
MemberDecorate 106(gl_MeshPerPrimitiveEXT) 4 PerPrimitiveNV
|
||||||
MemberDecorate 106(gl_MeshPerPrimitiveEXT) 4 BuiltIn PrimitiveShadingRateKHR
|
MemberDecorate 106(gl_MeshPerPrimitiveEXT) 4 BuiltIn PrimitiveShadingRateKHR
|
||||||
Decorate 106(gl_MeshPerPrimitiveEXT) Block
|
Decorate 106(gl_MeshPerPrimitiveEXT) Block
|
||||||
Decorate 148(gl_PrimitiveTriangleIndicesEXT) BuiltIn PrimitiveTriangleIndicesEXT
|
Decorate 147(gl_PrimitiveTriangleIndicesEXT) BuiltIn PrimitiveTriangleIndicesEXT
|
||||||
Decorate 162(gl_SubgroupSize) RelaxedPrecision
|
Decorate 161(gl_SubgroupSize) RelaxedPrecision
|
||||||
Decorate 162(gl_SubgroupSize) BuiltIn SubgroupSize
|
Decorate 161(gl_SubgroupSize) BuiltIn SubgroupSize
|
||||||
Decorate 163(gl_SubgroupInvocationID) RelaxedPrecision
|
Decorate 162(gl_SubgroupInvocationID) RelaxedPrecision
|
||||||
Decorate 163(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
|
Decorate 162(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
|
||||||
Decorate 168(gl_NumSubgroups) BuiltIn NumSubgroups
|
Decorate 167(gl_NumSubgroups) BuiltIn NumSubgroups
|
||||||
Decorate 169(gl_SubgroupID) BuiltIn SubgroupId
|
Decorate 168(gl_SubgroupID) BuiltIn SubgroupId
|
||||||
Decorate 172(gl_SubgroupEqMask) BuiltIn SubgroupEqMaskKHR
|
Decorate 171(gl_SubgroupEqMask) BuiltIn SubgroupEqMaskKHR
|
||||||
Decorate 173(gl_SubgroupGeMask) BuiltIn SubgroupGeMaskKHR
|
Decorate 172(gl_SubgroupGeMask) BuiltIn SubgroupGeMaskKHR
|
||||||
Decorate 174(gl_SubgroupGtMask) BuiltIn SubgroupGtMaskKHR
|
Decorate 173(gl_SubgroupGtMask) BuiltIn SubgroupGtMaskKHR
|
||||||
Decorate 175(gl_SubgroupLeMask) BuiltIn SubgroupLeMaskKHR
|
Decorate 174(gl_SubgroupLeMask) BuiltIn SubgroupLeMaskKHR
|
||||||
Decorate 176(gl_SubgroupLtMask) BuiltIn SubgroupLtMaskKHR
|
Decorate 175(gl_SubgroupLtMask) BuiltIn SubgroupLtMaskKHR
|
||||||
Decorate 279 BuiltIn WorkgroupSize
|
Decorate 278 BuiltIn WorkgroupSize
|
||||||
2: TypeVoid
|
2: TypeVoid
|
||||||
3: TypeFunction 2
|
3: TypeFunction 2
|
||||||
8: TypeFloat 32
|
8: TypeFloat 32
|
||||||
@ -161,33 +161,32 @@ spv.460.subgroupEXT.mesh
|
|||||||
118: 59(int) Constant 8
|
118: 59(int) Constant 8
|
||||||
121: 105(bool) ConstantFalse
|
121: 105(bool) ConstantFalse
|
||||||
122: TypePointer Output 105(bool)
|
122: TypePointer Output 105(bool)
|
||||||
145: 30(int) Constant 96
|
145: TypeArray 33(ivec3) 47
|
||||||
146: TypeArray 33(ivec3) 145
|
146: TypePointer Output 145
|
||||||
147: TypePointer Output 146
|
147(gl_PrimitiveTriangleIndicesEXT): 146(ptr) Variable Output
|
||||||
148(gl_PrimitiveTriangleIndicesEXT): 147(ptr) Variable Output
|
148: 33(ivec3) ConstantComposite 78 78 78
|
||||||
149: 33(ivec3) ConstantComposite 78 78 78
|
149: TypePointer Output 33(ivec3)
|
||||||
150: TypePointer Output 33(ivec3)
|
153: 33(ivec3) ConstantComposite 80 80 80
|
||||||
154: 33(ivec3) ConstantComposite 80 80 80
|
161(gl_SubgroupSize): 37(ptr) Variable Input
|
||||||
162(gl_SubgroupSize): 37(ptr) Variable Input
|
162(gl_SubgroupInvocationID): 37(ptr) Variable Input
|
||||||
163(gl_SubgroupInvocationID): 37(ptr) Variable Input
|
163: 30(int) Constant 3400
|
||||||
164: 30(int) Constant 3400
|
164: 30(int) Constant 72
|
||||||
165: 30(int) Constant 72
|
165: 30(int) Constant 2056
|
||||||
166: 30(int) Constant 2056
|
167(gl_NumSubgroups): 37(ptr) Variable Input
|
||||||
168(gl_NumSubgroups): 37(ptr) Variable Input
|
168(gl_SubgroupID): 37(ptr) Variable Input
|
||||||
169(gl_SubgroupID): 37(ptr) Variable Input
|
169: TypeVector 30(int) 4
|
||||||
170: TypeVector 30(int) 4
|
170: TypePointer Input 169(ivec4)
|
||||||
171: TypePointer Input 170(ivec4)
|
171(gl_SubgroupEqMask): 170(ptr) Variable Input
|
||||||
172(gl_SubgroupEqMask): 171(ptr) Variable Input
|
172(gl_SubgroupGeMask): 170(ptr) Variable Input
|
||||||
173(gl_SubgroupGeMask): 171(ptr) Variable Input
|
173(gl_SubgroupGtMask): 170(ptr) Variable Input
|
||||||
174(gl_SubgroupGtMask): 171(ptr) Variable Input
|
174(gl_SubgroupLeMask): 170(ptr) Variable Input
|
||||||
175(gl_SubgroupLeMask): 171(ptr) Variable Input
|
175(gl_SubgroupLtMask): 170(ptr) Variable Input
|
||||||
176(gl_SubgroupLtMask): 171(ptr) Variable Input
|
180: TypePointer Function 169(ivec4)
|
||||||
181: TypePointer Function 170(ivec4)
|
183: 169(ivec4) ConstantComposite 78 78 78 78
|
||||||
184: 170(ivec4) ConstantComposite 78 78 78 78
|
197: 105(bool) ConstantTrue
|
||||||
198: 105(bool) ConstantTrue
|
254: 30(int) Constant 85
|
||||||
255: 30(int) Constant 85
|
255: 169(ivec4) ConstantComposite 254 36 36 36
|
||||||
256: 170(ivec4) ConstantComposite 255 36 36 36
|
278: 33(ivec3) ConstantComposite 47 78 78
|
||||||
279: 33(ivec3) ConstantComposite 47 78 78
|
|
||||||
4(main): 2 Function None 3
|
4(main): 2 Function None 3
|
||||||
5: Label
|
5: Label
|
||||||
32(iid): 31(ptr) Variable Function
|
32(iid): 31(ptr) Variable Function
|
||||||
@ -290,159 +289,159 @@ spv.460.subgroupEXT.mesh
|
|||||||
Store 144 121
|
Store 144 121
|
||||||
MemoryBarrier 78 79
|
MemoryBarrier 78 79
|
||||||
ControlBarrier 80 80 79
|
ControlBarrier 80 80 79
|
||||||
151: 150(ptr) AccessChain 148(gl_PrimitiveTriangleIndicesEXT) 60
|
150: 149(ptr) AccessChain 147(gl_PrimitiveTriangleIndicesEXT) 60
|
||||||
Store 151 149
|
Store 150 148
|
||||||
152: 30(int) Load 46(primitiveCount)
|
151: 30(int) Load 46(primitiveCount)
|
||||||
153: 30(int) ISub 152 78
|
152: 30(int) ISub 151 78
|
||||||
155: 150(ptr) AccessChain 148(gl_PrimitiveTriangleIndicesEXT) 153
|
154: 149(ptr) AccessChain 147(gl_PrimitiveTriangleIndicesEXT) 152
|
||||||
Store 155 154
|
Store 154 153
|
||||||
|
155: 30(int) Load 40(gid)
|
||||||
156: 30(int) Load 40(gid)
|
156: 30(int) Load 40(gid)
|
||||||
157: 30(int) Load 40(gid)
|
157: 30(int) ISub 156 78
|
||||||
158: 30(int) ISub 157 78
|
158: 149(ptr) AccessChain 147(gl_PrimitiveTriangleIndicesEXT) 157
|
||||||
159: 150(ptr) AccessChain 148(gl_PrimitiveTriangleIndicesEXT) 158
|
159: 33(ivec3) Load 158
|
||||||
160: 33(ivec3) Load 159
|
160: 149(ptr) AccessChain 147(gl_PrimitiveTriangleIndicesEXT) 155
|
||||||
161: 150(ptr) AccessChain 148(gl_PrimitiveTriangleIndicesEXT) 156
|
Store 160 159
|
||||||
Store 161 160
|
|
||||||
MemoryBarrier 78 79
|
MemoryBarrier 78 79
|
||||||
ControlBarrier 80 80 79
|
ControlBarrier 80 80 79
|
||||||
Return
|
Return
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
6(basic_works(): 2 Function None 3
|
6(basic_works(): 2 Function None 3
|
||||||
7: Label
|
7: Label
|
||||||
ControlBarrier 52 52 164
|
ControlBarrier 52 52 163
|
||||||
|
MemoryBarrier 52 163
|
||||||
MemoryBarrier 52 164
|
MemoryBarrier 52 164
|
||||||
MemoryBarrier 52 165
|
MemoryBarrier 52 165
|
||||||
MemoryBarrier 52 166
|
166: 105(bool) GroupNonUniformElect 52
|
||||||
167: 105(bool) GroupNonUniformElect 52
|
|
||||||
MemoryBarrier 52 79
|
MemoryBarrier 52 79
|
||||||
Return
|
Return
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
13(ballot_works(vf4;): 2 Function None 11
|
13(ballot_works(vf4;): 2 Function None 11
|
||||||
12(f4): 10(ptr) FunctionParameter
|
12(f4): 10(ptr) FunctionParameter
|
||||||
14: Label
|
14: Label
|
||||||
182(ballot): 181(ptr) Variable Function
|
181(ballot): 180(ptr) Variable Function
|
||||||
177: 9(fvec4) Load 12(f4)
|
176: 9(fvec4) Load 12(f4)
|
||||||
178: 9(fvec4) GroupNonUniformBroadcast 52 177 36
|
177: 9(fvec4) GroupNonUniformBroadcast 52 176 36
|
||||||
179: 9(fvec4) Load 12(f4)
|
178: 9(fvec4) Load 12(f4)
|
||||||
180: 9(fvec4) GroupNonUniformBroadcastFirst 52 179
|
179: 9(fvec4) GroupNonUniformBroadcastFirst 52 178
|
||||||
183: 170(ivec4) GroupNonUniformBallot 52 121
|
182: 169(ivec4) GroupNonUniformBallot 52 121
|
||||||
Store 182(ballot) 183
|
Store 181(ballot) 182
|
||||||
185: 105(bool) GroupNonUniformInverseBallot 52 184
|
184: 105(bool) GroupNonUniformInverseBallot 52 183
|
||||||
186: 170(ivec4) Load 182(ballot)
|
185: 169(ivec4) Load 181(ballot)
|
||||||
187: 105(bool) GroupNonUniformBallotBitExtract 52 186 36
|
186: 105(bool) GroupNonUniformBallotBitExtract 52 185 36
|
||||||
188: 170(ivec4) Load 182(ballot)
|
187: 169(ivec4) Load 181(ballot)
|
||||||
189: 30(int) GroupNonUniformBallotBitCount 52 Reduce 188
|
188: 30(int) GroupNonUniformBallotBitCount 52 Reduce 187
|
||||||
190: 170(ivec4) Load 182(ballot)
|
189: 169(ivec4) Load 181(ballot)
|
||||||
191: 30(int) GroupNonUniformBallotBitCount 52 InclusiveScan 190
|
190: 30(int) GroupNonUniformBallotBitCount 52 InclusiveScan 189
|
||||||
192: 170(ivec4) Load 182(ballot)
|
191: 169(ivec4) Load 181(ballot)
|
||||||
193: 30(int) GroupNonUniformBallotBitCount 52 ExclusiveScan 192
|
192: 30(int) GroupNonUniformBallotBitCount 52 ExclusiveScan 191
|
||||||
194: 170(ivec4) Load 182(ballot)
|
193: 169(ivec4) Load 181(ballot)
|
||||||
195: 30(int) GroupNonUniformBallotFindLSB 52 194
|
194: 30(int) GroupNonUniformBallotFindLSB 52 193
|
||||||
196: 170(ivec4) Load 182(ballot)
|
195: 169(ivec4) Load 181(ballot)
|
||||||
197: 30(int) GroupNonUniformBallotFindMSB 52 196
|
196: 30(int) GroupNonUniformBallotFindMSB 52 195
|
||||||
Return
|
Return
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
16(vote_works(vf4;): 2 Function None 11
|
16(vote_works(vf4;): 2 Function None 11
|
||||||
15(f4): 10(ptr) FunctionParameter
|
15(f4): 10(ptr) FunctionParameter
|
||||||
17: Label
|
17: Label
|
||||||
199: 105(bool) GroupNonUniformAll 52 198
|
198: 105(bool) GroupNonUniformAll 52 197
|
||||||
200: 105(bool) GroupNonUniformAny 52 121
|
199: 105(bool) GroupNonUniformAny 52 121
|
||||||
201: 9(fvec4) Load 15(f4)
|
200: 9(fvec4) Load 15(f4)
|
||||||
202: 105(bool) GroupNonUniformAllEqual 52 201
|
201: 105(bool) GroupNonUniformAllEqual 52 200
|
||||||
Return
|
Return
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
19(shuffle_works(vf4;): 2 Function None 11
|
19(shuffle_works(vf4;): 2 Function None 11
|
||||||
18(f4): 10(ptr) FunctionParameter
|
18(f4): 10(ptr) FunctionParameter
|
||||||
20: Label
|
20: Label
|
||||||
203: 9(fvec4) Load 18(f4)
|
202: 9(fvec4) Load 18(f4)
|
||||||
204: 9(fvec4) GroupNonUniformShuffle 52 203 36
|
203: 9(fvec4) GroupNonUniformShuffle 52 202 36
|
||||||
205: 9(fvec4) Load 18(f4)
|
204: 9(fvec4) Load 18(f4)
|
||||||
206: 9(fvec4) GroupNonUniformShuffleXor 52 205 78
|
205: 9(fvec4) GroupNonUniformShuffleXor 52 204 78
|
||||||
207: 9(fvec4) Load 18(f4)
|
206: 9(fvec4) Load 18(f4)
|
||||||
208: 9(fvec4) GroupNonUniformShuffleUp 52 207 78
|
207: 9(fvec4) GroupNonUniformShuffleUp 52 206 78
|
||||||
209: 9(fvec4) Load 18(f4)
|
208: 9(fvec4) Load 18(f4)
|
||||||
210: 9(fvec4) GroupNonUniformShuffleDown 52 209 78
|
209: 9(fvec4) GroupNonUniformShuffleDown 52 208 78
|
||||||
Return
|
Return
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
22(arith_works(vf4;): 2 Function None 11
|
22(arith_works(vf4;): 2 Function None 11
|
||||||
21(f4): 10(ptr) FunctionParameter
|
21(f4): 10(ptr) FunctionParameter
|
||||||
23: Label
|
23: Label
|
||||||
219(ballot): 181(ptr) Variable Function
|
218(ballot): 180(ptr) Variable Function
|
||||||
211: 9(fvec4) Load 21(f4)
|
210: 9(fvec4) Load 21(f4)
|
||||||
212: 9(fvec4) GroupNonUniformFAdd 52 Reduce 211
|
211: 9(fvec4) GroupNonUniformFAdd 52 Reduce 210
|
||||||
213: 9(fvec4) Load 21(f4)
|
212: 9(fvec4) Load 21(f4)
|
||||||
214: 9(fvec4) GroupNonUniformFMul 52 Reduce 213
|
213: 9(fvec4) GroupNonUniformFMul 52 Reduce 212
|
||||||
215: 9(fvec4) Load 21(f4)
|
214: 9(fvec4) Load 21(f4)
|
||||||
216: 9(fvec4) GroupNonUniformFMin 52 Reduce 215
|
215: 9(fvec4) GroupNonUniformFMin 52 Reduce 214
|
||||||
217: 9(fvec4) Load 21(f4)
|
216: 9(fvec4) Load 21(f4)
|
||||||
218: 9(fvec4) GroupNonUniformFMax 52 Reduce 217
|
217: 9(fvec4) GroupNonUniformFMax 52 Reduce 216
|
||||||
220: 170(ivec4) Load 219(ballot)
|
219: 169(ivec4) Load 218(ballot)
|
||||||
221: 170(ivec4) GroupNonUniformBitwiseAnd 52 Reduce 220
|
220: 169(ivec4) GroupNonUniformBitwiseAnd 52 Reduce 219
|
||||||
222: 170(ivec4) Load 219(ballot)
|
221: 169(ivec4) Load 218(ballot)
|
||||||
223: 170(ivec4) GroupNonUniformBitwiseOr 52 Reduce 222
|
222: 169(ivec4) GroupNonUniformBitwiseOr 52 Reduce 221
|
||||||
224: 170(ivec4) Load 219(ballot)
|
223: 169(ivec4) Load 218(ballot)
|
||||||
225: 170(ivec4) GroupNonUniformBitwiseXor 52 Reduce 224
|
224: 169(ivec4) GroupNonUniformBitwiseXor 52 Reduce 223
|
||||||
226: 9(fvec4) Load 21(f4)
|
225: 9(fvec4) Load 21(f4)
|
||||||
227: 9(fvec4) GroupNonUniformFAdd 52 InclusiveScan 226
|
226: 9(fvec4) GroupNonUniformFAdd 52 InclusiveScan 225
|
||||||
228: 9(fvec4) Load 21(f4)
|
227: 9(fvec4) Load 21(f4)
|
||||||
229: 9(fvec4) GroupNonUniformFMul 52 InclusiveScan 228
|
228: 9(fvec4) GroupNonUniformFMul 52 InclusiveScan 227
|
||||||
230: 9(fvec4) Load 21(f4)
|
229: 9(fvec4) Load 21(f4)
|
||||||
231: 9(fvec4) GroupNonUniformFMin 52 InclusiveScan 230
|
230: 9(fvec4) GroupNonUniformFMin 52 InclusiveScan 229
|
||||||
232: 9(fvec4) Load 21(f4)
|
231: 9(fvec4) Load 21(f4)
|
||||||
233: 9(fvec4) GroupNonUniformFMax 52 InclusiveScan 232
|
232: 9(fvec4) GroupNonUniformFMax 52 InclusiveScan 231
|
||||||
234: 170(ivec4) Load 219(ballot)
|
233: 169(ivec4) Load 218(ballot)
|
||||||
235: 170(ivec4) GroupNonUniformBitwiseAnd 52 InclusiveScan 234
|
234: 169(ivec4) GroupNonUniformBitwiseAnd 52 InclusiveScan 233
|
||||||
236: 170(ivec4) Load 219(ballot)
|
235: 169(ivec4) Load 218(ballot)
|
||||||
237: 170(ivec4) GroupNonUniformBitwiseOr 52 InclusiveScan 236
|
236: 169(ivec4) GroupNonUniformBitwiseOr 52 InclusiveScan 235
|
||||||
238: 170(ivec4) Load 219(ballot)
|
237: 169(ivec4) Load 218(ballot)
|
||||||
239: 170(ivec4) GroupNonUniformBitwiseXor 52 InclusiveScan 238
|
238: 169(ivec4) GroupNonUniformBitwiseXor 52 InclusiveScan 237
|
||||||
240: 9(fvec4) Load 21(f4)
|
239: 9(fvec4) Load 21(f4)
|
||||||
241: 9(fvec4) GroupNonUniformFAdd 52 ExclusiveScan 240
|
240: 9(fvec4) GroupNonUniformFAdd 52 ExclusiveScan 239
|
||||||
242: 9(fvec4) Load 21(f4)
|
241: 9(fvec4) Load 21(f4)
|
||||||
243: 9(fvec4) GroupNonUniformFMul 52 ExclusiveScan 242
|
242: 9(fvec4) GroupNonUniformFMul 52 ExclusiveScan 241
|
||||||
244: 9(fvec4) Load 21(f4)
|
243: 9(fvec4) Load 21(f4)
|
||||||
245: 9(fvec4) GroupNonUniformFMin 52 ExclusiveScan 244
|
244: 9(fvec4) GroupNonUniformFMin 52 ExclusiveScan 243
|
||||||
246: 9(fvec4) Load 21(f4)
|
245: 9(fvec4) Load 21(f4)
|
||||||
247: 9(fvec4) GroupNonUniformFMax 52 ExclusiveScan 246
|
246: 9(fvec4) GroupNonUniformFMax 52 ExclusiveScan 245
|
||||||
248: 170(ivec4) Load 219(ballot)
|
247: 169(ivec4) Load 218(ballot)
|
||||||
249: 170(ivec4) GroupNonUniformBitwiseAnd 52 ExclusiveScan 248
|
248: 169(ivec4) GroupNonUniformBitwiseAnd 52 ExclusiveScan 247
|
||||||
250: 170(ivec4) Load 219(ballot)
|
249: 169(ivec4) Load 218(ballot)
|
||||||
251: 170(ivec4) GroupNonUniformBitwiseOr 52 ExclusiveScan 250
|
250: 169(ivec4) GroupNonUniformBitwiseOr 52 ExclusiveScan 249
|
||||||
252: 170(ivec4) Load 219(ballot)
|
251: 169(ivec4) Load 218(ballot)
|
||||||
253: 170(ivec4) GroupNonUniformBitwiseXor 52 ExclusiveScan 252
|
252: 169(ivec4) GroupNonUniformBitwiseXor 52 ExclusiveScan 251
|
||||||
Return
|
Return
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
25(clustered_works(vf4;): 2 Function None 11
|
25(clustered_works(vf4;): 2 Function None 11
|
||||||
24(f4): 10(ptr) FunctionParameter
|
24(f4): 10(ptr) FunctionParameter
|
||||||
26: Label
|
26: Label
|
||||||
254(ballot): 181(ptr) Variable Function
|
253(ballot): 180(ptr) Variable Function
|
||||||
Store 254(ballot) 256
|
Store 253(ballot) 255
|
||||||
257: 9(fvec4) Load 24(f4)
|
256: 9(fvec4) Load 24(f4)
|
||||||
258: 9(fvec4) GroupNonUniformFAdd 52 ClusteredReduce 257 80
|
257: 9(fvec4) GroupNonUniformFAdd 52 ClusteredReduce 256 80
|
||||||
259: 9(fvec4) Load 24(f4)
|
258: 9(fvec4) Load 24(f4)
|
||||||
260: 9(fvec4) GroupNonUniformFMul 52 ClusteredReduce 259 80
|
259: 9(fvec4) GroupNonUniformFMul 52 ClusteredReduce 258 80
|
||||||
261: 9(fvec4) Load 24(f4)
|
260: 9(fvec4) Load 24(f4)
|
||||||
262: 9(fvec4) GroupNonUniformFMin 52 ClusteredReduce 261 80
|
261: 9(fvec4) GroupNonUniformFMin 52 ClusteredReduce 260 80
|
||||||
263: 9(fvec4) Load 24(f4)
|
262: 9(fvec4) Load 24(f4)
|
||||||
264: 9(fvec4) GroupNonUniformFMax 52 ClusteredReduce 263 80
|
263: 9(fvec4) GroupNonUniformFMax 52 ClusteredReduce 262 80
|
||||||
265: 170(ivec4) Load 254(ballot)
|
264: 169(ivec4) Load 253(ballot)
|
||||||
266: 170(ivec4) GroupNonUniformBitwiseAnd 52 ClusteredReduce 265 80
|
265: 169(ivec4) GroupNonUniformBitwiseAnd 52 ClusteredReduce 264 80
|
||||||
267: 170(ivec4) Load 254(ballot)
|
266: 169(ivec4) Load 253(ballot)
|
||||||
268: 170(ivec4) GroupNonUniformBitwiseOr 52 ClusteredReduce 267 80
|
267: 169(ivec4) GroupNonUniformBitwiseOr 52 ClusteredReduce 266 80
|
||||||
269: 170(ivec4) Load 254(ballot)
|
268: 169(ivec4) Load 253(ballot)
|
||||||
270: 170(ivec4) GroupNonUniformBitwiseXor 52 ClusteredReduce 269 80
|
269: 169(ivec4) GroupNonUniformBitwiseXor 52 ClusteredReduce 268 80
|
||||||
Return
|
Return
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
28(quad_works(vf4;): 2 Function None 11
|
28(quad_works(vf4;): 2 Function None 11
|
||||||
27(f4): 10(ptr) FunctionParameter
|
27(f4): 10(ptr) FunctionParameter
|
||||||
29: Label
|
29: Label
|
||||||
271: 9(fvec4) Load 27(f4)
|
270: 9(fvec4) Load 27(f4)
|
||||||
272: 9(fvec4) GroupNonUniformQuadBroadcast 52 271 36
|
271: 9(fvec4) GroupNonUniformQuadBroadcast 52 270 36
|
||||||
273: 9(fvec4) Load 27(f4)
|
272: 9(fvec4) Load 27(f4)
|
||||||
274: 9(fvec4) GroupNonUniformQuadSwap 52 273 36
|
273: 9(fvec4) GroupNonUniformQuadSwap 52 272 36
|
||||||
275: 9(fvec4) Load 27(f4)
|
274: 9(fvec4) Load 27(f4)
|
||||||
276: 9(fvec4) GroupNonUniformQuadSwap 52 275 78
|
275: 9(fvec4) GroupNonUniformQuadSwap 52 274 78
|
||||||
277: 9(fvec4) Load 27(f4)
|
276: 9(fvec4) Load 27(f4)
|
||||||
278: 9(fvec4) GroupNonUniformQuadSwap 52 277 80
|
277: 9(fvec4) GroupNonUniformQuadSwap 52 276 80
|
||||||
Return
|
Return
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
spv.ext.meshShaderBuiltins.mesh
|
spv.ext.meshShaderBuiltins.mesh
|
||||||
// Module Version 10400
|
// Module Version 10400
|
||||||
// Generated by (magic number): 8000b
|
// Generated by (magic number): 8000b
|
||||||
// Id's are bound by 159
|
// Id's are bound by 158
|
||||||
|
|
||||||
Capability ClipDistance
|
Capability ClipDistance
|
||||||
Capability CullDistance
|
Capability CullDistance
|
||||||
@ -13,7 +13,7 @@ spv.ext.meshShaderBuiltins.mesh
|
|||||||
Extension "SPV_KHR_fragment_shading_rate"
|
Extension "SPV_KHR_fragment_shading_rate"
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint MeshEXT 4 "main" 13 19 24 41 93 135 153 156
|
EntryPoint MeshEXT 4 "main" 13 19 24 41 93 134 152 155
|
||||||
ExecutionMode 4 LocalSize 32 1 1
|
ExecutionMode 4 LocalSize 32 1 1
|
||||||
ExecutionMode 4 OutputVertices 81
|
ExecutionMode 4 OutputVertices 81
|
||||||
ExecutionMode 4 OutputPrimitivesNV 32
|
ExecutionMode 4 OutputPrimitivesNV 32
|
||||||
@ -45,11 +45,11 @@ spv.ext.meshShaderBuiltins.mesh
|
|||||||
MemberName 90(gl_MeshPerPrimitiveEXT) 3 "gl_CullPrimitiveEXT"
|
MemberName 90(gl_MeshPerPrimitiveEXT) 3 "gl_CullPrimitiveEXT"
|
||||||
MemberName 90(gl_MeshPerPrimitiveEXT) 4 "gl_PrimitiveShadingRateEXT"
|
MemberName 90(gl_MeshPerPrimitiveEXT) 4 "gl_PrimitiveShadingRateEXT"
|
||||||
Name 93 "gl_MeshPrimitivesEXT"
|
Name 93 "gl_MeshPrimitivesEXT"
|
||||||
Name 135 "gl_PrimitiveTriangleIndicesEXT"
|
Name 134 "gl_PrimitiveTriangleIndicesEXT"
|
||||||
Name 151 "id"
|
Name 150 "id"
|
||||||
Name 153 "gl_DrawIDARB"
|
Name 152 "gl_DrawIDARB"
|
||||||
Name 155 "viewIdx"
|
Name 154 "viewIdx"
|
||||||
Name 156 "gl_ViewIndex"
|
Name 155 "gl_ViewIndex"
|
||||||
Decorate 13(gl_LocalInvocationID) BuiltIn LocalInvocationId
|
Decorate 13(gl_LocalInvocationID) BuiltIn LocalInvocationId
|
||||||
Decorate 19(gl_WorkGroupID) BuiltIn WorkgroupId
|
Decorate 19(gl_WorkGroupID) BuiltIn WorkgroupId
|
||||||
Decorate 24(gl_NumWorkGroups) BuiltIn NumWorkgroups
|
Decorate 24(gl_NumWorkGroups) BuiltIn NumWorkgroups
|
||||||
@ -69,10 +69,10 @@ spv.ext.meshShaderBuiltins.mesh
|
|||||||
MemberDecorate 90(gl_MeshPerPrimitiveEXT) 4 PerPrimitiveNV
|
MemberDecorate 90(gl_MeshPerPrimitiveEXT) 4 PerPrimitiveNV
|
||||||
MemberDecorate 90(gl_MeshPerPrimitiveEXT) 4 BuiltIn PrimitiveShadingRateKHR
|
MemberDecorate 90(gl_MeshPerPrimitiveEXT) 4 BuiltIn PrimitiveShadingRateKHR
|
||||||
Decorate 90(gl_MeshPerPrimitiveEXT) Block
|
Decorate 90(gl_MeshPerPrimitiveEXT) Block
|
||||||
Decorate 135(gl_PrimitiveTriangleIndicesEXT) BuiltIn PrimitiveTriangleIndicesEXT
|
Decorate 134(gl_PrimitiveTriangleIndicesEXT) BuiltIn PrimitiveTriangleIndicesEXT
|
||||||
Decorate 153(gl_DrawIDARB) BuiltIn DrawIndex
|
Decorate 152(gl_DrawIDARB) BuiltIn DrawIndex
|
||||||
Decorate 156(gl_ViewIndex) BuiltIn ViewIndex
|
Decorate 155(gl_ViewIndex) BuiltIn ViewIndex
|
||||||
Decorate 158 BuiltIn WorkgroupSize
|
Decorate 157 BuiltIn WorkgroupSize
|
||||||
2: TypeVoid
|
2: TypeVoid
|
||||||
3: TypeFunction 2
|
3: TypeFunction 2
|
||||||
8: TypeInt 32 0
|
8: TypeInt 32 0
|
||||||
@ -123,19 +123,18 @@ spv.ext.meshShaderBuiltins.mesh
|
|||||||
102: 43(int) Constant 8
|
102: 43(int) Constant 8
|
||||||
105: 89(bool) ConstantFalse
|
105: 89(bool) ConstantFalse
|
||||||
106: TypePointer Output 89(bool)
|
106: TypePointer Output 89(bool)
|
||||||
132: 8(int) Constant 96
|
132: TypeArray 11(ivec3) 29
|
||||||
133: TypeArray 11(ivec3) 132
|
133: TypePointer Output 132
|
||||||
134: TypePointer Output 133
|
134(gl_PrimitiveTriangleIndicesEXT): 133(ptr) Variable Output
|
||||||
135(gl_PrimitiveTriangleIndicesEXT): 134(ptr) Variable Output
|
135: 8(int) Constant 257
|
||||||
136: 8(int) Constant 257
|
136: 11(ivec3) ConstantComposite 135 135 135
|
||||||
137: 11(ivec3) ConstantComposite 136 136 136
|
137: TypePointer Output 11(ivec3)
|
||||||
138: TypePointer Output 11(ivec3)
|
141: 11(ivec3) ConstantComposite 64 64 64
|
||||||
142: 11(ivec3) ConstantComposite 64 64 64
|
149: TypePointer Function 43(int)
|
||||||
150: TypePointer Function 43(int)
|
151: TypePointer Input 43(int)
|
||||||
152: TypePointer Input 43(int)
|
152(gl_DrawIDARB): 151(ptr) Variable Input
|
||||||
153(gl_DrawIDARB): 152(ptr) Variable Input
|
155(gl_ViewIndex): 151(ptr) Variable Input
|
||||||
156(gl_ViewIndex): 152(ptr) Variable Input
|
157: 11(ivec3) ConstantComposite 29 62 62
|
||||||
158: 11(ivec3) ConstantComposite 29 62 62
|
|
||||||
4(main): 2 Function None 3
|
4(main): 2 Function None 3
|
||||||
5: Label
|
5: Label
|
||||||
10(iid): 9(ptr) Variable Function
|
10(iid): 9(ptr) Variable Function
|
||||||
@ -244,30 +243,30 @@ spv.ext.meshShaderBuiltins.mesh
|
|||||||
Store 131 130
|
Store 131 130
|
||||||
MemoryBarrier 62 63
|
MemoryBarrier 62 63
|
||||||
ControlBarrier 64 64 63
|
ControlBarrier 64 64 63
|
||||||
139: 138(ptr) AccessChain 135(gl_PrimitiveTriangleIndicesEXT) 44
|
138: 137(ptr) AccessChain 134(gl_PrimitiveTriangleIndicesEXT) 44
|
||||||
Store 139 137
|
Store 138 136
|
||||||
140: 8(int) Load 28(primitiveCount)
|
139: 8(int) Load 28(primitiveCount)
|
||||||
141: 8(int) ISub 140 62
|
140: 8(int) ISub 139 62
|
||||||
143: 138(ptr) AccessChain 135(gl_PrimitiveTriangleIndicesEXT) 141
|
142: 137(ptr) AccessChain 134(gl_PrimitiveTriangleIndicesEXT) 140
|
||||||
Store 143 142
|
Store 142 141
|
||||||
|
143: 8(int) Load 18(gid)
|
||||||
144: 8(int) Load 18(gid)
|
144: 8(int) Load 18(gid)
|
||||||
145: 8(int) Load 18(gid)
|
145: 8(int) ISub 144 62
|
||||||
146: 8(int) ISub 145 62
|
146: 137(ptr) AccessChain 134(gl_PrimitiveTriangleIndicesEXT) 145
|
||||||
147: 138(ptr) AccessChain 135(gl_PrimitiveTriangleIndicesEXT) 146
|
147: 11(ivec3) Load 146
|
||||||
148: 11(ivec3) Load 147
|
148: 137(ptr) AccessChain 134(gl_PrimitiveTriangleIndicesEXT) 143
|
||||||
149: 138(ptr) AccessChain 135(gl_PrimitiveTriangleIndicesEXT) 144
|
Store 148 147
|
||||||
Store 149 148
|
|
||||||
MemoryBarrier 62 63
|
MemoryBarrier 62 63
|
||||||
ControlBarrier 64 64 63
|
ControlBarrier 64 64 63
|
||||||
Return
|
Return
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
6(testAdditionalBuiltins(): 2 Function None 3
|
6(testAdditionalBuiltins(): 2 Function None 3
|
||||||
7: Label
|
7: Label
|
||||||
151(id): 150(ptr) Variable Function
|
150(id): 149(ptr) Variable Function
|
||||||
155(viewIdx): 150(ptr) Variable Function
|
154(viewIdx): 149(ptr) Variable Function
|
||||||
154: 43(int) Load 153(gl_DrawIDARB)
|
153: 43(int) Load 152(gl_DrawIDARB)
|
||||||
Store 151(id) 154
|
Store 150(id) 153
|
||||||
157: 43(int) Load 156(gl_ViewIndex)
|
156: 43(int) Load 155(gl_ViewIndex)
|
||||||
Store 155(viewIdx) 157
|
Store 154(viewIdx) 156
|
||||||
Return
|
Return
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|||||||
@ -836,12 +836,16 @@ int TParseContext::getIoArrayImplicitSize(const TQualifier &qualifier, TString *
|
|||||||
} else if (language == EShLangMesh) {
|
} else if (language == EShLangMesh) {
|
||||||
unsigned int maxPrimitives =
|
unsigned int maxPrimitives =
|
||||||
intermediate.getPrimitives() != TQualifier::layoutNotSet ? intermediate.getPrimitives() : 0;
|
intermediate.getPrimitives() != TQualifier::layoutNotSet ? intermediate.getPrimitives() : 0;
|
||||||
if (qualifier.builtIn == EbvPrimitiveIndicesNV || qualifier.builtIn == EbvPrimitiveTriangleIndicesEXT ||
|
if (qualifier.builtIn == EbvPrimitiveIndicesNV) {
|
||||||
qualifier.builtIn == EbvPrimitiveLineIndicesEXT || qualifier.builtIn == EbvPrimitivePointIndicesEXT) {
|
|
||||||
expectedSize = maxPrimitives * TQualifier::mapGeometryToSize(intermediate.getOutputPrimitive());
|
expectedSize = maxPrimitives * TQualifier::mapGeometryToSize(intermediate.getOutputPrimitive());
|
||||||
str = "max_primitives*";
|
str = "max_primitives*";
|
||||||
str += TQualifier::getGeometryString(intermediate.getOutputPrimitive());
|
str += TQualifier::getGeometryString(intermediate.getOutputPrimitive());
|
||||||
}
|
}
|
||||||
|
else if (qualifier.builtIn == EbvPrimitiveTriangleIndicesEXT || qualifier.builtIn == EbvPrimitiveLineIndicesEXT ||
|
||||||
|
qualifier.builtIn == EbvPrimitivePointIndicesEXT) {
|
||||||
|
expectedSize = maxPrimitives;
|
||||||
|
str = "max_primitives";
|
||||||
|
}
|
||||||
else if (qualifier.isPerPrimitive()) {
|
else if (qualifier.isPerPrimitive()) {
|
||||||
expectedSize = maxPrimitives;
|
expectedSize = maxPrimitives;
|
||||||
str = "max_primitives";
|
str = "max_primitives";
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user