mirror of
https://github.com/KhronosGroup/glslang
synced 2024-11-08 11:30:06 +00:00
5073d93ec4
Apply memory decorations from GLSL source to the top-level OpVariable. Previously, these decorations would only be applied to individual members. While this is correct behavior, it is more convenient for some front ends to see the decorations (specifically ReadOnly and WriteOnly) applied to the whole variable rather than individual members.
351 lines
20 KiB
Plaintext
351 lines
20 KiB
Plaintext
hlsl.structbuffer.frag
|
|
Shader version: 500
|
|
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 unsized 1-element 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 unsized 1-element 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 unsized 1-element 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 unsized 1-element 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 unsized 1-element 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 unsized 1-element 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:20 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 unsized 1-element 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 unsized 1-element 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 unsized 1-element array of float)
|
|
0:20 'sbuf2' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element 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) flat 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 unsized 1-element 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 unsized 1-element array of float @data})
|
|
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
|
|
0:? 'pos' (layout( location=0) flat in uint)
|
|
|
|
|
|
Linked fragment stage:
|
|
|
|
|
|
Shader version: 500
|
|
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 unsized 1-element 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 unsized 1-element 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 unsized 1-element 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 unsized 1-element 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 unsized 1-element 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 unsized 1-element 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:20 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 unsized 1-element 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 unsized 1-element 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 unsized 1-element array of float)
|
|
0:20 'sbuf2' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element 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) flat 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 unsized 1-element 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 unsized 1-element array of float @data})
|
|
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
|
|
0:? 'pos' (layout( location=0) flat in uint)
|
|
|
|
// Module Version 10000
|
|
// Generated by (magic number): 8000b
|
|
// Id's are bound by 96
|
|
|
|
Capability Shader
|
|
1: ExtInstImport "GLSL.std.450"
|
|
MemoryModel Logical GLSL450
|
|
EntryPoint Fragment 4 "main" 89 92
|
|
ExecutionMode 4 OriginUpperLeft
|
|
Source HLSL 500
|
|
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 43 "size"
|
|
Name 45 "stride"
|
|
Name 59 "sbuf2"
|
|
MemberName 59(sbuf2) 0 "@data"
|
|
Name 61 "sbuf2"
|
|
Name 87 "pos"
|
|
Name 89 "pos"
|
|
Name 92 "@entryPointOutput"
|
|
Name 93 "param"
|
|
MemberDecorate 19(sb_t) 0 Offset 0
|
|
MemberDecorate 19(sb_t) 1 Offset 12
|
|
MemberDecorate 19(sb_t) 2 Offset 16
|
|
Decorate 20 ArrayStride 32
|
|
Decorate 21(sbuf) BufferBlock
|
|
MemberDecorate 21(sbuf) 0 NonWritable
|
|
MemberDecorate 21(sbuf) 0 Offset 0
|
|
Decorate 23(sbuf) NonWritable
|
|
Decorate 23(sbuf) Binding 10
|
|
Decorate 23(sbuf) DescriptorSet 0
|
|
Decorate 58 ArrayStride 4
|
|
Decorate 59(sbuf2) BufferBlock
|
|
MemberDecorate 59(sbuf2) 0 NonWritable
|
|
MemberDecorate 59(sbuf2) 0 Offset 0
|
|
Decorate 61(sbuf2) NonWritable
|
|
Decorate 61(sbuf2) Binding 0
|
|
Decorate 61(sbuf2) DescriptorSet 0
|
|
Decorate 89(pos) Flat
|
|
Decorate 89(pos) Location 0
|
|
Decorate 92(@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: 6(int) Constant 0
|
|
37: TypePointer Function 15(bool)
|
|
40: 24(int) Constant 2
|
|
46: 6(int) Constant 32
|
|
48: TypePointer Uniform 6(int)
|
|
55: TypePointer Uniform 14(fvec3)
|
|
58: TypeRuntimeArray 8(float)
|
|
59(sbuf2): TypeStruct 58
|
|
60: TypePointer Uniform 59(sbuf2)
|
|
61(sbuf2): 60(ptr) Variable Uniform
|
|
63: TypePointer Uniform 8(float)
|
|
68: 8(float) Constant 0
|
|
75: TypePointer Function 8(float)
|
|
88: TypePointer Input 6(int)
|
|
89(pos): 88(ptr) Variable Input
|
|
91: TypePointer Output 9(fvec4)
|
|
92(@entryPointOutput): 91(ptr) Variable Output
|
|
4(main): 2 Function None 3
|
|
5: Label
|
|
87(pos): 7(ptr) Variable Function
|
|
93(param): 7(ptr) Variable Function
|
|
90: 6(int) Load 89(pos)
|
|
Store 87(pos) 90
|
|
94: 6(int) Load 87(pos)
|
|
Store 93(param) 94
|
|
95: 9(fvec4) FunctionCall 12(@main(u1;) 93(param)
|
|
Store 92(@entryPointOutput) 95
|
|
Return
|
|
FunctionEnd
|
|
12(@main(u1;): 9(fvec4) Function None 10
|
|
11(pos): 7(ptr) FunctionParameter
|
|
13: Label
|
|
18(mydata): 17(ptr) Variable Function
|
|
43(size): 7(ptr) Variable Function
|
|
45(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: 15(bool) INotEqual 33 35
|
|
38: 37(ptr) AccessChain 18(mydata) 34
|
|
Store 38 36
|
|
39: 6(int) CompositeExtract 29 2
|
|
41: 15(bool) INotEqual 39 35
|
|
42: 37(ptr) AccessChain 18(mydata) 40
|
|
Store 42 41
|
|
44: 6(int) ArrayLength 23(sbuf) 0
|
|
Store 43(size) 44
|
|
Store 45(stride) 46
|
|
47: 6(int) Load 11(pos)
|
|
49: 48(ptr) AccessChain 23(sbuf) 25 47 34
|
|
50: 6(int) Load 49
|
|
51: 15(bool) INotEqual 50 35
|
|
SelectionMerge 53 None
|
|
BranchConditional 51 52 74
|
|
52: Label
|
|
54: 6(int) Load 11(pos)
|
|
56: 55(ptr) AccessChain 23(sbuf) 25 54 25
|
|
57: 14(fvec3) Load 56
|
|
62: 6(int) Load 11(pos)
|
|
64: 63(ptr) AccessChain 61(sbuf2) 25 62
|
|
65: 8(float) Load 64
|
|
66: 14(fvec3) CompositeConstruct 65 65 65
|
|
67: 14(fvec3) FAdd 57 66
|
|
69: 8(float) CompositeExtract 67 0
|
|
70: 8(float) CompositeExtract 67 1
|
|
71: 8(float) CompositeExtract 67 2
|
|
72: 9(fvec4) CompositeConstruct 69 70 71 68
|
|
ReturnValue 72
|
|
74: Label
|
|
76: 75(ptr) AccessChain 18(mydata) 25 35
|
|
77: 8(float) Load 76
|
|
78: 6(int) Load 43(size)
|
|
79: 8(float) ConvertUToF 78
|
|
80: 8(float) FAdd 77 79
|
|
81: 6(int) Load 45(stride)
|
|
82: 8(float) ConvertUToF 81
|
|
83: 8(float) FAdd 80 82
|
|
84: 9(fvec4) CompositeConstruct 83 83 83 83
|
|
ReturnValue 84
|
|
53: Label
|
|
Unreachable
|
|
FunctionEnd
|