mirror of
https://github.com/KhronosGroup/glslang
synced 2024-11-09 12:00:05 +00:00
GLSL: Add binding map tests
This PR adds a GLSL equivalent to the HLSL binding mapping tests for offsets and auto-numbering. The shaders are as equivalent as possible. The bindings of the base results match exactly between the two.
This commit is contained in:
parent
10f7fc739c
commit
ad0752e8fa
228
Test/baseResults/spv.glsl.register.autoassign.frag.out
Normal file
228
Test/baseResults/spv.glsl.register.autoassign.frag.out
Normal file
@ -0,0 +1,228 @@
|
|||||||
|
spv.glsl.register.autoassign.frag
|
||||||
|
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
|
||||||
|
|
||||||
|
|
||||||
|
Linked fragment stage:
|
||||||
|
|
||||||
|
|
||||||
|
// Module Version 10000
|
||||||
|
// Generated by (magic number): 80001
|
||||||
|
// Id's are bound by 142
|
||||||
|
|
||||||
|
Capability Shader
|
||||||
|
Capability Sampled1D
|
||||||
|
1: ExtInstImport "GLSL.std.450"
|
||||||
|
MemoryModel Logical GLSL450
|
||||||
|
EntryPoint Fragment 4 "main" 137
|
||||||
|
ExecutionMode 4 OriginUpperLeft
|
||||||
|
Source GLSL 450
|
||||||
|
Name 4 "main"
|
||||||
|
Name 9 "Func1("
|
||||||
|
Name 11 "Func2("
|
||||||
|
Name 13 "Func2_unused("
|
||||||
|
Name 17 "g_tTex1"
|
||||||
|
Name 21 "g_sSamp1"
|
||||||
|
Name 27 "g_tTex2"
|
||||||
|
Name 29 "g_sSamp2"
|
||||||
|
Name 39 "g_tTex3"
|
||||||
|
Name 46 "g_sSamp3"
|
||||||
|
Name 64 "g_tTex4"
|
||||||
|
Name 69 "g_sSamp4"
|
||||||
|
Name 84 "g_tTex5"
|
||||||
|
Name 86 "g_sSamp5"
|
||||||
|
Name 93 "MyStruct_t"
|
||||||
|
MemberName 93(MyStruct_t) 0 "a"
|
||||||
|
MemberName 93(MyStruct_t) 1 "b"
|
||||||
|
MemberName 93(MyStruct_t) 2 "c"
|
||||||
|
Name 95 "myblock"
|
||||||
|
MemberName 95(myblock) 0 "mystruct"
|
||||||
|
MemberName 95(myblock) 1 "myvec4_a"
|
||||||
|
MemberName 95(myblock) 2 "myvec4_b"
|
||||||
|
MemberName 95(myblock) 3 "myint4_a"
|
||||||
|
Name 97 ""
|
||||||
|
Name 119 "g_tTex_unused1"
|
||||||
|
Name 121 "g_sSamp_unused1"
|
||||||
|
Name 126 "g_tTex_unused2"
|
||||||
|
Name 128 "g_sSamp_unused2"
|
||||||
|
Name 137 "FragColor"
|
||||||
|
Name 141 "g_tTex_unused3"
|
||||||
|
Decorate 17(g_tTex1) DescriptorSet 0
|
||||||
|
Decorate 17(g_tTex1) Binding 11
|
||||||
|
Decorate 21(g_sSamp1) DescriptorSet 0
|
||||||
|
Decorate 21(g_sSamp1) Binding 5
|
||||||
|
Decorate 27(g_tTex2) DescriptorSet 0
|
||||||
|
Decorate 27(g_tTex2) Binding 1
|
||||||
|
Decorate 29(g_sSamp2) DescriptorSet 0
|
||||||
|
Decorate 29(g_sSamp2) Binding 2
|
||||||
|
Decorate 39(g_tTex3) DescriptorSet 0
|
||||||
|
Decorate 39(g_tTex3) Binding 13
|
||||||
|
Decorate 46(g_sSamp3) DescriptorSet 0
|
||||||
|
Decorate 46(g_sSamp3) Binding 7
|
||||||
|
Decorate 64(g_tTex4) DescriptorSet 0
|
||||||
|
Decorate 64(g_tTex4) Binding 3
|
||||||
|
Decorate 69(g_sSamp4) DescriptorSet 0
|
||||||
|
Decorate 69(g_sSamp4) Binding 4
|
||||||
|
Decorate 84(g_tTex5) DescriptorSet 0
|
||||||
|
Decorate 84(g_tTex5) Binding 6
|
||||||
|
Decorate 86(g_sSamp5) DescriptorSet 0
|
||||||
|
Decorate 86(g_sSamp5) Binding 8
|
||||||
|
MemberDecorate 93(MyStruct_t) 0 Offset 0
|
||||||
|
MemberDecorate 93(MyStruct_t) 1 Offset 4
|
||||||
|
MemberDecorate 93(MyStruct_t) 2 Offset 16
|
||||||
|
MemberDecorate 95(myblock) 0 Offset 0
|
||||||
|
MemberDecorate 95(myblock) 1 Offset 32
|
||||||
|
MemberDecorate 95(myblock) 2 Offset 48
|
||||||
|
MemberDecorate 95(myblock) 3 Offset 64
|
||||||
|
Decorate 95(myblock) Block
|
||||||
|
Decorate 97 DescriptorSet 0
|
||||||
|
Decorate 97 Binding 19
|
||||||
|
Decorate 119(g_tTex_unused1) DescriptorSet 0
|
||||||
|
Decorate 119(g_tTex_unused1) Binding 10
|
||||||
|
Decorate 121(g_sSamp_unused1) DescriptorSet 0
|
||||||
|
Decorate 126(g_tTex_unused2) DescriptorSet 0
|
||||||
|
Decorate 126(g_tTex_unused2) Binding 12
|
||||||
|
Decorate 128(g_sSamp_unused2) DescriptorSet 0
|
||||||
|
Decorate 141(g_tTex_unused3) DescriptorSet 0
|
||||||
|
2: TypeVoid
|
||||||
|
3: TypeFunction 2
|
||||||
|
6: TypeFloat 32
|
||||||
|
7: TypeVector 6(float) 4
|
||||||
|
8: TypeFunction 7(fvec4)
|
||||||
|
15: TypeImage 6(float) 1D sampled format:Unknown
|
||||||
|
16: TypePointer UniformConstant 15
|
||||||
|
17(g_tTex1): 16(ptr) Variable UniformConstant
|
||||||
|
19: TypeSampler
|
||||||
|
20: TypePointer UniformConstant 19
|
||||||
|
21(g_sSamp1): 20(ptr) Variable UniformConstant
|
||||||
|
23: TypeSampledImage 15
|
||||||
|
25: 6(float) Constant 1036831949
|
||||||
|
27(g_tTex2): 16(ptr) Variable UniformConstant
|
||||||
|
29(g_sSamp2): 20(ptr) Variable UniformConstant
|
||||||
|
32: 6(float) Constant 1045220557
|
||||||
|
35: TypeInt 32 0
|
||||||
|
36: 35(int) Constant 2
|
||||||
|
37: TypeArray 15 36
|
||||||
|
38: TypePointer UniformConstant 37
|
||||||
|
39(g_tTex3): 38(ptr) Variable UniformConstant
|
||||||
|
40: TypeInt 32 1
|
||||||
|
41: 40(int) Constant 0
|
||||||
|
44: TypeArray 19 36
|
||||||
|
45: TypePointer UniformConstant 44
|
||||||
|
46(g_sSamp3): 45(ptr) Variable UniformConstant
|
||||||
|
50: 6(float) Constant 1050253722
|
||||||
|
53: 40(int) Constant 1
|
||||||
|
61: 35(int) Constant 3
|
||||||
|
62: TypeArray 15 61
|
||||||
|
63: TypePointer UniformConstant 62
|
||||||
|
64(g_tTex4): 63(ptr) Variable UniformConstant
|
||||||
|
67: TypeArray 19 61
|
||||||
|
68: TypePointer UniformConstant 67
|
||||||
|
69(g_sSamp4): 68(ptr) Variable UniformConstant
|
||||||
|
73: 6(float) Constant 1053609165
|
||||||
|
76: 40(int) Constant 2
|
||||||
|
84(g_tTex5): 16(ptr) Variable UniformConstant
|
||||||
|
86(g_sSamp5): 20(ptr) Variable UniformConstant
|
||||||
|
89: 6(float) Constant 1056964608
|
||||||
|
92: TypeVector 6(float) 3
|
||||||
|
93(MyStruct_t): TypeStruct 40(int) 6(float) 92(fvec3)
|
||||||
|
94: TypeVector 40(int) 4
|
||||||
|
95(myblock): TypeStruct 93(MyStruct_t) 7(fvec4) 7(fvec4) 94(ivec4)
|
||||||
|
96: TypePointer Uniform 95(myblock)
|
||||||
|
97: 96(ptr) Variable Uniform
|
||||||
|
98: 35(int) Constant 1
|
||||||
|
99: TypePointer Uniform 6(float)
|
||||||
|
119(g_tTex_unused1): 16(ptr) Variable UniformConstant
|
||||||
|
121(g_sSamp_unused1): 20(ptr) Variable UniformConstant
|
||||||
|
124: 6(float) Constant 1066192077
|
||||||
|
126(g_tTex_unused2): 16(ptr) Variable UniformConstant
|
||||||
|
128(g_sSamp_unused2): 20(ptr) Variable UniformConstant
|
||||||
|
131: 6(float) Constant 1067030938
|
||||||
|
136: TypePointer Output 7(fvec4)
|
||||||
|
137(FragColor): 136(ptr) Variable Output
|
||||||
|
141(g_tTex_unused3): 16(ptr) Variable UniformConstant
|
||||||
|
4(main): 2 Function None 3
|
||||||
|
5: Label
|
||||||
|
138: 7(fvec4) FunctionCall 9(Func1()
|
||||||
|
139: 7(fvec4) FunctionCall 11(Func2()
|
||||||
|
140: 7(fvec4) FAdd 138 139
|
||||||
|
Store 137(FragColor) 140
|
||||||
|
Return
|
||||||
|
FunctionEnd
|
||||||
|
9(Func1(): 7(fvec4) Function None 8
|
||||||
|
10: Label
|
||||||
|
18: 15 Load 17(g_tTex1)
|
||||||
|
22: 19 Load 21(g_sSamp1)
|
||||||
|
24: 23 SampledImage 18 22
|
||||||
|
26: 7(fvec4) ImageSampleImplicitLod 24 25
|
||||||
|
28: 15 Load 27(g_tTex2)
|
||||||
|
30: 19 Load 29(g_sSamp2)
|
||||||
|
31: 23 SampledImage 28 30
|
||||||
|
33: 7(fvec4) ImageSampleImplicitLod 31 32
|
||||||
|
34: 7(fvec4) FAdd 26 33
|
||||||
|
42: 16(ptr) AccessChain 39(g_tTex3) 41
|
||||||
|
43: 15 Load 42
|
||||||
|
47: 20(ptr) AccessChain 46(g_sSamp3) 41
|
||||||
|
48: 19 Load 47
|
||||||
|
49: 23 SampledImage 43 48
|
||||||
|
51: 7(fvec4) ImageSampleImplicitLod 49 50
|
||||||
|
52: 7(fvec4) FAdd 34 51
|
||||||
|
54: 16(ptr) AccessChain 39(g_tTex3) 53
|
||||||
|
55: 15 Load 54
|
||||||
|
56: 20(ptr) AccessChain 46(g_sSamp3) 53
|
||||||
|
57: 19 Load 56
|
||||||
|
58: 23 SampledImage 55 57
|
||||||
|
59: 7(fvec4) ImageSampleImplicitLod 58 50
|
||||||
|
60: 7(fvec4) FAdd 52 59
|
||||||
|
65: 16(ptr) AccessChain 64(g_tTex4) 53
|
||||||
|
66: 15 Load 65
|
||||||
|
70: 20(ptr) AccessChain 69(g_sSamp4) 53
|
||||||
|
71: 19 Load 70
|
||||||
|
72: 23 SampledImage 66 71
|
||||||
|
74: 7(fvec4) ImageSampleImplicitLod 72 73
|
||||||
|
75: 7(fvec4) FAdd 60 74
|
||||||
|
77: 16(ptr) AccessChain 64(g_tTex4) 76
|
||||||
|
78: 15 Load 77
|
||||||
|
79: 20(ptr) AccessChain 69(g_sSamp4) 76
|
||||||
|
80: 19 Load 79
|
||||||
|
81: 23 SampledImage 78 80
|
||||||
|
82: 7(fvec4) ImageSampleImplicitLod 81 73
|
||||||
|
83: 7(fvec4) FAdd 75 82
|
||||||
|
85: 15 Load 84(g_tTex5)
|
||||||
|
87: 19 Load 86(g_sSamp5)
|
||||||
|
88: 23 SampledImage 85 87
|
||||||
|
90: 7(fvec4) ImageSampleImplicitLod 88 89
|
||||||
|
91: 7(fvec4) FAdd 83 90
|
||||||
|
100: 99(ptr) AccessChain 97 41 76 98
|
||||||
|
101: 6(float) Load 100
|
||||||
|
102: 7(fvec4) CompositeConstruct 101 101 101 101
|
||||||
|
103: 7(fvec4) FAdd 91 102
|
||||||
|
ReturnValue 103
|
||||||
|
FunctionEnd
|
||||||
|
11(Func2(): 7(fvec4) Function None 8
|
||||||
|
12: Label
|
||||||
|
106: 15 Load 17(g_tTex1)
|
||||||
|
107: 19 Load 21(g_sSamp1)
|
||||||
|
108: 23 SampledImage 106 107
|
||||||
|
109: 7(fvec4) ImageSampleImplicitLod 108 25
|
||||||
|
110: 16(ptr) AccessChain 39(g_tTex3) 53
|
||||||
|
111: 15 Load 110
|
||||||
|
112: 20(ptr) AccessChain 46(g_sSamp3) 53
|
||||||
|
113: 19 Load 112
|
||||||
|
114: 23 SampledImage 111 113
|
||||||
|
115: 7(fvec4) ImageSampleImplicitLod 114 50
|
||||||
|
116: 7(fvec4) FAdd 109 115
|
||||||
|
ReturnValue 116
|
||||||
|
FunctionEnd
|
||||||
|
13(Func2_unused(): 7(fvec4) Function None 8
|
||||||
|
14: Label
|
||||||
|
120: 15 Load 119(g_tTex_unused1)
|
||||||
|
122: 19 Load 121(g_sSamp_unused1)
|
||||||
|
123: 23 SampledImage 120 122
|
||||||
|
125: 7(fvec4) ImageSampleImplicitLod 123 124
|
||||||
|
127: 15 Load 126(g_tTex_unused2)
|
||||||
|
129: 19 Load 128(g_sSamp_unused2)
|
||||||
|
130: 23 SampledImage 127 129
|
||||||
|
132: 7(fvec4) ImageSampleImplicitLod 130 131
|
||||||
|
133: 7(fvec4) FAdd 125 132
|
||||||
|
ReturnValue 133
|
||||||
|
FunctionEnd
|
222
Test/baseResults/spv.glsl.register.noautoassign.frag.out
Normal file
222
Test/baseResults/spv.glsl.register.noautoassign.frag.out
Normal file
@ -0,0 +1,222 @@
|
|||||||
|
spv.glsl.register.noautoassign.frag
|
||||||
|
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
|
||||||
|
|
||||||
|
|
||||||
|
Linked fragment stage:
|
||||||
|
|
||||||
|
|
||||||
|
// Module Version 10000
|
||||||
|
// Generated by (magic number): 80001
|
||||||
|
// Id's are bound by 142
|
||||||
|
|
||||||
|
Capability Shader
|
||||||
|
Capability Sampled1D
|
||||||
|
1: ExtInstImport "GLSL.std.450"
|
||||||
|
MemoryModel Logical GLSL450
|
||||||
|
EntryPoint Fragment 4 "main" 137
|
||||||
|
ExecutionMode 4 OriginUpperLeft
|
||||||
|
Source GLSL 450
|
||||||
|
Name 4 "main"
|
||||||
|
Name 9 "Func1("
|
||||||
|
Name 11 "Func2("
|
||||||
|
Name 13 "Func2_unused("
|
||||||
|
Name 17 "g_tTex1"
|
||||||
|
Name 21 "g_sSamp1"
|
||||||
|
Name 27 "g_tTex2"
|
||||||
|
Name 29 "g_sSamp2"
|
||||||
|
Name 39 "g_tTex3"
|
||||||
|
Name 46 "g_sSamp3"
|
||||||
|
Name 64 "g_tTex4"
|
||||||
|
Name 69 "g_sSamp4"
|
||||||
|
Name 84 "g_tTex5"
|
||||||
|
Name 86 "g_sSamp5"
|
||||||
|
Name 93 "MyStruct_t"
|
||||||
|
MemberName 93(MyStruct_t) 0 "a"
|
||||||
|
MemberName 93(MyStruct_t) 1 "b"
|
||||||
|
MemberName 93(MyStruct_t) 2 "c"
|
||||||
|
Name 95 "myblock"
|
||||||
|
MemberName 95(myblock) 0 "mystruct"
|
||||||
|
MemberName 95(myblock) 1 "myvec4_a"
|
||||||
|
MemberName 95(myblock) 2 "myvec4_b"
|
||||||
|
MemberName 95(myblock) 3 "myint4_a"
|
||||||
|
Name 97 ""
|
||||||
|
Name 119 "g_tTex_unused1"
|
||||||
|
Name 121 "g_sSamp_unused1"
|
||||||
|
Name 126 "g_tTex_unused2"
|
||||||
|
Name 128 "g_sSamp_unused2"
|
||||||
|
Name 137 "FragColor"
|
||||||
|
Name 141 "g_tTex_unused3"
|
||||||
|
Decorate 17(g_tTex1) DescriptorSet 0
|
||||||
|
Decorate 17(g_tTex1) Binding 11
|
||||||
|
Decorate 21(g_sSamp1) DescriptorSet 0
|
||||||
|
Decorate 21(g_sSamp1) Binding 5
|
||||||
|
Decorate 27(g_tTex2) DescriptorSet 0
|
||||||
|
Decorate 29(g_sSamp2) DescriptorSet 0
|
||||||
|
Decorate 39(g_tTex3) DescriptorSet 0
|
||||||
|
Decorate 39(g_tTex3) Binding 13
|
||||||
|
Decorate 46(g_sSamp3) DescriptorSet 0
|
||||||
|
Decorate 46(g_sSamp3) Binding 7
|
||||||
|
Decorate 64(g_tTex4) DescriptorSet 0
|
||||||
|
Decorate 69(g_sSamp4) DescriptorSet 0
|
||||||
|
Decorate 84(g_tTex5) DescriptorSet 0
|
||||||
|
Decorate 86(g_sSamp5) DescriptorSet 0
|
||||||
|
MemberDecorate 93(MyStruct_t) 0 Offset 0
|
||||||
|
MemberDecorate 93(MyStruct_t) 1 Offset 4
|
||||||
|
MemberDecorate 93(MyStruct_t) 2 Offset 16
|
||||||
|
MemberDecorate 95(myblock) 0 Offset 0
|
||||||
|
MemberDecorate 95(myblock) 1 Offset 32
|
||||||
|
MemberDecorate 95(myblock) 2 Offset 48
|
||||||
|
MemberDecorate 95(myblock) 3 Offset 64
|
||||||
|
Decorate 95(myblock) Block
|
||||||
|
Decorate 97 DescriptorSet 0
|
||||||
|
Decorate 97 Binding 19
|
||||||
|
Decorate 119(g_tTex_unused1) DescriptorSet 0
|
||||||
|
Decorate 119(g_tTex_unused1) Binding 10
|
||||||
|
Decorate 121(g_sSamp_unused1) DescriptorSet 0
|
||||||
|
Decorate 126(g_tTex_unused2) DescriptorSet 0
|
||||||
|
Decorate 126(g_tTex_unused2) Binding 12
|
||||||
|
Decorate 128(g_sSamp_unused2) DescriptorSet 0
|
||||||
|
Decorate 141(g_tTex_unused3) DescriptorSet 0
|
||||||
|
2: TypeVoid
|
||||||
|
3: TypeFunction 2
|
||||||
|
6: TypeFloat 32
|
||||||
|
7: TypeVector 6(float) 4
|
||||||
|
8: TypeFunction 7(fvec4)
|
||||||
|
15: TypeImage 6(float) 1D sampled format:Unknown
|
||||||
|
16: TypePointer UniformConstant 15
|
||||||
|
17(g_tTex1): 16(ptr) Variable UniformConstant
|
||||||
|
19: TypeSampler
|
||||||
|
20: TypePointer UniformConstant 19
|
||||||
|
21(g_sSamp1): 20(ptr) Variable UniformConstant
|
||||||
|
23: TypeSampledImage 15
|
||||||
|
25: 6(float) Constant 1036831949
|
||||||
|
27(g_tTex2): 16(ptr) Variable UniformConstant
|
||||||
|
29(g_sSamp2): 20(ptr) Variable UniformConstant
|
||||||
|
32: 6(float) Constant 1045220557
|
||||||
|
35: TypeInt 32 0
|
||||||
|
36: 35(int) Constant 2
|
||||||
|
37: TypeArray 15 36
|
||||||
|
38: TypePointer UniformConstant 37
|
||||||
|
39(g_tTex3): 38(ptr) Variable UniformConstant
|
||||||
|
40: TypeInt 32 1
|
||||||
|
41: 40(int) Constant 0
|
||||||
|
44: TypeArray 19 36
|
||||||
|
45: TypePointer UniformConstant 44
|
||||||
|
46(g_sSamp3): 45(ptr) Variable UniformConstant
|
||||||
|
50: 6(float) Constant 1050253722
|
||||||
|
53: 40(int) Constant 1
|
||||||
|
61: 35(int) Constant 3
|
||||||
|
62: TypeArray 15 61
|
||||||
|
63: TypePointer UniformConstant 62
|
||||||
|
64(g_tTex4): 63(ptr) Variable UniformConstant
|
||||||
|
67: TypeArray 19 61
|
||||||
|
68: TypePointer UniformConstant 67
|
||||||
|
69(g_sSamp4): 68(ptr) Variable UniformConstant
|
||||||
|
73: 6(float) Constant 1053609165
|
||||||
|
76: 40(int) Constant 2
|
||||||
|
84(g_tTex5): 16(ptr) Variable UniformConstant
|
||||||
|
86(g_sSamp5): 20(ptr) Variable UniformConstant
|
||||||
|
89: 6(float) Constant 1056964608
|
||||||
|
92: TypeVector 6(float) 3
|
||||||
|
93(MyStruct_t): TypeStruct 40(int) 6(float) 92(fvec3)
|
||||||
|
94: TypeVector 40(int) 4
|
||||||
|
95(myblock): TypeStruct 93(MyStruct_t) 7(fvec4) 7(fvec4) 94(ivec4)
|
||||||
|
96: TypePointer Uniform 95(myblock)
|
||||||
|
97: 96(ptr) Variable Uniform
|
||||||
|
98: 35(int) Constant 1
|
||||||
|
99: TypePointer Uniform 6(float)
|
||||||
|
119(g_tTex_unused1): 16(ptr) Variable UniformConstant
|
||||||
|
121(g_sSamp_unused1): 20(ptr) Variable UniformConstant
|
||||||
|
124: 6(float) Constant 1066192077
|
||||||
|
126(g_tTex_unused2): 16(ptr) Variable UniformConstant
|
||||||
|
128(g_sSamp_unused2): 20(ptr) Variable UniformConstant
|
||||||
|
131: 6(float) Constant 1067030938
|
||||||
|
136: TypePointer Output 7(fvec4)
|
||||||
|
137(FragColor): 136(ptr) Variable Output
|
||||||
|
141(g_tTex_unused3): 16(ptr) Variable UniformConstant
|
||||||
|
4(main): 2 Function None 3
|
||||||
|
5: Label
|
||||||
|
138: 7(fvec4) FunctionCall 9(Func1()
|
||||||
|
139: 7(fvec4) FunctionCall 11(Func2()
|
||||||
|
140: 7(fvec4) FAdd 138 139
|
||||||
|
Store 137(FragColor) 140
|
||||||
|
Return
|
||||||
|
FunctionEnd
|
||||||
|
9(Func1(): 7(fvec4) Function None 8
|
||||||
|
10: Label
|
||||||
|
18: 15 Load 17(g_tTex1)
|
||||||
|
22: 19 Load 21(g_sSamp1)
|
||||||
|
24: 23 SampledImage 18 22
|
||||||
|
26: 7(fvec4) ImageSampleImplicitLod 24 25
|
||||||
|
28: 15 Load 27(g_tTex2)
|
||||||
|
30: 19 Load 29(g_sSamp2)
|
||||||
|
31: 23 SampledImage 28 30
|
||||||
|
33: 7(fvec4) ImageSampleImplicitLod 31 32
|
||||||
|
34: 7(fvec4) FAdd 26 33
|
||||||
|
42: 16(ptr) AccessChain 39(g_tTex3) 41
|
||||||
|
43: 15 Load 42
|
||||||
|
47: 20(ptr) AccessChain 46(g_sSamp3) 41
|
||||||
|
48: 19 Load 47
|
||||||
|
49: 23 SampledImage 43 48
|
||||||
|
51: 7(fvec4) ImageSampleImplicitLod 49 50
|
||||||
|
52: 7(fvec4) FAdd 34 51
|
||||||
|
54: 16(ptr) AccessChain 39(g_tTex3) 53
|
||||||
|
55: 15 Load 54
|
||||||
|
56: 20(ptr) AccessChain 46(g_sSamp3) 53
|
||||||
|
57: 19 Load 56
|
||||||
|
58: 23 SampledImage 55 57
|
||||||
|
59: 7(fvec4) ImageSampleImplicitLod 58 50
|
||||||
|
60: 7(fvec4) FAdd 52 59
|
||||||
|
65: 16(ptr) AccessChain 64(g_tTex4) 53
|
||||||
|
66: 15 Load 65
|
||||||
|
70: 20(ptr) AccessChain 69(g_sSamp4) 53
|
||||||
|
71: 19 Load 70
|
||||||
|
72: 23 SampledImage 66 71
|
||||||
|
74: 7(fvec4) ImageSampleImplicitLod 72 73
|
||||||
|
75: 7(fvec4) FAdd 60 74
|
||||||
|
77: 16(ptr) AccessChain 64(g_tTex4) 76
|
||||||
|
78: 15 Load 77
|
||||||
|
79: 20(ptr) AccessChain 69(g_sSamp4) 76
|
||||||
|
80: 19 Load 79
|
||||||
|
81: 23 SampledImage 78 80
|
||||||
|
82: 7(fvec4) ImageSampleImplicitLod 81 73
|
||||||
|
83: 7(fvec4) FAdd 75 82
|
||||||
|
85: 15 Load 84(g_tTex5)
|
||||||
|
87: 19 Load 86(g_sSamp5)
|
||||||
|
88: 23 SampledImage 85 87
|
||||||
|
90: 7(fvec4) ImageSampleImplicitLod 88 89
|
||||||
|
91: 7(fvec4) FAdd 83 90
|
||||||
|
100: 99(ptr) AccessChain 97 41 76 98
|
||||||
|
101: 6(float) Load 100
|
||||||
|
102: 7(fvec4) CompositeConstruct 101 101 101 101
|
||||||
|
103: 7(fvec4) FAdd 91 102
|
||||||
|
ReturnValue 103
|
||||||
|
FunctionEnd
|
||||||
|
11(Func2(): 7(fvec4) Function None 8
|
||||||
|
12: Label
|
||||||
|
106: 15 Load 17(g_tTex1)
|
||||||
|
107: 19 Load 21(g_sSamp1)
|
||||||
|
108: 23 SampledImage 106 107
|
||||||
|
109: 7(fvec4) ImageSampleImplicitLod 108 25
|
||||||
|
110: 16(ptr) AccessChain 39(g_tTex3) 53
|
||||||
|
111: 15 Load 110
|
||||||
|
112: 20(ptr) AccessChain 46(g_sSamp3) 53
|
||||||
|
113: 19 Load 112
|
||||||
|
114: 23 SampledImage 111 113
|
||||||
|
115: 7(fvec4) ImageSampleImplicitLod 114 50
|
||||||
|
116: 7(fvec4) FAdd 109 115
|
||||||
|
ReturnValue 116
|
||||||
|
FunctionEnd
|
||||||
|
13(Func2_unused(): 7(fvec4) Function None 8
|
||||||
|
14: Label
|
||||||
|
120: 15 Load 119(g_tTex_unused1)
|
||||||
|
122: 19 Load 121(g_sSamp_unused1)
|
||||||
|
123: 23 SampledImage 120 122
|
||||||
|
125: 7(fvec4) ImageSampleImplicitLod 123 124
|
||||||
|
127: 15 Load 126(g_tTex_unused2)
|
||||||
|
129: 19 Load 128(g_sSamp_unused2)
|
||||||
|
130: 23 SampledImage 127 129
|
||||||
|
132: 7(fvec4) ImageSampleImplicitLod 130 131
|
||||||
|
133: 7(fvec4) FAdd 125 132
|
||||||
|
ReturnValue 133
|
||||||
|
FunctionEnd
|
68
Test/spv.glsl.register.autoassign.frag
Normal file
68
Test/spv.glsl.register.autoassign.frag
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
#version 450
|
||||||
|
|
||||||
|
uniform layout(binding=0) sampler g_sSamp1;
|
||||||
|
uniform sampler g_sSamp2;
|
||||||
|
uniform layout(binding=2) sampler g_sSamp3[2];
|
||||||
|
uniform sampler g_sSamp4[3];
|
||||||
|
uniform sampler g_sSamp5;
|
||||||
|
|
||||||
|
uniform sampler g_sSamp_unused1;
|
||||||
|
uniform sampler g_sSamp_unused2;
|
||||||
|
|
||||||
|
uniform layout(binding=1) texture1D g_tTex1;
|
||||||
|
uniform texture1D g_tTex2;
|
||||||
|
uniform layout(binding=3) texture1D g_tTex3[2];
|
||||||
|
uniform texture1D g_tTex4[3];
|
||||||
|
uniform texture1D g_tTex5;
|
||||||
|
|
||||||
|
uniform layout(binding=0) texture1D g_tTex_unused1;
|
||||||
|
uniform layout(binding=2) texture1D g_tTex_unused2;
|
||||||
|
uniform texture1D g_tTex_unused3;
|
||||||
|
|
||||||
|
struct MyStruct_t {
|
||||||
|
int a;
|
||||||
|
float b;
|
||||||
|
vec3 c;
|
||||||
|
};
|
||||||
|
|
||||||
|
uniform layout(binding=4) myblock {
|
||||||
|
MyStruct_t mystruct;
|
||||||
|
vec4 myvec4_a;
|
||||||
|
vec4 myvec4_b;
|
||||||
|
ivec4 myint4_a;
|
||||||
|
};
|
||||||
|
|
||||||
|
vec4 Func1()
|
||||||
|
{
|
||||||
|
return
|
||||||
|
texture(sampler1D(g_tTex1, g_sSamp1), 0.1) +
|
||||||
|
texture(sampler1D(g_tTex2, g_sSamp2), 0.2) +
|
||||||
|
texture(sampler1D(g_tTex3[0], g_sSamp3[0]), 0.3) +
|
||||||
|
texture(sampler1D(g_tTex3[1], g_sSamp3[1]), 0.3) +
|
||||||
|
texture(sampler1D(g_tTex4[1], g_sSamp4[1]), 0.4) +
|
||||||
|
texture(sampler1D(g_tTex4[2], g_sSamp4[2]), 0.4) +
|
||||||
|
texture(sampler1D(g_tTex5, g_sSamp5), 0.5) +
|
||||||
|
mystruct.c[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
vec4 Func2()
|
||||||
|
{
|
||||||
|
return
|
||||||
|
texture(sampler1D(g_tTex1, g_sSamp1), 0.1) +
|
||||||
|
texture(sampler1D(g_tTex3[1], g_sSamp3[1]), 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Not called from entry point:
|
||||||
|
vec4 Func2_unused()
|
||||||
|
{
|
||||||
|
return
|
||||||
|
texture(sampler1D(g_tTex_unused1, g_sSamp_unused1), 1.1) +
|
||||||
|
texture(sampler1D(g_tTex_unused2, g_sSamp_unused2), 1.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
out vec4 FragColor;
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
FragColor = Func1() + Func2();
|
||||||
|
}
|
68
Test/spv.glsl.register.noautoassign.frag
Normal file
68
Test/spv.glsl.register.noautoassign.frag
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
#version 450
|
||||||
|
|
||||||
|
uniform layout(binding=0) sampler g_sSamp1;
|
||||||
|
uniform sampler g_sSamp2;
|
||||||
|
uniform layout(binding=2) sampler g_sSamp3[2];
|
||||||
|
uniform sampler g_sSamp4[3];
|
||||||
|
uniform sampler g_sSamp5;
|
||||||
|
|
||||||
|
uniform sampler g_sSamp_unused1;
|
||||||
|
uniform sampler g_sSamp_unused2;
|
||||||
|
|
||||||
|
uniform layout(binding=1) texture1D g_tTex1;
|
||||||
|
uniform texture1D g_tTex2;
|
||||||
|
uniform layout(binding=3) texture1D g_tTex3[2];
|
||||||
|
uniform texture1D g_tTex4[3];
|
||||||
|
uniform texture1D g_tTex5;
|
||||||
|
|
||||||
|
uniform layout(binding=0) texture1D g_tTex_unused1;
|
||||||
|
uniform layout(binding=2) texture1D g_tTex_unused2;
|
||||||
|
uniform texture1D g_tTex_unused3;
|
||||||
|
|
||||||
|
struct MyStruct_t {
|
||||||
|
int a;
|
||||||
|
float b;
|
||||||
|
vec3 c;
|
||||||
|
};
|
||||||
|
|
||||||
|
uniform layout(binding=4) myblock {
|
||||||
|
MyStruct_t mystruct;
|
||||||
|
vec4 myvec4_a;
|
||||||
|
vec4 myvec4_b;
|
||||||
|
ivec4 myint4_a;
|
||||||
|
};
|
||||||
|
|
||||||
|
vec4 Func1()
|
||||||
|
{
|
||||||
|
return
|
||||||
|
texture(sampler1D(g_tTex1, g_sSamp1), 0.1) +
|
||||||
|
texture(sampler1D(g_tTex2, g_sSamp2), 0.2) +
|
||||||
|
texture(sampler1D(g_tTex3[0], g_sSamp3[0]), 0.3) +
|
||||||
|
texture(sampler1D(g_tTex3[1], g_sSamp3[1]), 0.3) +
|
||||||
|
texture(sampler1D(g_tTex4[1], g_sSamp4[1]), 0.4) +
|
||||||
|
texture(sampler1D(g_tTex4[2], g_sSamp4[2]), 0.4) +
|
||||||
|
texture(sampler1D(g_tTex5, g_sSamp5), 0.5) +
|
||||||
|
mystruct.c[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
vec4 Func2()
|
||||||
|
{
|
||||||
|
return
|
||||||
|
texture(sampler1D(g_tTex1, g_sSamp1), 0.1) +
|
||||||
|
texture(sampler1D(g_tTex3[1], g_sSamp3[1]), 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Not called from entry point:
|
||||||
|
vec4 Func2_unused()
|
||||||
|
{
|
||||||
|
return
|
||||||
|
texture(sampler1D(g_tTex_unused1, g_sSamp_unused1), 1.1) +
|
||||||
|
texture(sampler1D(g_tTex_unused2, g_sSamp_unused2), 1.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
out vec4 FragColor;
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
FragColor = Func1() + Func2();
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
//
|
//
|
||||||
// Copyright (C) 2016 Google, Inc.
|
// Copyright (C) 2016 Google, Inc.
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
@ -65,7 +65,8 @@ using CompileOpenGLToSpirvTest = GlslangTest<::testing::TestWithParam<std::strin
|
|||||||
using VulkanSemantics = GlslangTest<::testing::TestWithParam<std::string>>;
|
using VulkanSemantics = GlslangTest<::testing::TestWithParam<std::string>>;
|
||||||
using OpenGLSemantics = GlslangTest<::testing::TestWithParam<std::string>>;
|
using OpenGLSemantics = GlslangTest<::testing::TestWithParam<std::string>>;
|
||||||
using VulkanAstSemantics = GlslangTest<::testing::TestWithParam<std::string>>;
|
using VulkanAstSemantics = GlslangTest<::testing::TestWithParam<std::string>>;
|
||||||
using HlslSemantics = GlslangTest<::testing::TestWithParam<IoMapData>>;
|
using HlslIoMap = GlslangTest<::testing::TestWithParam<IoMapData>>;
|
||||||
|
using GlslIoMap = GlslangTest<::testing::TestWithParam<IoMapData>>;
|
||||||
|
|
||||||
// Compiling GLSL to SPIR-V under Vulkan semantics. Expected to successfully
|
// Compiling GLSL to SPIR-V under Vulkan semantics. Expected to successfully
|
||||||
// generate SPIR-V.
|
// generate SPIR-V.
|
||||||
@ -112,7 +113,7 @@ TEST_P(VulkanAstSemantics, FromFile)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// HLSL-level Vulkan semantics tests.
|
// HLSL-level Vulkan semantics tests.
|
||||||
TEST_P(HlslSemantics, FromFile)
|
TEST_P(HlslIoMap, FromFile)
|
||||||
{
|
{
|
||||||
loadFileCompileIoMapAndCheck(GLSLANG_TEST_DIRECTORY, GetParam().fileName,
|
loadFileCompileIoMapAndCheck(GLSLANG_TEST_DIRECTORY, GetParam().fileName,
|
||||||
Source::HLSL, Semantics::Vulkan,
|
Source::HLSL, Semantics::Vulkan,
|
||||||
@ -124,6 +125,19 @@ TEST_P(HlslSemantics, FromFile)
|
|||||||
GetParam().flattenUniforms);
|
GetParam().flattenUniforms);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GLSL-level Vulkan semantics tests.
|
||||||
|
TEST_P(GlslIoMap, FromFile)
|
||||||
|
{
|
||||||
|
loadFileCompileIoMapAndCheck(GLSLANG_TEST_DIRECTORY, GetParam().fileName,
|
||||||
|
Source::GLSL, Semantics::Vulkan,
|
||||||
|
Target::Spv, GetParam().entryPoint,
|
||||||
|
GetParam().baseSamplerBinding,
|
||||||
|
GetParam().baseTextureBinding,
|
||||||
|
GetParam().baseUboBinding,
|
||||||
|
GetParam().autoMapBindings,
|
||||||
|
GetParam().flattenUniforms);
|
||||||
|
}
|
||||||
|
|
||||||
// clang-format off
|
// clang-format off
|
||||||
INSTANTIATE_TEST_CASE_P(
|
INSTANTIATE_TEST_CASE_P(
|
||||||
Glsl, CompileVulkanToSpirvTest,
|
Glsl, CompileVulkanToSpirvTest,
|
||||||
@ -251,7 +265,7 @@ INSTANTIATE_TEST_CASE_P(
|
|||||||
|
|
||||||
// clang-format off
|
// clang-format off
|
||||||
INSTANTIATE_TEST_CASE_P(
|
INSTANTIATE_TEST_CASE_P(
|
||||||
Hlsl, HlslSemantics,
|
Hlsl, HlslIoMap,
|
||||||
::testing::ValuesIn(std::vector<IoMapData>{
|
::testing::ValuesIn(std::vector<IoMapData>{
|
||||||
{ "spv.register.autoassign.frag", "main_ep", 5, 10, 15, true, false },
|
{ "spv.register.autoassign.frag", "main_ep", 5, 10, 15, true, false },
|
||||||
{ "spv.register.noautoassign.frag", "main_ep", 5, 10, 15, false, false },
|
{ "spv.register.noautoassign.frag", "main_ep", 5, 10, 15, false, false },
|
||||||
@ -260,6 +274,16 @@ INSTANTIATE_TEST_CASE_P(
|
|||||||
FileNameAsCustomTestSuffixIoMap
|
FileNameAsCustomTestSuffixIoMap
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// clang-format off
|
||||||
|
INSTANTIATE_TEST_CASE_P(
|
||||||
|
Hlsl, GlslIoMap,
|
||||||
|
::testing::ValuesIn(std::vector<IoMapData>{
|
||||||
|
{ "spv.glsl.register.autoassign.frag", "main", 5, 10, 15, true, false },
|
||||||
|
{ "spv.glsl.register.noautoassign.frag", "main", 5, 10, 15, false, false },
|
||||||
|
}),
|
||||||
|
FileNameAsCustomTestSuffixIoMap
|
||||||
|
);
|
||||||
|
|
||||||
// clang-format off
|
// clang-format off
|
||||||
INSTANTIATE_TEST_CASE_P(
|
INSTANTIATE_TEST_CASE_P(
|
||||||
Glsl, CompileOpenGLToSpirvTest,
|
Glsl, CompileOpenGLToSpirvTest,
|
||||||
|
Loading…
Reference in New Issue
Block a user