Before this change, using gl_MeshPrimitivesEXT in mesh shader would unconditionally create gl_MeshPrimitivesEXT.gl_PrimitiveShadingRateEXT field and add PrimitiveShadingRateKHR capability to the output SPIRV file, which would subsequently trigger validation errors when creating the shader module unless the application requested primitive shading rate feature. What should happen instead is that unless GL_EXT_fragment_shading_rate extension is enabled, we should not allow using gl_PrimitiveShadingRateEXT and should not emit the associated fields into the output. This change fixes this by using existing filterMember mechanism that is already used in a few other cases like this, and adjusting the required extension on the field member which will generate an error when gl_PrimitiveShadingRateEXT is used without enabling the extension.
443 lines
24 KiB
Plaintext
443 lines
24 KiB
Plaintext
spv.460.subgroupEXT.mesh
|
|
// Module Version 10400
|
|
// Generated by (magic number): 8000b
|
|
// Id's are bound by 279
|
|
|
|
Capability ClipDistance
|
|
Capability CullDistance
|
|
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 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 OutputVertices 81
|
|
ExecutionMode 4 OutputPrimitivesNV 32
|
|
ExecutionMode 4 OutputTrianglesNV
|
|
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 "vertexCount"
|
|
Name 46 "primitiveCount"
|
|
Name 54 "gl_MeshPerVertexEXT"
|
|
MemberName 54(gl_MeshPerVertexEXT) 0 "gl_Position"
|
|
MemberName 54(gl_MeshPerVertexEXT) 1 "gl_PointSize"
|
|
MemberName 54(gl_MeshPerVertexEXT) 2 "gl_ClipDistance"
|
|
MemberName 54(gl_MeshPerVertexEXT) 3 "gl_CullDistance"
|
|
Name 57 "gl_MeshVerticesEXT"
|
|
Name 106 "gl_MeshPerPrimitiveEXT"
|
|
MemberName 106(gl_MeshPerPrimitiveEXT) 0 "gl_PrimitiveID"
|
|
MemberName 106(gl_MeshPerPrimitiveEXT) 1 "gl_Layer"
|
|
MemberName 106(gl_MeshPerPrimitiveEXT) 2 "gl_ViewportIndex"
|
|
MemberName 106(gl_MeshPerPrimitiveEXT) 3 "gl_CullPrimitiveEXT"
|
|
Name 109 "gl_MeshPrimitivesEXT"
|
|
Name 147 "gl_PrimitiveTriangleIndicesEXT"
|
|
Name 161 "gl_SubgroupSize"
|
|
Name 162 "gl_SubgroupInvocationID"
|
|
Name 167 "gl_NumSubgroups"
|
|
Name 168 "gl_SubgroupID"
|
|
Name 171 "gl_SubgroupEqMask"
|
|
Name 172 "gl_SubgroupGeMask"
|
|
Name 173 "gl_SubgroupGtMask"
|
|
Name 174 "gl_SubgroupLeMask"
|
|
Name 175 "gl_SubgroupLtMask"
|
|
Name 181 "ballot"
|
|
Name 218 "ballot"
|
|
Name 253 "ballot"
|
|
Decorate 35(gl_LocalInvocationID) BuiltIn LocalInvocationId
|
|
Decorate 41(gl_WorkGroupID) BuiltIn WorkgroupId
|
|
MemberDecorate 54(gl_MeshPerVertexEXT) 0 BuiltIn Position
|
|
MemberDecorate 54(gl_MeshPerVertexEXT) 1 BuiltIn PointSize
|
|
MemberDecorate 54(gl_MeshPerVertexEXT) 2 BuiltIn ClipDistance
|
|
MemberDecorate 54(gl_MeshPerVertexEXT) 3 BuiltIn CullDistance
|
|
Decorate 54(gl_MeshPerVertexEXT) Block
|
|
MemberDecorate 106(gl_MeshPerPrimitiveEXT) 0 PerPrimitiveNV
|
|
MemberDecorate 106(gl_MeshPerPrimitiveEXT) 0 BuiltIn PrimitiveId
|
|
MemberDecorate 106(gl_MeshPerPrimitiveEXT) 1 PerPrimitiveNV
|
|
MemberDecorate 106(gl_MeshPerPrimitiveEXT) 1 BuiltIn Layer
|
|
MemberDecorate 106(gl_MeshPerPrimitiveEXT) 2 PerPrimitiveNV
|
|
MemberDecorate 106(gl_MeshPerPrimitiveEXT) 2 BuiltIn ViewportIndex
|
|
MemberDecorate 106(gl_MeshPerPrimitiveEXT) 3 PerPrimitiveNV
|
|
MemberDecorate 106(gl_MeshPerPrimitiveEXT) 3 BuiltIn CullPrimitiveEXT
|
|
Decorate 106(gl_MeshPerPrimitiveEXT) Block
|
|
Decorate 147(gl_PrimitiveTriangleIndicesEXT) BuiltIn PrimitiveTriangleIndicesEXT
|
|
Decorate 161(gl_SubgroupSize) RelaxedPrecision
|
|
Decorate 161(gl_SubgroupSize) BuiltIn SubgroupSize
|
|
Decorate 162(gl_SubgroupInvocationID) RelaxedPrecision
|
|
Decorate 162(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
|
|
Decorate 167(gl_NumSubgroups) BuiltIn NumSubgroups
|
|
Decorate 168(gl_SubgroupID) BuiltIn SubgroupId
|
|
Decorate 171(gl_SubgroupEqMask) BuiltIn SubgroupEqMaskKHR
|
|
Decorate 172(gl_SubgroupGeMask) BuiltIn SubgroupGeMaskKHR
|
|
Decorate 173(gl_SubgroupGtMask) BuiltIn SubgroupGtMaskKHR
|
|
Decorate 174(gl_SubgroupLeMask) BuiltIn SubgroupLeMaskKHR
|
|
Decorate 175(gl_SubgroupLtMask) BuiltIn SubgroupLtMaskKHR
|
|
Decorate 278 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
|
|
45: 30(int) Constant 81
|
|
47: 30(int) Constant 32
|
|
50: 30(int) Constant 4
|
|
51: TypeArray 8(float) 50
|
|
52: 30(int) Constant 3
|
|
53: TypeArray 8(float) 52
|
|
54(gl_MeshPerVertexEXT): TypeStruct 9(fvec4) 8(float) 51 53
|
|
55: TypeArray 54(gl_MeshPerVertexEXT) 45
|
|
56: TypePointer Output 55
|
|
57(gl_MeshVerticesEXT): 56(ptr) Variable Output
|
|
59: TypeInt 32 1
|
|
60: 59(int) Constant 0
|
|
61: 8(float) Constant 1065353216
|
|
62: 9(fvec4) ConstantComposite 61 61 61 61
|
|
63: TypePointer Output 9(fvec4)
|
|
66: 59(int) Constant 1
|
|
67: 8(float) Constant 1073741824
|
|
68: TypePointer Output 8(float)
|
|
71: 59(int) Constant 2
|
|
72: 59(int) Constant 3
|
|
73: 8(float) Constant 1077936128
|
|
76: 8(float) Constant 1082130432
|
|
78: 30(int) Constant 1
|
|
79: 30(int) Constant 264
|
|
80: 30(int) Constant 2
|
|
105: TypeBool
|
|
106(gl_MeshPerPrimitiveEXT): TypeStruct 59(int) 59(int) 59(int) 105(bool)
|
|
107: TypeArray 106(gl_MeshPerPrimitiveEXT) 47
|
|
108: TypePointer Output 107
|
|
109(gl_MeshPrimitivesEXT): 108(ptr) Variable Output
|
|
111: 59(int) Constant 6
|
|
112: TypePointer Output 59(int)
|
|
115: 59(int) Constant 7
|
|
118: 59(int) Constant 8
|
|
121: 105(bool) ConstantFalse
|
|
122: TypePointer Output 105(bool)
|
|
145: TypeArray 33(ivec3) 47
|
|
146: TypePointer Output 145
|
|
147(gl_PrimitiveTriangleIndicesEXT): 146(ptr) Variable Output
|
|
148: 33(ivec3) ConstantComposite 78 78 78
|
|
149: TypePointer Output 33(ivec3)
|
|
153: 33(ivec3) ConstantComposite 80 80 80
|
|
161(gl_SubgroupSize): 37(ptr) Variable Input
|
|
162(gl_SubgroupInvocationID): 37(ptr) Variable Input
|
|
163: 30(int) Constant 3400
|
|
164: 30(int) Constant 72
|
|
165: 30(int) Constant 2056
|
|
167(gl_NumSubgroups): 37(ptr) Variable Input
|
|
168(gl_SubgroupID): 37(ptr) Variable Input
|
|
169: TypeVector 30(int) 4
|
|
170: TypePointer Input 169(ivec4)
|
|
171(gl_SubgroupEqMask): 170(ptr) Variable Input
|
|
172(gl_SubgroupGeMask): 170(ptr) Variable Input
|
|
173(gl_SubgroupGtMask): 170(ptr) Variable Input
|
|
174(gl_SubgroupLeMask): 170(ptr) Variable Input
|
|
175(gl_SubgroupLtMask): 170(ptr) Variable Input
|
|
180: TypePointer Function 169(ivec4)
|
|
183: 169(ivec4) ConstantComposite 78 78 78 78
|
|
197: 105(bool) ConstantTrue
|
|
254: 30(int) Constant 85
|
|
255: 169(ivec4) ConstantComposite 254 36 36 36
|
|
278: 33(ivec3) ConstantComposite 47 78 78
|
|
4(main): 2 Function None 3
|
|
5: Label
|
|
32(iid): 31(ptr) Variable Function
|
|
40(gid): 31(ptr) Variable Function
|
|
44(vertexCount): 31(ptr) Variable Function
|
|
46(primitiveCount): 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(vertexCount) 45
|
|
Store 46(primitiveCount) 47
|
|
48: 30(int) Load 44(vertexCount)
|
|
49: 30(int) Load 46(primitiveCount)
|
|
SetMeshOutputsEXT 48 49
|
|
58: 30(int) Load 32(iid)
|
|
64: 63(ptr) AccessChain 57(gl_MeshVerticesEXT) 58 60
|
|
Store 64 62
|
|
65: 30(int) Load 32(iid)
|
|
69: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 65 66
|
|
Store 69 67
|
|
70: 30(int) Load 32(iid)
|
|
74: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 70 71 72
|
|
Store 74 73
|
|
75: 30(int) Load 32(iid)
|
|
77: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 75 72 71
|
|
Store 77 76
|
|
MemoryBarrier 78 79
|
|
ControlBarrier 80 80 79
|
|
81: 30(int) Load 32(iid)
|
|
82: 30(int) IAdd 81 78
|
|
83: 30(int) Load 32(iid)
|
|
84: 63(ptr) AccessChain 57(gl_MeshVerticesEXT) 83 60
|
|
85: 9(fvec4) Load 84
|
|
86: 63(ptr) AccessChain 57(gl_MeshVerticesEXT) 82 60
|
|
Store 86 85
|
|
87: 30(int) Load 32(iid)
|
|
88: 30(int) IAdd 87 78
|
|
89: 30(int) Load 32(iid)
|
|
90: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 89 66
|
|
91: 8(float) Load 90
|
|
92: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 88 66
|
|
Store 92 91
|
|
93: 30(int) Load 32(iid)
|
|
94: 30(int) IAdd 93 78
|
|
95: 30(int) Load 32(iid)
|
|
96: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 95 71 72
|
|
97: 8(float) Load 96
|
|
98: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 94 71 72
|
|
Store 98 97
|
|
99: 30(int) Load 32(iid)
|
|
100: 30(int) IAdd 99 78
|
|
101: 30(int) Load 32(iid)
|
|
102: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 101 72 71
|
|
103: 8(float) Load 102
|
|
104: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 100 72 71
|
|
Store 104 103
|
|
MemoryBarrier 78 79
|
|
ControlBarrier 80 80 79
|
|
110: 30(int) Load 32(iid)
|
|
113: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 110 60
|
|
Store 113 111
|
|
114: 30(int) Load 32(iid)
|
|
116: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 114 66
|
|
Store 116 115
|
|
117: 30(int) Load 32(iid)
|
|
119: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 117 71
|
|
Store 119 118
|
|
120: 30(int) Load 32(iid)
|
|
123: 122(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 120 72
|
|
Store 123 121
|
|
MemoryBarrier 78 79
|
|
ControlBarrier 80 80 79
|
|
124: 30(int) Load 32(iid)
|
|
125: 30(int) IAdd 124 78
|
|
126: 30(int) Load 32(iid)
|
|
127: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 126 60
|
|
128: 59(int) Load 127
|
|
129: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 125 60
|
|
Store 129 128
|
|
130: 30(int) Load 32(iid)
|
|
131: 30(int) IAdd 130 78
|
|
132: 30(int) Load 32(iid)
|
|
133: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 132 66
|
|
134: 59(int) Load 133
|
|
135: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 131 66
|
|
Store 135 134
|
|
136: 30(int) Load 32(iid)
|
|
137: 30(int) IAdd 136 78
|
|
138: 30(int) Load 32(iid)
|
|
139: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 138 71
|
|
140: 59(int) Load 139
|
|
141: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 137 71
|
|
Store 141 140
|
|
142: 30(int) Load 32(iid)
|
|
143: 30(int) IAdd 142 78
|
|
144: 122(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 143 72
|
|
Store 144 121
|
|
MemoryBarrier 78 79
|
|
ControlBarrier 80 80 79
|
|
150: 149(ptr) AccessChain 147(gl_PrimitiveTriangleIndicesEXT) 60
|
|
Store 150 148
|
|
151: 30(int) Load 46(primitiveCount)
|
|
152: 30(int) ISub 151 78
|
|
154: 149(ptr) AccessChain 147(gl_PrimitiveTriangleIndicesEXT) 152
|
|
Store 154 153
|
|
155: 30(int) Load 40(gid)
|
|
156: 30(int) Load 40(gid)
|
|
157: 30(int) ISub 156 78
|
|
158: 149(ptr) AccessChain 147(gl_PrimitiveTriangleIndicesEXT) 157
|
|
159: 33(ivec3) Load 158
|
|
160: 149(ptr) AccessChain 147(gl_PrimitiveTriangleIndicesEXT) 155
|
|
Store 160 159
|
|
MemoryBarrier 78 79
|
|
ControlBarrier 80 80 79
|
|
Return
|
|
FunctionEnd
|
|
6(basic_works(): 2 Function None 3
|
|
7: Label
|
|
ControlBarrier 52 52 163
|
|
MemoryBarrier 52 163
|
|
MemoryBarrier 52 164
|
|
MemoryBarrier 52 165
|
|
166: 105(bool) GroupNonUniformElect 52
|
|
MemoryBarrier 52 79
|
|
Return
|
|
FunctionEnd
|
|
13(ballot_works(vf4;): 2 Function None 11
|
|
12(f4): 10(ptr) FunctionParameter
|
|
14: Label
|
|
181(ballot): 180(ptr) Variable Function
|
|
176: 9(fvec4) Load 12(f4)
|
|
177: 9(fvec4) GroupNonUniformBroadcast 52 176 36
|
|
178: 9(fvec4) Load 12(f4)
|
|
179: 9(fvec4) GroupNonUniformBroadcastFirst 52 178
|
|
182: 169(ivec4) GroupNonUniformBallot 52 121
|
|
Store 181(ballot) 182
|
|
184: 105(bool) GroupNonUniformInverseBallot 52 183
|
|
185: 169(ivec4) Load 181(ballot)
|
|
186: 105(bool) GroupNonUniformBallotBitExtract 52 185 36
|
|
187: 169(ivec4) Load 181(ballot)
|
|
188: 30(int) GroupNonUniformBallotBitCount 52 Reduce 187
|
|
189: 169(ivec4) Load 181(ballot)
|
|
190: 30(int) GroupNonUniformBallotBitCount 52 InclusiveScan 189
|
|
191: 169(ivec4) Load 181(ballot)
|
|
192: 30(int) GroupNonUniformBallotBitCount 52 ExclusiveScan 191
|
|
193: 169(ivec4) Load 181(ballot)
|
|
194: 30(int) GroupNonUniformBallotFindLSB 52 193
|
|
195: 169(ivec4) Load 181(ballot)
|
|
196: 30(int) GroupNonUniformBallotFindMSB 52 195
|
|
Return
|
|
FunctionEnd
|
|
16(vote_works(vf4;): 2 Function None 11
|
|
15(f4): 10(ptr) FunctionParameter
|
|
17: Label
|
|
198: 105(bool) GroupNonUniformAll 52 197
|
|
199: 105(bool) GroupNonUniformAny 52 121
|
|
200: 9(fvec4) Load 15(f4)
|
|
201: 105(bool) GroupNonUniformAllEqual 52 200
|
|
Return
|
|
FunctionEnd
|
|
19(shuffle_works(vf4;): 2 Function None 11
|
|
18(f4): 10(ptr) FunctionParameter
|
|
20: Label
|
|
202: 9(fvec4) Load 18(f4)
|
|
203: 9(fvec4) GroupNonUniformShuffle 52 202 36
|
|
204: 9(fvec4) Load 18(f4)
|
|
205: 9(fvec4) GroupNonUniformShuffleXor 52 204 78
|
|
206: 9(fvec4) Load 18(f4)
|
|
207: 9(fvec4) GroupNonUniformShuffleUp 52 206 78
|
|
208: 9(fvec4) Load 18(f4)
|
|
209: 9(fvec4) GroupNonUniformShuffleDown 52 208 78
|
|
Return
|
|
FunctionEnd
|
|
22(arith_works(vf4;): 2 Function None 11
|
|
21(f4): 10(ptr) FunctionParameter
|
|
23: Label
|
|
218(ballot): 180(ptr) Variable Function
|
|
210: 9(fvec4) Load 21(f4)
|
|
211: 9(fvec4) GroupNonUniformFAdd 52 Reduce 210
|
|
212: 9(fvec4) Load 21(f4)
|
|
213: 9(fvec4) GroupNonUniformFMul 52 Reduce 212
|
|
214: 9(fvec4) Load 21(f4)
|
|
215: 9(fvec4) GroupNonUniformFMin 52 Reduce 214
|
|
216: 9(fvec4) Load 21(f4)
|
|
217: 9(fvec4) GroupNonUniformFMax 52 Reduce 216
|
|
219: 169(ivec4) Load 218(ballot)
|
|
220: 169(ivec4) GroupNonUniformBitwiseAnd 52 Reduce 219
|
|
221: 169(ivec4) Load 218(ballot)
|
|
222: 169(ivec4) GroupNonUniformBitwiseOr 52 Reduce 221
|
|
223: 169(ivec4) Load 218(ballot)
|
|
224: 169(ivec4) GroupNonUniformBitwiseXor 52 Reduce 223
|
|
225: 9(fvec4) Load 21(f4)
|
|
226: 9(fvec4) GroupNonUniformFAdd 52 InclusiveScan 225
|
|
227: 9(fvec4) Load 21(f4)
|
|
228: 9(fvec4) GroupNonUniformFMul 52 InclusiveScan 227
|
|
229: 9(fvec4) Load 21(f4)
|
|
230: 9(fvec4) GroupNonUniformFMin 52 InclusiveScan 229
|
|
231: 9(fvec4) Load 21(f4)
|
|
232: 9(fvec4) GroupNonUniformFMax 52 InclusiveScan 231
|
|
233: 169(ivec4) Load 218(ballot)
|
|
234: 169(ivec4) GroupNonUniformBitwiseAnd 52 InclusiveScan 233
|
|
235: 169(ivec4) Load 218(ballot)
|
|
236: 169(ivec4) GroupNonUniformBitwiseOr 52 InclusiveScan 235
|
|
237: 169(ivec4) Load 218(ballot)
|
|
238: 169(ivec4) GroupNonUniformBitwiseXor 52 InclusiveScan 237
|
|
239: 9(fvec4) Load 21(f4)
|
|
240: 9(fvec4) GroupNonUniformFAdd 52 ExclusiveScan 239
|
|
241: 9(fvec4) Load 21(f4)
|
|
242: 9(fvec4) GroupNonUniformFMul 52 ExclusiveScan 241
|
|
243: 9(fvec4) Load 21(f4)
|
|
244: 9(fvec4) GroupNonUniformFMin 52 ExclusiveScan 243
|
|
245: 9(fvec4) Load 21(f4)
|
|
246: 9(fvec4) GroupNonUniformFMax 52 ExclusiveScan 245
|
|
247: 169(ivec4) Load 218(ballot)
|
|
248: 169(ivec4) GroupNonUniformBitwiseAnd 52 ExclusiveScan 247
|
|
249: 169(ivec4) Load 218(ballot)
|
|
250: 169(ivec4) GroupNonUniformBitwiseOr 52 ExclusiveScan 249
|
|
251: 169(ivec4) Load 218(ballot)
|
|
252: 169(ivec4) GroupNonUniformBitwiseXor 52 ExclusiveScan 251
|
|
Return
|
|
FunctionEnd
|
|
25(clustered_works(vf4;): 2 Function None 11
|
|
24(f4): 10(ptr) FunctionParameter
|
|
26: Label
|
|
253(ballot): 180(ptr) Variable Function
|
|
Store 253(ballot) 255
|
|
256: 9(fvec4) Load 24(f4)
|
|
257: 9(fvec4) GroupNonUniformFAdd 52 ClusteredReduce 256 80
|
|
258: 9(fvec4) Load 24(f4)
|
|
259: 9(fvec4) GroupNonUniformFMul 52 ClusteredReduce 258 80
|
|
260: 9(fvec4) Load 24(f4)
|
|
261: 9(fvec4) GroupNonUniformFMin 52 ClusteredReduce 260 80
|
|
262: 9(fvec4) Load 24(f4)
|
|
263: 9(fvec4) GroupNonUniformFMax 52 ClusteredReduce 262 80
|
|
264: 169(ivec4) Load 253(ballot)
|
|
265: 169(ivec4) GroupNonUniformBitwiseAnd 52 ClusteredReduce 264 80
|
|
266: 169(ivec4) Load 253(ballot)
|
|
267: 169(ivec4) GroupNonUniformBitwiseOr 52 ClusteredReduce 266 80
|
|
268: 169(ivec4) Load 253(ballot)
|
|
269: 169(ivec4) GroupNonUniformBitwiseXor 52 ClusteredReduce 268 80
|
|
Return
|
|
FunctionEnd
|
|
28(quad_works(vf4;): 2 Function None 11
|
|
27(f4): 10(ptr) FunctionParameter
|
|
29: Label
|
|
270: 9(fvec4) Load 27(f4)
|
|
271: 9(fvec4) GroupNonUniformQuadBroadcast 52 270 36
|
|
272: 9(fvec4) Load 27(f4)
|
|
273: 9(fvec4) GroupNonUniformQuadSwap 52 272 36
|
|
274: 9(fvec4) Load 27(f4)
|
|
275: 9(fvec4) GroupNonUniformQuadSwap 52 274 78
|
|
276: 9(fvec4) Load 27(f4)
|
|
277: 9(fvec4) GroupNonUniformQuadSwap 52 276 80
|
|
Return
|
|
FunctionEnd
|