glslang/Test/baseResults/hlsl.structbuffer.frag.out
steve-lunarg dd8287a109 WIP: HLSL: add structuredbuffer pass by reference in fn params
This PR adds the ability to pass structuredbuffer types by reference
as function parameters.

It also changes the representation of structuredbuffers from anonymous
blocks with named members, to named blocks with pseudonymous members.
That should not be an externally visible change.
2017-02-26 11:13:42 -07:00

348 lines
20 KiB
Plaintext

hlsl.structbuffer.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:12 Function Definition: @main(u1; (temp 4-component vector of float)
0:12 Function Parameters:
0:12 'pos' (in uint)
0:? Sequence
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(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 Sequence
0:17 move second child to first child (temp uint)
0:17 'size' (temp uint)
0:17 array length (temp uint)
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:17 'stride' (temp uint)
0:17 Constant:
0:17 32 (const 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 ) 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:19 Constant:
0:19 1 (const int)
0:19 true case
0:20 Branch: Return with expression
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 ) 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 ) 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:20 Constant:
0:20 0.000000
0:19 false case
0:22 Branch: Return with expression
0:22 Construct vec4 (temp 4-component vector of float)
0:22 add (temp float)
0:22 add (temp float)
0:22 direct index (temp float)
0:22 color: direct index for structure (temp 3-component vector of float)
0:22 'mydata' (temp structure{temp 3-component vector of float color, temp bool test, temp bool test2})
0:22 Constant:
0:22 0 (const int)
0:22 Constant:
0:22 0 (const int)
0:22 Convert uint to float (temp float)
0:22 'size' (temp uint)
0:22 Convert uint to float (temp float)
0:22 'stride' (temp uint)
0:12 Function Definition: main( (temp void)
0:12 Function Parameters:
0:? Sequence
0:12 move second child to first child (temp uint)
0:? 'pos' (temp uint)
0:? 'pos' (layout(location=0 ) in uint)
0:12 move second child to first child (temp 4-component vector of float)
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:12 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 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)
Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:12 Function Definition: @main(u1; (temp 4-component vector of float)
0:12 Function Parameters:
0:12 'pos' (in uint)
0:? Sequence
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(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 Sequence
0:17 move second child to first child (temp uint)
0:17 'size' (temp uint)
0:17 array length (temp uint)
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:17 'stride' (temp uint)
0:17 Constant:
0:17 32 (const 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 ) 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:19 Constant:
0:19 1 (const int)
0:19 true case
0:20 Branch: Return with expression
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 ) 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 ) 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:20 Constant:
0:20 0.000000
0:19 false case
0:22 Branch: Return with expression
0:22 Construct vec4 (temp 4-component vector of float)
0:22 add (temp float)
0:22 add (temp float)
0:22 direct index (temp float)
0:22 color: direct index for structure (temp 3-component vector of float)
0:22 'mydata' (temp structure{temp 3-component vector of float color, temp bool test, temp bool test2})
0:22 Constant:
0:22 0 (const int)
0:22 Constant:
0:22 0 (const int)
0:22 Convert uint to float (temp float)
0:22 'size' (temp uint)
0:22 Convert uint to float (temp float)
0:22 'stride' (temp uint)
0:12 Function Definition: main( (temp void)
0:12 Function Parameters:
0:? Sequence
0:12 move second child to first child (temp uint)
0:? 'pos' (temp uint)
0:? 'pos' (layout(location=0 ) in uint)
0:12 move second child to first child (temp 4-component vector of float)
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:12 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 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)
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 94
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 87 90
ExecutionMode 4 OriginUpperLeft
Name 4 "main"
Name 12 "@main(u1;"
Name 11 "pos"
Name 16 "sb_t"
MemberName 16(sb_t) 0 "color"
MemberName 16(sb_t) 1 "test"
MemberName 16(sb_t) 2 "test2"
Name 18 "mydata"
Name 19 "sb_t"
MemberName 19(sb_t) 0 "color"
MemberName 19(sb_t) 1 "test"
MemberName 19(sb_t) 2 "test2"
Name 21 "sbuf"
MemberName 21(sbuf) 0 "@data"
Name 23 "sbuf"
Name 40 "size"
Name 42 "stride"
Name 57 "sbuf2"
MemberName 57(sbuf2) 0 "@data"
Name 59 "sbuf2"
Name 85 "pos"
Name 87 "pos"
Name 90 "@entryPointOutput"
Name 91 "param"
MemberDecorate 19(sb_t) 0 NonWritable
MemberDecorate 19(sb_t) 0 Offset 0
MemberDecorate 19(sb_t) 1 NonWritable
MemberDecorate 19(sb_t) 1 Offset 12
MemberDecorate 19(sb_t) 2 NonWritable
MemberDecorate 19(sb_t) 2 Offset 16
Decorate 20 ArrayStride 32
MemberDecorate 21(sbuf) 0 NonWritable
MemberDecorate 21(sbuf) 0 Offset 0
Decorate 21(sbuf) BufferBlock
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(sbuf2) DescriptorSet 0
Decorate 87(pos) Location 0
Decorate 90(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
7: TypePointer Function 6(int)
8: TypeFloat 32
9: TypeVector 8(float) 4
10: TypeFunction 9(fvec4) 7(ptr)
14: TypeVector 8(float) 3
15: TypeBool
16(sb_t): TypeStruct 14(fvec3) 15(bool) 15(bool)
17: TypePointer Function 16(sb_t)
19(sb_t): TypeStruct 14(fvec3) 6(int) 6(int)
20: TypeRuntimeArray 19(sb_t)
21(sbuf): TypeStruct 20
22: TypePointer Uniform 21(sbuf)
23(sbuf): 22(ptr) Variable Uniform
24: TypeInt 32 1
25: 24(int) Constant 0
27: TypePointer Uniform 19(sb_t)
31: TypePointer Function 14(fvec3)
34: 24(int) Constant 1
35: TypePointer Function 15(bool)
38: 24(int) Constant 2
43: 6(int) Constant 32
45: TypePointer Uniform 6(int)
48: 6(int) Constant 0
53: TypePointer Uniform 14(fvec3)
56: TypeRuntimeArray 8(float)
57(sbuf2): TypeStruct 56
58: TypePointer Uniform 57(sbuf2)
59(sbuf2): 58(ptr) Variable Uniform
61: TypePointer Uniform 8(float)
66: 8(float) Constant 0
73: TypePointer Function 8(float)
86: TypePointer Input 6(int)
87(pos): 86(ptr) Variable Input
89: TypePointer Output 9(fvec4)
90(@entryPointOutput): 89(ptr) Variable Output
4(main): 2 Function None 3
5: Label
85(pos): 7(ptr) Variable Function
91(param): 7(ptr) Variable Function
88: 6(int) Load 87(pos)
Store 85(pos) 88
92: 6(int) Load 85(pos)
Store 91(param) 92
93: 9(fvec4) FunctionCall 12(@main(u1;) 91(param)
Store 90(@entryPointOutput) 93
Return
FunctionEnd
12(@main(u1;): 9(fvec4) Function None 10
11(pos): 7(ptr) FunctionParameter
13: Label
18(mydata): 17(ptr) Variable Function
40(size): 7(ptr) Variable Function
42(stride): 7(ptr) Variable Function
26: 6(int) Load 11(pos)
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
Store 32 30
33: 6(int) CompositeExtract 29 1
36: 35(ptr) AccessChain 18(mydata) 34
Store 36 33
37: 6(int) CompositeExtract 29 2
39: 35(ptr) AccessChain 18(mydata) 38
Store 39 37
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(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(sbuf) 25 52 25
55: 14(fvec3) Load 54
60: 6(int) Load 11(pos)
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
67: 8(float) CompositeExtract 65 0
68: 8(float) CompositeExtract 65 1
69: 8(float) CompositeExtract 65 2
70: 9(fvec4) CompositeConstruct 67 68 69 66
ReturnValue 70
72: Label
74: 73(ptr) AccessChain 18(mydata) 25 48
75: 8(float) Load 74
76: 6(int) Load 40(size)
77: 8(float) ConvertUToF 76
78: 8(float) FAdd 75 77
79: 6(int) Load 42(stride)
80: 8(float) ConvertUToF 79
81: 8(float) FAdd 78 80
82: 9(fvec4) CompositeConstruct 81 81 81 81
ReturnValue 82
51: Label
84: 9(fvec4) Undef
ReturnValue 84
FunctionEnd