for (int p = 0; p < (int)parameters.size(); ++p) {
const glslang::TType& paramType = parameters[p]->getAsTyped()->getType();
spv::Id typeId = convertGlslangToSpvType(paramType);
- if (paramType.containsOpaque())
+ if (paramType.containsOpaque() ||
+ (paramType.getBasicType() == glslang::EbtBlock && paramType.getQualifier().storage == glslang::EvqBuffer))
typeId = builder.makePointer(TranslateStorageClass(paramType), typeId);
else if (paramType.getQualifier().storage != glslang::EvqConstReadOnly)
typeId = builder.makePointer(spv::StorageClassFunction, typeId);
for (int a = 0; a < (int)glslangArgs.size(); ++a) {
const glslang::TType& paramType = glslangArgs[a]->getAsTyped()->getType();
spv::Id arg;
- if (paramType.containsOpaque()) {
+ if (paramType.containsOpaque() ||
+ (paramType.getBasicType() == glslang::EbtBlock && qualifiers[a] == glslang::EvqBuffer)) {
builder.setAccessChain(lValues[lValueCount]);
arg = builder.accessChainGetLValue();
++lValueCount;
0:? Sequence
0:8 AtomicAdd (temp void)
0:8 indirect index (layout(row_major std430 ) buffer uint)
-0:8 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:8 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:8 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:8 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:8 Constant:
0:8 0 (const uint)
0:8 right-shift (temp int)
0:9 'u' (temp uint)
0:9 AtomicAdd (temp uint)
0:9 indirect index (layout(row_major std430 ) buffer uint)
-0:9 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:9 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:9 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:9 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:9 Constant:
0:9 0 (const uint)
0:9 right-shift (temp int)
0:9 1 (const int)
0:10 AtomicAnd (temp void)
0:10 indirect index (layout(row_major std430 ) buffer uint)
-0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:10 Constant:
0:10 0 (const uint)
0:10 right-shift (temp int)
0:11 'u' (temp uint)
0:11 AtomicAnd (temp uint)
0:11 indirect index (layout(row_major std430 ) buffer uint)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 right-shift (temp int)
0:12 Convert int to uint (temp uint)
0:12 AtomicCompSwap (temp int)
0:12 indirect index (layout(row_major std430 ) buffer uint)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 right-shift (temp int)
0:14 'u' (temp uint)
0:14 AtomicExchange (temp uint)
0:14 indirect index (layout(row_major std430 ) buffer uint)
-0:14 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:14 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:14 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:14 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:14 Constant:
0:14 0 (const uint)
0:14 right-shift (temp int)
0:14 1 (const int)
0:15 AtomicMax (temp void)
0:15 indirect index (layout(row_major std430 ) buffer uint)
-0:15 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:15 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:15 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:15 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:15 Constant:
0:15 0 (const uint)
0:15 right-shift (temp int)
0:16 'u' (temp uint)
0:16 AtomicMax (temp uint)
0:16 indirect index (layout(row_major std430 ) buffer uint)
-0:16 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:16 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:16 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:16 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:16 Constant:
0:16 0 (const uint)
0:16 right-shift (temp int)
0:16 1 (const int)
0:17 AtomicMin (temp void)
0:17 indirect index (layout(row_major std430 ) buffer uint)
-0:17 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:17 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:17 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:17 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:17 Constant:
0:17 0 (const uint)
0:17 right-shift (temp int)
0:18 'u' (temp uint)
0:18 AtomicMin (temp uint)
0:18 indirect index (layout(row_major std430 ) buffer uint)
-0:18 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:18 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:18 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:18 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:18 Constant:
0:18 0 (const uint)
0:18 right-shift (temp int)
0:18 1 (const int)
0:19 AtomicOr (temp void)
0:19 indirect index (layout(row_major std430 ) buffer uint)
-0:19 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:19 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:19 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:19 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:19 Constant:
0:19 0 (const uint)
0:19 right-shift (temp int)
0:20 'u' (temp uint)
0:20 AtomicOr (temp uint)
0:20 indirect index (layout(row_major std430 ) buffer uint)
-0:20 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:20 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:20 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:20 Constant:
0:20 0 (const uint)
0:20 right-shift (temp int)
0:20 1 (const int)
0:21 AtomicXor (temp void)
0:21 indirect index (layout(row_major std430 ) buffer uint)
-0:21 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:21 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:21 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:21 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:21 Constant:
0:21 0 (const uint)
0:21 right-shift (temp int)
0:22 'u' (temp uint)
0:22 AtomicXor (temp uint)
0:22 indirect index (layout(row_major std430 ) buffer uint)
-0:22 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:22 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:22 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:22 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:22 Constant:
0:22 0 (const uint)
0:22 right-shift (temp int)
0:24 Construct vec4 (temp 4-component vector of float)
0:24 Convert uint to float (temp float)
0:24 indirect index (layout(row_major std430 ) buffer uint)
-0:24 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:24 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:24 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:24 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:24 Constant:
0:24 0 (const uint)
0:24 right-shift (temp int)
0:5 Function Call: @main(u1; (temp 4-component vector of float)
0:? 'pos' (temp uint)
0:? Linker Objects
-0:? 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:? 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:? 'pos' (layout(location=0 ) in uint)
0:? Sequence
0:8 AtomicAdd (temp void)
0:8 indirect index (layout(row_major std430 ) buffer uint)
-0:8 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:8 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:8 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:8 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:8 Constant:
0:8 0 (const uint)
0:8 right-shift (temp int)
0:9 'u' (temp uint)
0:9 AtomicAdd (temp uint)
0:9 indirect index (layout(row_major std430 ) buffer uint)
-0:9 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:9 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:9 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:9 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:9 Constant:
0:9 0 (const uint)
0:9 right-shift (temp int)
0:9 1 (const int)
0:10 AtomicAnd (temp void)
0:10 indirect index (layout(row_major std430 ) buffer uint)
-0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:10 Constant:
0:10 0 (const uint)
0:10 right-shift (temp int)
0:11 'u' (temp uint)
0:11 AtomicAnd (temp uint)
0:11 indirect index (layout(row_major std430 ) buffer uint)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 right-shift (temp int)
0:12 Convert int to uint (temp uint)
0:12 AtomicCompSwap (temp int)
0:12 indirect index (layout(row_major std430 ) buffer uint)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 right-shift (temp int)
0:14 'u' (temp uint)
0:14 AtomicExchange (temp uint)
0:14 indirect index (layout(row_major std430 ) buffer uint)
-0:14 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:14 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:14 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:14 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:14 Constant:
0:14 0 (const uint)
0:14 right-shift (temp int)
0:14 1 (const int)
0:15 AtomicMax (temp void)
0:15 indirect index (layout(row_major std430 ) buffer uint)
-0:15 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:15 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:15 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:15 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:15 Constant:
0:15 0 (const uint)
0:15 right-shift (temp int)
0:16 'u' (temp uint)
0:16 AtomicMax (temp uint)
0:16 indirect index (layout(row_major std430 ) buffer uint)
-0:16 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:16 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:16 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:16 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:16 Constant:
0:16 0 (const uint)
0:16 right-shift (temp int)
0:16 1 (const int)
0:17 AtomicMin (temp void)
0:17 indirect index (layout(row_major std430 ) buffer uint)
-0:17 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:17 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:17 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:17 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:17 Constant:
0:17 0 (const uint)
0:17 right-shift (temp int)
0:18 'u' (temp uint)
0:18 AtomicMin (temp uint)
0:18 indirect index (layout(row_major std430 ) buffer uint)
-0:18 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:18 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:18 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:18 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:18 Constant:
0:18 0 (const uint)
0:18 right-shift (temp int)
0:18 1 (const int)
0:19 AtomicOr (temp void)
0:19 indirect index (layout(row_major std430 ) buffer uint)
-0:19 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:19 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:19 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:19 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:19 Constant:
0:19 0 (const uint)
0:19 right-shift (temp int)
0:20 'u' (temp uint)
0:20 AtomicOr (temp uint)
0:20 indirect index (layout(row_major std430 ) buffer uint)
-0:20 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:20 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:20 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:20 Constant:
0:20 0 (const uint)
0:20 right-shift (temp int)
0:20 1 (const int)
0:21 AtomicXor (temp void)
0:21 indirect index (layout(row_major std430 ) buffer uint)
-0:21 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:21 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:21 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:21 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:21 Constant:
0:21 0 (const uint)
0:21 right-shift (temp int)
0:22 'u' (temp uint)
0:22 AtomicXor (temp uint)
0:22 indirect index (layout(row_major std430 ) buffer uint)
-0:22 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:22 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:22 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:22 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:22 Constant:
0:22 0 (const uint)
0:22 right-shift (temp int)
0:24 Construct vec4 (temp 4-component vector of float)
0:24 Convert uint to float (temp float)
0:24 indirect index (layout(row_major std430 ) buffer uint)
-0:24 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:24 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:24 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:24 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:24 Constant:
0:24 0 (const uint)
0:24 right-shift (temp int)
0:5 Function Call: @main(u1; (temp 4-component vector of float)
0:? 'pos' (temp uint)
0:? Linker Objects
-0:? 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:? 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:? 'pos' (layout(location=0 ) in uint)
Name 12 "@main(u1;"
Name 11 "pos"
Name 15 "sbuf"
- MemberName 15(sbuf) 0 "sbuf"
- Name 17 ""
+ MemberName 15(sbuf) 0 "@data"
+ Name 17 "sbuf"
Name 29 "u"
Name 78 "pos"
Name 80 "pos"
Decorate 14 ArrayStride 4
MemberDecorate 15(sbuf) 0 Offset 0
Decorate 15(sbuf) BufferBlock
- Decorate 17 DescriptorSet 0
+ Decorate 17(sbuf) DescriptorSet 0
Decorate 80(pos) Location 0
Decorate 83(@entryPointOutput) Location 0
2: TypeVoid
14: TypeRuntimeArray 6(int)
15(sbuf): TypeStruct 14
16: TypePointer Uniform 15(sbuf)
- 17: 16(ptr) Variable Uniform
+ 17(sbuf): 16(ptr) Variable Uniform
18: TypeInt 32 1
19: 18(int) Constant 0
20: 18(int) Constant 8
13: Label
29(u): 7(ptr) Variable Function
22: 18(int) ShiftRightArithmetic 20 21
- 24: 23(ptr) AccessChain 17 19 22
+ 24: 23(ptr) AccessChain 17(sbuf) 19 22
28: 2 AtomicIAdd 24 26 27 25
30: 18(int) ShiftRightArithmetic 20 21
- 31: 23(ptr) AccessChain 17 19 30
+ 31: 23(ptr) AccessChain 17(sbuf) 19 30
32: 6(int) AtomicIAdd 31 26 27 25
Store 29(u) 32
33: 18(int) ShiftRightArithmetic 20 21
- 34: 23(ptr) AccessChain 17 19 33
+ 34: 23(ptr) AccessChain 17(sbuf) 19 33
35: 2 AtomicAnd 34 26 27 25
36: 18(int) ShiftRightArithmetic 20 21
- 37: 23(ptr) AccessChain 17 19 36
+ 37: 23(ptr) AccessChain 17(sbuf) 19 36
38: 6(int) AtomicAnd 37 26 27 25
Store 29(u) 38
39: 18(int) ShiftRightArithmetic 20 21
- 40: 23(ptr) AccessChain 17 19 39
+ 40: 23(ptr) AccessChain 17(sbuf) 19 39
41: 18(int) AtomicCompareExchange 40 26 27 27 21 25
42: 6(int) Bitcast 41
Store 29(u) 42
43: 18(int) ShiftRightArithmetic 20 21
- 44: 23(ptr) AccessChain 17 19 43
+ 44: 23(ptr) AccessChain 17(sbuf) 19 43
45: 6(int) AtomicExchange 44 26 27 25
Store 29(u) 45
46: 18(int) ShiftRightArithmetic 20 21
- 47: 23(ptr) AccessChain 17 19 46
+ 47: 23(ptr) AccessChain 17(sbuf) 19 46
48: 2 AtomicSMax 47 26 27 25
49: 18(int) ShiftRightArithmetic 20 21
- 50: 23(ptr) AccessChain 17 19 49
+ 50: 23(ptr) AccessChain 17(sbuf) 19 49
51: 6(int) AtomicUMax 50 26 27 25
Store 29(u) 51
52: 18(int) ShiftRightArithmetic 20 21
- 53: 23(ptr) AccessChain 17 19 52
+ 53: 23(ptr) AccessChain 17(sbuf) 19 52
54: 2 AtomicSMin 53 26 27 25
55: 18(int) ShiftRightArithmetic 20 21
- 56: 23(ptr) AccessChain 17 19 55
+ 56: 23(ptr) AccessChain 17(sbuf) 19 55
57: 6(int) AtomicUMin 56 26 27 25
Store 29(u) 57
58: 18(int) ShiftRightArithmetic 20 21
- 59: 23(ptr) AccessChain 17 19 58
+ 59: 23(ptr) AccessChain 17(sbuf) 19 58
60: 2 AtomicOr 59 26 27 25
61: 18(int) ShiftRightArithmetic 20 21
- 62: 23(ptr) AccessChain 17 19 61
+ 62: 23(ptr) AccessChain 17(sbuf) 19 61
63: 6(int) AtomicOr 62 26 27 25
Store 29(u) 63
64: 18(int) ShiftRightArithmetic 20 21
- 65: 23(ptr) AccessChain 17 19 64
+ 65: 23(ptr) AccessChain 17(sbuf) 19 64
66: 2 AtomicXor 65 26 27 25
67: 18(int) ShiftRightArithmetic 20 21
- 68: 23(ptr) AccessChain 17 19 67
+ 68: 23(ptr) AccessChain 17(sbuf) 19 67
69: 6(int) AtomicXor 68 26 27 25
Store 29(u) 69
70: 6(int) Load 11(pos)
71: 18(int) ShiftRightLogical 70 21
- 72: 23(ptr) AccessChain 17 19 71
+ 72: 23(ptr) AccessChain 17(sbuf) 19 71
73: 6(int) Load 72
74: 8(float) ConvertUToF 73
75: 9(fvec4) CompositeConstruct 74 74 74 74
0:7 move second child to first child (temp uint)
0:7 'size' (temp uint)
0:7 array length (temp uint)
-0:7 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:7 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:7 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:7 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:7 Constant:
0:7 0 (const uint)
0:12 Branch: Return with expression
0:10 add (temp 4-component vector of float)
0:9 add (temp 4-component vector of float)
0:9 Convert uint to float (temp float)
-0:9 indirect index (layout(row_major std430 ) readonly buffer uint)
-0:9 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:9 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:9 indirect index (layout(row_major std430 ) buffer uint)
+0:9 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:9 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:9 Constant:
0:9 0 (const uint)
0:9 right-shift (temp int)
0:10 2 (const int)
0:? Construct vec2 (temp 2-component vector of uint)
0:10 indirect index (temp float)
-0:10 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:10 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:10 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:10 Constant:
0:10 0 (const uint)
0:10 'byteAddrTemp' (temp int)
0:10 indirect index (temp float)
-0:10 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:10 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:10 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:10 Constant:
0:10 0 (const uint)
0:10 add (temp int)
0:11 2 (const int)
0:? Construct vec3 (temp 3-component vector of uint)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 'byteAddrTemp' (temp int)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 add (temp int)
0:11 Constant:
0:11 1 (const int)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 add (temp int)
0:12 2 (const int)
0:? Construct vec4 (temp 4-component vector of uint)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 'byteAddrTemp' (temp int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
0:12 Constant:
0:12 1 (const int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
0:12 Constant:
0:12 2 (const int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
0:5 Function Call: @main(u1; (temp 4-component vector of float)
0:? 'pos' (temp uint)
0:? Linker Objects
-0:? 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:? 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:? 'pos' (layout(location=0 ) in uint)
0:7 move second child to first child (temp uint)
0:7 'size' (temp uint)
0:7 array length (temp uint)
-0:7 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:7 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:7 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:7 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:7 Constant:
0:7 0 (const uint)
0:12 Branch: Return with expression
0:10 add (temp 4-component vector of float)
0:9 add (temp 4-component vector of float)
0:9 Convert uint to float (temp float)
-0:9 indirect index (layout(row_major std430 ) readonly buffer uint)
-0:9 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:9 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:9 indirect index (layout(row_major std430 ) buffer uint)
+0:9 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:9 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:9 Constant:
0:9 0 (const uint)
0:9 right-shift (temp int)
0:10 2 (const int)
0:? Construct vec2 (temp 2-component vector of uint)
0:10 indirect index (temp float)
-0:10 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:10 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:10 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:10 Constant:
0:10 0 (const uint)
0:10 'byteAddrTemp' (temp int)
0:10 indirect index (temp float)
-0:10 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:10 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:10 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:10 Constant:
0:10 0 (const uint)
0:10 add (temp int)
0:11 2 (const int)
0:? Construct vec3 (temp 3-component vector of uint)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 'byteAddrTemp' (temp int)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 add (temp int)
0:11 Constant:
0:11 1 (const int)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 add (temp int)
0:12 2 (const int)
0:? Construct vec4 (temp 4-component vector of uint)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 'byteAddrTemp' (temp int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
0:12 Constant:
0:12 1 (const int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
0:12 Constant:
0:12 2 (const int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
0:5 Function Call: @main(u1; (temp 4-component vector of float)
0:? 'pos' (temp uint)
0:? Linker Objects
-0:? 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:? 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:? 'pos' (layout(location=0 ) in uint)
Name 11 "pos"
Name 14 "size"
Name 16 "sbuf"
- MemberName 16(sbuf) 0 "sbuf"
- Name 18 ""
+ MemberName 16(sbuf) 0 "@data"
+ Name 18 "sbuf"
Name 30 "byteAddrTemp"
Name 53 "byteAddrTemp"
Name 78 "byteAddrTemp"
MemberDecorate 16(sbuf) 0 NonWritable
MemberDecorate 16(sbuf) 0 Offset 0
Decorate 16(sbuf) BufferBlock
- Decorate 18 DescriptorSet 0
+ Decorate 18(sbuf) DescriptorSet 0
Decorate 107(pos) Location 0
Decorate 110(@entryPointOutput) Location 0
2: TypeVoid
15: TypeRuntimeArray 6(int)
16(sbuf): TypeStruct 15
17: TypePointer Uniform 16(sbuf)
- 18: 17(ptr) Variable Uniform
+ 18(sbuf): 17(ptr) Variable Uniform
19: TypeInt 32 1
21: 19(int) Constant 0
23: 19(int) Constant 2
30(byteAddrTemp): 29(ptr) Variable Function
53(byteAddrTemp): 29(ptr) Variable Function
78(byteAddrTemp): 29(ptr) Variable Function
- 20: 19(int) ArrayLength 18 0
+ 20: 19(int) ArrayLength 18(sbuf) 0
Store 14(size) 20
22: 6(int) Load 11(pos)
24: 19(int) ShiftRightLogical 22 23
- 26: 25(ptr) AccessChain 18 21 24
+ 26: 25(ptr) AccessChain 18(sbuf) 21 24
27: 6(int) Load 26
28: 8(float) ConvertUToF 27
31: 6(int) Load 11(pos)
34: 19(int) ShiftRightLogical 33 23
Store 30(byteAddrTemp) 34
35: 19(int) Load 30(byteAddrTemp)
- 36: 25(ptr) AccessChain 18 21 35
+ 36: 25(ptr) AccessChain 18(sbuf) 21 35
37: 6(int) Load 36
38: 19(int) Load 30(byteAddrTemp)
40: 19(int) IAdd 38 39
- 41: 25(ptr) AccessChain 18 21 40
+ 41: 25(ptr) AccessChain 18(sbuf) 21 40
42: 6(int) Load 41
44: 43(ivec2) CompositeConstruct 37 42
46: 45(fvec2) ConvertUToF 44
57: 19(int) ShiftRightLogical 56 23
Store 53(byteAddrTemp) 57
58: 19(int) Load 53(byteAddrTemp)
- 59: 25(ptr) AccessChain 18 21 58
+ 59: 25(ptr) AccessChain 18(sbuf) 21 58
60: 6(int) Load 59
61: 19(int) Load 53(byteAddrTemp)
62: 19(int) IAdd 61 39
- 63: 25(ptr) AccessChain 18 21 62
+ 63: 25(ptr) AccessChain 18(sbuf) 21 62
64: 6(int) Load 63
65: 19(int) Load 53(byteAddrTemp)
66: 19(int) IAdd 65 23
- 67: 25(ptr) AccessChain 18 21 66
+ 67: 25(ptr) AccessChain 18(sbuf) 21 66
68: 6(int) Load 67
70: 69(ivec3) CompositeConstruct 60 64 68
72: 71(fvec3) ConvertUToF 70
82: 19(int) ShiftRightLogical 81 23
Store 78(byteAddrTemp) 82
83: 19(int) Load 78(byteAddrTemp)
- 84: 25(ptr) AccessChain 18 21 83
+ 84: 25(ptr) AccessChain 18(sbuf) 21 83
85: 6(int) Load 84
86: 19(int) Load 78(byteAddrTemp)
87: 19(int) IAdd 86 39
- 88: 25(ptr) AccessChain 18 21 87
+ 88: 25(ptr) AccessChain 18(sbuf) 21 87
89: 6(int) Load 88
90: 19(int) Load 78(byteAddrTemp)
91: 19(int) IAdd 90 23
- 92: 25(ptr) AccessChain 18 21 91
+ 92: 25(ptr) AccessChain 18(sbuf) 21 91
93: 6(int) Load 92
94: 19(int) Load 78(byteAddrTemp)
96: 19(int) IAdd 94 95
- 97: 25(ptr) AccessChain 18 21 96
+ 97: 25(ptr) AccessChain 18(sbuf) 21 96
98: 6(int) Load 97
100: 99(ivec4) CompositeConstruct 85 89 93 98
101: 9(fvec4) ConvertUToF 100
0:12 'pos' (in uint)
0:? Sequence
0:13 move second child to first child (temp float)
-0:13 indirect index (layout(row_major std430 ) coherent temp float)
-0:13 sbuf2: direct index for structure (layout(row_major std430 ) coherent buffer implicitly-sized array of float)
-0:13 'anon@1' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) coherent buffer implicitly-sized array of float sbuf2})
+0:13 indirect index (layout(row_major std430 ) buffer float)
+0:13 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of float)
+0:13 'sbuf2' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data})
0:13 Constant:
0:13 0 (const uint)
0:13 add (temp uint)
0:17 move second child to first child (temp uint)
0:17 'size' (temp uint)
0:17 array length (temp uint)
-0:17 sbuf: direct index for structure (layout(row_major std430 ) coherent buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
-0:17 'anon@0' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) coherent buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf})
+0:17 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
+0:17 'sbuf' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data})
0:17 Constant:
0:17 0 (const uint)
0:17 move second child to first child (temp uint)
0:19 Test condition and select (temp void)
0:19 Condition
0:19 test: direct index for structure (temp bool)
-0:19 indirect index (layout(row_major std430 ) coherent temp structure{temp 3-component vector of float color, temp bool test})
-0:19 sbuf: direct index for structure (layout(row_major std430 ) coherent buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
-0:19 'anon@0' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) coherent buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf})
+0:19 indirect index (layout(row_major std430 ) buffer structure{temp 3-component vector of float color, temp bool test})
+0:19 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
+0:19 'sbuf' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data})
0:19 Constant:
0:19 0 (const uint)
0:19 'pos' (in uint)
0:? Construct vec4 (temp 4-component vector of float)
0:20 add (temp 3-component vector of float)
0:20 color: direct index for structure (temp 3-component vector of float)
-0:20 indirect index (layout(row_major std430 ) coherent temp structure{temp 3-component vector of float color, temp bool test})
-0:20 sbuf: direct index for structure (layout(row_major std430 ) coherent buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
-0:20 'anon@0' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) coherent buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf})
+0:20 indirect index (layout(row_major std430 ) buffer structure{temp 3-component vector of float color, temp bool test})
+0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
+0:20 'sbuf' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data})
0:20 Constant:
0:20 0 (const uint)
0:20 'pos' (in uint)
0:20 Constant:
0:20 0 (const int)
-0:20 indirect index (layout(row_major std430 ) coherent temp float)
-0:20 sbuf2: direct index for structure (layout(row_major std430 ) coherent buffer implicitly-sized array of float)
-0:20 'anon@1' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) coherent buffer implicitly-sized array of float sbuf2})
+0:20 indirect index (layout(row_major std430 ) buffer float)
+0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of float)
+0:20 'sbuf2' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data})
0:20 Constant:
0:20 0 (const uint)
0:20 'pos' (in uint)
0:12 Function Call: @main(u1; (temp 4-component vector of float)
0:? 'pos' (temp uint)
0:? Linker Objects
-0:? 'anon@0' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) coherent buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf})
-0:? 'anon@1' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) coherent buffer implicitly-sized array of float sbuf2})
+0:? 'sbuf' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data})
+0:? 'sbuf2' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data})
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:? 'pos' (layout(location=0 ) in uint)
0:12 'pos' (in uint)
0:? Sequence
0:13 move second child to first child (temp float)
-0:13 indirect index (layout(row_major std430 ) coherent temp float)
-0:13 sbuf2: direct index for structure (layout(row_major std430 ) coherent buffer implicitly-sized array of float)
-0:13 'anon@1' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) coherent buffer implicitly-sized array of float sbuf2})
+0:13 indirect index (layout(row_major std430 ) buffer float)
+0:13 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of float)
+0:13 'sbuf2' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data})
0:13 Constant:
0:13 0 (const uint)
0:13 add (temp uint)
0:17 move second child to first child (temp uint)
0:17 'size' (temp uint)
0:17 array length (temp uint)
-0:17 sbuf: direct index for structure (layout(row_major std430 ) coherent buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
-0:17 'anon@0' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) coherent buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf})
+0:17 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
+0:17 'sbuf' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data})
0:17 Constant:
0:17 0 (const uint)
0:17 move second child to first child (temp uint)
0:19 Test condition and select (temp void)
0:19 Condition
0:19 test: direct index for structure (temp bool)
-0:19 indirect index (layout(row_major std430 ) coherent temp structure{temp 3-component vector of float color, temp bool test})
-0:19 sbuf: direct index for structure (layout(row_major std430 ) coherent buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
-0:19 'anon@0' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) coherent buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf})
+0:19 indirect index (layout(row_major std430 ) buffer structure{temp 3-component vector of float color, temp bool test})
+0:19 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
+0:19 'sbuf' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data})
0:19 Constant:
0:19 0 (const uint)
0:19 'pos' (in uint)
0:? Construct vec4 (temp 4-component vector of float)
0:20 add (temp 3-component vector of float)
0:20 color: direct index for structure (temp 3-component vector of float)
-0:20 indirect index (layout(row_major std430 ) coherent temp structure{temp 3-component vector of float color, temp bool test})
-0:20 sbuf: direct index for structure (layout(row_major std430 ) coherent buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
-0:20 'anon@0' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) coherent buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf})
+0:20 indirect index (layout(row_major std430 ) buffer structure{temp 3-component vector of float color, temp bool test})
+0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
+0:20 'sbuf' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data})
0:20 Constant:
0:20 0 (const uint)
0:20 'pos' (in uint)
0:20 Constant:
0:20 0 (const int)
-0:20 indirect index (layout(row_major std430 ) coherent temp float)
-0:20 sbuf2: direct index for structure (layout(row_major std430 ) coherent buffer implicitly-sized array of float)
-0:20 'anon@1' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) coherent buffer implicitly-sized array of float sbuf2})
+0:20 indirect index (layout(row_major std430 ) buffer float)
+0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of float)
+0:20 'sbuf2' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data})
0:20 Constant:
0:20 0 (const uint)
0:20 'pos' (in uint)
0:12 Function Call: @main(u1; (temp 4-component vector of float)
0:? 'pos' (temp uint)
0:? Linker Objects
-0:? 'anon@0' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) coherent buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf})
-0:? 'anon@1' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) coherent buffer implicitly-sized array of float sbuf2})
+0:? 'sbuf' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data})
+0:? 'sbuf2' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data})
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:? 'pos' (layout(location=0 ) in uint)
Name 12 "@main(u1;"
Name 11 "pos"
Name 15 "sbuf2"
- MemberName 15(sbuf2) 0 "sbuf2"
- Name 17 ""
+ MemberName 15(sbuf2) 0 "@data"
+ Name 17 "sbuf2"
Name 26 "size"
Name 28 "sb_t"
MemberName 28(sb_t) 0 "color"
MemberName 28(sb_t) 1 "test"
Name 30 "sbuf"
- MemberName 30(sbuf) 0 "sbuf"
- Name 32 ""
+ MemberName 30(sbuf) 0 "@data"
+ Name 32 "sbuf"
Name 34 "stride"
Name 69 "pos"
Name 71 "pos"
MemberDecorate 15(sbuf2) 0 Coherent
MemberDecorate 15(sbuf2) 0 Offset 0
Decorate 15(sbuf2) BufferBlock
- Decorate 17 DescriptorSet 0
+ Decorate 17(sbuf2) DescriptorSet 0
MemberDecorate 28(sb_t) 0 Coherent
MemberDecorate 28(sb_t) 0 Offset 0
MemberDecorate 28(sb_t) 1 Coherent
MemberDecorate 30(sbuf) 0 Coherent
MemberDecorate 30(sbuf) 0 Offset 0
Decorate 30(sbuf) BufferBlock
- Decorate 32 DescriptorSet 0
+ Decorate 32(sbuf) DescriptorSet 0
Decorate 71(pos) Location 0
Decorate 74(@entryPointOutput) Location 0
2: TypeVoid
14: TypeRuntimeArray 8(float)
15(sbuf2): TypeStruct 14
16: TypePointer Uniform 15(sbuf2)
- 17: 16(ptr) Variable Uniform
+ 17(sbuf2): 16(ptr) Variable Uniform
18: TypeInt 32 1
19: 18(int) Constant 0
21: 6(int) Constant 1
29: TypeRuntimeArray 28(sb_t)
30(sbuf): TypeStruct 29
31: TypePointer Uniform 30(sbuf)
- 32: 31(ptr) Variable Uniform
+ 32(sbuf): 31(ptr) Variable Uniform
35: 6(int) Constant 16
37: 18(int) Constant 1
38: TypePointer Uniform 6(int)
34(stride): 7(ptr) Variable Function
20: 6(int) Load 11(pos)
22: 6(int) IAdd 20 21
- 25: 24(ptr) AccessChain 17 19 22
+ 25: 24(ptr) AccessChain 17(sbuf2) 19 22
Store 25 23
- 33: 18(int) ArrayLength 32 0
+ 33: 18(int) ArrayLength 32(sbuf) 0
Store 26(size) 33
Store 34(stride) 35
36: 6(int) Load 11(pos)
- 39: 38(ptr) AccessChain 32 19 36 37
+ 39: 38(ptr) AccessChain 32(sbuf) 19 36 37
40: 6(int) Load 39
43: 41(bool) INotEqual 40 42
SelectionMerge 45 None
BranchConditional 43 44 61
44: Label
46: 6(int) Load 11(pos)
- 48: 47(ptr) AccessChain 32 19 46 19
+ 48: 47(ptr) AccessChain 32(sbuf) 19 46 19
49: 27(fvec3) Load 48
50: 6(int) Load 11(pos)
- 51: 24(ptr) AccessChain 17 19 50
+ 51: 24(ptr) AccessChain 17(sbuf2) 19 50
52: 8(float) Load 51
53: 27(fvec3) CompositeConstruct 52 52 52
54: 27(fvec3) FAdd 49 53
--- /dev/null
+hlsl.structbuffer.fn.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:9 Function Definition: get(block--vu4[0]1;u1; (temp 4-component vector of uint)
+0:9 Function Parameters:
+0:9 'sb' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data})
+0:9 'bufferOffset' (in uint)
+0:? Sequence
+0:10 Branch: Return with expression
+0:10 indirect index (layout(row_major std430 ) buffer 4-component vector of uint)
+0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint)
+0:10 'sb' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data})
+0:10 Constant:
+0:10 0 (const uint)
+0:10 'bufferOffset' (in uint)
+0:14 Function Definition: set(block--vu4[0]1;u1;vu4; (temp void)
+0:14 Function Parameters:
+0:14 'sb' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data})
+0:14 'bufferOffset' (in uint)
+0:14 'data' (in 4-component vector of uint)
+0:? Sequence
+0:15 move second child to first child (temp 4-component vector of uint)
+0:15 indirect index (layout(row_major std430 ) buffer 4-component vector of uint)
+0:15 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint)
+0:15 'sb' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data})
+0:15 Constant:
+0:15 0 (const uint)
+0:15 'bufferOffset' (in uint)
+0:15 'data' (in 4-component vector of uint)
+0:19 Function Definition: @main(u1; (temp 4-component vector of float)
+0:19 Function Parameters:
+0:19 'pos' (in uint)
+0:? Sequence
+0:20 Function Call: set(block--vu4[0]1;u1;vu4; (temp void)
+0:20 'sbuf2' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data})
+0:20 Constant:
+0:20 2 (const uint)
+0:20 Function Call: get(block--vu4[0]1;u1; (temp 4-component vector of uint)
+0:20 'sbuf' (layout(binding=10 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data})
+0:20 Constant:
+0:20 3 (const uint)
+0:22 Branch: Return with expression
+0:22 Constant:
+0:22 0.000000
+0:22 0.000000
+0:22 0.000000
+0:22 0.000000
+0:19 Function Definition: main( (temp void)
+0:19 Function Parameters:
+0:? Sequence
+0:19 move second child to first child (temp uint)
+0:? 'pos' (temp uint)
+0:? 'pos' (layout(location=0 ) in uint)
+0:19 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:19 Function Call: @main(u1; (temp 4-component vector of float)
+0:? 'pos' (temp uint)
+0:? Linker Objects
+0:? 'sbuf' (layout(binding=10 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data})
+0:? 'sbuf2' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data})
+0:? 'sbuf3' (layout(binding=12 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of 3-component vector of uint @data})
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'pos' (layout(location=0 ) in uint)
+
+
+Linked fragment stage:
+
+
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:9 Function Definition: get(block--vu4[0]1;u1; (temp 4-component vector of uint)
+0:9 Function Parameters:
+0:9 'sb' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data})
+0:9 'bufferOffset' (in uint)
+0:? Sequence
+0:10 Branch: Return with expression
+0:10 indirect index (layout(row_major std430 ) buffer 4-component vector of uint)
+0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint)
+0:10 'sb' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data})
+0:10 Constant:
+0:10 0 (const uint)
+0:10 'bufferOffset' (in uint)
+0:14 Function Definition: set(block--vu4[0]1;u1;vu4; (temp void)
+0:14 Function Parameters:
+0:14 'sb' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data})
+0:14 'bufferOffset' (in uint)
+0:14 'data' (in 4-component vector of uint)
+0:? Sequence
+0:15 move second child to first child (temp 4-component vector of uint)
+0:15 indirect index (layout(row_major std430 ) buffer 4-component vector of uint)
+0:15 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint)
+0:15 'sb' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data})
+0:15 Constant:
+0:15 0 (const uint)
+0:15 'bufferOffset' (in uint)
+0:15 'data' (in 4-component vector of uint)
+0:19 Function Definition: @main(u1; (temp 4-component vector of float)
+0:19 Function Parameters:
+0:19 'pos' (in uint)
+0:? Sequence
+0:20 Function Call: set(block--vu4[0]1;u1;vu4; (temp void)
+0:20 'sbuf2' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data})
+0:20 Constant:
+0:20 2 (const uint)
+0:20 Function Call: get(block--vu4[0]1;u1; (temp 4-component vector of uint)
+0:20 'sbuf' (layout(binding=10 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data})
+0:20 Constant:
+0:20 3 (const uint)
+0:22 Branch: Return with expression
+0:22 Constant:
+0:22 0.000000
+0:22 0.000000
+0:22 0.000000
+0:22 0.000000
+0:19 Function Definition: main( (temp void)
+0:19 Function Parameters:
+0:? Sequence
+0:19 move second child to first child (temp uint)
+0:? 'pos' (temp uint)
+0:? 'pos' (layout(location=0 ) in uint)
+0:19 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:19 Function Call: @main(u1; (temp 4-component vector of float)
+0:? 'pos' (temp uint)
+0:? Linker Objects
+0:? 'sbuf' (layout(binding=10 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data})
+0:? 'sbuf2' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data})
+0:? 'sbuf3' (layout(binding=12 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of 3-component vector of uint @data})
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'pos' (layout(location=0 ) in uint)
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 71
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 59 62
+ ExecutionMode 4 OriginUpperLeft
+ Name 4 "main"
+ Name 9 ""
+ MemberName 9 0 "@data"
+ Name 15 "get(block--vu4[0]1;u1;"
+ Name 13 "sb"
+ Name 14 "bufferOffset"
+ Name 18 ""
+ MemberName 18 0 "@data"
+ Name 25 "set(block--vu4[0]1;u1;vu4;"
+ Name 22 "sb"
+ Name 23 "bufferOffset"
+ Name 24 "data"
+ Name 31 "@main(u1;"
+ Name 30 "pos"
+ Name 44 "sbuf2"
+ Name 46 "sbuf"
+ Name 48 "param"
+ Name 50 "param"
+ Name 51 "param"
+ Name 57 "pos"
+ Name 59 "pos"
+ Name 62 "@entryPointOutput"
+ Name 63 "param"
+ Name 68 "sbuf3"
+ MemberName 68(sbuf3) 0 "@data"
+ Name 70 "sbuf3"
+ Decorate 8 ArrayStride 16
+ MemberDecorate 9 0 NonWritable
+ MemberDecorate 9 0 Offset 0
+ Decorate 9 BufferBlock
+ Decorate 17 ArrayStride 16
+ MemberDecorate 18 0 Offset 0
+ Decorate 18 BufferBlock
+ Decorate 44(sbuf2) DescriptorSet 0
+ Decorate 46(sbuf) DescriptorSet 0
+ Decorate 46(sbuf) Binding 10
+ Decorate 59(pos) Location 0
+ Decorate 62(@entryPointOutput) Location 0
+ Decorate 67 ArrayStride 16
+ MemberDecorate 68(sbuf3) 0 NonWritable
+ MemberDecorate 68(sbuf3) 0 Offset 0
+ Decorate 68(sbuf3) BufferBlock
+ Decorate 70(sbuf3) DescriptorSet 0
+ Decorate 70(sbuf3) Binding 12
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: TypeVector 6(int) 4
+ 8: TypeRuntimeArray 7(ivec4)
+ 9: TypeStruct 8
+ 10: TypePointer Uniform 9(struct)
+ 11: TypePointer Function 6(int)
+ 12: TypeFunction 7(ivec4) 10(ptr) 11(ptr)
+ 17: TypeRuntimeArray 7(ivec4)
+ 18: TypeStruct 17
+ 19: TypePointer Uniform 18(struct)
+ 20: TypePointer Function 7(ivec4)
+ 21: TypeFunction 2 19(ptr) 11(ptr) 20(ptr)
+ 27: TypeFloat 32
+ 28: TypeVector 27(float) 4
+ 29: TypeFunction 28(fvec4) 11(ptr)
+ 33: TypeInt 32 1
+ 34: 33(int) Constant 0
+ 36: TypePointer Uniform 7(ivec4)
+ 44(sbuf2): 19(ptr) Variable Uniform
+ 45: 6(int) Constant 2
+ 46(sbuf): 10(ptr) Variable Uniform
+ 47: 6(int) Constant 3
+ 53: 27(float) Constant 0
+ 54: 28(fvec4) ConstantComposite 53 53 53 53
+ 58: TypePointer Input 6(int)
+ 59(pos): 58(ptr) Variable Input
+ 61: TypePointer Output 28(fvec4)
+62(@entryPointOutput): 61(ptr) Variable Output
+ 66: TypeVector 6(int) 3
+ 67: TypeRuntimeArray 66(ivec3)
+ 68(sbuf3): TypeStruct 67
+ 69: TypePointer Uniform 68(sbuf3)
+ 70(sbuf3): 69(ptr) Variable Uniform
+ 4(main): 2 Function None 3
+ 5: Label
+ 57(pos): 11(ptr) Variable Function
+ 63(param): 11(ptr) Variable Function
+ 60: 6(int) Load 59(pos)
+ Store 57(pos) 60
+ 64: 6(int) Load 57(pos)
+ Store 63(param) 64
+ 65: 28(fvec4) FunctionCall 31(@main(u1;) 63(param)
+ Store 62(@entryPointOutput) 65
+ Return
+ FunctionEnd
+15(get(block--vu4[0]1;u1;): 7(ivec4) Function None 12
+ 13(sb): 10(ptr) FunctionParameter
+14(bufferOffset): 11(ptr) FunctionParameter
+ 16: Label
+ 35: 6(int) Load 14(bufferOffset)
+ 37: 36(ptr) AccessChain 13(sb) 34 35
+ 38: 7(ivec4) Load 37
+ ReturnValue 38
+ FunctionEnd
+25(set(block--vu4[0]1;u1;vu4;): 2 Function None 21
+ 22(sb): 19(ptr) FunctionParameter
+23(bufferOffset): 11(ptr) FunctionParameter
+ 24(data): 20(ptr) FunctionParameter
+ 26: Label
+ 41: 6(int) Load 23(bufferOffset)
+ 42: 7(ivec4) Load 24(data)
+ 43: 36(ptr) AccessChain 22(sb) 34 41
+ Store 43 42
+ Return
+ FunctionEnd
+ 31(@main(u1;): 28(fvec4) Function None 29
+ 30(pos): 11(ptr) FunctionParameter
+ 32: Label
+ 48(param): 11(ptr) Variable Function
+ 50(param): 11(ptr) Variable Function
+ 51(param): 20(ptr) Variable Function
+ Store 48(param) 47
+ 49: 7(ivec4) FunctionCall 15(get(block--vu4[0]1;u1;) 46(sbuf) 48(param)
+ Store 50(param) 45
+ Store 51(param) 49
+ 52: 2 FunctionCall 25(set(block--vu4[0]1;u1;vu4;) 44(sbuf2) 50(param) 51(param)
+ ReturnValue 54
+ FunctionEnd
0:13 Sequence
0:13 move second child to first child (temp structure{temp 3-component vector of float color, temp bool test, temp bool test2})
0:13 'mydata' (temp structure{temp 3-component vector of float color, temp bool test, temp bool test2})
-0:13 indirect index (layout(binding=10 row_major std430 ) readonly buffer structure{temp 3-component vector of float color, temp bool test, temp bool test2})
-0:13 sbuf: direct index for structure (layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2})
-0:13 'anon@0' (layout(binding=10 row_major std430 ) readonly buffer block{layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} sbuf})
+0:13 indirect index (layout(row_major std430 ) buffer structure{temp 3-component vector of float color, temp bool test, temp bool test2})
+0:13 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2})
+0:13 'sbuf' (layout(binding=10 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} @data})
0:13 Constant:
0:13 0 (const uint)
0:13 'pos' (in uint)
0:17 move second child to first child (temp uint)
0:17 'size' (temp uint)
0:17 array length (temp uint)
-0:17 sbuf: direct index for structure (layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2})
-0:17 'anon@0' (layout(binding=10 row_major std430 ) readonly buffer block{layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} sbuf})
+0:17 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2})
+0:17 'sbuf' (layout(binding=10 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} @data})
0:17 Constant:
0:17 0 (const uint)
0:17 move second child to first child (temp uint)
0:19 Test condition and select (temp void)
0:19 Condition
0:19 test: direct index for structure (temp bool)
-0:19 indirect index (layout(binding=10 row_major std430 ) readonly temp structure{temp 3-component vector of float color, temp bool test, temp bool test2})
-0:19 sbuf: direct index for structure (layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2})
-0:19 'anon@0' (layout(binding=10 row_major std430 ) readonly buffer block{layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} sbuf})
+0:19 indirect index (layout(row_major std430 ) buffer structure{temp 3-component vector of float color, temp bool test, temp bool test2})
+0:19 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2})
+0:19 'sbuf' (layout(binding=10 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} @data})
0:19 Constant:
0:19 0 (const uint)
0:19 'pos' (in uint)
0:? Construct vec4 (temp 4-component vector of float)
0:20 add (temp 3-component vector of float)
0:20 color: direct index for structure (temp 3-component vector of float)
-0:20 indirect index (layout(binding=10 row_major std430 ) readonly temp structure{temp 3-component vector of float color, temp bool test, temp bool test2})
-0:20 sbuf: direct index for structure (layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2})
-0:20 'anon@0' (layout(binding=10 row_major std430 ) readonly buffer block{layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} sbuf})
+0:20 indirect index (layout(row_major std430 ) buffer structure{temp 3-component vector of float color, temp bool test, temp bool test2})
+0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2})
+0:20 'sbuf' (layout(binding=10 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} @data})
0:20 Constant:
0:20 0 (const uint)
0:20 'pos' (in uint)
0:20 Constant:
0:20 0 (const int)
-0:20 indirect index (layout(row_major std430 ) readonly temp float)
-0:20 sbuf2: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of float)
-0:20 'anon@1' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of float sbuf2})
+0:20 indirect index (layout(row_major std430 ) buffer float)
+0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of float)
+0:20 'sbuf2' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data})
0:20 Constant:
0:20 0 (const uint)
0:20 'pos' (in uint)
0:12 Function Call: @main(u1; (temp 4-component vector of float)
0:? 'pos' (temp uint)
0:? Linker Objects
-0:? 'anon@0' (layout(binding=10 row_major std430 ) readonly buffer block{layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} sbuf})
-0:? 'anon@1' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of float sbuf2})
+0:? 'sbuf' (layout(binding=10 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} @data})
+0:? 'sbuf2' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data})
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:? 'pos' (layout(location=0 ) in uint)
0:13 Sequence
0:13 move second child to first child (temp structure{temp 3-component vector of float color, temp bool test, temp bool test2})
0:13 'mydata' (temp structure{temp 3-component vector of float color, temp bool test, temp bool test2})
-0:13 indirect index (layout(binding=10 row_major std430 ) readonly buffer structure{temp 3-component vector of float color, temp bool test, temp bool test2})
-0:13 sbuf: direct index for structure (layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2})
-0:13 'anon@0' (layout(binding=10 row_major std430 ) readonly buffer block{layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} sbuf})
+0:13 indirect index (layout(row_major std430 ) buffer structure{temp 3-component vector of float color, temp bool test, temp bool test2})
+0:13 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2})
+0:13 'sbuf' (layout(binding=10 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} @data})
0:13 Constant:
0:13 0 (const uint)
0:13 'pos' (in uint)
0:17 move second child to first child (temp uint)
0:17 'size' (temp uint)
0:17 array length (temp uint)
-0:17 sbuf: direct index for structure (layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2})
-0:17 'anon@0' (layout(binding=10 row_major std430 ) readonly buffer block{layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} sbuf})
+0:17 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2})
+0:17 'sbuf' (layout(binding=10 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} @data})
0:17 Constant:
0:17 0 (const uint)
0:17 move second child to first child (temp uint)
0:19 Test condition and select (temp void)
0:19 Condition
0:19 test: direct index for structure (temp bool)
-0:19 indirect index (layout(binding=10 row_major std430 ) readonly temp structure{temp 3-component vector of float color, temp bool test, temp bool test2})
-0:19 sbuf: direct index for structure (layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2})
-0:19 'anon@0' (layout(binding=10 row_major std430 ) readonly buffer block{layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} sbuf})
+0:19 indirect index (layout(row_major std430 ) buffer structure{temp 3-component vector of float color, temp bool test, temp bool test2})
+0:19 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2})
+0:19 'sbuf' (layout(binding=10 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} @data})
0:19 Constant:
0:19 0 (const uint)
0:19 'pos' (in uint)
0:? Construct vec4 (temp 4-component vector of float)
0:20 add (temp 3-component vector of float)
0:20 color: direct index for structure (temp 3-component vector of float)
-0:20 indirect index (layout(binding=10 row_major std430 ) readonly temp structure{temp 3-component vector of float color, temp bool test, temp bool test2})
-0:20 sbuf: direct index for structure (layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2})
-0:20 'anon@0' (layout(binding=10 row_major std430 ) readonly buffer block{layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} sbuf})
+0:20 indirect index (layout(row_major std430 ) buffer structure{temp 3-component vector of float color, temp bool test, temp bool test2})
+0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2})
+0:20 'sbuf' (layout(binding=10 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} @data})
0:20 Constant:
0:20 0 (const uint)
0:20 'pos' (in uint)
0:20 Constant:
0:20 0 (const int)
-0:20 indirect index (layout(row_major std430 ) readonly temp float)
-0:20 sbuf2: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of float)
-0:20 'anon@1' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of float sbuf2})
+0:20 indirect index (layout(row_major std430 ) buffer float)
+0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of float)
+0:20 'sbuf2' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data})
0:20 Constant:
0:20 0 (const uint)
0:20 'pos' (in uint)
0:12 Function Call: @main(u1; (temp 4-component vector of float)
0:? 'pos' (temp uint)
0:? Linker Objects
-0:? 'anon@0' (layout(binding=10 row_major std430 ) readonly buffer block{layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} sbuf})
-0:? 'anon@1' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of float sbuf2})
+0:? 'sbuf' (layout(binding=10 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} @data})
+0:? 'sbuf2' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data})
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:? 'pos' (layout(location=0 ) in uint)
MemberName 19(sb_t) 1 "test"
MemberName 19(sb_t) 2 "test2"
Name 21 "sbuf"
- MemberName 21(sbuf) 0 "sbuf"
- Name 23 ""
+ MemberName 21(sbuf) 0 "@data"
+ Name 23 "sbuf"
Name 40 "size"
Name 42 "stride"
Name 57 "sbuf2"
- MemberName 57(sbuf2) 0 "sbuf2"
- Name 59 ""
+ MemberName 57(sbuf2) 0 "@data"
+ Name 59 "sbuf2"
Name 85 "pos"
Name 87 "pos"
Name 90 "@entryPointOutput"
MemberDecorate 21(sbuf) 0 NonWritable
MemberDecorate 21(sbuf) 0 Offset 0
Decorate 21(sbuf) BufferBlock
- Decorate 23 DescriptorSet 0
- Decorate 23 Binding 10
+ Decorate 23(sbuf) DescriptorSet 0
+ Decorate 23(sbuf) Binding 10
Decorate 56 ArrayStride 4
MemberDecorate 57(sbuf2) 0 NonWritable
MemberDecorate 57(sbuf2) 0 Offset 0
Decorate 57(sbuf2) BufferBlock
- Decorate 59 DescriptorSet 0
+ Decorate 59(sbuf2) DescriptorSet 0
Decorate 87(pos) Location 0
Decorate 90(@entryPointOutput) Location 0
2: TypeVoid
20: TypeRuntimeArray 19(sb_t)
21(sbuf): TypeStruct 20
22: TypePointer Uniform 21(sbuf)
- 23: 22(ptr) Variable Uniform
+ 23(sbuf): 22(ptr) Variable Uniform
24: TypeInt 32 1
25: 24(int) Constant 0
27: TypePointer Uniform 19(sb_t)
56: TypeRuntimeArray 8(float)
57(sbuf2): TypeStruct 56
58: TypePointer Uniform 57(sbuf2)
- 59: 58(ptr) Variable Uniform
+ 59(sbuf2): 58(ptr) Variable Uniform
61: TypePointer Uniform 8(float)
66: 8(float) Constant 0
73: TypePointer Function 8(float)
40(size): 7(ptr) Variable Function
42(stride): 7(ptr) Variable Function
26: 6(int) Load 11(pos)
- 28: 27(ptr) AccessChain 23 25 26
+ 28: 27(ptr) AccessChain 23(sbuf) 25 26
29: 19(sb_t) Load 28
30: 14(fvec3) CompositeExtract 29 0
32: 31(ptr) AccessChain 18(mydata) 25
37: 6(int) CompositeExtract 29 2
39: 35(ptr) AccessChain 18(mydata) 38
Store 39 37
- 41: 24(int) ArrayLength 23 0
+ 41: 24(int) ArrayLength 23(sbuf) 0
Store 40(size) 41
Store 42(stride) 43
44: 6(int) Load 11(pos)
- 46: 45(ptr) AccessChain 23 25 44 34
+ 46: 45(ptr) AccessChain 23(sbuf) 25 44 34
47: 6(int) Load 46
49: 15(bool) INotEqual 47 48
SelectionMerge 51 None
BranchConditional 49 50 72
50: Label
52: 6(int) Load 11(pos)
- 54: 53(ptr) AccessChain 23 25 52 25
+ 54: 53(ptr) AccessChain 23(sbuf) 25 52 25
55: 14(fvec3) Load 54
60: 6(int) Load 11(pos)
- 62: 61(ptr) AccessChain 59 25 60
+ 62: 61(ptr) AccessChain 59(sbuf2) 25 60
63: 8(float) Load 62
64: 14(fvec3) CompositeConstruct 63 63 63
65: 14(fvec3) FAdd 55 64
0:12 'pos' (in uint)
0:? Sequence
0:13 move second child to first child (temp float)
-0:13 indirect index (layout(row_major std430 ) temp float)
-0:13 sbuf2: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of float)
-0:13 'anon@1' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of float sbuf2})
+0:13 indirect index (layout(row_major std430 ) buffer float)
+0:13 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of float)
+0:13 'sbuf2' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data})
0:13 Constant:
0:13 0 (const uint)
0:13 add (temp uint)
0:17 move second child to first child (temp uint)
0:17 'size' (temp uint)
0:17 array length (temp uint)
-0:17 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
-0:17 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf})
+0:17 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
+0:17 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data})
0:17 Constant:
0:17 0 (const uint)
0:17 move second child to first child (temp uint)
0:19 Test condition and select (temp void)
0:19 Condition
0:19 test: direct index for structure (temp bool)
-0:19 indirect index (layout(row_major std430 ) temp structure{temp 3-component vector of float color, temp bool test})
-0:19 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
-0:19 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf})
+0:19 indirect index (layout(row_major std430 ) buffer structure{temp 3-component vector of float color, temp bool test})
+0:19 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
+0:19 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data})
0:19 Constant:
0:19 0 (const uint)
0:19 'pos' (in uint)
0:? Construct vec4 (temp 4-component vector of float)
0:20 add (temp 3-component vector of float)
0:20 color: direct index for structure (temp 3-component vector of float)
-0:20 indirect index (layout(row_major std430 ) temp structure{temp 3-component vector of float color, temp bool test})
-0:20 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
-0:20 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf})
+0:20 indirect index (layout(row_major std430 ) buffer structure{temp 3-component vector of float color, temp bool test})
+0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
+0:20 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data})
0:20 Constant:
0:20 0 (const uint)
0:20 'pos' (in uint)
0:20 Constant:
0:20 0 (const int)
-0:20 indirect index (layout(row_major std430 ) temp float)
-0:20 sbuf2: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of float)
-0:20 'anon@1' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of float sbuf2})
+0:20 indirect index (layout(row_major std430 ) buffer float)
+0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of float)
+0:20 'sbuf2' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data})
0:20 Constant:
0:20 0 (const uint)
0:20 'pos' (in uint)
0:12 Function Call: @main(u1; (temp 4-component vector of float)
0:? 'pos' (temp uint)
0:? Linker Objects
-0:? 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf})
-0:? 'anon@1' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of float sbuf2})
+0:? 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data})
+0:? 'sbuf2' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data})
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:? 'pos' (layout(location=0 ) in uint)
0:12 'pos' (in uint)
0:? Sequence
0:13 move second child to first child (temp float)
-0:13 indirect index (layout(row_major std430 ) temp float)
-0:13 sbuf2: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of float)
-0:13 'anon@1' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of float sbuf2})
+0:13 indirect index (layout(row_major std430 ) buffer float)
+0:13 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of float)
+0:13 'sbuf2' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data})
0:13 Constant:
0:13 0 (const uint)
0:13 add (temp uint)
0:17 move second child to first child (temp uint)
0:17 'size' (temp uint)
0:17 array length (temp uint)
-0:17 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
-0:17 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf})
+0:17 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
+0:17 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data})
0:17 Constant:
0:17 0 (const uint)
0:17 move second child to first child (temp uint)
0:19 Test condition and select (temp void)
0:19 Condition
0:19 test: direct index for structure (temp bool)
-0:19 indirect index (layout(row_major std430 ) temp structure{temp 3-component vector of float color, temp bool test})
-0:19 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
-0:19 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf})
+0:19 indirect index (layout(row_major std430 ) buffer structure{temp 3-component vector of float color, temp bool test})
+0:19 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
+0:19 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data})
0:19 Constant:
0:19 0 (const uint)
0:19 'pos' (in uint)
0:? Construct vec4 (temp 4-component vector of float)
0:20 add (temp 3-component vector of float)
0:20 color: direct index for structure (temp 3-component vector of float)
-0:20 indirect index (layout(row_major std430 ) temp structure{temp 3-component vector of float color, temp bool test})
-0:20 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
-0:20 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf})
+0:20 indirect index (layout(row_major std430 ) buffer structure{temp 3-component vector of float color, temp bool test})
+0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
+0:20 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data})
0:20 Constant:
0:20 0 (const uint)
0:20 'pos' (in uint)
0:20 Constant:
0:20 0 (const int)
-0:20 indirect index (layout(row_major std430 ) temp float)
-0:20 sbuf2: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of float)
-0:20 'anon@1' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of float sbuf2})
+0:20 indirect index (layout(row_major std430 ) buffer float)
+0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of float)
+0:20 'sbuf2' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data})
0:20 Constant:
0:20 0 (const uint)
0:20 'pos' (in uint)
0:12 Function Call: @main(u1; (temp 4-component vector of float)
0:? 'pos' (temp uint)
0:? Linker Objects
-0:? 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf})
-0:? 'anon@1' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of float sbuf2})
+0:? 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data})
+0:? 'sbuf2' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data})
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:? 'pos' (layout(location=0 ) in uint)
Name 12 "@main(u1;"
Name 11 "pos"
Name 15 "sbuf2"
- MemberName 15(sbuf2) 0 "sbuf2"
- Name 17 ""
+ MemberName 15(sbuf2) 0 "@data"
+ Name 17 "sbuf2"
Name 26 "size"
Name 28 "sb_t"
MemberName 28(sb_t) 0 "color"
MemberName 28(sb_t) 1 "test"
Name 30 "sbuf"
- MemberName 30(sbuf) 0 "sbuf"
- Name 32 ""
+ MemberName 30(sbuf) 0 "@data"
+ Name 32 "sbuf"
Name 34 "stride"
Name 69 "pos"
Name 71 "pos"
Decorate 14 ArrayStride 4
MemberDecorate 15(sbuf2) 0 Offset 0
Decorate 15(sbuf2) BufferBlock
- Decorate 17 DescriptorSet 0
+ Decorate 17(sbuf2) DescriptorSet 0
MemberDecorate 28(sb_t) 0 Offset 0
MemberDecorate 28(sb_t) 1 Offset 12
Decorate 29 ArrayStride 16
MemberDecorate 30(sbuf) 0 Offset 0
Decorate 30(sbuf) BufferBlock
- Decorate 32 DescriptorSet 0
+ Decorate 32(sbuf) DescriptorSet 0
Decorate 71(pos) Location 0
Decorate 74(@entryPointOutput) Location 0
2: TypeVoid
14: TypeRuntimeArray 8(float)
15(sbuf2): TypeStruct 14
16: TypePointer Uniform 15(sbuf2)
- 17: 16(ptr) Variable Uniform
+ 17(sbuf2): 16(ptr) Variable Uniform
18: TypeInt 32 1
19: 18(int) Constant 0
21: 6(int) Constant 1
29: TypeRuntimeArray 28(sb_t)
30(sbuf): TypeStruct 29
31: TypePointer Uniform 30(sbuf)
- 32: 31(ptr) Variable Uniform
+ 32(sbuf): 31(ptr) Variable Uniform
35: 6(int) Constant 16
37: 18(int) Constant 1
38: TypePointer Uniform 6(int)
34(stride): 7(ptr) Variable Function
20: 6(int) Load 11(pos)
22: 6(int) IAdd 20 21
- 25: 24(ptr) AccessChain 17 19 22
+ 25: 24(ptr) AccessChain 17(sbuf2) 19 22
Store 25 23
- 33: 18(int) ArrayLength 32 0
+ 33: 18(int) ArrayLength 32(sbuf) 0
Store 26(size) 33
Store 34(stride) 35
36: 6(int) Load 11(pos)
- 39: 38(ptr) AccessChain 32 19 36 37
+ 39: 38(ptr) AccessChain 32(sbuf) 19 36 37
40: 6(int) Load 39
43: 41(bool) INotEqual 40 42
SelectionMerge 45 None
BranchConditional 43 44 61
44: Label
46: 6(int) Load 11(pos)
- 48: 47(ptr) AccessChain 32 19 46 19
+ 48: 47(ptr) AccessChain 32(sbuf) 19 46 19
49: 27(fvec3) Load 48
50: 6(int) Load 11(pos)
- 51: 24(ptr) AccessChain 17 19 50
+ 51: 24(ptr) AccessChain 17(sbuf2) 19 50
52: 8(float) Load 51
53: 27(fvec3) CompositeConstruct 52 52 52
54: 27(fvec3) FAdd 49 53
0:7 move second child to first child (temp uint)
0:7 'size' (temp uint)
0:7 array length (temp uint)
-0:7 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:7 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:7 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:7 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:7 Constant:
0:7 0 (const uint)
0:? Sequence
0:9 2 (const int)
0:9 move second child to first child (temp float)
0:9 indirect index (temp float)
-0:9 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:9 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:9 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:9 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:9 Constant:
0:9 0 (const uint)
0:9 'byteAddrTemp' (temp int)
0:9 Convert uint to float (temp float)
0:9 indirect index (layout(row_major std430 ) buffer uint)
-0:9 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:9 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:9 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:9 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:9 Constant:
0:9 0 (const uint)
0:9 right-shift (temp int)
0:10 2 (const int)
0:10 move second child to first child (temp float)
0:10 indirect index (temp float)
-0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:10 Constant:
0:10 0 (const uint)
0:10 'byteAddrTemp' (temp int)
0:10 2 (const int)
0:? Construct vec2 (temp 2-component vector of uint)
0:10 indirect index (temp float)
-0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:10 Constant:
0:10 0 (const uint)
0:10 'byteAddrTemp' (temp int)
0:10 indirect index (temp float)
-0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:10 Constant:
0:10 0 (const uint)
0:10 add (temp int)
0:10 0 (const int)
0:10 move second child to first child (temp float)
0:10 indirect index (temp float)
-0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:10 Constant:
0:10 0 (const uint)
0:10 add (temp int)
0:10 2 (const int)
0:? Construct vec2 (temp 2-component vector of uint)
0:10 indirect index (temp float)
-0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:10 Constant:
0:10 0 (const uint)
0:10 'byteAddrTemp' (temp int)
0:10 indirect index (temp float)
-0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:10 Constant:
0:10 0 (const uint)
0:10 add (temp int)
0:11 2 (const int)
0:11 move second child to first child (temp float)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 'byteAddrTemp' (temp int)
0:11 2 (const int)
0:? Construct vec3 (temp 3-component vector of uint)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 'byteAddrTemp' (temp int)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 add (temp int)
0:11 Constant:
0:11 1 (const int)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 add (temp int)
0:11 0 (const int)
0:11 move second child to first child (temp float)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 add (temp int)
0:11 2 (const int)
0:? Construct vec3 (temp 3-component vector of uint)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 'byteAddrTemp' (temp int)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 add (temp int)
0:11 Constant:
0:11 1 (const int)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 add (temp int)
0:11 1 (const int)
0:11 move second child to first child (temp float)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 add (temp int)
0:11 2 (const int)
0:? Construct vec3 (temp 3-component vector of uint)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 'byteAddrTemp' (temp int)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 add (temp int)
0:11 Constant:
0:11 1 (const int)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 add (temp int)
0:12 2 (const int)
0:12 move second child to first child (temp float)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 'byteAddrTemp' (temp int)
0:12 2 (const int)
0:? Construct vec4 (temp 4-component vector of uint)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 'byteAddrTemp' (temp int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
0:12 Constant:
0:12 1 (const int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
0:12 Constant:
0:12 2 (const int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
0:12 0 (const int)
0:12 move second child to first child (temp float)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
0:12 2 (const int)
0:? Construct vec4 (temp 4-component vector of uint)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 'byteAddrTemp' (temp int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
0:12 Constant:
0:12 1 (const int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
0:12 Constant:
0:12 2 (const int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
0:12 1 (const int)
0:12 move second child to first child (temp float)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
0:12 2 (const int)
0:? Construct vec4 (temp 4-component vector of uint)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 'byteAddrTemp' (temp int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
0:12 Constant:
0:12 1 (const int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
0:12 Constant:
0:12 2 (const int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
0:12 2 (const int)
0:12 move second child to first child (temp float)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
0:12 2 (const int)
0:? Construct vec4 (temp 4-component vector of uint)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 'byteAddrTemp' (temp int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
0:12 Constant:
0:12 1 (const int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
0:12 Constant:
0:12 2 (const int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
0:14 Construct vec4 (temp 4-component vector of float)
0:14 Convert uint to float (temp float)
0:14 indirect index (layout(row_major std430 ) buffer uint)
-0:14 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:14 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:14 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:14 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:14 Constant:
0:14 0 (const uint)
0:14 right-shift (temp int)
0:5 Function Call: @main(u1; (temp 4-component vector of float)
0:? 'pos' (temp uint)
0:? Linker Objects
-0:? 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:? 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:? 'pos' (layout(location=0 ) in uint)
0:7 move second child to first child (temp uint)
0:7 'size' (temp uint)
0:7 array length (temp uint)
-0:7 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:7 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:7 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:7 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:7 Constant:
0:7 0 (const uint)
0:? Sequence
0:9 2 (const int)
0:9 move second child to first child (temp float)
0:9 indirect index (temp float)
-0:9 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:9 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:9 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:9 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:9 Constant:
0:9 0 (const uint)
0:9 'byteAddrTemp' (temp int)
0:9 Convert uint to float (temp float)
0:9 indirect index (layout(row_major std430 ) buffer uint)
-0:9 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:9 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:9 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:9 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:9 Constant:
0:9 0 (const uint)
0:9 right-shift (temp int)
0:10 2 (const int)
0:10 move second child to first child (temp float)
0:10 indirect index (temp float)
-0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:10 Constant:
0:10 0 (const uint)
0:10 'byteAddrTemp' (temp int)
0:10 2 (const int)
0:? Construct vec2 (temp 2-component vector of uint)
0:10 indirect index (temp float)
-0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:10 Constant:
0:10 0 (const uint)
0:10 'byteAddrTemp' (temp int)
0:10 indirect index (temp float)
-0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:10 Constant:
0:10 0 (const uint)
0:10 add (temp int)
0:10 0 (const int)
0:10 move second child to first child (temp float)
0:10 indirect index (temp float)
-0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:10 Constant:
0:10 0 (const uint)
0:10 add (temp int)
0:10 2 (const int)
0:? Construct vec2 (temp 2-component vector of uint)
0:10 indirect index (temp float)
-0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:10 Constant:
0:10 0 (const uint)
0:10 'byteAddrTemp' (temp int)
0:10 indirect index (temp float)
-0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:10 Constant:
0:10 0 (const uint)
0:10 add (temp int)
0:11 2 (const int)
0:11 move second child to first child (temp float)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 'byteAddrTemp' (temp int)
0:11 2 (const int)
0:? Construct vec3 (temp 3-component vector of uint)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 'byteAddrTemp' (temp int)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 add (temp int)
0:11 Constant:
0:11 1 (const int)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 add (temp int)
0:11 0 (const int)
0:11 move second child to first child (temp float)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 add (temp int)
0:11 2 (const int)
0:? Construct vec3 (temp 3-component vector of uint)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 'byteAddrTemp' (temp int)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 add (temp int)
0:11 Constant:
0:11 1 (const int)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 add (temp int)
0:11 1 (const int)
0:11 move second child to first child (temp float)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 add (temp int)
0:11 2 (const int)
0:? Construct vec3 (temp 3-component vector of uint)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 'byteAddrTemp' (temp int)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 add (temp int)
0:11 Constant:
0:11 1 (const int)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 add (temp int)
0:12 2 (const int)
0:12 move second child to first child (temp float)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 'byteAddrTemp' (temp int)
0:12 2 (const int)
0:? Construct vec4 (temp 4-component vector of uint)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 'byteAddrTemp' (temp int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
0:12 Constant:
0:12 1 (const int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
0:12 Constant:
0:12 2 (const int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
0:12 0 (const int)
0:12 move second child to first child (temp float)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
0:12 2 (const int)
0:? Construct vec4 (temp 4-component vector of uint)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 'byteAddrTemp' (temp int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
0:12 Constant:
0:12 1 (const int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
0:12 Constant:
0:12 2 (const int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
0:12 1 (const int)
0:12 move second child to first child (temp float)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
0:12 2 (const int)
0:? Construct vec4 (temp 4-component vector of uint)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 'byteAddrTemp' (temp int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
0:12 Constant:
0:12 1 (const int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
0:12 Constant:
0:12 2 (const int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
0:12 2 (const int)
0:12 move second child to first child (temp float)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
0:12 2 (const int)
0:? Construct vec4 (temp 4-component vector of uint)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 'byteAddrTemp' (temp int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
0:12 Constant:
0:12 1 (const int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
0:12 Constant:
0:12 2 (const int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
0:14 Construct vec4 (temp 4-component vector of float)
0:14 Convert uint to float (temp float)
0:14 indirect index (layout(row_major std430 ) buffer uint)
-0:14 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:14 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:14 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:14 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:14 Constant:
0:14 0 (const uint)
0:14 right-shift (temp int)
0:5 Function Call: @main(u1; (temp 4-component vector of float)
0:? 'pos' (temp uint)
0:? Linker Objects
-0:? 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:? 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:? 'pos' (layout(location=0 ) in uint)
Name 11 "pos"
Name 14 "size"
Name 16 "sbuf"
- MemberName 16(sbuf) 0 "sbuf"
- Name 18 ""
+ MemberName 16(sbuf) 0 "@data"
+ Name 18 "sbuf"
Name 22 "byteAddrTemp"
Name 35 "byteAddrTemp"
Name 39 "byteAddrTemp"
Decorate 15 ArrayStride 4
MemberDecorate 16(sbuf) 0 Offset 0
Decorate 16(sbuf) BufferBlock
- Decorate 18 DescriptorSet 0
+ Decorate 18(sbuf) DescriptorSet 0
Decorate 233(pos) Location 0
Decorate 236(@entryPointOutput) Location 0
2: TypeVoid
15: TypeRuntimeArray 6(int)
16(sbuf): TypeStruct 15
17: TypePointer Uniform 16(sbuf)
- 18: 17(ptr) Variable Uniform
+ 18(sbuf): 17(ptr) Variable Uniform
19: TypeInt 32 1
21: TypePointer Function 19(int)
24: 19(int) Constant 2
74(byteAddrTemp): 21(ptr) Variable Function
129(byteAddrTemp): 21(ptr) Variable Function
133(byteAddrTemp): 21(ptr) Variable Function
- 20: 19(int) ArrayLength 18 0
+ 20: 19(int) ArrayLength 18(sbuf) 0
Store 14(size) 20
23: 6(int) Load 11(pos)
25: 19(int) ShiftRightLogical 23 24
27: 19(int) Load 22(byteAddrTemp)
28: 6(int) Load 11(pos)
29: 19(int) ShiftRightLogical 28 24
- 31: 30(ptr) AccessChain 18 26 29
+ 31: 30(ptr) AccessChain 18(sbuf) 26 29
32: 6(int) Load 31
33: 8(float) ConvertUToF 32
- 34: 30(ptr) AccessChain 18 26 27
+ 34: 30(ptr) AccessChain 18(sbuf) 26 27
Store 34 33
36: 6(int) Load 11(pos)
37: 19(int) ShiftRightLogical 36 24
41: 19(int) ShiftRightLogical 40 24
Store 39(byteAddrTemp) 41
42: 19(int) Load 39(byteAddrTemp)
- 43: 30(ptr) AccessChain 18 26 42
+ 43: 30(ptr) AccessChain 18(sbuf) 26 42
44: 6(int) Load 43
45: 19(int) Load 39(byteAddrTemp)
47: 19(int) IAdd 45 46
- 48: 30(ptr) AccessChain 18 26 47
+ 48: 30(ptr) AccessChain 18(sbuf) 26 47
49: 6(int) Load 48
51: 50(ivec2) CompositeConstruct 44 49
53: 6(int) CompositeExtract 51 0
- 54: 30(ptr) AccessChain 18 26 38
+ 54: 30(ptr) AccessChain 18(sbuf) 26 38
Store 54 53
55: 19(int) Load 35(byteAddrTemp)
56: 19(int) IAdd 55 46
58: 19(int) ShiftRightLogical 57 24
Store 39(byteAddrTemp) 58
59: 19(int) Load 39(byteAddrTemp)
- 60: 30(ptr) AccessChain 18 26 59
+ 60: 30(ptr) AccessChain 18(sbuf) 26 59
61: 6(int) Load 60
62: 19(int) Load 39(byteAddrTemp)
63: 19(int) IAdd 62 46
- 64: 30(ptr) AccessChain 18 26 63
+ 64: 30(ptr) AccessChain 18(sbuf) 26 63
65: 6(int) Load 64
66: 50(ivec2) CompositeConstruct 61 65
68: 6(int) CompositeExtract 66 1
- 69: 30(ptr) AccessChain 18 26 56
+ 69: 30(ptr) AccessChain 18(sbuf) 26 56
Store 69 68
71: 6(int) Load 11(pos)
72: 19(int) ShiftRightLogical 71 24
76: 19(int) ShiftRightLogical 75 24
Store 74(byteAddrTemp) 76
77: 19(int) Load 74(byteAddrTemp)
- 78: 30(ptr) AccessChain 18 26 77
+ 78: 30(ptr) AccessChain 18(sbuf) 26 77
79: 6(int) Load 78
80: 19(int) Load 74(byteAddrTemp)
81: 19(int) IAdd 80 46
- 82: 30(ptr) AccessChain 18 26 81
+ 82: 30(ptr) AccessChain 18(sbuf) 26 81
83: 6(int) Load 82
84: 19(int) Load 74(byteAddrTemp)
85: 19(int) IAdd 84 24
- 86: 30(ptr) AccessChain 18 26 85
+ 86: 30(ptr) AccessChain 18(sbuf) 26 85
87: 6(int) Load 86
89: 88(ivec3) CompositeConstruct 79 83 87
90: 6(int) CompositeExtract 89 0
- 91: 30(ptr) AccessChain 18 26 73
+ 91: 30(ptr) AccessChain 18(sbuf) 26 73
Store 91 90
92: 19(int) Load 70(byteAddrTemp)
93: 19(int) IAdd 92 46
95: 19(int) ShiftRightLogical 94 24
Store 74(byteAddrTemp) 95
96: 19(int) Load 74(byteAddrTemp)
- 97: 30(ptr) AccessChain 18 26 96
+ 97: 30(ptr) AccessChain 18(sbuf) 26 96
98: 6(int) Load 97
99: 19(int) Load 74(byteAddrTemp)
100: 19(int) IAdd 99 46
- 101: 30(ptr) AccessChain 18 26 100
+ 101: 30(ptr) AccessChain 18(sbuf) 26 100
102: 6(int) Load 101
103: 19(int) Load 74(byteAddrTemp)
104: 19(int) IAdd 103 24
- 105: 30(ptr) AccessChain 18 26 104
+ 105: 30(ptr) AccessChain 18(sbuf) 26 104
106: 6(int) Load 105
107: 88(ivec3) CompositeConstruct 98 102 106
108: 6(int) CompositeExtract 107 1
- 109: 30(ptr) AccessChain 18 26 93
+ 109: 30(ptr) AccessChain 18(sbuf) 26 93
Store 109 108
110: 19(int) Load 70(byteAddrTemp)
111: 19(int) IAdd 110 24
113: 19(int) ShiftRightLogical 112 24
Store 74(byteAddrTemp) 113
114: 19(int) Load 74(byteAddrTemp)
- 115: 30(ptr) AccessChain 18 26 114
+ 115: 30(ptr) AccessChain 18(sbuf) 26 114
116: 6(int) Load 115
117: 19(int) Load 74(byteAddrTemp)
118: 19(int) IAdd 117 46
- 119: 30(ptr) AccessChain 18 26 118
+ 119: 30(ptr) AccessChain 18(sbuf) 26 118
120: 6(int) Load 119
121: 19(int) Load 74(byteAddrTemp)
122: 19(int) IAdd 121 24
- 123: 30(ptr) AccessChain 18 26 122
+ 123: 30(ptr) AccessChain 18(sbuf) 26 122
124: 6(int) Load 123
125: 88(ivec3) CompositeConstruct 116 120 124
127: 6(int) CompositeExtract 125 2
- 128: 30(ptr) AccessChain 18 26 111
+ 128: 30(ptr) AccessChain 18(sbuf) 26 111
Store 128 127
130: 6(int) Load 11(pos)
131: 19(int) ShiftRightLogical 130 24
135: 19(int) ShiftRightLogical 134 24
Store 133(byteAddrTemp) 135
136: 19(int) Load 133(byteAddrTemp)
- 137: 30(ptr) AccessChain 18 26 136
+ 137: 30(ptr) AccessChain 18(sbuf) 26 136
138: 6(int) Load 137
139: 19(int) Load 133(byteAddrTemp)
140: 19(int) IAdd 139 46
- 141: 30(ptr) AccessChain 18 26 140
+ 141: 30(ptr) AccessChain 18(sbuf) 26 140
142: 6(int) Load 141
143: 19(int) Load 133(byteAddrTemp)
144: 19(int) IAdd 143 24
- 145: 30(ptr) AccessChain 18 26 144
+ 145: 30(ptr) AccessChain 18(sbuf) 26 144
146: 6(int) Load 145
147: 19(int) Load 133(byteAddrTemp)
149: 19(int) IAdd 147 148
- 150: 30(ptr) AccessChain 18 26 149
+ 150: 30(ptr) AccessChain 18(sbuf) 26 149
151: 6(int) Load 150
153: 152(ivec4) CompositeConstruct 138 142 146 151
154: 6(int) CompositeExtract 153 0
- 155: 30(ptr) AccessChain 18 26 132
+ 155: 30(ptr) AccessChain 18(sbuf) 26 132
Store 155 154
156: 19(int) Load 129(byteAddrTemp)
157: 19(int) IAdd 156 46
159: 19(int) ShiftRightLogical 158 24
Store 133(byteAddrTemp) 159
160: 19(int) Load 133(byteAddrTemp)
- 161: 30(ptr) AccessChain 18 26 160
+ 161: 30(ptr) AccessChain 18(sbuf) 26 160
162: 6(int) Load 161
163: 19(int) Load 133(byteAddrTemp)
164: 19(int) IAdd 163 46
- 165: 30(ptr) AccessChain 18 26 164
+ 165: 30(ptr) AccessChain 18(sbuf) 26 164
166: 6(int) Load 165
167: 19(int) Load 133(byteAddrTemp)
168: 19(int) IAdd 167 24
- 169: 30(ptr) AccessChain 18 26 168
+ 169: 30(ptr) AccessChain 18(sbuf) 26 168
170: 6(int) Load 169
171: 19(int) Load 133(byteAddrTemp)
172: 19(int) IAdd 171 148
- 173: 30(ptr) AccessChain 18 26 172
+ 173: 30(ptr) AccessChain 18(sbuf) 26 172
174: 6(int) Load 173
175: 152(ivec4) CompositeConstruct 162 166 170 174
176: 6(int) CompositeExtract 175 1
- 177: 30(ptr) AccessChain 18 26 157
+ 177: 30(ptr) AccessChain 18(sbuf) 26 157
Store 177 176
178: 19(int) Load 129(byteAddrTemp)
179: 19(int) IAdd 178 24
181: 19(int) ShiftRightLogical 180 24
Store 133(byteAddrTemp) 181
182: 19(int) Load 133(byteAddrTemp)
- 183: 30(ptr) AccessChain 18 26 182
+ 183: 30(ptr) AccessChain 18(sbuf) 26 182
184: 6(int) Load 183
185: 19(int) Load 133(byteAddrTemp)
186: 19(int) IAdd 185 46
- 187: 30(ptr) AccessChain 18 26 186
+ 187: 30(ptr) AccessChain 18(sbuf) 26 186
188: 6(int) Load 187
189: 19(int) Load 133(byteAddrTemp)
190: 19(int) IAdd 189 24
- 191: 30(ptr) AccessChain 18 26 190
+ 191: 30(ptr) AccessChain 18(sbuf) 26 190
192: 6(int) Load 191
193: 19(int) Load 133(byteAddrTemp)
194: 19(int) IAdd 193 148
- 195: 30(ptr) AccessChain 18 26 194
+ 195: 30(ptr) AccessChain 18(sbuf) 26 194
196: 6(int) Load 195
197: 152(ivec4) CompositeConstruct 184 188 192 196
198: 6(int) CompositeExtract 197 2
- 199: 30(ptr) AccessChain 18 26 179
+ 199: 30(ptr) AccessChain 18(sbuf) 26 179
Store 199 198
200: 19(int) Load 129(byteAddrTemp)
201: 19(int) IAdd 200 148
203: 19(int) ShiftRightLogical 202 24
Store 133(byteAddrTemp) 203
204: 19(int) Load 133(byteAddrTemp)
- 205: 30(ptr) AccessChain 18 26 204
+ 205: 30(ptr) AccessChain 18(sbuf) 26 204
206: 6(int) Load 205
207: 19(int) Load 133(byteAddrTemp)
208: 19(int) IAdd 207 46
- 209: 30(ptr) AccessChain 18 26 208
+ 209: 30(ptr) AccessChain 18(sbuf) 26 208
210: 6(int) Load 209
211: 19(int) Load 133(byteAddrTemp)
212: 19(int) IAdd 211 24
- 213: 30(ptr) AccessChain 18 26 212
+ 213: 30(ptr) AccessChain 18(sbuf) 26 212
214: 6(int) Load 213
215: 19(int) Load 133(byteAddrTemp)
216: 19(int) IAdd 215 148
- 217: 30(ptr) AccessChain 18 26 216
+ 217: 30(ptr) AccessChain 18(sbuf) 26 216
218: 6(int) Load 217
219: 152(ivec4) CompositeConstruct 206 210 214 218
221: 6(int) CompositeExtract 219 3
- 222: 30(ptr) AccessChain 18 26 201
+ 222: 30(ptr) AccessChain 18(sbuf) 26 201
Store 222 221
223: 6(int) Load 11(pos)
224: 19(int) ShiftRightLogical 223 24
- 225: 30(ptr) AccessChain 18 26 224
+ 225: 30(ptr) AccessChain 18(sbuf) 26 224
226: 6(int) Load 225
227: 8(float) ConvertUToF 226
228: 9(fvec4) CompositeConstruct 227 227 227 227
MemberName 14(BufType) 0 "va"
MemberName 14(BufType) 1 "vb"
Name 16 "SB0"
- MemberName 16(SB0) 0 "SB0"
- Name 18 ""
+ MemberName 16(SB0) 0 "@data"
+ Name 18 "SB0"
Name 26 "TestCB"
MemberName 26(TestCB) 0 "W"
MemberName 26(TestCB) 1 "H"
Name 28 ""
Name 55 "SB1"
- MemberName 55(SB1) 0 "SB1"
- Name 57 ""
+ MemberName 55(SB1) 0 "@data"
+ Name 57 "SB1"
Name 86 "pos"
Name 88 "pos"
Name 91 "@entryPointOutput"
MemberDecorate 16(SB0) 0 NonWritable
MemberDecorate 16(SB0) 0 Offset 0
Decorate 16(SB0) BufferBlock
- Decorate 18 DescriptorSet 0
- Decorate 18 Binding 30
+ Decorate 18(SB0) DescriptorSet 0
+ Decorate 18(SB0) Binding 30
MemberDecorate 26(TestCB) 0 Offset 0
MemberDecorate 26(TestCB) 1 Offset 4
Decorate 26(TestCB) Block
Decorate 54 ArrayStride 32
MemberDecorate 55(SB1) 0 Offset 0
Decorate 55(SB1) BufferBlock
- Decorate 57 DescriptorSet 0
- Decorate 57 Binding 31
+ Decorate 57(SB1) DescriptorSet 0
+ Decorate 57(SB1) Binding 31
Decorate 88(pos) Location 0
Decorate 91(@entryPointOutput) Location 0
2: TypeVoid
15: TypeRuntimeArray 14(BufType)
16(SB0): TypeStruct 15
17: TypePointer Uniform 16(SB0)
- 18: 17(ptr) Variable Uniform
+ 18(SB0): 17(ptr) Variable Uniform
19: TypeInt 32 1
20: 19(int) Constant 0
21: TypeInt 32 0
54: TypeRuntimeArray 14(BufType)
55(SB1): TypeStruct 54
56: TypePointer Uniform 55(SB1)
- 57: 56(ptr) Variable Uniform
+ 57(SB1): 56(ptr) Variable Uniform
87: TypePointer Input 7(fvec4)
88(pos): 87(ptr) Variable Input
90: TypePointer Output 7(fvec4)
35: 23(ptr) AccessChain 10(pos) 34
36: 6(float) Load 35
37: 6(float) FAdd 33 36
- 39: 38(ptr) AccessChain 18 20 37 20
+ 39: 38(ptr) AccessChain 18(SB0) 20 37 20
40: 7(fvec4) Load 39
41: 23(ptr) AccessChain 10(pos) 22
42: 6(float) Load 41
47: 23(ptr) AccessChain 10(pos) 34
48: 6(float) Load 47
49: 6(float) FAdd 46 48
- 51: 38(ptr) AccessChain 18 20 49 50
+ 51: 38(ptr) AccessChain 18(SB0) 20 49 50
52: 7(fvec4) Load 51
53: 7(fvec4) FAdd 40 52
Store 13(vTmp) 53
64: 23(ptr) AccessChain 10(pos) 34
65: 6(float) Load 64
66: 6(float) FAdd 63 65
- 67: 38(ptr) AccessChain 57 20 66 20
+ 67: 38(ptr) AccessChain 57(SB1) 20 66 20
68: 7(fvec4) Load 67
69: 23(ptr) AccessChain 10(pos) 22
70: 6(float) Load 69
75: 23(ptr) AccessChain 10(pos) 34
76: 6(float) Load 75
77: 6(float) FAdd 74 76
- 78: 38(ptr) AccessChain 57 20 77 50
+ 78: 38(ptr) AccessChain 57(SB1) 20 77 50
79: 7(fvec4) Load 78
80: 7(fvec4) FAdd 68 79
81: 7(fvec4) Load 13(vTmp)
--- /dev/null
+
+StructuredBuffer<uint4> sbuf : register(t10);
+RWStructuredBuffer<uint4> sbuf2;
+
+// Not shared, because of type difference.
+StructuredBuffer<uint3> sbuf3 : register(t12);
+
+uint4 get(in StructuredBuffer<uint4> sb, uint bufferOffset)
+{
+ return sb[bufferOffset];
+}
+
+void set(in RWStructuredBuffer<uint4> sb, uint bufferOffset, uint4 data)
+{
+ sb[bufferOffset] = data;
+}
+
+float4 main(uint pos : FOO) : SV_Target0
+{
+ set(sbuf2, 2, get(sbuf, 3));
+
+ return 0;
+}
mangledName += "M";
break;
case EbtStruct:
- mangledName += "struct-";
+ case EbtBlock:
+ if (basicType == EbtStruct)
+ mangledName += "struct-";
+ else
+ mangledName += "block-";
if (typeName)
mangledName += *typeName;
for (unsigned int i = 0; i < structure->size(); ++i) {
{"hlsl.structbuffer.atomics.frag", "main"},
{"hlsl.structbuffer.byte.frag", "main"},
{"hlsl.structbuffer.coherent.frag", "main"},
+ {"hlsl.structbuffer.fn.frag", "main"},
{"hlsl.structbuffer.rw.frag", "main"},
{"hlsl.structbuffer.rwbyte.frag", "main"},
{"hlsl.structin.vert", "main"},
}
}
- TString* blockName = idToken.string;
-
- // For structbuffers, we couldn't create the block type while accepting the
- // template type, because we need the identifier name. Now that we have that,
- // we can create the buffer type.
- // TODO: how to determine this without looking for implicit array sizes?
- if (variableType.getBasicType() == EbtBlock) {
- const int memberCount = variableType.getStruct()->size();
- assert(memberCount > 0);
-
- TType* contentType = (*variableType.getStruct())[memberCount-1].type;
-
- // Set the field name and qualifier from the declaration, now that we know it.
- if (contentType->isRuntimeSizedArray()) {
- contentType->getQualifier() = variableType.getQualifier();
- blockName = nullptr; // this will be an anonymous block...
- contentType->setFieldName(*idToken.string); // field name is declaration name
- variableType.setTypeName(*idToken.string);
- }
- }
-
- // Hand off the actual declaration
-
// TODO: things scoped within an annotation need their own name space;
// TODO: strings are not yet handled.
if (variableType.getBasicType() != EbtString && parseContext.getAnnotationNestingLevel() == 0) {
if (typedefDecl)
parseContext.declareTypedef(idToken.loc, *idToken.string, variableType);
else if (variableType.getBasicType() == EbtBlock)
- parseContext.declareBlock(idToken.loc, variableType, blockName);
+ parseContext.declareBlock(idToken.loc, variableType, idToken.string);
else {
if (variableType.getQualifier().storage == EvqUniform && ! variableType.containsOpaque()) {
// this isn't really an individual variable, but a member of the $Global buffer
TArraySizes unsizedArray;
unsizedArray.addInnerSize(UnsizedArraySize);
templateType->newArraySizes(unsizedArray);
- templateType->getQualifier().storage = storage;
- templateType->getQualifier().readonly = readonly;
+
+ // field name is canonical for all structbuffers
+ templateType->setFieldName("@data");
// Create block type. TODO: hidden internal uint member when needed
+
TTypeList* blockStruct = new TTypeList;
TTypeLoc member = { templateType, token.loc };
blockStruct->push_back(member);
+ // This is the type of the buffer block (SSBO)
TType blockType(blockStruct, "", templateType->getQualifier());
- // It's not until we see the name during declaration that we can set the
- // field name. That happens in HlslGrammar::acceptDeclaration.
+ blockType.getQualifier().storage = storage;
+ blockType.getQualifier().readonly = readonly;
+
+ // We may have created an equivalent type before, in which case we should use its
+ // deep structure.
+ parseContext.shareStructBufferType(blockType);
+
type.shallowCopy(blockType);
return true;
}
}
+ // Handle operator[] on structured buffers: this indexes into the array element of the buffer.
+ // indexStructBufferContent returns nullptr if it isn't a structuredbuffer (SSBO).
+ TIntermTyped* sbArray = indexStructBufferContent(loc, base);
+ if (sbArray != nullptr) {
+ if (sbArray == nullptr)
+ return nullptr;
+
+ // Now we'll apply the [] index to that array
+ const TOperator idxOp = (index->getQualifier().storage == EvqConst) ? EOpIndexDirect : EOpIndexIndirect;
+
+ TIntermTyped* element = intermediate.addIndex(idxOp, sbArray, index, loc);
+ const TType derefType(sbArray->getType(), 0);
+ element->setType(derefType);
+ return element;
+ }
+
return nullptr;
}
const int vecSize = sampler.isShadow() ? 1 : 4; // TODO: handle arbitrary sample return sizes
return intermediate.addMethod(base, TType(sampler.type, EvqTemporary, vecSize), &field, loc);
}
- } else if (isStructBufferMethod(field) &&
- base->getType().isRuntimeSizedArray() &&
- (base->getQualifier().storage == EvqUniform || base->getQualifier().storage == EvqBuffer)) {
+ } else if (isStructBufferType(base->getType())) {
TType retType(base->getType(), 0);
return intermediate.addMethod(base, retType, &field, loc);
} else if (field == "Append" ||
if (function.getType().getBasicType() != EbtVoid)
clearUniformInputOutput(function.getWritableType().getQualifier());
- // parameters
+ // parameters.
+ // References to structuredbuffer types are left unmodified
for (int i = 0; i < function.getParamCount(); i++)
- clearUniformInputOutput(function[i].type->getQualifier());
+ if (!isReference(*function[i].type))
+ clearUniformInputOutput(function[i].type->getQualifier());
}
// Handle function returns, including type conversions to the function return type
const TOperator op = node->getAsOperator()->getOp();
TIntermAggregate* argAggregate = arguments ? arguments->getAsAggregate() : nullptr;
+ if (argAggregate == nullptr)
+ return;
- TIntermTyped* argArray = argAggregate ? argAggregate->getSequence()[0]->getAsTyped() : nullptr; // array
+ // Buffer is the object upon which method is called, so always arg 0
+ TIntermTyped* bufferObj = argAggregate->getSequence()[0]->getAsTyped();
- // Bail out if not a block method
- if (argArray == nullptr || !argArray->getType().isRuntimeSizedArray())
- return;
+ // Index to obtain the runtime sized array out of the buffer.
+ TIntermTyped* argArray = indexStructBufferContent(loc, bufferObj);
+ if (argArray == nullptr)
+ return; // It might not be a struct buffer method.
switch (op) {
case EOpMethodLoad:
// the symbol table for an arbitrary type. This is a temporary hack until that ability exists.
// It will have false positives, since it doesn't check arg counts or types.
if (arguments && arguments->getAsAggregate()) {
- if (arguments->getAsAggregate()->getSequence()[0]->getAsTyped()->getType().isRuntimeSizedArray()) {
+ if (isStructBufferType(arguments->getAsAggregate()->getSequence()[0]->getAsTyped()->getType())) {
if (isStructBufferMethod(function->getName())) {
const TString mangle = function->getName() + "(";
TSymbol* symbol = symbolTable.find(mangle, &builtIn);
trackLinkage(*block);
}
+//
+// Generate index to the array element in a structure buffer (SSBO)
+//
+TIntermTyped* HlslParseContext::indexStructBufferContent(const TSourceLoc& loc, TIntermTyped* buffer) const
+{
+ // Bail out if not a struct buffer
+ if (buffer == nullptr || ! isStructBufferType(buffer->getType()))
+ return nullptr;
+
+ // Runtime sized array is always the last element.
+ const TTypeList* bufferStruct = buffer->getType().getStruct();
+ TIntermTyped* arrayPosition = intermediate.addConstantUnion(unsigned(bufferStruct->size()-1), loc);
+
+ TIntermTyped* argArray = intermediate.addIndex(EOpIndexDirectStruct, buffer, arrayPosition, loc);
+ argArray->setType(*(*bufferStruct)[bufferStruct->size()-1].type);
+
+ return argArray;
+}
+
+//
+// IFF type is a structuredbuffer/byteaddressbuffer type, return the content
+// (template) type. E.g, StructuredBuffer<MyType> -> MyType. Else return nullptr.
+//
+TType* HlslParseContext::getStructBufferContentType(const TType& type) const
+{
+ if (type.getBasicType() != EbtBlock)
+ return nullptr;
+
+ const int memberCount = type.getStruct()->size();
+ assert(memberCount > 0);
+
+ TType* contentType = (*type.getStruct())[memberCount-1].type;
+
+ return contentType->isRuntimeSizedArray() ? contentType : nullptr;
+}
+
+//
+// If an existing struct buffer has a sharable type, then share it.
+//
+void HlslParseContext::shareStructBufferType(TType& type)
+{
+ // PackOffset must be equivalent to share types on a per-member basis.
+ // Note: cannot use auto type due to recursion. Thus, this is a std::function.
+ const std::function<bool(TType& lhs, TType& rhs)>
+ compareQualifiers = [&](TType& lhs, TType& rhs) -> bool {
+ if (lhs.getQualifier().layoutOffset != rhs.getQualifier().layoutOffset)
+ return false;
+
+ if (lhs.isStruct() != rhs.isStruct())
+ return false;
+
+ if (lhs.isStruct() && rhs.isStruct()) {
+ if (lhs.getStruct()->size() != rhs.getStruct()->size())
+ return false;
+
+ for (int i = 0; i < int(lhs.getStruct()->size()); ++i)
+ if (!compareQualifiers(*(*lhs.getStruct())[i].type, *(*rhs.getStruct())[i].type))
+ return false;
+ }
+
+ return true;
+ };
+
+ // We need to compare certain qualifiers in addition to the type.
+ const auto typeEqual = [compareQualifiers](TType& lhs, TType& rhs) -> bool {
+ if (lhs.getQualifier().readonly != rhs.getQualifier().readonly)
+ return false;
+
+ // If both are structures, recursively look for packOffset equality
+ // as well as type equality.
+ return compareQualifiers(lhs, rhs) && lhs == rhs;
+ };
+
+ // TString typeName;
+ // type.appendMangledName(typeName);
+ // type.setTypeName(typeName);
+
+ // This is an exhaustive O(N) search, but real world shaders have
+ // only a small number of these.
+ for (int idx = 0; idx < int(structBufferTypes.size()); ++idx) {
+ // If the deep structure matches, modulo qualifiers, use it
+ if (typeEqual(*structBufferTypes[idx], type)) {
+ type.shallowCopy(*structBufferTypes[idx]);
+ return;
+ }
+ }
+
+ // Otherwise, remember it:
+ TType* typeCopy = new TType;
+ typeCopy->shallowCopy(type);
+ structBufferTypes.push_back(typeCopy);
+
+ // structBuffTypes.push_back(type.getWritableStruct());
+}
+
void HlslParseContext::paramFix(TType& type)
{
switch (type.getQualifier().storage) {
case EvqTemporary:
type.getQualifier().storage = EvqIn;
break;
+ case EvqBuffer:
+ {
+ // SSBO parameter. These do not go through the declareBlock path since they are fn parameters.
+ correctUniform(type.getQualifier());
+ TQualifier bufferQualifier = globalBufferDefaults;
+ mergeObjectLayoutQualifiers(bufferQualifier, type.getQualifier(), true);
+ bufferQualifier.storage = type.getQualifier().storage;
+ bufferQualifier.readonly = type.getQualifier().readonly;
+ bufferQualifier.coherent = type.getQualifier().coherent;
+ type.getQualifier() = bufferQualifier;
+ break;
+ }
default:
break;
}
if (it != ioTypeMap.end())
type.setStruct(it->second.uniform);
}
+
break;
default:
break;
error(memberLoc, "member cannot contradict block (or what block inherited from global)", "xfb_buffer", "");
}
- if (memberQualifier.hasPacking())
- error(memberLoc, "member of block cannot have a packing layout qualifier", typeList[member].type->getFieldName().c_str(), "");
if (memberQualifier.hasLocation()) {
switch (type.getQualifier().storage) {
case EvqVaryingIn:
}
} else
memberWithoutLocation = true;
- if (memberQualifier.hasAlign()) {
- if (defaultQualification.layoutPacking != ElpStd140 && defaultQualification.layoutPacking != ElpStd430)
- error(memberLoc, "can only be used with std140 or std430 layout packing", "align", "");
- }
TQualifier newMemberQualification = defaultQualification;
mergeQualifiers(newMemberQualification, memberQualifier);
void initFlattening() { flattenLevel.push_back(0); flattenOffset.push_back(0); }
void finalizeFlattening() { flattenLevel.pop_back(); flattenOffset.pop_back(); }
+ // Share struct buffer deep types
+ void shareStructBufferType(TType&);
+
protected:
struct TFlattenData {
TFlattenData() : nextBinding(TQualifier::layoutBindingEnd) { }
bool isSamplerMethod(const TString& name) const;
bool isStructBufferMethod(const TString& name) const;
+ TType* getStructBufferContentType(const TType& type) const;
+ bool isStructBufferType(const TType& type) const { return getStructBufferContentType(type) != nullptr; }
+ TIntermTyped* indexStructBufferContent(const TSourceLoc& loc, TIntermTyped* buffer) const;
+
+ // Return true if this type is a reference. This is not currently a type method in case that's
+ // a language specific answer.
+ bool isReference(const TType& type) const { return isStructBufferType(type); }
+
// Pass through to base class after remembering builtin mappings.
using TParseContextBase::trackLinkage;
void trackLinkage(TSymbol& variable) override;
// Structure splitting data:
TMap<int, TVariable*> splitIoVars; // variables with the builtin interstage IO removed, indexed by unique ID.
+ // Structuredbuffer shared types. Typically there are only a few.
+ TVector<TType*> structBufferTypes;
+
// The builtin interstage IO map considers e.g, EvqPosition on input and output separately, so that we
// can build the linkage correctly if position appears on both sides. Otherwise, multiple positions
// are considered identical.