glslang/Test/baseResults/link.vk.multiBlocksValid.0.0.vert.out
Malcolm Bechard 0b66fa3b62
Shader interface matching rework to fix #2136 (#2156)
* rework how shader interface block naming rules are handled

* Fixes 2136

According to the spec, shader interfaces (uniform blocks, buffer
blocks, input blocks, output blocks) all should be matched up via
their block names across all compilation units, not instance names.
Also, all block names can be re-used between all 4 interface types
without conflict. This change makes it so all of these blocks are
matched and remapped using block name and not by instance name.
Additional the rule that matched uniform and buffer blocks must
either be anonymous or named (but not nessearily the same name) is
now imposed.

* add warning if instance names differ between matched shader interfaces

* Add test cases from #2137 which is now fixed as well.

* replace some tab characters with spaces

* buffer blocks and uniform blocks now share the same block namespace
2020-04-02 02:03:53 -06:00

322 lines
24 KiB
Plaintext
Executable File

link.vk.multiBlocksValid.0.0.vert
Shader version: 430
0:? Sequence
0:43 Function Definition: main( ( global void)
0:43 Function Parameters:
0:45 Sequence
0:45 move second child to first child ( temp highp 4-component vector of float)
0:45 'oColor' ( smooth out highp 4-component vector of float)
0:45 component-wise multiply ( temp highp 4-component vector of float)
0:45 component-wise multiply ( temp highp 4-component vector of float)
0:45 color1: direct index for structure (layout( column_major std140 offset=0) uniform highp 4-component vector of float)
0:45 'uC' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3})
0:45 Constant:
0:45 0 (const int)
0:45 Function Call: getColor2( ( global highp 4-component vector of float)
0:45 c: direct index for structure (layout( column_major std430 offset=0) buffer highp 4-component vector of float)
0:45 'uColorBuf' (layout( binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4-component vector of float c})
0:45 Constant:
0:45 0 (const int)
0:46 move second child to first child ( temp highp 4-component vector of float)
0:46 v1: direct index for structure ( out highp 4-component vector of float)
0:46 'oV' ( out block{ out highp 4-component vector of float v1, out highp 4-component vector of float v2})
0:46 Constant:
0:46 0 (const int)
0:46 color1: direct index for structure (layout( column_major std140 offset=0) uniform highp 4-component vector of float)
0:46 'uC' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3})
0:46 Constant:
0:46 0 (const int)
0:48 move second child to first child ( temp highp 4-component vector of float)
0:48 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position)
0:48 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance})
0:48 Constant:
0:48 0 (const uint)
0:48 matrix-times-vector ( temp highp 4-component vector of float)
0:48 uProj: direct index for structure (layout( column_major std140 offset=0) uniform highp 4X4 matrix of float)
0:48 'uM' (layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld})
0:48 Constant:
0:48 0 (const int)
0:48 Function Call: getWorld( ( global highp 4-component vector of float)
0:? Linker Objects
0:? 'uM' (layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld})
0:? 'oV' ( out block{ out highp 4-component vector of float v1, out highp 4-component vector of float v2})
0:? 'uC' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3})
0:? 'uBuf' (layout( binding=1 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4X4 matrix of float p})
0:? 'uColorBuf' (layout( binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4-component vector of float c})
0:? 'oColor' ( smooth out highp 4-component vector of float)
0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance})
link.vk.multiBlocksValid.0.1.vert
Shader version: 430
0:? Sequence
0:36 Function Definition: getColor2( ( global highp 4-component vector of float)
0:36 Function Parameters:
0:38 Sequence
0:38 Branch: Return with expression
0:38 color2: direct index for structure (layout( column_major std140 offset=32) uniform highp 4-component vector of float)
0:38 'uColor' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3})
0:38 Constant:
0:38 2 (const int)
0:41 Function Definition: getWorld( ( global highp 4-component vector of float)
0:41 Function Parameters:
0:43 Sequence
0:43 move second child to first child ( temp highp 4-component vector of float)
0:43 v1: direct index for structure ( out highp 4-component vector of float)
0:43 'anon@0' ( out block{ out highp 4-component vector of float v1, out highp 4-component vector of float v2})
0:43 Constant:
0:43 0 (const uint)
0:43 Constant:
0:43 1.000000
0:43 1.000000
0:43 1.000000
0:43 1.000000
0:44 Branch: Return with expression
0:44 matrix-times-vector ( temp highp 4-component vector of float)
0:44 uWorld: direct index for structure (layout( column_major std140 offset=64) uniform highp 4X4 matrix of float)
0:44 'uMatrix' (layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld})
0:44 Constant:
0:44 1 (const int)
0:44 'P' ( in highp 4-component vector of float)
0:? Linker Objects
0:? 'uColor' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3})
0:? 'uBuffer' (layout( binding=1 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4X4 matrix of float p})
0:? 'uMatrix' (layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld})
0:? 'anon@0' ( out block{ out highp 4-component vector of float v1, out highp 4-component vector of float v2})
0:? 'P' ( in highp 4-component vector of float)
Linked vertex stage:
WARNING: Linking vertex stage: Matched shader interfaces are using different instance names.
uC: "layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3}" versus uColor: "layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3}"
WARNING: Linking vertex stage: Matched shader interfaces are using different instance names.
uBuf: "layout( binding=1 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4X4 matrix of float p}" versus uBuffer: "layout( binding=1 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4X4 matrix of float p}"
WARNING: Linking vertex stage: Matched shader interfaces are using different instance names.
uM: "layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld}" versus uMatrix: "layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld}"
WARNING: Linking vertex stage: Matched shader interfaces are using different instance names.
oV: " out block{ out highp 4-component vector of float v1, out highp 4-component vector of float v2}" versus anon@0: " out block{ out highp 4-component vector of float v1, out highp 4-component vector of float v2}"
Shader version: 430
0:? Sequence
0:43 Function Definition: main( ( global void)
0:43 Function Parameters:
0:45 Sequence
0:45 move second child to first child ( temp highp 4-component vector of float)
0:45 'oColor' ( smooth out highp 4-component vector of float)
0:45 component-wise multiply ( temp highp 4-component vector of float)
0:45 component-wise multiply ( temp highp 4-component vector of float)
0:45 color1: direct index for structure (layout( column_major std140 offset=0) uniform highp 4-component vector of float)
0:45 'uC' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3})
0:45 Constant:
0:45 0 (const int)
0:45 Function Call: getColor2( ( global highp 4-component vector of float)
0:45 c: direct index for structure (layout( column_major std430 offset=0) buffer highp 4-component vector of float)
0:45 'uColorBuf' (layout( binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4-component vector of float c})
0:45 Constant:
0:45 0 (const int)
0:46 move second child to first child ( temp highp 4-component vector of float)
0:46 v1: direct index for structure ( out highp 4-component vector of float)
0:46 'oV' ( out block{ out highp 4-component vector of float v1, out highp 4-component vector of float v2})
0:46 Constant:
0:46 0 (const int)
0:46 color1: direct index for structure (layout( column_major std140 offset=0) uniform highp 4-component vector of float)
0:46 'uC' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3})
0:46 Constant:
0:46 0 (const int)
0:48 move second child to first child ( temp highp 4-component vector of float)
0:48 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position)
0:48 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
0:48 Constant:
0:48 0 (const uint)
0:48 matrix-times-vector ( temp highp 4-component vector of float)
0:48 uProj: direct index for structure (layout( column_major std140 offset=0) uniform highp 4X4 matrix of float)
0:48 'uM' (layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld})
0:48 Constant:
0:48 0 (const int)
0:48 Function Call: getWorld( ( global highp 4-component vector of float)
0:36 Function Definition: getColor2( ( global highp 4-component vector of float)
0:36 Function Parameters:
0:38 Sequence
0:38 Branch: Return with expression
0:38 color2: direct index for structure (layout( column_major std140 offset=32) uniform highp 4-component vector of float)
0:38 'uColor' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3})
0:38 Constant:
0:38 2 (const int)
0:41 Function Definition: getWorld( ( global highp 4-component vector of float)
0:41 Function Parameters:
0:43 Sequence
0:43 move second child to first child ( temp highp 4-component vector of float)
0:43 v1: direct index for structure ( out highp 4-component vector of float)
0:43 'anon@0' ( out block{ out highp 4-component vector of float v1, out highp 4-component vector of float v2})
0:43 Constant:
0:43 0 (const uint)
0:43 Constant:
0:43 1.000000
0:43 1.000000
0:43 1.000000
0:43 1.000000
0:44 Branch: Return with expression
0:44 matrix-times-vector ( temp highp 4-component vector of float)
0:44 uWorld: direct index for structure (layout( column_major std140 offset=64) uniform highp 4X4 matrix of float)
0:44 'uMatrix' (layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld})
0:44 Constant:
0:44 1 (const int)
0:44 'P' ( in highp 4-component vector of float)
0:? Linker Objects
0:? 'uM' (layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld})
0:? 'oV' ( out block{ out highp 4-component vector of float v1, out highp 4-component vector of float v2})
0:? 'uC' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3})
0:? 'uBuf' (layout( binding=1 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4X4 matrix of float p})
0:? 'uColorBuf' (layout( binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4-component vector of float c})
0:? 'oColor' ( smooth out highp 4-component vector of float)
0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
0:? 'P' ( in highp 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80008
// Id's are bound by 73
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 14 34 42 65
Source GLSL 430
Name 4 "main"
Name 9 "getColor2("
Name 11 "getWorld("
Name 14 "oColor"
Name 16 "ColorBlock"
MemberName 16(ColorBlock) 0 "color1"
MemberName 16(ColorBlock) 1 "b"
MemberName 16(ColorBlock) 2 "color2"
MemberName 16(ColorBlock) 3 "color3"
Name 18 "uC"
Name 26 "SecondaryColorBlock"
MemberName 26(SecondaryColorBlock) 0 "c"
Name 28 "uColorBuf"
Name 32 "Vertex"
MemberName 32(Vertex) 0 "v1"
MemberName 32(Vertex) 1 "v2"
Name 34 "oV"
Name 40 "gl_PerVertex"
MemberName 40(gl_PerVertex) 0 "gl_Position"
MemberName 40(gl_PerVertex) 1 "gl_PointSize"
MemberName 40(gl_PerVertex) 2 "gl_ClipDistance"
Name 42 ""
Name 44 "MatrixBlock"
MemberName 44(MatrixBlock) 0 "uProj"
MemberName 44(MatrixBlock) 1 "uWorld"
Name 46 "uM"
Name 65 "P"
Name 70 "BufferBlock"
MemberName 70(BufferBlock) 0 "p"
Name 72 "uBuf"
MemberDecorate 16(ColorBlock) 0 Offset 0
MemberDecorate 16(ColorBlock) 1 Offset 16
MemberDecorate 16(ColorBlock) 2 Offset 32
MemberDecorate 16(ColorBlock) 3 Offset 48
Decorate 16(ColorBlock) Block
Decorate 18(uC) DescriptorSet 0
Decorate 18(uC) Binding 1
MemberDecorate 26(SecondaryColorBlock) 0 Offset 0
Decorate 26(SecondaryColorBlock) BufferBlock
Decorate 28(uColorBuf) DescriptorSet 0
Decorate 28(uColorBuf) Binding 0
Decorate 32(Vertex) Block
MemberDecorate 40(gl_PerVertex) 0 BuiltIn Position
MemberDecorate 40(gl_PerVertex) 1 BuiltIn PointSize
MemberDecorate 40(gl_PerVertex) 2 BuiltIn ClipDistance
Decorate 40(gl_PerVertex) Block
MemberDecorate 44(MatrixBlock) 0 ColMajor
MemberDecorate 44(MatrixBlock) 0 Offset 0
MemberDecorate 44(MatrixBlock) 0 MatrixStride 16
MemberDecorate 44(MatrixBlock) 1 ColMajor
MemberDecorate 44(MatrixBlock) 1 Offset 64
MemberDecorate 44(MatrixBlock) 1 MatrixStride 16
Decorate 44(MatrixBlock) Block
Decorate 46(uM) DescriptorSet 0
Decorate 46(uM) Binding 0
MemberDecorate 70(BufferBlock) 0 ColMajor
MemberDecorate 70(BufferBlock) 0 Offset 0
MemberDecorate 70(BufferBlock) 0 MatrixStride 16
Decorate 70(BufferBlock) BufferBlock
Decorate 72(uBuf) DescriptorSet 0
Decorate 72(uBuf) Binding 1
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypeFunction 7(fvec4)
13: TypePointer Output 7(fvec4)
14(oColor): 13(ptr) Variable Output
15: TypeInt 32 0
16(ColorBlock): TypeStruct 7(fvec4) 15(int) 7(fvec4) 7(fvec4)
17: TypePointer Uniform 16(ColorBlock)
18(uC): 17(ptr) Variable Uniform
19: TypeInt 32 1
20: 19(int) Constant 0
21: TypePointer Uniform 7(fvec4)
26(SecondaryColorBlock): TypeStruct 7(fvec4)
27: TypePointer Uniform 26(SecondaryColorBlock)
28(uColorBuf): 27(ptr) Variable Uniform
32(Vertex): TypeStruct 7(fvec4) 7(fvec4)
33: TypePointer Output 32(Vertex)
34(oV): 33(ptr) Variable Output
38: 15(int) Constant 1
39: TypeArray 6(float) 38
40(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 39
41: TypePointer Output 40(gl_PerVertex)
42: 41(ptr) Variable Output
43: TypeMatrix 7(fvec4) 4
44(MatrixBlock): TypeStruct 43 43
45: TypePointer Uniform 44(MatrixBlock)
46(uM): 45(ptr) Variable Uniform
47: TypePointer Uniform 43
53: 19(int) Constant 2
58: 6(float) Constant 1065353216
59: 7(fvec4) ConstantComposite 58 58 58 58
61: 19(int) Constant 1
64: TypePointer Input 7(fvec4)
65(P): 64(ptr) Variable Input
70(BufferBlock): TypeStruct 43
71: TypePointer Uniform 70(BufferBlock)
72(uBuf): 71(ptr) Variable Uniform
4(main): 2 Function None 3
5: Label
22: 21(ptr) AccessChain 18(uC) 20
23: 7(fvec4) Load 22
24: 7(fvec4) FunctionCall 9(getColor2()
25: 7(fvec4) FMul 23 24
29: 21(ptr) AccessChain 28(uColorBuf) 20
30: 7(fvec4) Load 29
31: 7(fvec4) FMul 25 30
Store 14(oColor) 31
35: 21(ptr) AccessChain 18(uC) 20
36: 7(fvec4) Load 35
37: 13(ptr) AccessChain 34(oV) 20
Store 37 36
48: 47(ptr) AccessChain 46(uM) 20
49: 43 Load 48
50: 7(fvec4) FunctionCall 11(getWorld()
51: 7(fvec4) MatrixTimesVector 49 50
52: 13(ptr) AccessChain 42 20
Store 52 51
Return
FunctionEnd
9(getColor2(): 7(fvec4) Function None 8
10: Label
54: 21(ptr) AccessChain 18(uC) 53
55: 7(fvec4) Load 54
ReturnValue 55
FunctionEnd
11(getWorld(): 7(fvec4) Function None 8
12: Label
60: 13(ptr) AccessChain 34(oV) 20
Store 60 59
62: 47(ptr) AccessChain 46(uM) 61
63: 43 Load 62
66: 7(fvec4) Load 65(P)
67: 7(fvec4) MatrixTimesVector 63 66
ReturnValue 67
FunctionEnd