0f14c8266966e9ced986b542aa36b36d4cefa858
[platform/upstream/glslang.git] / Test / reflection.vert
1 #version 440 core\r
2 \r
3 layout(std140, row_major) uniform nameless {\r
4     vec3 anonMember1;\r
5     mat3x2 m23;\r
6     int scalarAfterm23;\r
7     vec4 anonDeadMember2;\r
8     vec4 anonMember3;\r
9     int scalarBeforeArray;\r
10     float floatArray[5];\r
11     int scalarAfterArray;\r
12     mat2x2 m22[9];\r
13 };\r
14 \r
15 layout(std140, column_major) uniform c_nameless {\r
16     vec3 c_anonMember1;\r
17     mat3x2 c_m23;\r
18     int c_scalarAfterm23;\r
19     vec4 c_anonDeadMember2;\r
20     vec4 c_anonMember3;\r
21 };\r
22 \r
23 layout(std140) uniform named {\r
24     vec3 deadMember1;\r
25     int scalar;\r
26     vec4 member2;\r
27     vec4 member3;\r
28     vec2 memvec2;\r
29     float memf1;\r
30     bool  memf2;\r
31     int   memf3;\r
32     vec2 memvec2a;\r
33     mat2x2 m22[7];\r
34 } ablock;\r
35 \r
36 layout(std140) uniform namelessdead {\r
37     int a;\r
38 };\r
39 \r
40 layout(std140) uniform namedDead {\r
41     int b;\r
42 } bblock;\r
43 \r
44 struct N1 {\r
45     float a;\r
46 };\r
47 \r
48 struct N2 {\r
49     float b;\r
50     float c;\r
51     float d;\r
52 };\r
53 \r
54 struct N3 {\r
55     N1 n1;\r
56     N2 n2;\r
57 };\r
58 \r
59 layout(std140) uniform nested {\r
60     N3 foo;\r
61 } nest;\r
62 \r
63 layout(std140) uniform nested2 {\r
64     vec4 padding; // offset 0, size 16\r
65     N3 a;       // offset 16, size 32\r
66     N1 b[4];    // offset 48, size 64\r
67     N1 c[2];    // offset 112, size 32\r
68     N1 d[4];    // offset 144, size 64\r
69 } nest2;\r
70 \r
71 struct TS {\r
72     int a;\r
73     int dead;\r
74 };\r
75 \r
76 uniform TS s;\r
77 \r
78 uniform float uf1;\r
79 uniform float uf2;\r
80 uniform float ufDead3;\r
81 uniform float ufDead4;\r
82 \r
83 uniform writeonly uimage2D image_ui2D;\r
84 uniform sampler2D sampler_2D;\r
85 uniform sampler2DMSArray sampler_2DMSArray;\r
86 \r
87 uniform mat2 dm22[10];\r
88 \r
89 struct deep1 {\r
90     vec2 va[3];\r
91     bool b;\r
92 };\r
93 \r
94 struct deep2 {\r
95     int i;\r
96     deep1 d1[4];\r
97 };\r
98 \r
99 struct deep3 {\r
100     vec4 iv4;\r
101     deep2 d2;\r
102     ivec3 v3;\r
103 };\r
104 \r
105 in float attributeFloat;\r
106 layout(location = 2) in vec2 attributeFloat2;\r
107 in vec3 attributeFloat3;\r
108 in vec4 attributeFloat4;\r
109 in mat4 attributeMat4;\r
110 \r
111 uniform deep3 deepA[2], deepB[2], deepC[3], deepD[2];\r
112 \r
113 const bool control = true;\r
114 \r
115 void deadFunction()\r
116 {\r
117     vec3 v3 = ablock.deadMember1;\r
118     vec4 v = anonDeadMember2;\r
119     float f = ufDead4;\r
120 }\r
121 \r
122 void liveFunction2()\r
123 {\r
124     vec3 v = anonMember1;\r
125     float f = uf1;\r
126 }\r
127 \r
128 void liveFunction1(writeonly uimage2D p_ui2D, sampler2D p_2D, sampler2DMSArray p_2DMSArray)\r
129 \r
130 {\r
131     liveFunction2();\r
132     float f = uf2;\r
133     vec4 v = ablock.member3;\r
134 }\r
135 \r
136 uniform abl {\r
137     float foo;\r
138 } arrBl[4];\r
139 \r
140 uniform abl2 {\r
141     float foo;\r
142 } arrBl2[4];\r
143 \r
144 buffer buf1 {\r
145     float scalar;\r
146     float runtimeArray[];\r
147 } buf1i;\r
148 \r
149 buffer buf2 {\r
150     float scalar;\r
151     N2 runtimeArray[];\r
152 } buf2i;\r
153 \r
154 buffer buf3 {\r
155     float scalar;\r
156     float runtimeArray[];\r
157 } buf3i;\r
158 \r
159 buffer buf4 {\r
160     float scalar;\r
161     N2 runtimeArray[];\r
162 } buf4i;\r
163 \r
164 struct VertexInfo {\r
165     float position[3];\r
166     float normal[3];\r
167 };\r
168 \r
169 struct TriangleInfo {\r
170     VertexInfo v[3];\r
171 };\r
172 \r
173 buffer VertexCollection {\r
174     TriangleInfo t[5];\r
175     uint padding[10];\r
176 };\r
177 \r
178 out float outval;\r
179 \r
180 void main()\r
181 {\r
182     liveFunction1(image_ui2D, sampler_2D, sampler_2DMSArray);\r
183     liveFunction2();\r
184 \r
185     if (! control)\r
186         deadFunction();\r
187 \r
188     float f;\r
189     int i;\r
190     if (control) {\r
191         liveFunction2();\r
192         f = anonMember3.z;\r
193         f = s.a;\r
194         f = ablock.scalar;\r
195         f = m23[1].y + scalarAfterm23;\r
196         f = c_m23[1].y + c_scalarAfterm23;\r
197         f += scalarBeforeArray;\r
198         f += floatArray[2];\r
199         f += floatArray[4];\r
200         f += scalarAfterArray;\r
201         f += ablock.memvec2.x;\r
202         f += ablock.memf1;\r
203         f += float(ablock.memf2);\r
204         f += ablock.memf3;\r
205         f += ablock.memvec2a.y;\r
206         f += ablock.m22[i][1][0];\r
207         f += dm22[3][0][1];\r
208         f += m22[2][1].y;\r
209         f += nest.foo.n1.a + nest.foo.n2.b + nest.foo.n2.c + nest.foo.n2.d;\r
210         f += deepA[i].d2.d1[2].va[1].x;\r
211         f += deepB[1].d2.d1[i].va[1].x;\r
212         f += deepB[i].d2.d1[i].va[1].x;\r
213         deep3 d = deepC[1];\r
214         deep3 da[2] = deepD;\r
215     } else\r
216         f = ufDead3;\r
217 \r
218     f += arrBl[2].foo + arrBl[0].foo;\r
219     f += arrBl2[i].foo;\r
220 \r
221     f += attributeFloat;\r
222     f += attributeFloat2.x;\r
223     f += attributeFloat3.x;\r
224     f += attributeFloat4.x;\r
225     f += attributeMat4[0][1];\r
226     f += buf1i.runtimeArray[3];\r
227     f += buf2i.runtimeArray[3].c;\r
228     f += buf3i.runtimeArray[gl_InstanceID];\r
229     f += buf4i.runtimeArray[gl_InstanceID].c;\r
230 \r
231     N3 n = nest2.a;\r
232     N1 b[4] = nest2.b;\r
233     f += nest2.c[1].a;\r
234     f += nest2.d[gl_InstanceID].a;\r
235 \r
236     f += t[0].v[0].position[0];\r
237     f += t[gl_InstanceID].v[gl_InstanceID].position[gl_InstanceID];\r
238     f += t[gl_InstanceID].v[gl_InstanceID].normal[gl_InstanceID];\r
239     TriangleInfo tlocal[5] = t;\r
240 \r
241     outval = f;\r
242 }\r