xref: /aosp_15_r20/external/deqp/data/gles3/shaders/linkage.test (revision 35238bce31c2a825756842865a792f8cf7f89930)
1*35238bceSAndroid Build Coastguard Worker
2*35238bceSAndroid Build Coastguard Worker# Varying tests
3*35238bceSAndroid Build Coastguard Workergroup varying "Varying linkage"
4*35238bceSAndroid Build Coastguard Worker
5*35238bceSAndroid Build Coastguard Worker    # Linking rules
6*35238bceSAndroid Build Coastguard Worker    group rules "Varying linking rules"
7*35238bceSAndroid Build Coastguard Worker        # not declared in vertex shader, declared in fragment shader
8*35238bceSAndroid Build Coastguard Worker        case fragment_declare
9*35238bceSAndroid Build Coastguard Worker            version 300 es
10*35238bceSAndroid Build Coastguard Worker            desc "varying declared in fragment shader, no reference in vertex shader"
11*35238bceSAndroid Build Coastguard Worker            values { output float out0 = 1.0; }
12*35238bceSAndroid Build Coastguard Worker            vertex ""
13*35238bceSAndroid Build Coastguard Worker                #version 300 es
14*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
15*35238bceSAndroid Build Coastguard Worker                void main()
16*35238bceSAndroid Build Coastguard Worker                {
17*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
18*35238bceSAndroid Build Coastguard Worker                }
19*35238bceSAndroid Build Coastguard Worker            ""
20*35238bceSAndroid Build Coastguard Worker            fragment ""
21*35238bceSAndroid Build Coastguard Worker                #version 300 es
22*35238bceSAndroid Build Coastguard Worker                precision mediump float;
23*35238bceSAndroid Build Coastguard Worker                in mediump float var;
24*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
25*35238bceSAndroid Build Coastguard Worker                void main()
26*35238bceSAndroid Build Coastguard Worker                {
27*35238bceSAndroid Build Coastguard Worker                    out0 = 1.0;
28*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
29*35238bceSAndroid Build Coastguard Worker                }
30*35238bceSAndroid Build Coastguard Worker            ""
31*35238bceSAndroid Build Coastguard Worker        end
32*35238bceSAndroid Build Coastguard Worker
33*35238bceSAndroid Build Coastguard Worker        # declared in vertex shader, no reference in frag shader
34*35238bceSAndroid Build Coastguard Worker        case vertex_declare
35*35238bceSAndroid Build Coastguard Worker            version 300 es
36*35238bceSAndroid Build Coastguard Worker            desc "varying declared in vertex shader, no reference in fragment shader"
37*35238bceSAndroid Build Coastguard Worker            vertex ""
38*35238bceSAndroid Build Coastguard Worker                #version 300 es
39*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
40*35238bceSAndroid Build Coastguard Worker                out mediump float var;
41*35238bceSAndroid Build Coastguard Worker                void main()
42*35238bceSAndroid Build Coastguard Worker                {
43*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
44*35238bceSAndroid Build Coastguard Worker                }
45*35238bceSAndroid Build Coastguard Worker            ""
46*35238bceSAndroid Build Coastguard Worker            fragment ""
47*35238bceSAndroid Build Coastguard Worker                #version 300 es
48*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
49*35238bceSAndroid Build Coastguard Worker                void main()
50*35238bceSAndroid Build Coastguard Worker                {
51*35238bceSAndroid Build Coastguard Worker                    ${FRAG_COLOR} = vec4(1.0);
52*35238bceSAndroid Build Coastguard Worker                }
53*35238bceSAndroid Build Coastguard Worker            ""
54*35238bceSAndroid Build Coastguard Worker        end
55*35238bceSAndroid Build Coastguard Worker
56*35238bceSAndroid Build Coastguard Worker        # declared in vertex shader, declared in frag shader
57*35238bceSAndroid Build Coastguard Worker        case both_declare
58*35238bceSAndroid Build Coastguard Worker            version 300 es
59*35238bceSAndroid Build Coastguard Worker            desc "varying declared in both vertex and fragment shader, but not used"
60*35238bceSAndroid Build Coastguard Worker            vertex ""
61*35238bceSAndroid Build Coastguard Worker                #version 300 es
62*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
63*35238bceSAndroid Build Coastguard Worker                out mediump float var;
64*35238bceSAndroid Build Coastguard Worker                void main()
65*35238bceSAndroid Build Coastguard Worker                {
66*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
67*35238bceSAndroid Build Coastguard Worker                }
68*35238bceSAndroid Build Coastguard Worker            ""
69*35238bceSAndroid Build Coastguard Worker            fragment ""
70*35238bceSAndroid Build Coastguard Worker                #version 300 es
71*35238bceSAndroid Build Coastguard Worker                in mediump float var;
72*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
73*35238bceSAndroid Build Coastguard Worker                void main()
74*35238bceSAndroid Build Coastguard Worker                {
75*35238bceSAndroid Build Coastguard Worker                    ${FRAG_COLOR} = vec4(1.0);
76*35238bceSAndroid Build Coastguard Worker                }
77*35238bceSAndroid Build Coastguard Worker            ""
78*35238bceSAndroid Build Coastguard Worker        end
79*35238bceSAndroid Build Coastguard Worker
80*35238bceSAndroid Build Coastguard Worker        # declared in vertex shader, static use in frag shader
81*35238bceSAndroid Build Coastguard Worker        case vertex_declare_fragment_use
82*35238bceSAndroid Build Coastguard Worker            version 300 es
83*35238bceSAndroid Build Coastguard Worker            desc "varying declared in both shaders, statically used in fragment shader"
84*35238bceSAndroid Build Coastguard Worker            values { uniform bool u_false = false; }
85*35238bceSAndroid Build Coastguard Worker            vertex ""
86*35238bceSAndroid Build Coastguard Worker                #version 300 es
87*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
88*35238bceSAndroid Build Coastguard Worker                out mediump float var;
89*35238bceSAndroid Build Coastguard Worker                void main()
90*35238bceSAndroid Build Coastguard Worker                {
91*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
92*35238bceSAndroid Build Coastguard Worker                }
93*35238bceSAndroid Build Coastguard Worker            ""
94*35238bceSAndroid Build Coastguard Worker            fragment ""
95*35238bceSAndroid Build Coastguard Worker                #version 300 es
96*35238bceSAndroid Build Coastguard Worker                in mediump float var;
97*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
98*35238bceSAndroid Build Coastguard Worker                void main()
99*35238bceSAndroid Build Coastguard Worker                {
100*35238bceSAndroid Build Coastguard Worker                    if (u_false)
101*35238bceSAndroid Build Coastguard Worker                        ${FRAG_COLOR} = vec4(var);
102*35238bceSAndroid Build Coastguard Worker                    else
103*35238bceSAndroid Build Coastguard Worker                        ${FRAG_COLOR} = vec4(1.0);
104*35238bceSAndroid Build Coastguard Worker                }
105*35238bceSAndroid Build Coastguard Worker            ""
106*35238bceSAndroid Build Coastguard Worker        end
107*35238bceSAndroid Build Coastguard Worker
108*35238bceSAndroid Build Coastguard Worker        # static use in vertex shader, no reference in fragment shader
109*35238bceSAndroid Build Coastguard Worker        case vertex_use_fragment_declare
110*35238bceSAndroid Build Coastguard Worker            version 300 es
111*35238bceSAndroid Build Coastguard Worker            desc "varying declared and statically used in vertex shader, no reference in fragment shader"
112*35238bceSAndroid Build Coastguard Worker            values { uniform bool u_false = false; }
113*35238bceSAndroid Build Coastguard Worker            vertex ""
114*35238bceSAndroid Build Coastguard Worker                #version 300 es
115*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
116*35238bceSAndroid Build Coastguard Worker                out mediump float var;
117*35238bceSAndroid Build Coastguard Worker                void main()
118*35238bceSAndroid Build Coastguard Worker                {
119*35238bceSAndroid Build Coastguard Worker                    if (u_false)
120*35238bceSAndroid Build Coastguard Worker                        var = 1.0;
121*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
122*35238bceSAndroid Build Coastguard Worker                }
123*35238bceSAndroid Build Coastguard Worker            ""
124*35238bceSAndroid Build Coastguard Worker            fragment ""
125*35238bceSAndroid Build Coastguard Worker                #version 300 es
126*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
127*35238bceSAndroid Build Coastguard Worker                void main()
128*35238bceSAndroid Build Coastguard Worker                {
129*35238bceSAndroid Build Coastguard Worker                    ${FRAG_COLOR} = vec4(1.0);
130*35238bceSAndroid Build Coastguard Worker                }
131*35238bceSAndroid Build Coastguard Worker            ""
132*35238bceSAndroid Build Coastguard Worker        end
133*35238bceSAndroid Build Coastguard Worker
134*35238bceSAndroid Build Coastguard Worker        # static use in vertex shader, declared in fragment shader
135*35238bceSAndroid Build Coastguard Worker        case vertex_use_declare_fragment
136*35238bceSAndroid Build Coastguard Worker            version 300 es
137*35238bceSAndroid Build Coastguard Worker            desc "varying declared and statically used in vertex shader, only declared in fragment shader"
138*35238bceSAndroid Build Coastguard Worker            values { uniform bool u_false = false; }
139*35238bceSAndroid Build Coastguard Worker            vertex ""
140*35238bceSAndroid Build Coastguard Worker                #version 300 es
141*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
142*35238bceSAndroid Build Coastguard Worker                out mediump float var;
143*35238bceSAndroid Build Coastguard Worker                void main()
144*35238bceSAndroid Build Coastguard Worker                {
145*35238bceSAndroid Build Coastguard Worker                    if (u_false)
146*35238bceSAndroid Build Coastguard Worker                        var = 1.0;
147*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
148*35238bceSAndroid Build Coastguard Worker                }
149*35238bceSAndroid Build Coastguard Worker            ""
150*35238bceSAndroid Build Coastguard Worker            fragment ""
151*35238bceSAndroid Build Coastguard Worker                #version 300 es
152*35238bceSAndroid Build Coastguard Worker                in mediump float var;
153*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
154*35238bceSAndroid Build Coastguard Worker                void main()
155*35238bceSAndroid Build Coastguard Worker                {
156*35238bceSAndroid Build Coastguard Worker                    ${FRAG_COLOR} = vec4(1.0);
157*35238bceSAndroid Build Coastguard Worker                }
158*35238bceSAndroid Build Coastguard Worker            ""
159*35238bceSAndroid Build Coastguard Worker        end
160*35238bceSAndroid Build Coastguard Worker
161*35238bceSAndroid Build Coastguard Worker        # static use in vertex shader, used in fragment shader
162*35238bceSAndroid Build Coastguard Worker        case vertex_use_fragment_use
163*35238bceSAndroid Build Coastguard Worker            version 300 es
164*35238bceSAndroid Build Coastguard Worker            desc "varying statically used in both vertex and fragment shader"
165*35238bceSAndroid Build Coastguard Worker            values { uniform bool u_false = false; }
166*35238bceSAndroid Build Coastguard Worker            vertex ""
167*35238bceSAndroid Build Coastguard Worker                #version 300 es
168*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
169*35238bceSAndroid Build Coastguard Worker                out mediump float var;
170*35238bceSAndroid Build Coastguard Worker                void main()
171*35238bceSAndroid Build Coastguard Worker                {
172*35238bceSAndroid Build Coastguard Worker                    if (u_false)
173*35238bceSAndroid Build Coastguard Worker                        var = 1.0;
174*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
175*35238bceSAndroid Build Coastguard Worker                }
176*35238bceSAndroid Build Coastguard Worker            ""
177*35238bceSAndroid Build Coastguard Worker            fragment ""
178*35238bceSAndroid Build Coastguard Worker                #version 300 es
179*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
180*35238bceSAndroid Build Coastguard Worker                in mediump float var;
181*35238bceSAndroid Build Coastguard Worker                void main()
182*35238bceSAndroid Build Coastguard Worker                {
183*35238bceSAndroid Build Coastguard Worker                    if (u_false)
184*35238bceSAndroid Build Coastguard Worker                        ${FRAG_COLOR} = vec4(var);
185*35238bceSAndroid Build Coastguard Worker                    else
186*35238bceSAndroid Build Coastguard Worker                        ${FRAG_COLOR} = vec4(1.0);
187*35238bceSAndroid Build Coastguard Worker                }
188*35238bceSAndroid Build Coastguard Worker            ""
189*35238bceSAndroid Build Coastguard Worker        end
190*35238bceSAndroid Build Coastguard Worker
191*35238bceSAndroid Build Coastguard Worker        # differing precision tests
192*35238bceSAndroid Build Coastguard Worker        case differing_precision_1
193*35238bceSAndroid Build Coastguard Worker            version 300 es
194*35238bceSAndroid Build Coastguard Worker            desc "varying declared as highp in vertex shader, but mediump in fragment shader"
195*35238bceSAndroid Build Coastguard Worker            values
196*35238bceSAndroid Build Coastguard Worker            {
197*35238bceSAndroid Build Coastguard Worker                input float in0 = [ -1.25 | -25.55 | 1.0 | 2.25 | 3.4 | 16.0 ];
198*35238bceSAndroid Build Coastguard Worker                output float out0 = [ -1.25 | -25.55 | 1.0 | 2.25 | 3.4 | 16.0 ];
199*35238bceSAndroid Build Coastguard Worker            }
200*35238bceSAndroid Build Coastguard Worker
201*35238bceSAndroid Build Coastguard Worker            vertex ""
202*35238bceSAndroid Build Coastguard Worker                #version 300 es
203*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
204*35238bceSAndroid Build Coastguard Worker                out highp float var;
205*35238bceSAndroid Build Coastguard Worker                void main()
206*35238bceSAndroid Build Coastguard Worker                {
207*35238bceSAndroid Build Coastguard Worker                    var = in0;
208*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
209*35238bceSAndroid Build Coastguard Worker                }
210*35238bceSAndroid Build Coastguard Worker            ""
211*35238bceSAndroid Build Coastguard Worker            fragment ""
212*35238bceSAndroid Build Coastguard Worker                #version 300 es
213*35238bceSAndroid Build Coastguard Worker                precision mediump float;
214*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
215*35238bceSAndroid Build Coastguard Worker                in mediump float var;
216*35238bceSAndroid Build Coastguard Worker                void main()
217*35238bceSAndroid Build Coastguard Worker                {
218*35238bceSAndroid Build Coastguard Worker                    out0 = var;
219*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
220*35238bceSAndroid Build Coastguard Worker                }
221*35238bceSAndroid Build Coastguard Worker            ""
222*35238bceSAndroid Build Coastguard Worker        end
223*35238bceSAndroid Build Coastguard Worker
224*35238bceSAndroid Build Coastguard Worker        # differing precision tests
225*35238bceSAndroid Build Coastguard Worker        case differing_precision_2
226*35238bceSAndroid Build Coastguard Worker            version 300 es
227*35238bceSAndroid Build Coastguard Worker            desc "varying declared as highp in vertex shader, but lowp in fragment shader"
228*35238bceSAndroid Build Coastguard Worker            values
229*35238bceSAndroid Build Coastguard Worker            {
230*35238bceSAndroid Build Coastguard Worker                input float in0 = [ -1.25 | -25.56 | 1.0 | 2.25 | 3.4 | 16.0 ];
231*35238bceSAndroid Build Coastguard Worker                output float out0 = [ -1.25 | -25.56 | 1.0 | 2.25 | 3.4 | 16.0 ];
232*35238bceSAndroid Build Coastguard Worker            }
233*35238bceSAndroid Build Coastguard Worker
234*35238bceSAndroid Build Coastguard Worker            vertex ""
235*35238bceSAndroid Build Coastguard Worker                #version 300 es
236*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
237*35238bceSAndroid Build Coastguard Worker                out highp vec2 var;
238*35238bceSAndroid Build Coastguard Worker                void main()
239*35238bceSAndroid Build Coastguard Worker                {
240*35238bceSAndroid Build Coastguard Worker                    var = vec2(in0, 2.0*in0);
241*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
242*35238bceSAndroid Build Coastguard Worker                }
243*35238bceSAndroid Build Coastguard Worker            ""
244*35238bceSAndroid Build Coastguard Worker            fragment ""
245*35238bceSAndroid Build Coastguard Worker                #version 300 es
246*35238bceSAndroid Build Coastguard Worker                precision mediump float;
247*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
248*35238bceSAndroid Build Coastguard Worker                in lowp vec2 var;
249*35238bceSAndroid Build Coastguard Worker                void main()
250*35238bceSAndroid Build Coastguard Worker                {
251*35238bceSAndroid Build Coastguard Worker                    out0 = var.y - var.x;
252*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
253*35238bceSAndroid Build Coastguard Worker                }
254*35238bceSAndroid Build Coastguard Worker            ""
255*35238bceSAndroid Build Coastguard Worker        end
256*35238bceSAndroid Build Coastguard Worker
257*35238bceSAndroid Build Coastguard Worker        # differing precision tests
258*35238bceSAndroid Build Coastguard Worker        case differing_precision_3
259*35238bceSAndroid Build Coastguard Worker            version 300 es
260*35238bceSAndroid Build Coastguard Worker            desc "varying declared as lowp in vertex shader, but mediump in fragment shader"
261*35238bceSAndroid Build Coastguard Worker            values
262*35238bceSAndroid Build Coastguard Worker            {
263*35238bceSAndroid Build Coastguard Worker                input float in0 = [ -1.25 | -25.0 | 1.0 | 2.25 | 3.4 | 16.0 ];
264*35238bceSAndroid Build Coastguard Worker                output float out0 = [ -1.25 | -25.0 | 1.0 | 2.25 | 3.4 | 16.0 ];
265*35238bceSAndroid Build Coastguard Worker            }
266*35238bceSAndroid Build Coastguard Worker
267*35238bceSAndroid Build Coastguard Worker            vertex ""
268*35238bceSAndroid Build Coastguard Worker                #version 300 es
269*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
270*35238bceSAndroid Build Coastguard Worker                out lowp vec4 var;
271*35238bceSAndroid Build Coastguard Worker                void main()
272*35238bceSAndroid Build Coastguard Worker                {
273*35238bceSAndroid Build Coastguard Worker                    var = vec4(in0, 2.0*in0, -in0, -in0);
274*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
275*35238bceSAndroid Build Coastguard Worker                }
276*35238bceSAndroid Build Coastguard Worker            ""
277*35238bceSAndroid Build Coastguard Worker            fragment ""
278*35238bceSAndroid Build Coastguard Worker                #version 300 es
279*35238bceSAndroid Build Coastguard Worker                precision mediump float;
280*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
281*35238bceSAndroid Build Coastguard Worker                in mediump vec4 var;
282*35238bceSAndroid Build Coastguard Worker                void main()
283*35238bceSAndroid Build Coastguard Worker                {
284*35238bceSAndroid Build Coastguard Worker                    out0 = var.x + var.y + var.z + var.w;
285*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
286*35238bceSAndroid Build Coastguard Worker                }
287*35238bceSAndroid Build Coastguard Worker            ""
288*35238bceSAndroid Build Coastguard Worker        end
289*35238bceSAndroid Build Coastguard Worker
290*35238bceSAndroid Build Coastguard Worker        # mismatched type, static use but no runtime use in the fragment shader
291*35238bceSAndroid Build Coastguard Worker        case type_mismatch_1
292*35238bceSAndroid Build Coastguard Worker            version 300 es
293*35238bceSAndroid Build Coastguard Worker            desc "varying type mismatch (float vs. vec2), static use but no runtime use in the fragment shader"
294*35238bceSAndroid Build Coastguard Worker            expect link_fail
295*35238bceSAndroid Build Coastguard Worker            vertex ""
296*35238bceSAndroid Build Coastguard Worker                #version 300 es
297*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
298*35238bceSAndroid Build Coastguard Worker                out mediump float var;
299*35238bceSAndroid Build Coastguard Worker                void main()
300*35238bceSAndroid Build Coastguard Worker                {
301*35238bceSAndroid Build Coastguard Worker                    var = 2.0;
302*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
303*35238bceSAndroid Build Coastguard Worker                }
304*35238bceSAndroid Build Coastguard Worker            ""
305*35238bceSAndroid Build Coastguard Worker            fragment ""
306*35238bceSAndroid Build Coastguard Worker                #version 300 es
307*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
308*35238bceSAndroid Build Coastguard Worker                in mediump vec2 var;
309*35238bceSAndroid Build Coastguard Worker                void main()
310*35238bceSAndroid Build Coastguard Worker                {
311*35238bceSAndroid Build Coastguard Worker                    if (false)
312*35238bceSAndroid Build Coastguard Worker                    {
313*35238bceSAndroid Build Coastguard Worker                        ${FRAG_COLOR} = vec4(var.y);
314*35238bceSAndroid Build Coastguard Worker                    }
315*35238bceSAndroid Build Coastguard Worker                    else
316*35238bceSAndroid Build Coastguard Worker                    {
317*35238bceSAndroid Build Coastguard Worker                        ${FRAG_COLOR} = vec4(1.0);
318*35238bceSAndroid Build Coastguard Worker                    }
319*35238bceSAndroid Build Coastguard Worker                }
320*35238bceSAndroid Build Coastguard Worker            ""
321*35238bceSAndroid Build Coastguard Worker        end
322*35238bceSAndroid Build Coastguard Worker
323*35238bceSAndroid Build Coastguard Worker        # mismatched type, varyings used
324*35238bceSAndroid Build Coastguard Worker        case type_mismatch_2
325*35238bceSAndroid Build Coastguard Worker            version 300 es
326*35238bceSAndroid Build Coastguard Worker            desc "varying type mismatch (float vs. vec2)"
327*35238bceSAndroid Build Coastguard Worker            expect link_fail
328*35238bceSAndroid Build Coastguard Worker            vertex ""
329*35238bceSAndroid Build Coastguard Worker                #version 300 es
330*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
331*35238bceSAndroid Build Coastguard Worker                out mediump float var;
332*35238bceSAndroid Build Coastguard Worker                void main()
333*35238bceSAndroid Build Coastguard Worker                {
334*35238bceSAndroid Build Coastguard Worker                    var = 2.0;
335*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
336*35238bceSAndroid Build Coastguard Worker                }
337*35238bceSAndroid Build Coastguard Worker            ""
338*35238bceSAndroid Build Coastguard Worker            fragment ""
339*35238bceSAndroid Build Coastguard Worker                #version 300 es
340*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
341*35238bceSAndroid Build Coastguard Worker                in mediump vec2 var;
342*35238bceSAndroid Build Coastguard Worker                void main()
343*35238bceSAndroid Build Coastguard Worker                {
344*35238bceSAndroid Build Coastguard Worker                    ${FRAG_COLOR} = var.xyyx;
345*35238bceSAndroid Build Coastguard Worker                }
346*35238bceSAndroid Build Coastguard Worker            ""
347*35238bceSAndroid Build Coastguard Worker        end
348*35238bceSAndroid Build Coastguard Worker
349*35238bceSAndroid Build Coastguard Worker        # mismatched type, varyings used
350*35238bceSAndroid Build Coastguard Worker        case type_mismatch_3
351*35238bceSAndroid Build Coastguard Worker            version 300 es
352*35238bceSAndroid Build Coastguard Worker            desc "varying type mismatch (int vs. uint)"
353*35238bceSAndroid Build Coastguard Worker            expect link_fail
354*35238bceSAndroid Build Coastguard Worker            vertex ""
355*35238bceSAndroid Build Coastguard Worker                #version 300 es
356*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
357*35238bceSAndroid Build Coastguard Worker                flat out mediump int var;
358*35238bceSAndroid Build Coastguard Worker                void main()
359*35238bceSAndroid Build Coastguard Worker                {
360*35238bceSAndroid Build Coastguard Worker                    var = 2;
361*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
362*35238bceSAndroid Build Coastguard Worker                }
363*35238bceSAndroid Build Coastguard Worker            ""
364*35238bceSAndroid Build Coastguard Worker            fragment ""
365*35238bceSAndroid Build Coastguard Worker                #version 300 es
366*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
367*35238bceSAndroid Build Coastguard Worker                flat in mediump uint var;
368*35238bceSAndroid Build Coastguard Worker                void main()
369*35238bceSAndroid Build Coastguard Worker                {
370*35238bceSAndroid Build Coastguard Worker                    ${FRAG_COLOR} = vec4(var);
371*35238bceSAndroid Build Coastguard Worker                }
372*35238bceSAndroid Build Coastguard Worker            ""
373*35238bceSAndroid Build Coastguard Worker        end
374*35238bceSAndroid Build Coastguard Worker
375*35238bceSAndroid Build Coastguard Worker        # mismatched type, varyings used
376*35238bceSAndroid Build Coastguard Worker        case struct_type_mismatch_1
377*35238bceSAndroid Build Coastguard Worker            version 300 es
378*35238bceSAndroid Build Coastguard Worker            desc "struct member mismatch"
379*35238bceSAndroid Build Coastguard Worker            expect link_fail
380*35238bceSAndroid Build Coastguard Worker            vertex ""
381*35238bceSAndroid Build Coastguard Worker                #version 300 es
382*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
383*35238bceSAndroid Build Coastguard Worker                struct S { highp float a; highp vec2 b; };
384*35238bceSAndroid Build Coastguard Worker                out S var;
385*35238bceSAndroid Build Coastguard Worker                void main()
386*35238bceSAndroid Build Coastguard Worker                {
387*35238bceSAndroid Build Coastguard Worker                    var.a = 2.0;
388*35238bceSAndroid Build Coastguard Worker                    var.b = vec2(1.0, 0.0);
389*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
390*35238bceSAndroid Build Coastguard Worker                }
391*35238bceSAndroid Build Coastguard Worker            ""
392*35238bceSAndroid Build Coastguard Worker            fragment ""
393*35238bceSAndroid Build Coastguard Worker                #version 300 es
394*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
395*35238bceSAndroid Build Coastguard Worker                struct S { highp float a; highp vec3 b; };
396*35238bceSAndroid Build Coastguard Worker                in S var;
397*35238bceSAndroid Build Coastguard Worker                void main()
398*35238bceSAndroid Build Coastguard Worker                {
399*35238bceSAndroid Build Coastguard Worker                    ${FRAG_COLOR} = vec4(var.a, var.b);
400*35238bceSAndroid Build Coastguard Worker                }
401*35238bceSAndroid Build Coastguard Worker            ""
402*35238bceSAndroid Build Coastguard Worker        end
403*35238bceSAndroid Build Coastguard Worker
404*35238bceSAndroid Build Coastguard Worker        # mismatched type, varyings unused in fragment shader (runtime)
405*35238bceSAndroid Build Coastguard Worker        case struct_type_mismatch_2
406*35238bceSAndroid Build Coastguard Worker            version 300 es
407*35238bceSAndroid Build Coastguard Worker            desc "struct member mismatch"
408*35238bceSAndroid Build Coastguard Worker            expect link_fail
409*35238bceSAndroid Build Coastguard Worker            vertex ""
410*35238bceSAndroid Build Coastguard Worker                #version 300 es
411*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
412*35238bceSAndroid Build Coastguard Worker                struct S { highp float a; highp vec2 b; };
413*35238bceSAndroid Build Coastguard Worker                out S var;
414*35238bceSAndroid Build Coastguard Worker                void main()
415*35238bceSAndroid Build Coastguard Worker                {
416*35238bceSAndroid Build Coastguard Worker                    var.a = 2.0;
417*35238bceSAndroid Build Coastguard Worker                    var.b = vec2(1.0, 0.0);
418*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
419*35238bceSAndroid Build Coastguard Worker                }
420*35238bceSAndroid Build Coastguard Worker            ""
421*35238bceSAndroid Build Coastguard Worker            fragment ""
422*35238bceSAndroid Build Coastguard Worker                #version 300 es
423*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
424*35238bceSAndroid Build Coastguard Worker                struct S { highp float a; highp vec3 b; };
425*35238bceSAndroid Build Coastguard Worker                in S var;
426*35238bceSAndroid Build Coastguard Worker                void main()
427*35238bceSAndroid Build Coastguard Worker                {
428*35238bceSAndroid Build Coastguard Worker                    ${FRAG_COLOR} = vec4(var.a);
429*35238bceSAndroid Build Coastguard Worker                    if (false)
430*35238bceSAndroid Build Coastguard Worker                        ${FRAG_COLOR}.yzw = var.b;
431*35238bceSAndroid Build Coastguard Worker                }
432*35238bceSAndroid Build Coastguard Worker            ""
433*35238bceSAndroid Build Coastguard Worker        end
434*35238bceSAndroid Build Coastguard Worker
435*35238bceSAndroid Build Coastguard Worker        # mismatched type, varyings unused in both (runtime)
436*35238bceSAndroid Build Coastguard Worker        case struct_type_mismatch_3
437*35238bceSAndroid Build Coastguard Worker            version 300 es
438*35238bceSAndroid Build Coastguard Worker            desc "struct member mismatch"
439*35238bceSAndroid Build Coastguard Worker            expect link_fail
440*35238bceSAndroid Build Coastguard Worker            vertex ""
441*35238bceSAndroid Build Coastguard Worker                #version 300 es
442*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
443*35238bceSAndroid Build Coastguard Worker                struct S { highp float a; highp vec2 b; };
444*35238bceSAndroid Build Coastguard Worker                out S var;
445*35238bceSAndroid Build Coastguard Worker                void main()
446*35238bceSAndroid Build Coastguard Worker                {
447*35238bceSAndroid Build Coastguard Worker                    var.a = 2.0;
448*35238bceSAndroid Build Coastguard Worker                    if (false)
449*35238bceSAndroid Build Coastguard Worker                        var.b = vec2(1.0, 0.0);
450*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
451*35238bceSAndroid Build Coastguard Worker                }
452*35238bceSAndroid Build Coastguard Worker            ""
453*35238bceSAndroid Build Coastguard Worker            fragment ""
454*35238bceSAndroid Build Coastguard Worker                #version 300 es
455*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
456*35238bceSAndroid Build Coastguard Worker                struct S { highp float a; highp vec3 b; };
457*35238bceSAndroid Build Coastguard Worker                in S var;
458*35238bceSAndroid Build Coastguard Worker                void main()
459*35238bceSAndroid Build Coastguard Worker                {
460*35238bceSAndroid Build Coastguard Worker                    ${FRAG_COLOR} = vec4(var.a);
461*35238bceSAndroid Build Coastguard Worker                    if (false)
462*35238bceSAndroid Build Coastguard Worker                        ${FRAG_COLOR}.yzw = var.b;
463*35238bceSAndroid Build Coastguard Worker                }
464*35238bceSAndroid Build Coastguard Worker            ""
465*35238bceSAndroid Build Coastguard Worker        end
466*35238bceSAndroid Build Coastguard Worker
467*35238bceSAndroid Build Coastguard Worker        # interpolation_mismatch
468*35238bceSAndroid Build Coastguard Worker        case interpolation_mismatch_1
469*35238bceSAndroid Build Coastguard Worker            version 300 es
470*35238bceSAndroid Build Coastguard Worker            desc "varying interpolation different (flat vs. smooth)"
471*35238bceSAndroid Build Coastguard Worker            expect link_fail
472*35238bceSAndroid Build Coastguard Worker
473*35238bceSAndroid Build Coastguard Worker            vertex ""
474*35238bceSAndroid Build Coastguard Worker                #version 300 es
475*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
476*35238bceSAndroid Build Coastguard Worker                in highp float in0;
477*35238bceSAndroid Build Coastguard Worker                flat out mediump float var;
478*35238bceSAndroid Build Coastguard Worker                void main()
479*35238bceSAndroid Build Coastguard Worker                {
480*35238bceSAndroid Build Coastguard Worker                    var = in0;
481*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
482*35238bceSAndroid Build Coastguard Worker                }
483*35238bceSAndroid Build Coastguard Worker            ""
484*35238bceSAndroid Build Coastguard Worker            fragment ""
485*35238bceSAndroid Build Coastguard Worker                #version 300 es
486*35238bceSAndroid Build Coastguard Worker                precision mediump float;
487*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
488*35238bceSAndroid Build Coastguard Worker                in mediump float var;
489*35238bceSAndroid Build Coastguard Worker                void main()
490*35238bceSAndroid Build Coastguard Worker                {
491*35238bceSAndroid Build Coastguard Worker                    ${FRAG_COLOR} = vec4(var);
492*35238bceSAndroid Build Coastguard Worker                }
493*35238bceSAndroid Build Coastguard Worker            ""
494*35238bceSAndroid Build Coastguard Worker        end
495*35238bceSAndroid Build Coastguard Worker
496*35238bceSAndroid Build Coastguard Worker        # different interpolation
497*35238bceSAndroid Build Coastguard Worker        case differing_interpolation_2
498*35238bceSAndroid Build Coastguard Worker            version 300 es
499*35238bceSAndroid Build Coastguard Worker            desc "varying interpolation different (smooth vs. centroid)"
500*35238bceSAndroid Build Coastguard Worker            values
501*35238bceSAndroid Build Coastguard Worker            {
502*35238bceSAndroid Build Coastguard Worker                input float in0 = [ -1.25 | -25.0 | 1.0 | 2.25 | 3.4 | 16.0 ];
503*35238bceSAndroid Build Coastguard Worker                output float out0 = [ -1.25 | -25.0 | 1.0 | 2.25 | 3.4 | 16.0 ];
504*35238bceSAndroid Build Coastguard Worker            }
505*35238bceSAndroid Build Coastguard Worker
506*35238bceSAndroid Build Coastguard Worker            vertex ""
507*35238bceSAndroid Build Coastguard Worker                #version 300 es
508*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
509*35238bceSAndroid Build Coastguard Worker                smooth out mediump float var;
510*35238bceSAndroid Build Coastguard Worker                void main()
511*35238bceSAndroid Build Coastguard Worker                {
512*35238bceSAndroid Build Coastguard Worker                    var = in0;
513*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
514*35238bceSAndroid Build Coastguard Worker                }
515*35238bceSAndroid Build Coastguard Worker            ""
516*35238bceSAndroid Build Coastguard Worker            fragment ""
517*35238bceSAndroid Build Coastguard Worker                #version 300 es
518*35238bceSAndroid Build Coastguard Worker                precision mediump float;
519*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
520*35238bceSAndroid Build Coastguard Worker                centroid in mediump float var;
521*35238bceSAndroid Build Coastguard Worker                void main()
522*35238bceSAndroid Build Coastguard Worker                {
523*35238bceSAndroid Build Coastguard Worker                    out0 = var;
524*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
525*35238bceSAndroid Build Coastguard Worker                }
526*35238bceSAndroid Build Coastguard Worker            ""
527*35238bceSAndroid Build Coastguard Worker        end
528*35238bceSAndroid Build Coastguard Worker
529*35238bceSAndroid Build Coastguard Worker        # no declaration in vertex shader, but static use in fragment
530*35238bceSAndroid Build Coastguard Worker        case illegal_usage_1
531*35238bceSAndroid Build Coastguard Worker            version 300 es
532*35238bceSAndroid Build Coastguard Worker            desc "varying not declared in vertex shader, but statically used in fragment shader"
533*35238bceSAndroid Build Coastguard Worker            expect link_fail
534*35238bceSAndroid Build Coastguard Worker            vertex ""
535*35238bceSAndroid Build Coastguard Worker                #version 300 es
536*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
537*35238bceSAndroid Build Coastguard Worker                void main()
538*35238bceSAndroid Build Coastguard Worker                {
539*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
540*35238bceSAndroid Build Coastguard Worker                }
541*35238bceSAndroid Build Coastguard Worker            ""
542*35238bceSAndroid Build Coastguard Worker            fragment ""
543*35238bceSAndroid Build Coastguard Worker                #version 300 es
544*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
545*35238bceSAndroid Build Coastguard Worker                in mediump float var;
546*35238bceSAndroid Build Coastguard Worker                void main()
547*35238bceSAndroid Build Coastguard Worker                {
548*35238bceSAndroid Build Coastguard Worker                    ${FRAG_COLOR} = vec4(var);
549*35238bceSAndroid Build Coastguard Worker                }
550*35238bceSAndroid Build Coastguard Worker            ""
551*35238bceSAndroid Build Coastguard Worker        end
552*35238bceSAndroid Build Coastguard Worker
553*35238bceSAndroid Build Coastguard Worker        # non-flat integer varyings not allowed
554*35238bceSAndroid Build Coastguard Worker        case invalid_type_int
555*35238bceSAndroid Build Coastguard Worker            version 300 es
556*35238bceSAndroid Build Coastguard Worker            desc "integer varying used"
557*35238bceSAndroid Build Coastguard Worker            expect compile_fail
558*35238bceSAndroid Build Coastguard Worker            vertex ""
559*35238bceSAndroid Build Coastguard Worker                #version 300 es
560*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
561*35238bceSAndroid Build Coastguard Worker                out mediump int var;
562*35238bceSAndroid Build Coastguard Worker                void main()
563*35238bceSAndroid Build Coastguard Worker                {
564*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
565*35238bceSAndroid Build Coastguard Worker                }
566*35238bceSAndroid Build Coastguard Worker            ""
567*35238bceSAndroid Build Coastguard Worker            fragment ""
568*35238bceSAndroid Build Coastguard Worker                #version 300 es
569*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
570*35238bceSAndroid Build Coastguard Worker                in mediump int var;
571*35238bceSAndroid Build Coastguard Worker                void main()
572*35238bceSAndroid Build Coastguard Worker                {
573*35238bceSAndroid Build Coastguard Worker                    ${FRAG_COLOR} = vec4(1.0);
574*35238bceSAndroid Build Coastguard Worker                }
575*35238bceSAndroid Build Coastguard Worker            ""
576*35238bceSAndroid Build Coastguard Worker        end
577*35238bceSAndroid Build Coastguard Worker
578*35238bceSAndroid Build Coastguard Worker        # non-flat integer varyings not allowed
579*35238bceSAndroid Build Coastguard Worker        case invalid_type_uint
580*35238bceSAndroid Build Coastguard Worker            version 300 es
581*35238bceSAndroid Build Coastguard Worker            desc "integer varying used"
582*35238bceSAndroid Build Coastguard Worker            expect compile_fail
583*35238bceSAndroid Build Coastguard Worker            vertex ""
584*35238bceSAndroid Build Coastguard Worker                #version 300 es
585*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
586*35238bceSAndroid Build Coastguard Worker                out mediump uint var;
587*35238bceSAndroid Build Coastguard Worker                void main()
588*35238bceSAndroid Build Coastguard Worker                {
589*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
590*35238bceSAndroid Build Coastguard Worker                }
591*35238bceSAndroid Build Coastguard Worker            ""
592*35238bceSAndroid Build Coastguard Worker            fragment ""
593*35238bceSAndroid Build Coastguard Worker                #version 300 es
594*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
595*35238bceSAndroid Build Coastguard Worker                in mediump uint var;
596*35238bceSAndroid Build Coastguard Worker                void main()
597*35238bceSAndroid Build Coastguard Worker                {
598*35238bceSAndroid Build Coastguard Worker                    ${FRAG_COLOR} = vec4(1.0);
599*35238bceSAndroid Build Coastguard Worker                }
600*35238bceSAndroid Build Coastguard Worker            ""
601*35238bceSAndroid Build Coastguard Worker        end
602*35238bceSAndroid Build Coastguard Worker
603*35238bceSAndroid Build Coastguard Worker        # bool varyings not allowed
604*35238bceSAndroid Build Coastguard Worker        case invalid_type_bool
605*35238bceSAndroid Build Coastguard Worker            version 300 es
606*35238bceSAndroid Build Coastguard Worker            desc "boolean varying used"
607*35238bceSAndroid Build Coastguard Worker            expect compile_fail
608*35238bceSAndroid Build Coastguard Worker            vertex ""
609*35238bceSAndroid Build Coastguard Worker                #version 300 es
610*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
611*35238bceSAndroid Build Coastguard Worker                out bool var;
612*35238bceSAndroid Build Coastguard Worker                void main()
613*35238bceSAndroid Build Coastguard Worker                {
614*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
615*35238bceSAndroid Build Coastguard Worker                }
616*35238bceSAndroid Build Coastguard Worker            ""
617*35238bceSAndroid Build Coastguard Worker            fragment ""
618*35238bceSAndroid Build Coastguard Worker                #version 300 es
619*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
620*35238bceSAndroid Build Coastguard Worker                in bool var;
621*35238bceSAndroid Build Coastguard Worker                void main()
622*35238bceSAndroid Build Coastguard Worker                {
623*35238bceSAndroid Build Coastguard Worker                    ${FRAG_COLOR} = vec4(1.0);
624*35238bceSAndroid Build Coastguard Worker                }
625*35238bceSAndroid Build Coastguard Worker            ""
626*35238bceSAndroid Build Coastguard Worker        end
627*35238bceSAndroid Build Coastguard Worker
628*35238bceSAndroid Build Coastguard Worker        case invalid_type_struct_array
629*35238bceSAndroid Build Coastguard Worker            version 300 es
630*35238bceSAndroid Build Coastguard Worker            desc "float array inside struct"
631*35238bceSAndroid Build Coastguard Worker            expect compile_fail
632*35238bceSAndroid Build Coastguard Worker            vertex ""
633*35238bceSAndroid Build Coastguard Worker                #version 300 es
634*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
635*35238bceSAndroid Build Coastguard Worker                struct S { mediump float a[3]; };
636*35238bceSAndroid Build Coastguard Worker                out S var;
637*35238bceSAndroid Build Coastguard Worker                void main()
638*35238bceSAndroid Build Coastguard Worker                {
639*35238bceSAndroid Build Coastguard Worker                    var.a[0] = 1.0;
640*35238bceSAndroid Build Coastguard Worker                    var.a[1] = 1.0;
641*35238bceSAndroid Build Coastguard Worker                    var.a[2] = 1.0;
642*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
643*35238bceSAndroid Build Coastguard Worker                }
644*35238bceSAndroid Build Coastguard Worker            ""
645*35238bceSAndroid Build Coastguard Worker            fragment ""
646*35238bceSAndroid Build Coastguard Worker                #version 300 es
647*35238bceSAndroid Build Coastguard Worker                precision mediump float;
648*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
649*35238bceSAndroid Build Coastguard Worker                struct S { mediump float a[3]; };
650*35238bceSAndroid Build Coastguard Worker                in S var;
651*35238bceSAndroid Build Coastguard Worker                void main()
652*35238bceSAndroid Build Coastguard Worker                {
653*35238bceSAndroid Build Coastguard Worker                    ${FRAG_COLOR} = vec4(1.0);
654*35238bceSAndroid Build Coastguard Worker                }
655*35238bceSAndroid Build Coastguard Worker            ""
656*35238bceSAndroid Build Coastguard Worker        end
657*35238bceSAndroid Build Coastguard Worker
658*35238bceSAndroid Build Coastguard Worker        case invalid_type_struct_struct
659*35238bceSAndroid Build Coastguard Worker            version 300 es
660*35238bceSAndroid Build Coastguard Worker            desc "struct inside struct"
661*35238bceSAndroid Build Coastguard Worker            expect compile_fail
662*35238bceSAndroid Build Coastguard Worker            vertex ""
663*35238bceSAndroid Build Coastguard Worker                #version 300 es
664*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
665*35238bceSAndroid Build Coastguard Worker                struct S { mediump float a; };
666*35238bceSAndroid Build Coastguard Worker                struct T { S s; };
667*35238bceSAndroid Build Coastguard Worker                out T var;
668*35238bceSAndroid Build Coastguard Worker                void main()
669*35238bceSAndroid Build Coastguard Worker                {
670*35238bceSAndroid Build Coastguard Worker                    var.s.a = 1.0;
671*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
672*35238bceSAndroid Build Coastguard Worker                }
673*35238bceSAndroid Build Coastguard Worker            ""
674*35238bceSAndroid Build Coastguard Worker            fragment ""
675*35238bceSAndroid Build Coastguard Worker                #version 300 es
676*35238bceSAndroid Build Coastguard Worker                precision mediump float;
677*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
678*35238bceSAndroid Build Coastguard Worker                struct S { mediump float a; };
679*35238bceSAndroid Build Coastguard Worker                struct T { S s; };
680*35238bceSAndroid Build Coastguard Worker                in T var;
681*35238bceSAndroid Build Coastguard Worker                void main()
682*35238bceSAndroid Build Coastguard Worker                {
683*35238bceSAndroid Build Coastguard Worker                    ${FRAG_COLOR} = vec4(1.0);
684*35238bceSAndroid Build Coastguard Worker                }
685*35238bceSAndroid Build Coastguard Worker            ""
686*35238bceSAndroid Build Coastguard Worker        end
687*35238bceSAndroid Build Coastguard Worker
688*35238bceSAndroid Build Coastguard Worker        case invalid_type_array_struct
689*35238bceSAndroid Build Coastguard Worker            version 300 es
690*35238bceSAndroid Build Coastguard Worker            desc "array of structs"
691*35238bceSAndroid Build Coastguard Worker            expect compile_fail
692*35238bceSAndroid Build Coastguard Worker            vertex ""
693*35238bceSAndroid Build Coastguard Worker                #version 300 es
694*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
695*35238bceSAndroid Build Coastguard Worker                struct S { mediump int a; };
696*35238bceSAndroid Build Coastguard Worker                flat out S var[2];
697*35238bceSAndroid Build Coastguard Worker                void main()
698*35238bceSAndroid Build Coastguard Worker                {
699*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_SETUP}
700*35238bceSAndroid Build Coastguard Worker                    var[0].a = 1;
701*35238bceSAndroid Build Coastguard Worker                    var[1].a = 1;
702*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
703*35238bceSAndroid Build Coastguard Worker                }
704*35238bceSAndroid Build Coastguard Worker            ""
705*35238bceSAndroid Build Coastguard Worker            fragment ""
706*35238bceSAndroid Build Coastguard Worker                #version 300 es
707*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
708*35238bceSAndroid Build Coastguard Worker                struct S { mediump int a; };
709*35238bceSAndroid Build Coastguard Worker                flat in S var[2];
710*35238bceSAndroid Build Coastguard Worker                void main()
711*35238bceSAndroid Build Coastguard Worker                {
712*35238bceSAndroid Build Coastguard Worker                    ${FRAG_COLOR} = vec4(1.0);
713*35238bceSAndroid Build Coastguard Worker                }
714*35238bceSAndroid Build Coastguard Worker            ""
715*35238bceSAndroid Build Coastguard Worker        end
716*35238bceSAndroid Build Coastguard Worker
717*35238bceSAndroid Build Coastguard Worker        case invalid_type_array_array
718*35238bceSAndroid Build Coastguard Worker            version 300 es
719*35238bceSAndroid Build Coastguard Worker            desc "array of arrays"
720*35238bceSAndroid Build Coastguard Worker            expect compile_fail
721*35238bceSAndroid Build Coastguard Worker            vertex ""
722*35238bceSAndroid Build Coastguard Worker                #version 300 es
723*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
724*35238bceSAndroid Build Coastguard Worker                out mediump float var[2][2];
725*35238bceSAndroid Build Coastguard Worker                void main()
726*35238bceSAndroid Build Coastguard Worker                {
727*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_SETUP}
728*35238bceSAndroid Build Coastguard Worker                    var[0][0] = 1.0;
729*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
730*35238bceSAndroid Build Coastguard Worker                }
731*35238bceSAndroid Build Coastguard Worker            ""
732*35238bceSAndroid Build Coastguard Worker            fragment ""
733*35238bceSAndroid Build Coastguard Worker                #version 300 es
734*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
735*35238bceSAndroid Build Coastguard Worker                in mediump float var[2][2];
736*35238bceSAndroid Build Coastguard Worker                void main()
737*35238bceSAndroid Build Coastguard Worker                {
738*35238bceSAndroid Build Coastguard Worker                    ${FRAG_COLOR} = vec4(1.0);
739*35238bceSAndroid Build Coastguard Worker                }
740*35238bceSAndroid Build Coastguard Worker            ""
741*35238bceSAndroid Build Coastguard Worker        end
742*35238bceSAndroid Build Coastguard Worker    end
743*35238bceSAndroid Build Coastguard Worker
744*35238bceSAndroid Build Coastguard Worker    group basic_types "Basic varying types"
745*35238bceSAndroid Build Coastguard Worker        case float
746*35238bceSAndroid Build Coastguard Worker            version 300 es
747*35238bceSAndroid Build Coastguard Worker            desc "varying of type float"
748*35238bceSAndroid Build Coastguard Worker            values
749*35238bceSAndroid Build Coastguard Worker            {
750*35238bceSAndroid Build Coastguard Worker                input float in0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ];
751*35238bceSAndroid Build Coastguard Worker                output float out0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ];
752*35238bceSAndroid Build Coastguard Worker            }
753*35238bceSAndroid Build Coastguard Worker            vertex ""
754*35238bceSAndroid Build Coastguard Worker                #version 300 es
755*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
756*35238bceSAndroid Build Coastguard Worker                out mediump float var;
757*35238bceSAndroid Build Coastguard Worker                void main()
758*35238bceSAndroid Build Coastguard Worker                {
759*35238bceSAndroid Build Coastguard Worker                    var = in0;
760*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
761*35238bceSAndroid Build Coastguard Worker                }
762*35238bceSAndroid Build Coastguard Worker            ""
763*35238bceSAndroid Build Coastguard Worker            fragment ""
764*35238bceSAndroid Build Coastguard Worker                #version 300 es
765*35238bceSAndroid Build Coastguard Worker                precision mediump float;
766*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
767*35238bceSAndroid Build Coastguard Worker                in float var;
768*35238bceSAndroid Build Coastguard Worker                void main()
769*35238bceSAndroid Build Coastguard Worker                {
770*35238bceSAndroid Build Coastguard Worker                    out0 = var;
771*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
772*35238bceSAndroid Build Coastguard Worker                }
773*35238bceSAndroid Build Coastguard Worker            ""
774*35238bceSAndroid Build Coastguard Worker        end
775*35238bceSAndroid Build Coastguard Worker
776*35238bceSAndroid Build Coastguard Worker        case vec2
777*35238bceSAndroid Build Coastguard Worker            version 300 es
778*35238bceSAndroid Build Coastguard Worker            desc "varying of type vec2"
779*35238bceSAndroid Build Coastguard Worker            values
780*35238bceSAndroid Build Coastguard Worker            {
781*35238bceSAndroid Build Coastguard Worker                input vec2 in0 = [ vec2(-1.25, 1.25) | vec2(-25.65, -7.25) | vec2(0.0, 1.0) | vec2(2.25, 2.25) | vec2(3.4, 9.5) | vec2(16.0, 32.0) ];
782*35238bceSAndroid Build Coastguard Worker                output vec2 out0 = [ vec2(-1.25, 1.25) | vec2(-25.65, -7.25) | vec2(0.0, 1.0) | vec2(2.25, 2.25) | vec2(3.4, 9.5) | vec2(16.0, 32.0) ];
783*35238bceSAndroid Build Coastguard Worker            }
784*35238bceSAndroid Build Coastguard Worker            vertex ""
785*35238bceSAndroid Build Coastguard Worker                #version 300 es
786*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
787*35238bceSAndroid Build Coastguard Worker                out mediump vec2 var;
788*35238bceSAndroid Build Coastguard Worker                void main()
789*35238bceSAndroid Build Coastguard Worker                {
790*35238bceSAndroid Build Coastguard Worker                    var = in0;
791*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
792*35238bceSAndroid Build Coastguard Worker                }
793*35238bceSAndroid Build Coastguard Worker            ""
794*35238bceSAndroid Build Coastguard Worker            fragment ""
795*35238bceSAndroid Build Coastguard Worker                #version 300 es
796*35238bceSAndroid Build Coastguard Worker                precision mediump float;
797*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
798*35238bceSAndroid Build Coastguard Worker                in vec2 var;
799*35238bceSAndroid Build Coastguard Worker                void main()
800*35238bceSAndroid Build Coastguard Worker                {
801*35238bceSAndroid Build Coastguard Worker                    out0 = var;
802*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
803*35238bceSAndroid Build Coastguard Worker                }
804*35238bceSAndroid Build Coastguard Worker            ""
805*35238bceSAndroid Build Coastguard Worker        end
806*35238bceSAndroid Build Coastguard Worker
807*35238bceSAndroid Build Coastguard Worker        case vec3
808*35238bceSAndroid Build Coastguard Worker            version 300 es
809*35238bceSAndroid Build Coastguard Worker            desc "varying of type vec3"
810*35238bceSAndroid Build Coastguard Worker            values
811*35238bceSAndroid Build Coastguard Worker            {
812*35238bceSAndroid Build Coastguard Worker                input vec3 in0 = [ vec3(-1.25, 1.25, -9.5) | vec3(-25.65, -7.25, 14.21) | vec3(0.0, 1.0, -1.0) | vec3(2.25, 2.25, 22.5) | vec3(3.4, 9.5, 19.5) | vec3(16.0, 32.0, -64.0) ];
813*35238bceSAndroid Build Coastguard Worker                output vec3 out0 = [ vec3(-1.25, 1.25, -9.5) | vec3(-25.65, -7.25, 14.21) | vec3(0.0, 1.0, -1.0) | vec3(2.25, 2.25, 22.5) | vec3(3.4, 9.5, 19.5) | vec3(16.0, 32.0, -64.0) ];
814*35238bceSAndroid Build Coastguard Worker            }
815*35238bceSAndroid Build Coastguard Worker            vertex ""
816*35238bceSAndroid Build Coastguard Worker                #version 300 es
817*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
818*35238bceSAndroid Build Coastguard Worker                out mediump vec3 var;
819*35238bceSAndroid Build Coastguard Worker                void main()
820*35238bceSAndroid Build Coastguard Worker                {
821*35238bceSAndroid Build Coastguard Worker                    var = in0;
822*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
823*35238bceSAndroid Build Coastguard Worker                }
824*35238bceSAndroid Build Coastguard Worker            ""
825*35238bceSAndroid Build Coastguard Worker            fragment ""
826*35238bceSAndroid Build Coastguard Worker                #version 300 es
827*35238bceSAndroid Build Coastguard Worker                precision mediump float;
828*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
829*35238bceSAndroid Build Coastguard Worker                in vec3 var;
830*35238bceSAndroid Build Coastguard Worker                void main()
831*35238bceSAndroid Build Coastguard Worker                {
832*35238bceSAndroid Build Coastguard Worker                    out0 = var;
833*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
834*35238bceSAndroid Build Coastguard Worker                }
835*35238bceSAndroid Build Coastguard Worker            ""
836*35238bceSAndroid Build Coastguard Worker        end
837*35238bceSAndroid Build Coastguard Worker
838*35238bceSAndroid Build Coastguard Worker        case vec4
839*35238bceSAndroid Build Coastguard Worker            version 300 es
840*35238bceSAndroid Build Coastguard Worker            desc "varying of type vec4"
841*35238bceSAndroid Build Coastguard Worker            values
842*35238bceSAndroid Build Coastguard Worker            {
843*35238bceSAndroid Build Coastguard Worker                input vec4 in0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ];
844*35238bceSAndroid Build Coastguard Worker                output vec4 out0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ];
845*35238bceSAndroid Build Coastguard Worker            }
846*35238bceSAndroid Build Coastguard Worker            vertex ""
847*35238bceSAndroid Build Coastguard Worker                #version 300 es
848*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
849*35238bceSAndroid Build Coastguard Worker                out mediump vec4 var;
850*35238bceSAndroid Build Coastguard Worker                void main()
851*35238bceSAndroid Build Coastguard Worker                {
852*35238bceSAndroid Build Coastguard Worker                    var = in0;
853*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
854*35238bceSAndroid Build Coastguard Worker                }
855*35238bceSAndroid Build Coastguard Worker            ""
856*35238bceSAndroid Build Coastguard Worker            fragment ""
857*35238bceSAndroid Build Coastguard Worker                #version 300 es
858*35238bceSAndroid Build Coastguard Worker                precision mediump float;
859*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
860*35238bceSAndroid Build Coastguard Worker                in vec4 var;
861*35238bceSAndroid Build Coastguard Worker                void main()
862*35238bceSAndroid Build Coastguard Worker                {
863*35238bceSAndroid Build Coastguard Worker                    out0 = var;
864*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
865*35238bceSAndroid Build Coastguard Worker                }
866*35238bceSAndroid Build Coastguard Worker            ""
867*35238bceSAndroid Build Coastguard Worker        end
868*35238bceSAndroid Build Coastguard Worker
869*35238bceSAndroid Build Coastguard Worker        case mat2
870*35238bceSAndroid Build Coastguard Worker            version 300 es
871*35238bceSAndroid Build Coastguard Worker            desc "varying of type mat2"
872*35238bceSAndroid Build Coastguard Worker            values
873*35238bceSAndroid Build Coastguard Worker            {
874*35238bceSAndroid Build Coastguard Worker                input mat2 in0 = [ mat2(1.0, 1.0, 1.0, 1.0) | mat2(-1.25, 1.25, -9.5, -12.2) | mat2(-25.65, -7.25, 14.21, -77.7) | mat2(0.0, 1.0, -1.0, 2.0) | mat2(2.25, 2.25, 22.5, 225.0) | mat2(3.4, 9.5, 19.5, 29.5) | mat2(16.0, 32.0, -64.0, -128.0) ];
875*35238bceSAndroid Build Coastguard Worker                output mat2 out0 = [ mat2(1.0, 1.0, 1.0, 1.0) | mat2(-1.25, 1.25, -9.5, -12.2) | mat2(-25.65, -7.25, 14.21, -77.7) | mat2(0.0, 1.0, -1.0, 2.0) | mat2(2.25, 2.25, 22.5, 225.0) | mat2(3.4, 9.5, 19.5, 29.5) | mat2(16.0, 32.0, -64.0, -128.0) ];
876*35238bceSAndroid Build Coastguard Worker            }
877*35238bceSAndroid Build Coastguard Worker            vertex ""
878*35238bceSAndroid Build Coastguard Worker                #version 300 es
879*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
880*35238bceSAndroid Build Coastguard Worker                out mediump mat2 var;
881*35238bceSAndroid Build Coastguard Worker                void main()
882*35238bceSAndroid Build Coastguard Worker                {
883*35238bceSAndroid Build Coastguard Worker                    var = in0;
884*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
885*35238bceSAndroid Build Coastguard Worker                }
886*35238bceSAndroid Build Coastguard Worker            ""
887*35238bceSAndroid Build Coastguard Worker            fragment ""
888*35238bceSAndroid Build Coastguard Worker                #version 300 es
889*35238bceSAndroid Build Coastguard Worker                precision mediump float;
890*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
891*35238bceSAndroid Build Coastguard Worker                in mat2 var;
892*35238bceSAndroid Build Coastguard Worker                void main()
893*35238bceSAndroid Build Coastguard Worker                {
894*35238bceSAndroid Build Coastguard Worker                    out0 = var;
895*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
896*35238bceSAndroid Build Coastguard Worker                }
897*35238bceSAndroid Build Coastguard Worker            ""
898*35238bceSAndroid Build Coastguard Worker        end
899*35238bceSAndroid Build Coastguard Worker
900*35238bceSAndroid Build Coastguard Worker        case mat2x3
901*35238bceSAndroid Build Coastguard Worker            version 300 es
902*35238bceSAndroid Build Coastguard Worker            desc "varying of type mat2x3"
903*35238bceSAndroid Build Coastguard Worker            values
904*35238bceSAndroid Build Coastguard Worker            {
905*35238bceSAndroid Build Coastguard Worker                input mat2x3 in0 = [ mat2x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ];
906*35238bceSAndroid Build Coastguard Worker                output mat2x3 out0 = [ mat2x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ];
907*35238bceSAndroid Build Coastguard Worker            }
908*35238bceSAndroid Build Coastguard Worker            vertex ""
909*35238bceSAndroid Build Coastguard Worker                #version 300 es
910*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
911*35238bceSAndroid Build Coastguard Worker                out mediump mat2x3 var;
912*35238bceSAndroid Build Coastguard Worker                void main()
913*35238bceSAndroid Build Coastguard Worker                {
914*35238bceSAndroid Build Coastguard Worker                    var = in0;
915*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
916*35238bceSAndroid Build Coastguard Worker                }
917*35238bceSAndroid Build Coastguard Worker            ""
918*35238bceSAndroid Build Coastguard Worker            fragment ""
919*35238bceSAndroid Build Coastguard Worker                #version 300 es
920*35238bceSAndroid Build Coastguard Worker                precision mediump float;
921*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
922*35238bceSAndroid Build Coastguard Worker                in mat2x3 var;
923*35238bceSAndroid Build Coastguard Worker                void main()
924*35238bceSAndroid Build Coastguard Worker                {
925*35238bceSAndroid Build Coastguard Worker                    out0 = var;
926*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
927*35238bceSAndroid Build Coastguard Worker                }
928*35238bceSAndroid Build Coastguard Worker            ""
929*35238bceSAndroid Build Coastguard Worker        end
930*35238bceSAndroid Build Coastguard Worker
931*35238bceSAndroid Build Coastguard Worker        case mat2x4
932*35238bceSAndroid Build Coastguard Worker            version 300 es
933*35238bceSAndroid Build Coastguard Worker            desc "varying of type mat2x4"
934*35238bceSAndroid Build Coastguard Worker            values
935*35238bceSAndroid Build Coastguard Worker            {
936*35238bceSAndroid Build Coastguard Worker                input mat2x4 in0 = [ mat2x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ];
937*35238bceSAndroid Build Coastguard Worker                output mat2x4 out0 = [ mat2x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ];
938*35238bceSAndroid Build Coastguard Worker            }
939*35238bceSAndroid Build Coastguard Worker            vertex ""
940*35238bceSAndroid Build Coastguard Worker                #version 300 es
941*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
942*35238bceSAndroid Build Coastguard Worker                out mediump mat2x4 var;
943*35238bceSAndroid Build Coastguard Worker                void main()
944*35238bceSAndroid Build Coastguard Worker                {
945*35238bceSAndroid Build Coastguard Worker                    var = in0;
946*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
947*35238bceSAndroid Build Coastguard Worker                }
948*35238bceSAndroid Build Coastguard Worker            ""
949*35238bceSAndroid Build Coastguard Worker            fragment ""
950*35238bceSAndroid Build Coastguard Worker                #version 300 es
951*35238bceSAndroid Build Coastguard Worker                precision mediump float;
952*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
953*35238bceSAndroid Build Coastguard Worker                in mat2x4 var;
954*35238bceSAndroid Build Coastguard Worker                void main()
955*35238bceSAndroid Build Coastguard Worker                {
956*35238bceSAndroid Build Coastguard Worker                    out0 = var;
957*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
958*35238bceSAndroid Build Coastguard Worker                }
959*35238bceSAndroid Build Coastguard Worker            ""
960*35238bceSAndroid Build Coastguard Worker        end
961*35238bceSAndroid Build Coastguard Worker
962*35238bceSAndroid Build Coastguard Worker        case mat3x2
963*35238bceSAndroid Build Coastguard Worker            version 300 es
964*35238bceSAndroid Build Coastguard Worker            desc "varying of type mat3x2"
965*35238bceSAndroid Build Coastguard Worker            values
966*35238bceSAndroid Build Coastguard Worker            {
967*35238bceSAndroid Build Coastguard Worker                input mat3x2 in0 = [ mat3x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ];
968*35238bceSAndroid Build Coastguard Worker                output mat3x2 out0 = [ mat3x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ];
969*35238bceSAndroid Build Coastguard Worker            }
970*35238bceSAndroid Build Coastguard Worker            vertex ""
971*35238bceSAndroid Build Coastguard Worker                #version 300 es
972*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
973*35238bceSAndroid Build Coastguard Worker                out mediump mat3x2 var;
974*35238bceSAndroid Build Coastguard Worker                void main()
975*35238bceSAndroid Build Coastguard Worker                {
976*35238bceSAndroid Build Coastguard Worker                    var = in0;
977*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
978*35238bceSAndroid Build Coastguard Worker                }
979*35238bceSAndroid Build Coastguard Worker            ""
980*35238bceSAndroid Build Coastguard Worker            fragment ""
981*35238bceSAndroid Build Coastguard Worker                #version 300 es
982*35238bceSAndroid Build Coastguard Worker                precision mediump float;
983*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
984*35238bceSAndroid Build Coastguard Worker                in mat3x2 var;
985*35238bceSAndroid Build Coastguard Worker                void main()
986*35238bceSAndroid Build Coastguard Worker                {
987*35238bceSAndroid Build Coastguard Worker                    out0 = var;
988*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
989*35238bceSAndroid Build Coastguard Worker                }
990*35238bceSAndroid Build Coastguard Worker            ""
991*35238bceSAndroid Build Coastguard Worker        end
992*35238bceSAndroid Build Coastguard Worker
993*35238bceSAndroid Build Coastguard Worker        case mat3
994*35238bceSAndroid Build Coastguard Worker            version 300 es
995*35238bceSAndroid Build Coastguard Worker            desc "varying of type mat3"
996*35238bceSAndroid Build Coastguard Worker            values
997*35238bceSAndroid Build Coastguard Worker            {
998*35238bceSAndroid Build Coastguard Worker                input mat3 in0 = [ mat3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 9.9) | mat3(0.0, 1.0, -1.0, 2.0, 2.25, 2.25, 22.5, 225.0, -9.9) | mat3(3.4, 9.5, 19.5, 29.5, 16.0, 32.0, -64.0, -128.0, 256.0) ];
999*35238bceSAndroid Build Coastguard Worker                output mat3 out0 = [ mat3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 9.9) | mat3(0.0, 1.0, -1.0, 2.0, 2.25, 2.25, 22.5, 225.0, -9.9) | mat3(3.4, 9.5, 19.5, 29.5, 16.0, 32.0, -64.0, -128.0, 256.0) ];
1000*35238bceSAndroid Build Coastguard Worker            }
1001*35238bceSAndroid Build Coastguard Worker            vertex ""
1002*35238bceSAndroid Build Coastguard Worker                #version 300 es
1003*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
1004*35238bceSAndroid Build Coastguard Worker                out mediump mat3 var;
1005*35238bceSAndroid Build Coastguard Worker                void main()
1006*35238bceSAndroid Build Coastguard Worker                {
1007*35238bceSAndroid Build Coastguard Worker                    var = in0;
1008*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
1009*35238bceSAndroid Build Coastguard Worker                }
1010*35238bceSAndroid Build Coastguard Worker            ""
1011*35238bceSAndroid Build Coastguard Worker            fragment ""
1012*35238bceSAndroid Build Coastguard Worker                #version 300 es
1013*35238bceSAndroid Build Coastguard Worker                precision mediump float;
1014*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
1015*35238bceSAndroid Build Coastguard Worker                in mat3 var;
1016*35238bceSAndroid Build Coastguard Worker                void main()
1017*35238bceSAndroid Build Coastguard Worker                {
1018*35238bceSAndroid Build Coastguard Worker                    out0 = var;
1019*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
1020*35238bceSAndroid Build Coastguard Worker                }
1021*35238bceSAndroid Build Coastguard Worker            ""
1022*35238bceSAndroid Build Coastguard Worker        end
1023*35238bceSAndroid Build Coastguard Worker
1024*35238bceSAndroid Build Coastguard Worker        case mat3x4
1025*35238bceSAndroid Build Coastguard Worker            version 300 es
1026*35238bceSAndroid Build Coastguard Worker            desc "varying of type mat3x4"
1027*35238bceSAndroid Build Coastguard Worker            values
1028*35238bceSAndroid Build Coastguard Worker            {
1029*35238bceSAndroid Build Coastguard Worker                input mat3x4 in0 = [ mat3x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0) ];
1030*35238bceSAndroid Build Coastguard Worker                output mat3x4 out0 = [ mat3x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0) ];
1031*35238bceSAndroid Build Coastguard Worker            }
1032*35238bceSAndroid Build Coastguard Worker            vertex ""
1033*35238bceSAndroid Build Coastguard Worker                #version 300 es
1034*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
1035*35238bceSAndroid Build Coastguard Worker                out mediump mat3x4 var;
1036*35238bceSAndroid Build Coastguard Worker                void main()
1037*35238bceSAndroid Build Coastguard Worker                {
1038*35238bceSAndroid Build Coastguard Worker                    var = in0;
1039*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
1040*35238bceSAndroid Build Coastguard Worker                }
1041*35238bceSAndroid Build Coastguard Worker            ""
1042*35238bceSAndroid Build Coastguard Worker            fragment ""
1043*35238bceSAndroid Build Coastguard Worker                #version 300 es
1044*35238bceSAndroid Build Coastguard Worker                precision mediump float;
1045*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
1046*35238bceSAndroid Build Coastguard Worker                in mat3x4 var;
1047*35238bceSAndroid Build Coastguard Worker                void main()
1048*35238bceSAndroid Build Coastguard Worker                {
1049*35238bceSAndroid Build Coastguard Worker                    out0 = var;
1050*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
1051*35238bceSAndroid Build Coastguard Worker                }
1052*35238bceSAndroid Build Coastguard Worker            ""
1053*35238bceSAndroid Build Coastguard Worker        end
1054*35238bceSAndroid Build Coastguard Worker
1055*35238bceSAndroid Build Coastguard Worker        case mat4x2
1056*35238bceSAndroid Build Coastguard Worker            version 300 es
1057*35238bceSAndroid Build Coastguard Worker            desc "varying of type mat4x2"
1058*35238bceSAndroid Build Coastguard Worker            values
1059*35238bceSAndroid Build Coastguard Worker            {
1060*35238bceSAndroid Build Coastguard Worker                input mat4x2 in0 = [ mat4x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ];
1061*35238bceSAndroid Build Coastguard Worker                output mat4x2 out0 = [ mat4x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ];
1062*35238bceSAndroid Build Coastguard Worker            }
1063*35238bceSAndroid Build Coastguard Worker            vertex ""
1064*35238bceSAndroid Build Coastguard Worker                #version 300 es
1065*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
1066*35238bceSAndroid Build Coastguard Worker                out mediump mat4x2 var;
1067*35238bceSAndroid Build Coastguard Worker                void main()
1068*35238bceSAndroid Build Coastguard Worker                {
1069*35238bceSAndroid Build Coastguard Worker                    var = in0;
1070*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
1071*35238bceSAndroid Build Coastguard Worker                }
1072*35238bceSAndroid Build Coastguard Worker            ""
1073*35238bceSAndroid Build Coastguard Worker            fragment ""
1074*35238bceSAndroid Build Coastguard Worker                #version 300 es
1075*35238bceSAndroid Build Coastguard Worker                precision mediump float;
1076*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
1077*35238bceSAndroid Build Coastguard Worker                in mat4x2 var;
1078*35238bceSAndroid Build Coastguard Worker                void main()
1079*35238bceSAndroid Build Coastguard Worker                {
1080*35238bceSAndroid Build Coastguard Worker                    out0 = var;
1081*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
1082*35238bceSAndroid Build Coastguard Worker                }
1083*35238bceSAndroid Build Coastguard Worker            ""
1084*35238bceSAndroid Build Coastguard Worker        end
1085*35238bceSAndroid Build Coastguard Worker
1086*35238bceSAndroid Build Coastguard Worker        case mat4x3
1087*35238bceSAndroid Build Coastguard Worker            version 300 es
1088*35238bceSAndroid Build Coastguard Worker            desc "varying of type mat4x3"
1089*35238bceSAndroid Build Coastguard Worker            values
1090*35238bceSAndroid Build Coastguard Worker            {
1091*35238bceSAndroid Build Coastguard Worker                input mat4x3 in0 = [ mat4x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0) ];
1092*35238bceSAndroid Build Coastguard Worker                output mat4x3 out0 = [ mat4x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0) ];
1093*35238bceSAndroid Build Coastguard Worker            }
1094*35238bceSAndroid Build Coastguard Worker            vertex ""
1095*35238bceSAndroid Build Coastguard Worker                #version 300 es
1096*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
1097*35238bceSAndroid Build Coastguard Worker                out mediump mat4x3 var;
1098*35238bceSAndroid Build Coastguard Worker                void main()
1099*35238bceSAndroid Build Coastguard Worker                {
1100*35238bceSAndroid Build Coastguard Worker                    var = in0;
1101*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
1102*35238bceSAndroid Build Coastguard Worker                }
1103*35238bceSAndroid Build Coastguard Worker            ""
1104*35238bceSAndroid Build Coastguard Worker            fragment ""
1105*35238bceSAndroid Build Coastguard Worker                #version 300 es
1106*35238bceSAndroid Build Coastguard Worker                precision mediump float;
1107*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
1108*35238bceSAndroid Build Coastguard Worker                in mat4x3 var;
1109*35238bceSAndroid Build Coastguard Worker                void main()
1110*35238bceSAndroid Build Coastguard Worker                {
1111*35238bceSAndroid Build Coastguard Worker                    out0 = var;
1112*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
1113*35238bceSAndroid Build Coastguard Worker                }
1114*35238bceSAndroid Build Coastguard Worker            ""
1115*35238bceSAndroid Build Coastguard Worker        end
1116*35238bceSAndroid Build Coastguard Worker
1117*35238bceSAndroid Build Coastguard Worker        case mat4
1118*35238bceSAndroid Build Coastguard Worker            version 300 es
1119*35238bceSAndroid Build Coastguard Worker            desc "varying of type mat4"
1120*35238bceSAndroid Build Coastguard Worker            values
1121*35238bceSAndroid Build Coastguard Worker            {
1122*35238bceSAndroid Build Coastguard Worker                input mat4 in0 = [ mat4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0, 2.25, 2.25, 22.5, 225.0) ];
1123*35238bceSAndroid Build Coastguard Worker                output mat4 out0 = [ mat4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0, 2.25, 2.25, 22.5, 225.0) ];
1124*35238bceSAndroid Build Coastguard Worker            }
1125*35238bceSAndroid Build Coastguard Worker            vertex ""
1126*35238bceSAndroid Build Coastguard Worker                #version 300 es
1127*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
1128*35238bceSAndroid Build Coastguard Worker                out mediump mat4 var;
1129*35238bceSAndroid Build Coastguard Worker                void main()
1130*35238bceSAndroid Build Coastguard Worker                {
1131*35238bceSAndroid Build Coastguard Worker                    var = in0;
1132*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
1133*35238bceSAndroid Build Coastguard Worker                }
1134*35238bceSAndroid Build Coastguard Worker            ""
1135*35238bceSAndroid Build Coastguard Worker            fragment ""
1136*35238bceSAndroid Build Coastguard Worker                #version 300 es
1137*35238bceSAndroid Build Coastguard Worker                precision mediump float;
1138*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
1139*35238bceSAndroid Build Coastguard Worker                in mat4 var;
1140*35238bceSAndroid Build Coastguard Worker                void main()
1141*35238bceSAndroid Build Coastguard Worker                {
1142*35238bceSAndroid Build Coastguard Worker                    out0 = var;
1143*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
1144*35238bceSAndroid Build Coastguard Worker                }
1145*35238bceSAndroid Build Coastguard Worker            ""
1146*35238bceSAndroid Build Coastguard Worker        end
1147*35238bceSAndroid Build Coastguard Worker
1148*35238bceSAndroid Build Coastguard Worker        case int
1149*35238bceSAndroid Build Coastguard Worker            version 300 es
1150*35238bceSAndroid Build Coastguard Worker            desc "varying of type int"
1151*35238bceSAndroid Build Coastguard Worker            values
1152*35238bceSAndroid Build Coastguard Worker            {
1153*35238bceSAndroid Build Coastguard Worker                input int in0 = [ -1 | -25 | 1 | 2 | 3 | 16 ];
1154*35238bceSAndroid Build Coastguard Worker                output int out0 = [ -1 | -25 | 1 | 2 | 3 | 16 ];
1155*35238bceSAndroid Build Coastguard Worker            }
1156*35238bceSAndroid Build Coastguard Worker            vertex ""
1157*35238bceSAndroid Build Coastguard Worker                #version 300 es
1158*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
1159*35238bceSAndroid Build Coastguard Worker                flat out mediump int var;
1160*35238bceSAndroid Build Coastguard Worker                void main()
1161*35238bceSAndroid Build Coastguard Worker                {
1162*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_SETUP}
1163*35238bceSAndroid Build Coastguard Worker                    var = in0;
1164*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
1165*35238bceSAndroid Build Coastguard Worker                }
1166*35238bceSAndroid Build Coastguard Worker            ""
1167*35238bceSAndroid Build Coastguard Worker            fragment ""
1168*35238bceSAndroid Build Coastguard Worker                #version 300 es
1169*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
1170*35238bceSAndroid Build Coastguard Worker                flat in int var;
1171*35238bceSAndroid Build Coastguard Worker                void main()
1172*35238bceSAndroid Build Coastguard Worker                {
1173*35238bceSAndroid Build Coastguard Worker                    out0 = var;
1174*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
1175*35238bceSAndroid Build Coastguard Worker                }
1176*35238bceSAndroid Build Coastguard Worker            ""
1177*35238bceSAndroid Build Coastguard Worker        end
1178*35238bceSAndroid Build Coastguard Worker
1179*35238bceSAndroid Build Coastguard Worker        case ivec2
1180*35238bceSAndroid Build Coastguard Worker            version 300 es
1181*35238bceSAndroid Build Coastguard Worker            desc "varying of type ivec2"
1182*35238bceSAndroid Build Coastguard Worker            values
1183*35238bceSAndroid Build Coastguard Worker            {
1184*35238bceSAndroid Build Coastguard Worker                input ivec2 in0 = [ ivec2(-1, 1) | ivec2(-25, 25) | ivec2(1, 1) | ivec2(2, 3) | ivec2(16, 17) ];
1185*35238bceSAndroid Build Coastguard Worker                output ivec2 out0 = [ ivec2(-1, 1) | ivec2(-25, 25) | ivec2(1, 1) | ivec2(2, 3) | ivec2(16, 17) ];
1186*35238bceSAndroid Build Coastguard Worker            }
1187*35238bceSAndroid Build Coastguard Worker            vertex ""
1188*35238bceSAndroid Build Coastguard Worker                #version 300 es
1189*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
1190*35238bceSAndroid Build Coastguard Worker                flat out mediump ivec2 var;
1191*35238bceSAndroid Build Coastguard Worker                void main()
1192*35238bceSAndroid Build Coastguard Worker                {
1193*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_SETUP}
1194*35238bceSAndroid Build Coastguard Worker                    var = in0;
1195*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
1196*35238bceSAndroid Build Coastguard Worker                }
1197*35238bceSAndroid Build Coastguard Worker            ""
1198*35238bceSAndroid Build Coastguard Worker            fragment ""
1199*35238bceSAndroid Build Coastguard Worker                #version 300 es
1200*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
1201*35238bceSAndroid Build Coastguard Worker                flat in ivec2 var;
1202*35238bceSAndroid Build Coastguard Worker                void main()
1203*35238bceSAndroid Build Coastguard Worker                {
1204*35238bceSAndroid Build Coastguard Worker                    out0 = var;
1205*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
1206*35238bceSAndroid Build Coastguard Worker                }
1207*35238bceSAndroid Build Coastguard Worker            ""
1208*35238bceSAndroid Build Coastguard Worker        end
1209*35238bceSAndroid Build Coastguard Worker
1210*35238bceSAndroid Build Coastguard Worker        case ivec3
1211*35238bceSAndroid Build Coastguard Worker            version 300 es
1212*35238bceSAndroid Build Coastguard Worker            desc "varying of type ivec3"
1213*35238bceSAndroid Build Coastguard Worker            values
1214*35238bceSAndroid Build Coastguard Worker            {
1215*35238bceSAndroid Build Coastguard Worker                input ivec3 in0 = [ ivec3(-1, 1, -2) | ivec3(-25, 25, -3) | ivec3(1, 1, 1) | ivec3(2, 3, 4) | ivec3(16, 17, 18) ];
1216*35238bceSAndroid Build Coastguard Worker                output ivec3 out0 = [ ivec3(-1, 1, -2) | ivec3(-25, 25, -3) | ivec3(1, 1, 1) | ivec3(2, 3, 4) | ivec3(16, 17, 18) ];
1217*35238bceSAndroid Build Coastguard Worker            }
1218*35238bceSAndroid Build Coastguard Worker            vertex ""
1219*35238bceSAndroid Build Coastguard Worker                #version 300 es
1220*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
1221*35238bceSAndroid Build Coastguard Worker                flat out mediump ivec3 var;
1222*35238bceSAndroid Build Coastguard Worker                void main()
1223*35238bceSAndroid Build Coastguard Worker                {
1224*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_SETUP}
1225*35238bceSAndroid Build Coastguard Worker                    var = in0;
1226*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
1227*35238bceSAndroid Build Coastguard Worker                }
1228*35238bceSAndroid Build Coastguard Worker            ""
1229*35238bceSAndroid Build Coastguard Worker            fragment ""
1230*35238bceSAndroid Build Coastguard Worker                #version 300 es
1231*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
1232*35238bceSAndroid Build Coastguard Worker                flat in ivec3 var;
1233*35238bceSAndroid Build Coastguard Worker                void main()
1234*35238bceSAndroid Build Coastguard Worker                {
1235*35238bceSAndroid Build Coastguard Worker                    out0 = var;
1236*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
1237*35238bceSAndroid Build Coastguard Worker                }
1238*35238bceSAndroid Build Coastguard Worker            ""
1239*35238bceSAndroid Build Coastguard Worker        end
1240*35238bceSAndroid Build Coastguard Worker
1241*35238bceSAndroid Build Coastguard Worker        case ivec4
1242*35238bceSAndroid Build Coastguard Worker            version 300 es
1243*35238bceSAndroid Build Coastguard Worker            desc "varying of type ivec4"
1244*35238bceSAndroid Build Coastguard Worker            values
1245*35238bceSAndroid Build Coastguard Worker            {
1246*35238bceSAndroid Build Coastguard Worker                input ivec4 in0 = [ ivec4(-1, 1, -2, 2) | ivec4(-25, 25, -3, 3) | ivec4(1, 1, 1, 1) | ivec4(2, 3, 4, 5) | ivec4(16, 17, 18, 19) ];
1247*35238bceSAndroid Build Coastguard Worker                output ivec4 out0 = [ ivec4(-1, 1, -2, 2) | ivec4(-25, 25, -3, 3) | ivec4(1, 1, 1, 1) | ivec4(2, 3, 4, 5) | ivec4(16, 17, 18, 19) ];
1248*35238bceSAndroid Build Coastguard Worker            }
1249*35238bceSAndroid Build Coastguard Worker            vertex ""
1250*35238bceSAndroid Build Coastguard Worker                #version 300 es
1251*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
1252*35238bceSAndroid Build Coastguard Worker                flat out mediump ivec4 var;
1253*35238bceSAndroid Build Coastguard Worker                void main()
1254*35238bceSAndroid Build Coastguard Worker                {
1255*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_SETUP}
1256*35238bceSAndroid Build Coastguard Worker                    var = in0;
1257*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
1258*35238bceSAndroid Build Coastguard Worker                }
1259*35238bceSAndroid Build Coastguard Worker            ""
1260*35238bceSAndroid Build Coastguard Worker            fragment ""
1261*35238bceSAndroid Build Coastguard Worker                #version 300 es
1262*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
1263*35238bceSAndroid Build Coastguard Worker                flat in ivec4 var;
1264*35238bceSAndroid Build Coastguard Worker                void main()
1265*35238bceSAndroid Build Coastguard Worker                {
1266*35238bceSAndroid Build Coastguard Worker                    out0 = var;
1267*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
1268*35238bceSAndroid Build Coastguard Worker                }
1269*35238bceSAndroid Build Coastguard Worker            ""
1270*35238bceSAndroid Build Coastguard Worker        end
1271*35238bceSAndroid Build Coastguard Worker
1272*35238bceSAndroid Build Coastguard Worker        case uint
1273*35238bceSAndroid Build Coastguard Worker            version 300 es
1274*35238bceSAndroid Build Coastguard Worker            desc "varying of type int"
1275*35238bceSAndroid Build Coastguard Worker            values
1276*35238bceSAndroid Build Coastguard Worker            {
1277*35238bceSAndroid Build Coastguard Worker                input uint in0 = [ 1 | 2 | 3 | 16 ];
1278*35238bceSAndroid Build Coastguard Worker                output uint out0 = [ 1 | 2 | 3 | 16 ];
1279*35238bceSAndroid Build Coastguard Worker            }
1280*35238bceSAndroid Build Coastguard Worker            vertex ""
1281*35238bceSAndroid Build Coastguard Worker                #version 300 es
1282*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
1283*35238bceSAndroid Build Coastguard Worker                flat out mediump uint var;
1284*35238bceSAndroid Build Coastguard Worker                void main()
1285*35238bceSAndroid Build Coastguard Worker                {
1286*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_SETUP}
1287*35238bceSAndroid Build Coastguard Worker                    var = in0;
1288*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
1289*35238bceSAndroid Build Coastguard Worker                }
1290*35238bceSAndroid Build Coastguard Worker            ""
1291*35238bceSAndroid Build Coastguard Worker            fragment ""
1292*35238bceSAndroid Build Coastguard Worker                #version 300 es
1293*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
1294*35238bceSAndroid Build Coastguard Worker                flat in uint var;
1295*35238bceSAndroid Build Coastguard Worker                void main()
1296*35238bceSAndroid Build Coastguard Worker                {
1297*35238bceSAndroid Build Coastguard Worker                    out0 = var;
1298*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
1299*35238bceSAndroid Build Coastguard Worker                }
1300*35238bceSAndroid Build Coastguard Worker            ""
1301*35238bceSAndroid Build Coastguard Worker        end
1302*35238bceSAndroid Build Coastguard Worker
1303*35238bceSAndroid Build Coastguard Worker        case uvec2
1304*35238bceSAndroid Build Coastguard Worker            version 300 es
1305*35238bceSAndroid Build Coastguard Worker            desc "varying of type uvec2"
1306*35238bceSAndroid Build Coastguard Worker            values
1307*35238bceSAndroid Build Coastguard Worker            {
1308*35238bceSAndroid Build Coastguard Worker                input uvec2 in0 = [ uvec2(1, 1) | uvec2(25, 25) | uvec2(1, 1) | uvec2(2, 3) | uvec2(16, 17) ];
1309*35238bceSAndroid Build Coastguard Worker                output uvec2 out0 = [ uvec2(1, 1) | uvec2(25, 25) | uvec2(1, 1) | uvec2(2, 3) | uvec2(16, 17) ];
1310*35238bceSAndroid Build Coastguard Worker            }
1311*35238bceSAndroid Build Coastguard Worker            vertex ""
1312*35238bceSAndroid Build Coastguard Worker                #version 300 es
1313*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
1314*35238bceSAndroid Build Coastguard Worker                flat out mediump uvec2 var;
1315*35238bceSAndroid Build Coastguard Worker                void main()
1316*35238bceSAndroid Build Coastguard Worker                {
1317*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_SETUP}
1318*35238bceSAndroid Build Coastguard Worker                    var = in0;
1319*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
1320*35238bceSAndroid Build Coastguard Worker                }
1321*35238bceSAndroid Build Coastguard Worker            ""
1322*35238bceSAndroid Build Coastguard Worker            fragment ""
1323*35238bceSAndroid Build Coastguard Worker                #version 300 es
1324*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
1325*35238bceSAndroid Build Coastguard Worker                flat in uvec2 var;
1326*35238bceSAndroid Build Coastguard Worker                void main()
1327*35238bceSAndroid Build Coastguard Worker                {
1328*35238bceSAndroid Build Coastguard Worker                    out0 = var;
1329*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
1330*35238bceSAndroid Build Coastguard Worker                }
1331*35238bceSAndroid Build Coastguard Worker            ""
1332*35238bceSAndroid Build Coastguard Worker        end
1333*35238bceSAndroid Build Coastguard Worker
1334*35238bceSAndroid Build Coastguard Worker        case uvec3
1335*35238bceSAndroid Build Coastguard Worker            version 300 es
1336*35238bceSAndroid Build Coastguard Worker            desc "varying of type uvec3"
1337*35238bceSAndroid Build Coastguard Worker            values
1338*35238bceSAndroid Build Coastguard Worker            {
1339*35238bceSAndroid Build Coastguard Worker                input uvec3 in0 = [ uvec3(1, 1, 2) | uvec3(25, 25, 3) | uvec3(1, 1, 1) | uvec3(2, 3, 4) | uvec3(16, 17, 18) ];
1340*35238bceSAndroid Build Coastguard Worker                output uvec3 out0 = [ uvec3(1, 1, 2) | uvec3(25, 25, 3) | uvec3(1, 1, 1) | uvec3(2, 3, 4) | uvec3(16, 17, 18) ];
1341*35238bceSAndroid Build Coastguard Worker            }
1342*35238bceSAndroid Build Coastguard Worker            vertex ""
1343*35238bceSAndroid Build Coastguard Worker                #version 300 es
1344*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
1345*35238bceSAndroid Build Coastguard Worker                flat out mediump uvec3 var;
1346*35238bceSAndroid Build Coastguard Worker                void main()
1347*35238bceSAndroid Build Coastguard Worker                {
1348*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_SETUP}
1349*35238bceSAndroid Build Coastguard Worker                    var = in0;
1350*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
1351*35238bceSAndroid Build Coastguard Worker                }
1352*35238bceSAndroid Build Coastguard Worker            ""
1353*35238bceSAndroid Build Coastguard Worker            fragment ""
1354*35238bceSAndroid Build Coastguard Worker                #version 300 es
1355*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
1356*35238bceSAndroid Build Coastguard Worker                flat in uvec3 var;
1357*35238bceSAndroid Build Coastguard Worker                void main()
1358*35238bceSAndroid Build Coastguard Worker                {
1359*35238bceSAndroid Build Coastguard Worker                    out0 = var;
1360*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
1361*35238bceSAndroid Build Coastguard Worker                }
1362*35238bceSAndroid Build Coastguard Worker            ""
1363*35238bceSAndroid Build Coastguard Worker        end
1364*35238bceSAndroid Build Coastguard Worker
1365*35238bceSAndroid Build Coastguard Worker        case uvec4
1366*35238bceSAndroid Build Coastguard Worker            version 300 es
1367*35238bceSAndroid Build Coastguard Worker            desc "varying of type uvec4"
1368*35238bceSAndroid Build Coastguard Worker            values
1369*35238bceSAndroid Build Coastguard Worker            {
1370*35238bceSAndroid Build Coastguard Worker                input uvec4 in0 = [ uvec4(1, 1, 2, 2) | uvec4(25, 25, 3, 3) | uvec4(1, 1, 1, 1) | uvec4(2, 3, 4, 5) | uvec4(16, 17, 18, 19) ];
1371*35238bceSAndroid Build Coastguard Worker                output uvec4 out0 = [ uvec4(1, 1, 2, 2) | uvec4(25, 25, 3, 3) | uvec4(1, 1, 1, 1) | uvec4(2, 3, 4, 5) | uvec4(16, 17, 18, 19) ];
1372*35238bceSAndroid Build Coastguard Worker            }
1373*35238bceSAndroid Build Coastguard Worker            vertex ""
1374*35238bceSAndroid Build Coastguard Worker                #version 300 es
1375*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
1376*35238bceSAndroid Build Coastguard Worker                flat out mediump uvec4 var;
1377*35238bceSAndroid Build Coastguard Worker                void main()
1378*35238bceSAndroid Build Coastguard Worker                {
1379*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_SETUP}
1380*35238bceSAndroid Build Coastguard Worker                    var = in0;
1381*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
1382*35238bceSAndroid Build Coastguard Worker                }
1383*35238bceSAndroid Build Coastguard Worker            ""
1384*35238bceSAndroid Build Coastguard Worker            fragment ""
1385*35238bceSAndroid Build Coastguard Worker                #version 300 es
1386*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
1387*35238bceSAndroid Build Coastguard Worker                flat in uvec4 var;
1388*35238bceSAndroid Build Coastguard Worker                void main()
1389*35238bceSAndroid Build Coastguard Worker                {
1390*35238bceSAndroid Build Coastguard Worker                    out0 = var;
1391*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
1392*35238bceSAndroid Build Coastguard Worker                }
1393*35238bceSAndroid Build Coastguard Worker            ""
1394*35238bceSAndroid Build Coastguard Worker        end
1395*35238bceSAndroid Build Coastguard Worker    end
1396*35238bceSAndroid Build Coastguard Worker
1397*35238bceSAndroid Build Coastguard Worker    group struct "Structure varyings"
1398*35238bceSAndroid Build Coastguard Worker        case float
1399*35238bceSAndroid Build Coastguard Worker            version 300 es
1400*35238bceSAndroid Build Coastguard Worker            desc "varying of type float inside struct"
1401*35238bceSAndroid Build Coastguard Worker            values
1402*35238bceSAndroid Build Coastguard Worker            {
1403*35238bceSAndroid Build Coastguard Worker                input float in0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ];
1404*35238bceSAndroid Build Coastguard Worker                output float out0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ];
1405*35238bceSAndroid Build Coastguard Worker            }
1406*35238bceSAndroid Build Coastguard Worker            vertex ""
1407*35238bceSAndroid Build Coastguard Worker                #version 300 es
1408*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
1409*35238bceSAndroid Build Coastguard Worker                struct S { mediump float a; };
1410*35238bceSAndroid Build Coastguard Worker                out S var;
1411*35238bceSAndroid Build Coastguard Worker                void main()
1412*35238bceSAndroid Build Coastguard Worker                {
1413*35238bceSAndroid Build Coastguard Worker                    var.a = in0;
1414*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
1415*35238bceSAndroid Build Coastguard Worker                }
1416*35238bceSAndroid Build Coastguard Worker            ""
1417*35238bceSAndroid Build Coastguard Worker            fragment ""
1418*35238bceSAndroid Build Coastguard Worker                #version 300 es
1419*35238bceSAndroid Build Coastguard Worker                precision mediump float;
1420*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
1421*35238bceSAndroid Build Coastguard Worker                struct S { mediump float a; };
1422*35238bceSAndroid Build Coastguard Worker                in S var;
1423*35238bceSAndroid Build Coastguard Worker                void main()
1424*35238bceSAndroid Build Coastguard Worker                {
1425*35238bceSAndroid Build Coastguard Worker                    out0 = var.a;
1426*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
1427*35238bceSAndroid Build Coastguard Worker                }
1428*35238bceSAndroid Build Coastguard Worker            ""
1429*35238bceSAndroid Build Coastguard Worker        end
1430*35238bceSAndroid Build Coastguard Worker
1431*35238bceSAndroid Build Coastguard Worker        case vec2
1432*35238bceSAndroid Build Coastguard Worker            version 300 es
1433*35238bceSAndroid Build Coastguard Worker            desc "varying of type vec2 inside struct"
1434*35238bceSAndroid Build Coastguard Worker            values
1435*35238bceSAndroid Build Coastguard Worker            {
1436*35238bceSAndroid Build Coastguard Worker                input vec2 in0 = [ vec2(-1.25, 1.25) | vec2(-25.65, -7.25) | vec2(0.0, 1.0) | vec2(2.25, 2.25) | vec2(3.4, 9.5) | vec2(16.0, 32.0) ];
1437*35238bceSAndroid Build Coastguard Worker                output vec2 out0 = [ vec2(-1.25, 1.25) | vec2(-25.65, -7.25) | vec2(0.0, 1.0) | vec2(2.25, 2.25) | vec2(3.4, 9.5) | vec2(16.0, 32.0) ];
1438*35238bceSAndroid Build Coastguard Worker            }
1439*35238bceSAndroid Build Coastguard Worker            vertex ""
1440*35238bceSAndroid Build Coastguard Worker                #version 300 es
1441*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
1442*35238bceSAndroid Build Coastguard Worker                struct S { mediump vec2 a; };
1443*35238bceSAndroid Build Coastguard Worker                out S var;
1444*35238bceSAndroid Build Coastguard Worker                void main()
1445*35238bceSAndroid Build Coastguard Worker                {
1446*35238bceSAndroid Build Coastguard Worker                    var.a = in0;
1447*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
1448*35238bceSAndroid Build Coastguard Worker                }
1449*35238bceSAndroid Build Coastguard Worker            ""
1450*35238bceSAndroid Build Coastguard Worker            fragment ""
1451*35238bceSAndroid Build Coastguard Worker                #version 300 es
1452*35238bceSAndroid Build Coastguard Worker                precision mediump float;
1453*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
1454*35238bceSAndroid Build Coastguard Worker                struct S { mediump vec2 a; };
1455*35238bceSAndroid Build Coastguard Worker                in S var;
1456*35238bceSAndroid Build Coastguard Worker                void main()
1457*35238bceSAndroid Build Coastguard Worker                {
1458*35238bceSAndroid Build Coastguard Worker                    out0 = var.a;
1459*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
1460*35238bceSAndroid Build Coastguard Worker                }
1461*35238bceSAndroid Build Coastguard Worker            ""
1462*35238bceSAndroid Build Coastguard Worker        end
1463*35238bceSAndroid Build Coastguard Worker
1464*35238bceSAndroid Build Coastguard Worker        case vec3
1465*35238bceSAndroid Build Coastguard Worker            version 300 es
1466*35238bceSAndroid Build Coastguard Worker            desc "varying of type vec3 inside struct"
1467*35238bceSAndroid Build Coastguard Worker            values
1468*35238bceSAndroid Build Coastguard Worker            {
1469*35238bceSAndroid Build Coastguard Worker                input vec3 in0 = [ vec3(-1.25, 1.25, -9.5) | vec3(-25.65, -7.25, 14.21) | vec3(0.0, 1.0, -1.0) | vec3(2.25, 2.25, 22.5) | vec3(3.4, 9.5, 19.5) | vec3(16.0, 32.0, -64.0) ];
1470*35238bceSAndroid Build Coastguard Worker                output vec3 out0 = [ vec3(-1.25, 1.25, -9.5) | vec3(-25.65, -7.25, 14.21) | vec3(0.0, 1.0, -1.0) | vec3(2.25, 2.25, 22.5) | vec3(3.4, 9.5, 19.5) | vec3(16.0, 32.0, -64.0) ];
1471*35238bceSAndroid Build Coastguard Worker            }
1472*35238bceSAndroid Build Coastguard Worker            vertex ""
1473*35238bceSAndroid Build Coastguard Worker                #version 300 es
1474*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
1475*35238bceSAndroid Build Coastguard Worker                struct S { mediump vec3 a; };
1476*35238bceSAndroid Build Coastguard Worker                out S var;
1477*35238bceSAndroid Build Coastguard Worker                void main()
1478*35238bceSAndroid Build Coastguard Worker                {
1479*35238bceSAndroid Build Coastguard Worker                    var.a = in0;
1480*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
1481*35238bceSAndroid Build Coastguard Worker                }
1482*35238bceSAndroid Build Coastguard Worker            ""
1483*35238bceSAndroid Build Coastguard Worker            fragment ""
1484*35238bceSAndroid Build Coastguard Worker                #version 300 es
1485*35238bceSAndroid Build Coastguard Worker                precision mediump float;
1486*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
1487*35238bceSAndroid Build Coastguard Worker                struct S { mediump vec3 a; };
1488*35238bceSAndroid Build Coastguard Worker                in S var;
1489*35238bceSAndroid Build Coastguard Worker                void main()
1490*35238bceSAndroid Build Coastguard Worker                {
1491*35238bceSAndroid Build Coastguard Worker                    out0 = var.a;
1492*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
1493*35238bceSAndroid Build Coastguard Worker                }
1494*35238bceSAndroid Build Coastguard Worker            ""
1495*35238bceSAndroid Build Coastguard Worker        end
1496*35238bceSAndroid Build Coastguard Worker
1497*35238bceSAndroid Build Coastguard Worker        case vec4
1498*35238bceSAndroid Build Coastguard Worker            version 300 es
1499*35238bceSAndroid Build Coastguard Worker            desc "varying of type vec4 inside struct"
1500*35238bceSAndroid Build Coastguard Worker            values
1501*35238bceSAndroid Build Coastguard Worker            {
1502*35238bceSAndroid Build Coastguard Worker                input vec4 in0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ];
1503*35238bceSAndroid Build Coastguard Worker                output vec4 out0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ];
1504*35238bceSAndroid Build Coastguard Worker            }
1505*35238bceSAndroid Build Coastguard Worker            vertex ""
1506*35238bceSAndroid Build Coastguard Worker                #version 300 es
1507*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
1508*35238bceSAndroid Build Coastguard Worker                struct S { mediump vec4 a; };
1509*35238bceSAndroid Build Coastguard Worker                out S var;
1510*35238bceSAndroid Build Coastguard Worker                void main()
1511*35238bceSAndroid Build Coastguard Worker                {
1512*35238bceSAndroid Build Coastguard Worker                    var.a = in0;
1513*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
1514*35238bceSAndroid Build Coastguard Worker                }
1515*35238bceSAndroid Build Coastguard Worker            ""
1516*35238bceSAndroid Build Coastguard Worker            fragment ""
1517*35238bceSAndroid Build Coastguard Worker                #version 300 es
1518*35238bceSAndroid Build Coastguard Worker                precision mediump float;
1519*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
1520*35238bceSAndroid Build Coastguard Worker                struct S { mediump vec4 a; };
1521*35238bceSAndroid Build Coastguard Worker                in S var;
1522*35238bceSAndroid Build Coastguard Worker                void main()
1523*35238bceSAndroid Build Coastguard Worker                {
1524*35238bceSAndroid Build Coastguard Worker                    out0 = var.a;
1525*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
1526*35238bceSAndroid Build Coastguard Worker                }
1527*35238bceSAndroid Build Coastguard Worker            ""
1528*35238bceSAndroid Build Coastguard Worker        end
1529*35238bceSAndroid Build Coastguard Worker
1530*35238bceSAndroid Build Coastguard Worker        case mat2
1531*35238bceSAndroid Build Coastguard Worker            version 300 es
1532*35238bceSAndroid Build Coastguard Worker            desc "varying of type mat2 inside struct"
1533*35238bceSAndroid Build Coastguard Worker            values
1534*35238bceSAndroid Build Coastguard Worker            {
1535*35238bceSAndroid Build Coastguard Worker                input mat2 in0 = [ mat2(1.0, 1.0, 1.0, 1.0) | mat2(-1.25, 1.25, -9.5, -12.2) | mat2(-25.65, -7.25, 14.21, -77.7) | mat2(0.0, 1.0, -1.0, 2.0) | mat2(2.25, 2.25, 22.5, 225.0) | mat2(3.4, 9.5, 19.5, 29.5) | mat2(16.0, 32.0, -64.0, -128.0) ];
1536*35238bceSAndroid Build Coastguard Worker                output mat2 out0 = [ mat2(1.0, 1.0, 1.0, 1.0) | mat2(-1.25, 1.25, -9.5, -12.2) | mat2(-25.65, -7.25, 14.21, -77.7) | mat2(0.0, 1.0, -1.0, 2.0) | mat2(2.25, 2.25, 22.5, 225.0) | mat2(3.4, 9.5, 19.5, 29.5) | mat2(16.0, 32.0, -64.0, -128.0) ];
1537*35238bceSAndroid Build Coastguard Worker            }
1538*35238bceSAndroid Build Coastguard Worker            vertex ""
1539*35238bceSAndroid Build Coastguard Worker                #version 300 es
1540*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
1541*35238bceSAndroid Build Coastguard Worker                struct S { mediump mat2 a; };
1542*35238bceSAndroid Build Coastguard Worker                out S var;
1543*35238bceSAndroid Build Coastguard Worker                void main()
1544*35238bceSAndroid Build Coastguard Worker                {
1545*35238bceSAndroid Build Coastguard Worker                    var.a = in0;
1546*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
1547*35238bceSAndroid Build Coastguard Worker                }
1548*35238bceSAndroid Build Coastguard Worker            ""
1549*35238bceSAndroid Build Coastguard Worker            fragment ""
1550*35238bceSAndroid Build Coastguard Worker                #version 300 es
1551*35238bceSAndroid Build Coastguard Worker                precision mediump float;
1552*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
1553*35238bceSAndroid Build Coastguard Worker                struct S { mediump mat2 a; };
1554*35238bceSAndroid Build Coastguard Worker                in S var;
1555*35238bceSAndroid Build Coastguard Worker                void main()
1556*35238bceSAndroid Build Coastguard Worker                {
1557*35238bceSAndroid Build Coastguard Worker                    out0 = var.a;
1558*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
1559*35238bceSAndroid Build Coastguard Worker                }
1560*35238bceSAndroid Build Coastguard Worker            ""
1561*35238bceSAndroid Build Coastguard Worker        end
1562*35238bceSAndroid Build Coastguard Worker
1563*35238bceSAndroid Build Coastguard Worker        case mat2x3
1564*35238bceSAndroid Build Coastguard Worker            version 300 es
1565*35238bceSAndroid Build Coastguard Worker            desc "varying of type mat2x3 inside struct"
1566*35238bceSAndroid Build Coastguard Worker            values
1567*35238bceSAndroid Build Coastguard Worker            {
1568*35238bceSAndroid Build Coastguard Worker                input mat2x3 in0 = [ mat2x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ];
1569*35238bceSAndroid Build Coastguard Worker                output mat2x3 out0 = [ mat2x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ];
1570*35238bceSAndroid Build Coastguard Worker            }
1571*35238bceSAndroid Build Coastguard Worker            vertex ""
1572*35238bceSAndroid Build Coastguard Worker                #version 300 es
1573*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
1574*35238bceSAndroid Build Coastguard Worker                struct S { mediump mat2x3 a; };
1575*35238bceSAndroid Build Coastguard Worker                out S var;
1576*35238bceSAndroid Build Coastguard Worker                void main()
1577*35238bceSAndroid Build Coastguard Worker                {
1578*35238bceSAndroid Build Coastguard Worker                    var.a = in0;
1579*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
1580*35238bceSAndroid Build Coastguard Worker                }
1581*35238bceSAndroid Build Coastguard Worker            ""
1582*35238bceSAndroid Build Coastguard Worker            fragment ""
1583*35238bceSAndroid Build Coastguard Worker                #version 300 es
1584*35238bceSAndroid Build Coastguard Worker                precision mediump float;
1585*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
1586*35238bceSAndroid Build Coastguard Worker                struct S { mediump mat2x3 a; };
1587*35238bceSAndroid Build Coastguard Worker                in S var;
1588*35238bceSAndroid Build Coastguard Worker                void main()
1589*35238bceSAndroid Build Coastguard Worker                {
1590*35238bceSAndroid Build Coastguard Worker                    out0 = var.a;
1591*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
1592*35238bceSAndroid Build Coastguard Worker                }
1593*35238bceSAndroid Build Coastguard Worker            ""
1594*35238bceSAndroid Build Coastguard Worker        end
1595*35238bceSAndroid Build Coastguard Worker
1596*35238bceSAndroid Build Coastguard Worker        case mat2x4
1597*35238bceSAndroid Build Coastguard Worker            version 300 es
1598*35238bceSAndroid Build Coastguard Worker            desc "varying of type mat2x4 inside struct"
1599*35238bceSAndroid Build Coastguard Worker            values
1600*35238bceSAndroid Build Coastguard Worker            {
1601*35238bceSAndroid Build Coastguard Worker                input mat2x4 in0 = [ mat2x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ];
1602*35238bceSAndroid Build Coastguard Worker                output mat2x4 out0 = [ mat2x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ];
1603*35238bceSAndroid Build Coastguard Worker            }
1604*35238bceSAndroid Build Coastguard Worker            vertex ""
1605*35238bceSAndroid Build Coastguard Worker                #version 300 es
1606*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
1607*35238bceSAndroid Build Coastguard Worker                struct S { mediump mat2x4 a; };
1608*35238bceSAndroid Build Coastguard Worker                out S var;
1609*35238bceSAndroid Build Coastguard Worker                void main()
1610*35238bceSAndroid Build Coastguard Worker                {
1611*35238bceSAndroid Build Coastguard Worker                    var.a = in0;
1612*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
1613*35238bceSAndroid Build Coastguard Worker                }
1614*35238bceSAndroid Build Coastguard Worker            ""
1615*35238bceSAndroid Build Coastguard Worker            fragment ""
1616*35238bceSAndroid Build Coastguard Worker                #version 300 es
1617*35238bceSAndroid Build Coastguard Worker                precision mediump float;
1618*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
1619*35238bceSAndroid Build Coastguard Worker                struct S { mediump mat2x4 a; };
1620*35238bceSAndroid Build Coastguard Worker                in S var;
1621*35238bceSAndroid Build Coastguard Worker                void main()
1622*35238bceSAndroid Build Coastguard Worker                {
1623*35238bceSAndroid Build Coastguard Worker                    out0 = var.a;
1624*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
1625*35238bceSAndroid Build Coastguard Worker                }
1626*35238bceSAndroid Build Coastguard Worker            ""
1627*35238bceSAndroid Build Coastguard Worker        end
1628*35238bceSAndroid Build Coastguard Worker
1629*35238bceSAndroid Build Coastguard Worker        case mat3x2
1630*35238bceSAndroid Build Coastguard Worker            version 300 es
1631*35238bceSAndroid Build Coastguard Worker            desc "varying of type mat3x2 inside struct"
1632*35238bceSAndroid Build Coastguard Worker            values
1633*35238bceSAndroid Build Coastguard Worker            {
1634*35238bceSAndroid Build Coastguard Worker                input mat3x2 in0 = [ mat3x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ];
1635*35238bceSAndroid Build Coastguard Worker                output mat3x2 out0 = [ mat3x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ];
1636*35238bceSAndroid Build Coastguard Worker            }
1637*35238bceSAndroid Build Coastguard Worker            vertex ""
1638*35238bceSAndroid Build Coastguard Worker                #version 300 es
1639*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
1640*35238bceSAndroid Build Coastguard Worker                struct S { mediump mat3x2 a; };
1641*35238bceSAndroid Build Coastguard Worker                out S var;
1642*35238bceSAndroid Build Coastguard Worker                void main()
1643*35238bceSAndroid Build Coastguard Worker                {
1644*35238bceSAndroid Build Coastguard Worker                    var.a = in0;
1645*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
1646*35238bceSAndroid Build Coastguard Worker                }
1647*35238bceSAndroid Build Coastguard Worker            ""
1648*35238bceSAndroid Build Coastguard Worker            fragment ""
1649*35238bceSAndroid Build Coastguard Worker                #version 300 es
1650*35238bceSAndroid Build Coastguard Worker                precision mediump float;
1651*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
1652*35238bceSAndroid Build Coastguard Worker                struct S { mediump mat3x2 a; };
1653*35238bceSAndroid Build Coastguard Worker                in S var;
1654*35238bceSAndroid Build Coastguard Worker                void main()
1655*35238bceSAndroid Build Coastguard Worker                {
1656*35238bceSAndroid Build Coastguard Worker                    out0 = var.a;
1657*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
1658*35238bceSAndroid Build Coastguard Worker                }
1659*35238bceSAndroid Build Coastguard Worker            ""
1660*35238bceSAndroid Build Coastguard Worker        end
1661*35238bceSAndroid Build Coastguard Worker
1662*35238bceSAndroid Build Coastguard Worker        case mat3
1663*35238bceSAndroid Build Coastguard Worker            version 300 es
1664*35238bceSAndroid Build Coastguard Worker            desc "varying of type mat3 inside struct"
1665*35238bceSAndroid Build Coastguard Worker            values
1666*35238bceSAndroid Build Coastguard Worker            {
1667*35238bceSAndroid Build Coastguard Worker                input mat3 in0 = [ mat3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 9.9) | mat3(0.0, 1.0, -1.0, 2.0, 2.25, 2.25, 22.5, 225.0, -9.9) | mat3(3.4, 9.5, 19.5, 29.5, 16.0, 32.0, -64.0, -128.0, 256.0) ];
1668*35238bceSAndroid Build Coastguard Worker                output mat3 out0 = [ mat3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 9.9) | mat3(0.0, 1.0, -1.0, 2.0, 2.25, 2.25, 22.5, 225.0, -9.9) | mat3(3.4, 9.5, 19.5, 29.5, 16.0, 32.0, -64.0, -128.0, 256.0) ];
1669*35238bceSAndroid Build Coastguard Worker            }
1670*35238bceSAndroid Build Coastguard Worker            vertex ""
1671*35238bceSAndroid Build Coastguard Worker                #version 300 es
1672*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
1673*35238bceSAndroid Build Coastguard Worker                struct S { mediump mat3 a; };
1674*35238bceSAndroid Build Coastguard Worker                out S var;
1675*35238bceSAndroid Build Coastguard Worker                void main()
1676*35238bceSAndroid Build Coastguard Worker                {
1677*35238bceSAndroid Build Coastguard Worker                    var.a = in0;
1678*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
1679*35238bceSAndroid Build Coastguard Worker                }
1680*35238bceSAndroid Build Coastguard Worker            ""
1681*35238bceSAndroid Build Coastguard Worker            fragment ""
1682*35238bceSAndroid Build Coastguard Worker                #version 300 es
1683*35238bceSAndroid Build Coastguard Worker                precision mediump float;
1684*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
1685*35238bceSAndroid Build Coastguard Worker                struct S { mediump mat3 a; };
1686*35238bceSAndroid Build Coastguard Worker                in S var;
1687*35238bceSAndroid Build Coastguard Worker                void main()
1688*35238bceSAndroid Build Coastguard Worker                {
1689*35238bceSAndroid Build Coastguard Worker                    out0 = var.a;
1690*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
1691*35238bceSAndroid Build Coastguard Worker                }
1692*35238bceSAndroid Build Coastguard Worker            ""
1693*35238bceSAndroid Build Coastguard Worker        end
1694*35238bceSAndroid Build Coastguard Worker
1695*35238bceSAndroid Build Coastguard Worker        case mat3x4
1696*35238bceSAndroid Build Coastguard Worker            version 300 es
1697*35238bceSAndroid Build Coastguard Worker            desc "varying of type mat3x4 inside struct"
1698*35238bceSAndroid Build Coastguard Worker            values
1699*35238bceSAndroid Build Coastguard Worker            {
1700*35238bceSAndroid Build Coastguard Worker                input mat3x4 in0 = [ mat3x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0) ];
1701*35238bceSAndroid Build Coastguard Worker                output mat3x4 out0 = [ mat3x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0) ];
1702*35238bceSAndroid Build Coastguard Worker            }
1703*35238bceSAndroid Build Coastguard Worker            vertex ""
1704*35238bceSAndroid Build Coastguard Worker                #version 300 es
1705*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
1706*35238bceSAndroid Build Coastguard Worker                struct S { mediump mat3x4 a; };
1707*35238bceSAndroid Build Coastguard Worker                out S var;
1708*35238bceSAndroid Build Coastguard Worker                void main()
1709*35238bceSAndroid Build Coastguard Worker                {
1710*35238bceSAndroid Build Coastguard Worker                    var.a = in0;
1711*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
1712*35238bceSAndroid Build Coastguard Worker                }
1713*35238bceSAndroid Build Coastguard Worker            ""
1714*35238bceSAndroid Build Coastguard Worker            fragment ""
1715*35238bceSAndroid Build Coastguard Worker                #version 300 es
1716*35238bceSAndroid Build Coastguard Worker                precision mediump float;
1717*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
1718*35238bceSAndroid Build Coastguard Worker                struct S { mediump mat3x4 a; };
1719*35238bceSAndroid Build Coastguard Worker                in S var;
1720*35238bceSAndroid Build Coastguard Worker                void main()
1721*35238bceSAndroid Build Coastguard Worker                {
1722*35238bceSAndroid Build Coastguard Worker                    out0 = var.a;
1723*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
1724*35238bceSAndroid Build Coastguard Worker                }
1725*35238bceSAndroid Build Coastguard Worker            ""
1726*35238bceSAndroid Build Coastguard Worker        end
1727*35238bceSAndroid Build Coastguard Worker
1728*35238bceSAndroid Build Coastguard Worker        case mat4x2
1729*35238bceSAndroid Build Coastguard Worker            version 300 es
1730*35238bceSAndroid Build Coastguard Worker            desc "varying of type mat4x2 inside struct"
1731*35238bceSAndroid Build Coastguard Worker            values
1732*35238bceSAndroid Build Coastguard Worker            {
1733*35238bceSAndroid Build Coastguard Worker                input mat4x2 in0 = [ mat4x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ];
1734*35238bceSAndroid Build Coastguard Worker                output mat4x2 out0 = [ mat4x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ];
1735*35238bceSAndroid Build Coastguard Worker            }
1736*35238bceSAndroid Build Coastguard Worker            vertex ""
1737*35238bceSAndroid Build Coastguard Worker                #version 300 es
1738*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
1739*35238bceSAndroid Build Coastguard Worker                struct S { mediump mat4x2 a; };
1740*35238bceSAndroid Build Coastguard Worker                out S var;
1741*35238bceSAndroid Build Coastguard Worker                void main()
1742*35238bceSAndroid Build Coastguard Worker                {
1743*35238bceSAndroid Build Coastguard Worker                    var.a = in0;
1744*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
1745*35238bceSAndroid Build Coastguard Worker                }
1746*35238bceSAndroid Build Coastguard Worker            ""
1747*35238bceSAndroid Build Coastguard Worker            fragment ""
1748*35238bceSAndroid Build Coastguard Worker                #version 300 es
1749*35238bceSAndroid Build Coastguard Worker                precision mediump float;
1750*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
1751*35238bceSAndroid Build Coastguard Worker                struct S { mediump mat4x2 a; };
1752*35238bceSAndroid Build Coastguard Worker                in S var;
1753*35238bceSAndroid Build Coastguard Worker                void main()
1754*35238bceSAndroid Build Coastguard Worker                {
1755*35238bceSAndroid Build Coastguard Worker                    out0 = var.a;
1756*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
1757*35238bceSAndroid Build Coastguard Worker                }
1758*35238bceSAndroid Build Coastguard Worker            ""
1759*35238bceSAndroid Build Coastguard Worker        end
1760*35238bceSAndroid Build Coastguard Worker
1761*35238bceSAndroid Build Coastguard Worker        case mat4x3
1762*35238bceSAndroid Build Coastguard Worker            version 300 es
1763*35238bceSAndroid Build Coastguard Worker            desc "varying of type mat4x3 inside struct"
1764*35238bceSAndroid Build Coastguard Worker            values
1765*35238bceSAndroid Build Coastguard Worker            {
1766*35238bceSAndroid Build Coastguard Worker                input mat4x3 in0 = [ mat4x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0) ];
1767*35238bceSAndroid Build Coastguard Worker                output mat4x3 out0 = [ mat4x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0) ];
1768*35238bceSAndroid Build Coastguard Worker            }
1769*35238bceSAndroid Build Coastguard Worker            vertex ""
1770*35238bceSAndroid Build Coastguard Worker                #version 300 es
1771*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
1772*35238bceSAndroid Build Coastguard Worker                struct S { mediump mat4x3 a; };
1773*35238bceSAndroid Build Coastguard Worker                out S var;
1774*35238bceSAndroid Build Coastguard Worker                void main()
1775*35238bceSAndroid Build Coastguard Worker                {
1776*35238bceSAndroid Build Coastguard Worker                    var.a = in0;
1777*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
1778*35238bceSAndroid Build Coastguard Worker                }
1779*35238bceSAndroid Build Coastguard Worker            ""
1780*35238bceSAndroid Build Coastguard Worker            fragment ""
1781*35238bceSAndroid Build Coastguard Worker                #version 300 es
1782*35238bceSAndroid Build Coastguard Worker                precision mediump float;
1783*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
1784*35238bceSAndroid Build Coastguard Worker                struct S { mediump mat4x3 a; };
1785*35238bceSAndroid Build Coastguard Worker                in S var;
1786*35238bceSAndroid Build Coastguard Worker                void main()
1787*35238bceSAndroid Build Coastguard Worker                {
1788*35238bceSAndroid Build Coastguard Worker                    out0 = var.a;
1789*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
1790*35238bceSAndroid Build Coastguard Worker                }
1791*35238bceSAndroid Build Coastguard Worker            ""
1792*35238bceSAndroid Build Coastguard Worker        end
1793*35238bceSAndroid Build Coastguard Worker
1794*35238bceSAndroid Build Coastguard Worker        case mat4
1795*35238bceSAndroid Build Coastguard Worker            version 300 es
1796*35238bceSAndroid Build Coastguard Worker            desc "varying of type mat4 inside struct"
1797*35238bceSAndroid Build Coastguard Worker            values
1798*35238bceSAndroid Build Coastguard Worker            {
1799*35238bceSAndroid Build Coastguard Worker                input mat4 in0 = [ mat4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0, 2.25, 2.25, 22.5, 225.0) ];
1800*35238bceSAndroid Build Coastguard Worker                output mat4 out0 = [ mat4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0, 2.25, 2.25, 22.5, 225.0) ];
1801*35238bceSAndroid Build Coastguard Worker            }
1802*35238bceSAndroid Build Coastguard Worker            vertex ""
1803*35238bceSAndroid Build Coastguard Worker                #version 300 es
1804*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
1805*35238bceSAndroid Build Coastguard Worker                struct S { mediump mat4 a; };
1806*35238bceSAndroid Build Coastguard Worker                out S var;
1807*35238bceSAndroid Build Coastguard Worker                void main()
1808*35238bceSAndroid Build Coastguard Worker                {
1809*35238bceSAndroid Build Coastguard Worker                    var.a = in0;
1810*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
1811*35238bceSAndroid Build Coastguard Worker                }
1812*35238bceSAndroid Build Coastguard Worker            ""
1813*35238bceSAndroid Build Coastguard Worker            fragment ""
1814*35238bceSAndroid Build Coastguard Worker                #version 300 es
1815*35238bceSAndroid Build Coastguard Worker                precision mediump float;
1816*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
1817*35238bceSAndroid Build Coastguard Worker                struct S { mediump mat4 a; };
1818*35238bceSAndroid Build Coastguard Worker                in S var;
1819*35238bceSAndroid Build Coastguard Worker                void main()
1820*35238bceSAndroid Build Coastguard Worker                {
1821*35238bceSAndroid Build Coastguard Worker                    out0 = var.a;
1822*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
1823*35238bceSAndroid Build Coastguard Worker                }
1824*35238bceSAndroid Build Coastguard Worker            ""
1825*35238bceSAndroid Build Coastguard Worker        end
1826*35238bceSAndroid Build Coastguard Worker
1827*35238bceSAndroid Build Coastguard Worker        case int
1828*35238bceSAndroid Build Coastguard Worker            version 300 es
1829*35238bceSAndroid Build Coastguard Worker            desc "varying of type int inside struct"
1830*35238bceSAndroid Build Coastguard Worker            values
1831*35238bceSAndroid Build Coastguard Worker            {
1832*35238bceSAndroid Build Coastguard Worker                input int in0 = [ -1 | -25 | 1 | 2 | 3 | 16 ];
1833*35238bceSAndroid Build Coastguard Worker                output int out0 = [ -1 | -25 | 1 | 2 | 3 | 16 ];
1834*35238bceSAndroid Build Coastguard Worker            }
1835*35238bceSAndroid Build Coastguard Worker            vertex ""
1836*35238bceSAndroid Build Coastguard Worker                #version 300 es
1837*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
1838*35238bceSAndroid Build Coastguard Worker                struct S { mediump int a; };
1839*35238bceSAndroid Build Coastguard Worker                flat out S var;
1840*35238bceSAndroid Build Coastguard Worker                void main()
1841*35238bceSAndroid Build Coastguard Worker                {
1842*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_SETUP}
1843*35238bceSAndroid Build Coastguard Worker                    var.a = in0;
1844*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
1845*35238bceSAndroid Build Coastguard Worker                }
1846*35238bceSAndroid Build Coastguard Worker            ""
1847*35238bceSAndroid Build Coastguard Worker            fragment ""
1848*35238bceSAndroid Build Coastguard Worker                #version 300 es
1849*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
1850*35238bceSAndroid Build Coastguard Worker                struct S { mediump int a; };
1851*35238bceSAndroid Build Coastguard Worker                flat in S var;
1852*35238bceSAndroid Build Coastguard Worker                void main()
1853*35238bceSAndroid Build Coastguard Worker                {
1854*35238bceSAndroid Build Coastguard Worker                    out0 = var.a;
1855*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
1856*35238bceSAndroid Build Coastguard Worker                }
1857*35238bceSAndroid Build Coastguard Worker            ""
1858*35238bceSAndroid Build Coastguard Worker        end
1859*35238bceSAndroid Build Coastguard Worker
1860*35238bceSAndroid Build Coastguard Worker        case ivec2
1861*35238bceSAndroid Build Coastguard Worker            version 300 es
1862*35238bceSAndroid Build Coastguard Worker            desc "varying of type ivec2 inside struct"
1863*35238bceSAndroid Build Coastguard Worker            values
1864*35238bceSAndroid Build Coastguard Worker            {
1865*35238bceSAndroid Build Coastguard Worker                input ivec2 in0 = [ ivec2(-1, 1) | ivec2(-25, 25) | ivec2(1, 1) | ivec2(2, 3) | ivec2(16, 17) ];
1866*35238bceSAndroid Build Coastguard Worker                output ivec2 out0 = [ ivec2(-1, 1) | ivec2(-25, 25) | ivec2(1, 1) | ivec2(2, 3) | ivec2(16, 17) ];
1867*35238bceSAndroid Build Coastguard Worker            }
1868*35238bceSAndroid Build Coastguard Worker            vertex ""
1869*35238bceSAndroid Build Coastguard Worker                #version 300 es
1870*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
1871*35238bceSAndroid Build Coastguard Worker                struct S { mediump ivec2 a; };
1872*35238bceSAndroid Build Coastguard Worker                flat out S var;
1873*35238bceSAndroid Build Coastguard Worker                void main()
1874*35238bceSAndroid Build Coastguard Worker                {
1875*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_SETUP}
1876*35238bceSAndroid Build Coastguard Worker                    var.a = in0;
1877*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
1878*35238bceSAndroid Build Coastguard Worker                }
1879*35238bceSAndroid Build Coastguard Worker            ""
1880*35238bceSAndroid Build Coastguard Worker            fragment ""
1881*35238bceSAndroid Build Coastguard Worker                #version 300 es
1882*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
1883*35238bceSAndroid Build Coastguard Worker                struct S { mediump ivec2 a; };
1884*35238bceSAndroid Build Coastguard Worker                flat in S var;
1885*35238bceSAndroid Build Coastguard Worker                void main()
1886*35238bceSAndroid Build Coastguard Worker                {
1887*35238bceSAndroid Build Coastguard Worker                    out0 = var.a;
1888*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
1889*35238bceSAndroid Build Coastguard Worker                }
1890*35238bceSAndroid Build Coastguard Worker            ""
1891*35238bceSAndroid Build Coastguard Worker        end
1892*35238bceSAndroid Build Coastguard Worker
1893*35238bceSAndroid Build Coastguard Worker        case ivec3
1894*35238bceSAndroid Build Coastguard Worker            version 300 es
1895*35238bceSAndroid Build Coastguard Worker            desc "varying of type ivec3 inside struct"
1896*35238bceSAndroid Build Coastguard Worker            values
1897*35238bceSAndroid Build Coastguard Worker            {
1898*35238bceSAndroid Build Coastguard Worker                input ivec3 in0 = [ ivec3(-1, 1, -2) | ivec3(-25, 25, -3) | ivec3(1, 1, 1) | ivec3(2, 3, 4) | ivec3(16, 17, 18) ];
1899*35238bceSAndroid Build Coastguard Worker                output ivec3 out0 = [ ivec3(-1, 1, -2) | ivec3(-25, 25, -3) | ivec3(1, 1, 1) | ivec3(2, 3, 4) | ivec3(16, 17, 18) ];
1900*35238bceSAndroid Build Coastguard Worker            }
1901*35238bceSAndroid Build Coastguard Worker            vertex ""
1902*35238bceSAndroid Build Coastguard Worker                #version 300 es
1903*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
1904*35238bceSAndroid Build Coastguard Worker                struct S { mediump ivec3 a; };
1905*35238bceSAndroid Build Coastguard Worker                flat out S var;
1906*35238bceSAndroid Build Coastguard Worker                void main()
1907*35238bceSAndroid Build Coastguard Worker                {
1908*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_SETUP}
1909*35238bceSAndroid Build Coastguard Worker                    var.a = in0;
1910*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
1911*35238bceSAndroid Build Coastguard Worker                }
1912*35238bceSAndroid Build Coastguard Worker            ""
1913*35238bceSAndroid Build Coastguard Worker            fragment ""
1914*35238bceSAndroid Build Coastguard Worker                #version 300 es
1915*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
1916*35238bceSAndroid Build Coastguard Worker                struct S { mediump ivec3 a; };
1917*35238bceSAndroid Build Coastguard Worker                flat in S var;
1918*35238bceSAndroid Build Coastguard Worker                void main()
1919*35238bceSAndroid Build Coastguard Worker                {
1920*35238bceSAndroid Build Coastguard Worker                    out0 = var.a;
1921*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
1922*35238bceSAndroid Build Coastguard Worker                }
1923*35238bceSAndroid Build Coastguard Worker            ""
1924*35238bceSAndroid Build Coastguard Worker        end
1925*35238bceSAndroid Build Coastguard Worker
1926*35238bceSAndroid Build Coastguard Worker        case ivec4
1927*35238bceSAndroid Build Coastguard Worker            version 300 es
1928*35238bceSAndroid Build Coastguard Worker            desc "varying of type ivec4 inside struct"
1929*35238bceSAndroid Build Coastguard Worker            values
1930*35238bceSAndroid Build Coastguard Worker            {
1931*35238bceSAndroid Build Coastguard Worker                input ivec4 in0 = [ ivec4(-1, 1, -2, 2) | ivec4(-25, 25, -3, 3) | ivec4(1, 1, 1, 1) | ivec4(2, 3, 4, 5) | ivec4(16, 17, 18, 19) ];
1932*35238bceSAndroid Build Coastguard Worker                output ivec4 out0 = [ ivec4(-1, 1, -2, 2) | ivec4(-25, 25, -3, 3) | ivec4(1, 1, 1, 1) | ivec4(2, 3, 4, 5) | ivec4(16, 17, 18, 19) ];
1933*35238bceSAndroid Build Coastguard Worker            }
1934*35238bceSAndroid Build Coastguard Worker            vertex ""
1935*35238bceSAndroid Build Coastguard Worker                #version 300 es
1936*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
1937*35238bceSAndroid Build Coastguard Worker                struct S { mediump ivec4 a; };
1938*35238bceSAndroid Build Coastguard Worker                flat out S var;
1939*35238bceSAndroid Build Coastguard Worker                void main()
1940*35238bceSAndroid Build Coastguard Worker                {
1941*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_SETUP}
1942*35238bceSAndroid Build Coastguard Worker                    var.a = in0;
1943*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
1944*35238bceSAndroid Build Coastguard Worker                }
1945*35238bceSAndroid Build Coastguard Worker            ""
1946*35238bceSAndroid Build Coastguard Worker            fragment ""
1947*35238bceSAndroid Build Coastguard Worker                #version 300 es
1948*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
1949*35238bceSAndroid Build Coastguard Worker                struct S { mediump ivec4 a; };
1950*35238bceSAndroid Build Coastguard Worker                flat in S var;
1951*35238bceSAndroid Build Coastguard Worker                void main()
1952*35238bceSAndroid Build Coastguard Worker                {
1953*35238bceSAndroid Build Coastguard Worker                    out0 = var.a;
1954*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
1955*35238bceSAndroid Build Coastguard Worker                }
1956*35238bceSAndroid Build Coastguard Worker            ""
1957*35238bceSAndroid Build Coastguard Worker        end
1958*35238bceSAndroid Build Coastguard Worker
1959*35238bceSAndroid Build Coastguard Worker        case uint
1960*35238bceSAndroid Build Coastguard Worker            version 300 es
1961*35238bceSAndroid Build Coastguard Worker            desc "varying of type uint in struct"
1962*35238bceSAndroid Build Coastguard Worker            values
1963*35238bceSAndroid Build Coastguard Worker            {
1964*35238bceSAndroid Build Coastguard Worker                input uint in0 = [ 1 | 2 | 3 | 16 ];
1965*35238bceSAndroid Build Coastguard Worker                output uint out0 = [ 1 | 2 | 3 | 16 ];
1966*35238bceSAndroid Build Coastguard Worker            }
1967*35238bceSAndroid Build Coastguard Worker            vertex ""
1968*35238bceSAndroid Build Coastguard Worker                #version 300 es
1969*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
1970*35238bceSAndroid Build Coastguard Worker                struct S { mediump uint a; };
1971*35238bceSAndroid Build Coastguard Worker                flat out S var;
1972*35238bceSAndroid Build Coastguard Worker                void main()
1973*35238bceSAndroid Build Coastguard Worker                {
1974*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_SETUP}
1975*35238bceSAndroid Build Coastguard Worker                    var.a = in0;
1976*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
1977*35238bceSAndroid Build Coastguard Worker                }
1978*35238bceSAndroid Build Coastguard Worker            ""
1979*35238bceSAndroid Build Coastguard Worker            fragment ""
1980*35238bceSAndroid Build Coastguard Worker                #version 300 es
1981*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
1982*35238bceSAndroid Build Coastguard Worker                struct S { mediump uint a; };
1983*35238bceSAndroid Build Coastguard Worker                flat in S var;
1984*35238bceSAndroid Build Coastguard Worker                void main()
1985*35238bceSAndroid Build Coastguard Worker                {
1986*35238bceSAndroid Build Coastguard Worker                    out0 = var.a;
1987*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
1988*35238bceSAndroid Build Coastguard Worker                }
1989*35238bceSAndroid Build Coastguard Worker            ""
1990*35238bceSAndroid Build Coastguard Worker        end
1991*35238bceSAndroid Build Coastguard Worker
1992*35238bceSAndroid Build Coastguard Worker        case uvec2
1993*35238bceSAndroid Build Coastguard Worker            version 300 es
1994*35238bceSAndroid Build Coastguard Worker            desc "varying of type uvec2 inside struct"
1995*35238bceSAndroid Build Coastguard Worker            values
1996*35238bceSAndroid Build Coastguard Worker            {
1997*35238bceSAndroid Build Coastguard Worker                input uvec2 in0 = [ uvec2(1, 1) | uvec2(25, 25) | uvec2(1, 1) | uvec2(2, 3) | uvec2(16, 17) ];
1998*35238bceSAndroid Build Coastguard Worker                output uvec2 out0 = [ uvec2(1, 1) | uvec2(25, 25) | uvec2(1, 1) | uvec2(2, 3) | uvec2(16, 17) ];
1999*35238bceSAndroid Build Coastguard Worker            }
2000*35238bceSAndroid Build Coastguard Worker            vertex ""
2001*35238bceSAndroid Build Coastguard Worker                #version 300 es
2002*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
2003*35238bceSAndroid Build Coastguard Worker                struct S { mediump uvec2 a; };
2004*35238bceSAndroid Build Coastguard Worker                flat out S var;
2005*35238bceSAndroid Build Coastguard Worker                void main()
2006*35238bceSAndroid Build Coastguard Worker                {
2007*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_SETUP}
2008*35238bceSAndroid Build Coastguard Worker                    var.a = in0;
2009*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
2010*35238bceSAndroid Build Coastguard Worker                }
2011*35238bceSAndroid Build Coastguard Worker            ""
2012*35238bceSAndroid Build Coastguard Worker            fragment ""
2013*35238bceSAndroid Build Coastguard Worker                #version 300 es
2014*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
2015*35238bceSAndroid Build Coastguard Worker                struct S { mediump uvec2 a; };
2016*35238bceSAndroid Build Coastguard Worker                flat in S var;
2017*35238bceSAndroid Build Coastguard Worker                void main()
2018*35238bceSAndroid Build Coastguard Worker                {
2019*35238bceSAndroid Build Coastguard Worker                    out0 = var.a;
2020*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
2021*35238bceSAndroid Build Coastguard Worker                }
2022*35238bceSAndroid Build Coastguard Worker            ""
2023*35238bceSAndroid Build Coastguard Worker        end
2024*35238bceSAndroid Build Coastguard Worker
2025*35238bceSAndroid Build Coastguard Worker        case uvec3
2026*35238bceSAndroid Build Coastguard Worker            version 300 es
2027*35238bceSAndroid Build Coastguard Worker            desc "varying of type uvec3 inside struct"
2028*35238bceSAndroid Build Coastguard Worker            values
2029*35238bceSAndroid Build Coastguard Worker            {
2030*35238bceSAndroid Build Coastguard Worker                input uvec3 in0 = [ uvec3(1, 1, 2) | uvec3(25, 25, 3) | uvec3(1, 1, 1) | uvec3(2, 3, 4) | uvec3(16, 17, 18) ];
2031*35238bceSAndroid Build Coastguard Worker                output uvec3 out0 = [ uvec3(1, 1, 2) | uvec3(25, 25, 3) | uvec3(1, 1, 1) | uvec3(2, 3, 4) | uvec3(16, 17, 18) ];
2032*35238bceSAndroid Build Coastguard Worker            }
2033*35238bceSAndroid Build Coastguard Worker            vertex ""
2034*35238bceSAndroid Build Coastguard Worker                #version 300 es
2035*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
2036*35238bceSAndroid Build Coastguard Worker                struct S { mediump uvec3 a; };
2037*35238bceSAndroid Build Coastguard Worker                flat out S var;
2038*35238bceSAndroid Build Coastguard Worker                void main()
2039*35238bceSAndroid Build Coastguard Worker                {
2040*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_SETUP}
2041*35238bceSAndroid Build Coastguard Worker                    var.a = in0;
2042*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
2043*35238bceSAndroid Build Coastguard Worker                }
2044*35238bceSAndroid Build Coastguard Worker            ""
2045*35238bceSAndroid Build Coastguard Worker            fragment ""
2046*35238bceSAndroid Build Coastguard Worker                #version 300 es
2047*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
2048*35238bceSAndroid Build Coastguard Worker                struct S { mediump uvec3 a; };
2049*35238bceSAndroid Build Coastguard Worker                flat in S var;
2050*35238bceSAndroid Build Coastguard Worker                void main()
2051*35238bceSAndroid Build Coastguard Worker                {
2052*35238bceSAndroid Build Coastguard Worker                    out0 = var.a;
2053*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
2054*35238bceSAndroid Build Coastguard Worker                }
2055*35238bceSAndroid Build Coastguard Worker            ""
2056*35238bceSAndroid Build Coastguard Worker        end
2057*35238bceSAndroid Build Coastguard Worker
2058*35238bceSAndroid Build Coastguard Worker        case uvec4
2059*35238bceSAndroid Build Coastguard Worker            version 300 es
2060*35238bceSAndroid Build Coastguard Worker            desc "varying of type uvec4 inside struct"
2061*35238bceSAndroid Build Coastguard Worker            values
2062*35238bceSAndroid Build Coastguard Worker            {
2063*35238bceSAndroid Build Coastguard Worker                input uvec4 in0 = [ uvec4(1, 1, 2, 2) | uvec4(25, 25, 3, 3) | uvec4(1, 1, 1, 1) | uvec4(2, 3, 4, 5) | uvec4(16, 17, 18, 19) ];
2064*35238bceSAndroid Build Coastguard Worker                output uvec4 out0 = [ uvec4(1, 1, 2, 2) | uvec4(25, 25, 3, 3) | uvec4(1, 1, 1, 1) | uvec4(2, 3, 4, 5) | uvec4(16, 17, 18, 19) ];
2065*35238bceSAndroid Build Coastguard Worker            }
2066*35238bceSAndroid Build Coastguard Worker            vertex ""
2067*35238bceSAndroid Build Coastguard Worker                #version 300 es
2068*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
2069*35238bceSAndroid Build Coastguard Worker                struct S { mediump uvec4 a; };
2070*35238bceSAndroid Build Coastguard Worker                flat out S var;
2071*35238bceSAndroid Build Coastguard Worker                void main()
2072*35238bceSAndroid Build Coastguard Worker                {
2073*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_SETUP}
2074*35238bceSAndroid Build Coastguard Worker                    var.a = in0;
2075*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
2076*35238bceSAndroid Build Coastguard Worker                }
2077*35238bceSAndroid Build Coastguard Worker            ""
2078*35238bceSAndroid Build Coastguard Worker            fragment ""
2079*35238bceSAndroid Build Coastguard Worker                #version 300 es
2080*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
2081*35238bceSAndroid Build Coastguard Worker                struct S { mediump uvec4 a; };
2082*35238bceSAndroid Build Coastguard Worker                flat in S var;
2083*35238bceSAndroid Build Coastguard Worker                void main()
2084*35238bceSAndroid Build Coastguard Worker                {
2085*35238bceSAndroid Build Coastguard Worker                    out0 = var.a;
2086*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
2087*35238bceSAndroid Build Coastguard Worker                }
2088*35238bceSAndroid Build Coastguard Worker            ""
2089*35238bceSAndroid Build Coastguard Worker        end
2090*35238bceSAndroid Build Coastguard Worker
2091*35238bceSAndroid Build Coastguard Worker        case float_vec3
2092*35238bceSAndroid Build Coastguard Worker            version 300 es
2093*35238bceSAndroid Build Coastguard Worker            desc "varyings of type float and vec3 inside struct"
2094*35238bceSAndroid Build Coastguard Worker            values
2095*35238bceSAndroid Build Coastguard Worker            {
2096*35238bceSAndroid Build Coastguard Worker                input float in0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ];
2097*35238bceSAndroid Build Coastguard Worker                output float out0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ];
2098*35238bceSAndroid Build Coastguard Worker                input vec3 in1 = [ vec3(-1.25, 1.25, -9.5) | vec3(-25.65, -7.25, 14.21) | vec3(0.0, 1.0, -1.0) | vec3(2.25, 2.25, 22.5) | vec3(3.4, 9.5, 19.5) | vec3(16.0, 32.0, -64.0) ];
2099*35238bceSAndroid Build Coastguard Worker                output vec3 out1 = [ vec3(-1.25, 1.25, -9.5) | vec3(-25.65, -7.25, 14.21) | vec3(0.0, 1.0, -1.0) | vec3(2.25, 2.25, 22.5) | vec3(3.4, 9.5, 19.5) | vec3(16.0, 32.0, -64.0) ];
2100*35238bceSAndroid Build Coastguard Worker            }
2101*35238bceSAndroid Build Coastguard Worker            vertex ""
2102*35238bceSAndroid Build Coastguard Worker                #version 300 es
2103*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
2104*35238bceSAndroid Build Coastguard Worker                struct S { mediump float a; highp vec3 b; };
2105*35238bceSAndroid Build Coastguard Worker                out S var;
2106*35238bceSAndroid Build Coastguard Worker                void main()
2107*35238bceSAndroid Build Coastguard Worker                {
2108*35238bceSAndroid Build Coastguard Worker                    var.a = in0;
2109*35238bceSAndroid Build Coastguard Worker                    var.b = in1;
2110*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
2111*35238bceSAndroid Build Coastguard Worker                }
2112*35238bceSAndroid Build Coastguard Worker            ""
2113*35238bceSAndroid Build Coastguard Worker            fragment ""
2114*35238bceSAndroid Build Coastguard Worker                #version 300 es
2115*35238bceSAndroid Build Coastguard Worker                precision mediump float;
2116*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
2117*35238bceSAndroid Build Coastguard Worker                struct S { mediump float a; highp vec3 b; };
2118*35238bceSAndroid Build Coastguard Worker                in S var;
2119*35238bceSAndroid Build Coastguard Worker                void main()
2120*35238bceSAndroid Build Coastguard Worker                {
2121*35238bceSAndroid Build Coastguard Worker                    out0 = var.a;
2122*35238bceSAndroid Build Coastguard Worker                    out1 = var.b;
2123*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
2124*35238bceSAndroid Build Coastguard Worker                }
2125*35238bceSAndroid Build Coastguard Worker            ""
2126*35238bceSAndroid Build Coastguard Worker        end
2127*35238bceSAndroid Build Coastguard Worker
2128*35238bceSAndroid Build Coastguard Worker        case float_uvec2_vec3
2129*35238bceSAndroid Build Coastguard Worker            version 300 es
2130*35238bceSAndroid Build Coastguard Worker            desc "varyings of type float and vec3 inside struct"
2131*35238bceSAndroid Build Coastguard Worker            values
2132*35238bceSAndroid Build Coastguard Worker            {
2133*35238bceSAndroid Build Coastguard Worker                input float in0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ];
2134*35238bceSAndroid Build Coastguard Worker                output float out0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ];
2135*35238bceSAndroid Build Coastguard Worker                input uvec2 in1 = [ uvec2(1, 1) | uvec2(25, 25) | uvec2(1, 1) | uvec2(2, 3) | uvec2(16, 17) | uvec2(8, 7) ];
2136*35238bceSAndroid Build Coastguard Worker                output uvec2 out1 = [ uvec2(1, 1) | uvec2(25, 25) | uvec2(1, 1) | uvec2(2, 3) | uvec2(16, 17) | uvec2(8, 7) ];
2137*35238bceSAndroid Build Coastguard Worker                input vec3 in2 = [ vec3(-1.25, 1.25, -9.5) | vec3(-25.65, -7.25, 14.21) | vec3(0.0, 1.0, -1.0) | vec3(2.25, 2.25, 22.5) | vec3(3.4, 9.5, 19.5) | vec3(16.0, 32.0, -64.0) ];
2138*35238bceSAndroid Build Coastguard Worker                output vec3 out2 = [ vec3(-1.25, 1.25, -9.5) | vec3(-25.65, -7.25, 14.21) | vec3(0.0, 1.0, -1.0) | vec3(2.25, 2.25, 22.5) | vec3(3.4, 9.5, 19.5) | vec3(16.0, 32.0, -64.0) ];
2139*35238bceSAndroid Build Coastguard Worker            }
2140*35238bceSAndroid Build Coastguard Worker            vertex ""
2141*35238bceSAndroid Build Coastguard Worker                #version 300 es
2142*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
2143*35238bceSAndroid Build Coastguard Worker                struct S { mediump float a; highp uvec2 b; highp vec3 c; };
2144*35238bceSAndroid Build Coastguard Worker                flat out S var;
2145*35238bceSAndroid Build Coastguard Worker                void main()
2146*35238bceSAndroid Build Coastguard Worker                {
2147*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_SETUP}
2148*35238bceSAndroid Build Coastguard Worker                    var.a = in0;
2149*35238bceSAndroid Build Coastguard Worker                    var.b = in1;
2150*35238bceSAndroid Build Coastguard Worker                    var.c = in2;
2151*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
2152*35238bceSAndroid Build Coastguard Worker                }
2153*35238bceSAndroid Build Coastguard Worker            ""
2154*35238bceSAndroid Build Coastguard Worker            fragment ""
2155*35238bceSAndroid Build Coastguard Worker                #version 300 es
2156*35238bceSAndroid Build Coastguard Worker                precision mediump float;
2157*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
2158*35238bceSAndroid Build Coastguard Worker                struct S { mediump float a; highp uvec2 b; highp vec3 c; };
2159*35238bceSAndroid Build Coastguard Worker                flat in S var;
2160*35238bceSAndroid Build Coastguard Worker                void main()
2161*35238bceSAndroid Build Coastguard Worker                {
2162*35238bceSAndroid Build Coastguard Worker                    out0 = var.a;
2163*35238bceSAndroid Build Coastguard Worker                    out1 = var.b;
2164*35238bceSAndroid Build Coastguard Worker                    out2 = var.c;
2165*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
2166*35238bceSAndroid Build Coastguard Worker                }
2167*35238bceSAndroid Build Coastguard Worker            ""
2168*35238bceSAndroid Build Coastguard Worker        end
2169*35238bceSAndroid Build Coastguard Worker    end
2170*35238bceSAndroid Build Coastguard Worker
2171*35238bceSAndroid Build Coastguard Worker    group interpolation "Varying interpolation modes"
2172*35238bceSAndroid Build Coastguard Worker        case smooth
2173*35238bceSAndroid Build Coastguard Worker            version 300 es
2174*35238bceSAndroid Build Coastguard Worker            desc "varying of type vec4"
2175*35238bceSAndroid Build Coastguard Worker            values
2176*35238bceSAndroid Build Coastguard Worker            {
2177*35238bceSAndroid Build Coastguard Worker                input vec4 in0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ];
2178*35238bceSAndroid Build Coastguard Worker                output vec4 out0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ];
2179*35238bceSAndroid Build Coastguard Worker            }
2180*35238bceSAndroid Build Coastguard Worker            vertex ""
2181*35238bceSAndroid Build Coastguard Worker                #version 300 es
2182*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
2183*35238bceSAndroid Build Coastguard Worker                smooth out mediump vec4 var;
2184*35238bceSAndroid Build Coastguard Worker                void main()
2185*35238bceSAndroid Build Coastguard Worker                {
2186*35238bceSAndroid Build Coastguard Worker                    var = in0;
2187*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
2188*35238bceSAndroid Build Coastguard Worker                }
2189*35238bceSAndroid Build Coastguard Worker            ""
2190*35238bceSAndroid Build Coastguard Worker            fragment ""
2191*35238bceSAndroid Build Coastguard Worker                #version 300 es
2192*35238bceSAndroid Build Coastguard Worker                precision mediump float;
2193*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
2194*35238bceSAndroid Build Coastguard Worker                smooth in vec4 var;
2195*35238bceSAndroid Build Coastguard Worker                void main()
2196*35238bceSAndroid Build Coastguard Worker                {
2197*35238bceSAndroid Build Coastguard Worker                    out0 = var;
2198*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
2199*35238bceSAndroid Build Coastguard Worker                }
2200*35238bceSAndroid Build Coastguard Worker            ""
2201*35238bceSAndroid Build Coastguard Worker        end
2202*35238bceSAndroid Build Coastguard Worker
2203*35238bceSAndroid Build Coastguard Worker        case centroid
2204*35238bceSAndroid Build Coastguard Worker            version 300 es
2205*35238bceSAndroid Build Coastguard Worker            desc "varying of type vec4"
2206*35238bceSAndroid Build Coastguard Worker            values
2207*35238bceSAndroid Build Coastguard Worker            {
2208*35238bceSAndroid Build Coastguard Worker                input vec4 in0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ];
2209*35238bceSAndroid Build Coastguard Worker                output vec4 out0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ];
2210*35238bceSAndroid Build Coastguard Worker            }
2211*35238bceSAndroid Build Coastguard Worker            vertex ""
2212*35238bceSAndroid Build Coastguard Worker                #version 300 es
2213*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
2214*35238bceSAndroid Build Coastguard Worker                centroid out mediump vec4 var;
2215*35238bceSAndroid Build Coastguard Worker                void main()
2216*35238bceSAndroid Build Coastguard Worker                {
2217*35238bceSAndroid Build Coastguard Worker                    var = in0;
2218*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
2219*35238bceSAndroid Build Coastguard Worker                }
2220*35238bceSAndroid Build Coastguard Worker            ""
2221*35238bceSAndroid Build Coastguard Worker            fragment ""
2222*35238bceSAndroid Build Coastguard Worker                #version 300 es
2223*35238bceSAndroid Build Coastguard Worker                precision mediump float;
2224*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
2225*35238bceSAndroid Build Coastguard Worker                centroid in vec4 var;
2226*35238bceSAndroid Build Coastguard Worker                void main()
2227*35238bceSAndroid Build Coastguard Worker                {
2228*35238bceSAndroid Build Coastguard Worker                    out0 = var;
2229*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
2230*35238bceSAndroid Build Coastguard Worker                }
2231*35238bceSAndroid Build Coastguard Worker            ""
2232*35238bceSAndroid Build Coastguard Worker        end
2233*35238bceSAndroid Build Coastguard Worker
2234*35238bceSAndroid Build Coastguard Worker        case flat
2235*35238bceSAndroid Build Coastguard Worker            version 300 es
2236*35238bceSAndroid Build Coastguard Worker            desc "varying of type vec4"
2237*35238bceSAndroid Build Coastguard Worker            values
2238*35238bceSAndroid Build Coastguard Worker            {
2239*35238bceSAndroid Build Coastguard Worker                input vec4 in0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ];
2240*35238bceSAndroid Build Coastguard Worker                output vec4 out0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ];
2241*35238bceSAndroid Build Coastguard Worker            }
2242*35238bceSAndroid Build Coastguard Worker            vertex ""
2243*35238bceSAndroid Build Coastguard Worker                #version 300 es
2244*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
2245*35238bceSAndroid Build Coastguard Worker                flat out mediump vec4 var;
2246*35238bceSAndroid Build Coastguard Worker                void main()
2247*35238bceSAndroid Build Coastguard Worker                {
2248*35238bceSAndroid Build Coastguard Worker                    var = in0;
2249*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
2250*35238bceSAndroid Build Coastguard Worker                }
2251*35238bceSAndroid Build Coastguard Worker            ""
2252*35238bceSAndroid Build Coastguard Worker            fragment ""
2253*35238bceSAndroid Build Coastguard Worker                #version 300 es
2254*35238bceSAndroid Build Coastguard Worker                precision mediump float;
2255*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
2256*35238bceSAndroid Build Coastguard Worker                flat in vec4 var;
2257*35238bceSAndroid Build Coastguard Worker                void main()
2258*35238bceSAndroid Build Coastguard Worker                {
2259*35238bceSAndroid Build Coastguard Worker                    out0 = var;
2260*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
2261*35238bceSAndroid Build Coastguard Worker                }
2262*35238bceSAndroid Build Coastguard Worker            ""
2263*35238bceSAndroid Build Coastguard Worker        end
2264*35238bceSAndroid Build Coastguard Worker    end
2265*35238bceSAndroid Build Coastguard Worker
2266*35238bceSAndroid Build Coastguard Worker    group usage "Varying usage in shaders"
2267*35238bceSAndroid Build Coastguard Worker        case readback_1
2268*35238bceSAndroid Build Coastguard Worker            version 300 es
2269*35238bceSAndroid Build Coastguard Worker            desc "read back (an already written) varying in the vertex shader"
2270*35238bceSAndroid Build Coastguard Worker            values
2271*35238bceSAndroid Build Coastguard Worker            {
2272*35238bceSAndroid Build Coastguard Worker                input float in0 = [ 1.0 | 0.0 | -2.0 | 10.0 ];
2273*35238bceSAndroid Build Coastguard Worker                output float out0 = [ 3.0 | 0.0 | -6.0 | 30.0 ];
2274*35238bceSAndroid Build Coastguard Worker            }
2275*35238bceSAndroid Build Coastguard Worker            vertex ""
2276*35238bceSAndroid Build Coastguard Worker                #version 300 es
2277*35238bceSAndroid Build Coastguard Worker                precision mediump float;
2278*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
2279*35238bceSAndroid Build Coastguard Worker                out float var1;
2280*35238bceSAndroid Build Coastguard Worker                out float var2;
2281*35238bceSAndroid Build Coastguard Worker
2282*35238bceSAndroid Build Coastguard Worker                void main()
2283*35238bceSAndroid Build Coastguard Worker                {
2284*35238bceSAndroid Build Coastguard Worker                    var1 = in0;
2285*35238bceSAndroid Build Coastguard Worker                    var2 = var1 + in0;
2286*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
2287*35238bceSAndroid Build Coastguard Worker                }
2288*35238bceSAndroid Build Coastguard Worker            ""
2289*35238bceSAndroid Build Coastguard Worker            fragment ""
2290*35238bceSAndroid Build Coastguard Worker                #version 300 es
2291*35238bceSAndroid Build Coastguard Worker                precision mediump float;
2292*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
2293*35238bceSAndroid Build Coastguard Worker                in float var1;
2294*35238bceSAndroid Build Coastguard Worker                in float var2;
2295*35238bceSAndroid Build Coastguard Worker
2296*35238bceSAndroid Build Coastguard Worker                void main()
2297*35238bceSAndroid Build Coastguard Worker                {
2298*35238bceSAndroid Build Coastguard Worker                    out0 = var1 + var2;
2299*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
2300*35238bceSAndroid Build Coastguard Worker                }
2301*35238bceSAndroid Build Coastguard Worker            ""
2302*35238bceSAndroid Build Coastguard Worker        end
2303*35238bceSAndroid Build Coastguard Worker
2304*35238bceSAndroid Build Coastguard Worker        case writeback_1
2305*35238bceSAndroid Build Coastguard Worker            version 300 es
2306*35238bceSAndroid Build Coastguard Worker            desc "write back a varying in the fragment shader"
2307*35238bceSAndroid Build Coastguard Worker            values
2308*35238bceSAndroid Build Coastguard Worker            {
2309*35238bceSAndroid Build Coastguard Worker                input float in0 = [ 1.0 | 0.0 | -2.0 | 10.0 ];
2310*35238bceSAndroid Build Coastguard Worker            }
2311*35238bceSAndroid Build Coastguard Worker            expect compile_fail
2312*35238bceSAndroid Build Coastguard Worker            vertex ""
2313*35238bceSAndroid Build Coastguard Worker                #version 300 es
2314*35238bceSAndroid Build Coastguard Worker                precision mediump float;
2315*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
2316*35238bceSAndroid Build Coastguard Worker                out float var1;
2317*35238bceSAndroid Build Coastguard Worker                out float var2;
2318*35238bceSAndroid Build Coastguard Worker
2319*35238bceSAndroid Build Coastguard Worker                void main()
2320*35238bceSAndroid Build Coastguard Worker                {
2321*35238bceSAndroid Build Coastguard Worker                    var1 = in0;
2322*35238bceSAndroid Build Coastguard Worker                    var2 = var1 + in0;
2323*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
2324*35238bceSAndroid Build Coastguard Worker                }
2325*35238bceSAndroid Build Coastguard Worker            ""
2326*35238bceSAndroid Build Coastguard Worker            fragment ""
2327*35238bceSAndroid Build Coastguard Worker                #version 300 es
2328*35238bceSAndroid Build Coastguard Worker                precision mediump float;
2329*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
2330*35238bceSAndroid Build Coastguard Worker                in float var1;
2331*35238bceSAndroid Build Coastguard Worker                in float var2;
2332*35238bceSAndroid Build Coastguard Worker
2333*35238bceSAndroid Build Coastguard Worker                void main()
2334*35238bceSAndroid Build Coastguard Worker                {
2335*35238bceSAndroid Build Coastguard Worker                    var2 = var1;
2336*35238bceSAndroid Build Coastguard Worker                    out0 = var1;
2337*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
2338*35238bceSAndroid Build Coastguard Worker                }
2339*35238bceSAndroid Build Coastguard Worker            ""
2340*35238bceSAndroid Build Coastguard Worker        end
2341*35238bceSAndroid Build Coastguard Worker    end
2342*35238bceSAndroid Build Coastguard Workerend
2343*35238bceSAndroid Build Coastguard Worker
2344*35238bceSAndroid Build Coastguard Workergroup uniform "Uniform linkage"
2345*35238bceSAndroid Build Coastguard Worker    group basic "Default block uniforms of scalar and vector types"
2346*35238bceSAndroid Build Coastguard Worker        case precision_conflict_1
2347*35238bceSAndroid Build Coastguard Worker            version 300 es
2348*35238bceSAndroid Build Coastguard Worker            desc "Vertex side uniform has highp, fragment side uniform mediump."
2349*35238bceSAndroid Build Coastguard Worker            expect link_fail
2350*35238bceSAndroid Build Coastguard Worker            values {output float out0 = 3.0;}
2351*35238bceSAndroid Build Coastguard Worker            vertex ""
2352*35238bceSAndroid Build Coastguard Worker                #version 300 es
2353*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
2354*35238bceSAndroid Build Coastguard Worker                uniform highp float u_val;
2355*35238bceSAndroid Build Coastguard Worker                out mediump float res;
2356*35238bceSAndroid Build Coastguard Worker                void main()
2357*35238bceSAndroid Build Coastguard Worker                {
2358*35238bceSAndroid Build Coastguard Worker                    res = u_val;
2359*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
2360*35238bceSAndroid Build Coastguard Worker                }
2361*35238bceSAndroid Build Coastguard Worker            ""
2362*35238bceSAndroid Build Coastguard Worker            fragment ""
2363*35238bceSAndroid Build Coastguard Worker                #version 300 es
2364*35238bceSAndroid Build Coastguard Worker                precision mediump float;
2365*35238bceSAndroid Build Coastguard Worker                uniform float u_val;
2366*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
2367*35238bceSAndroid Build Coastguard Worker                in mediump float res;
2368*35238bceSAndroid Build Coastguard Worker                void main()
2369*35238bceSAndroid Build Coastguard Worker                {
2370*35238bceSAndroid Build Coastguard Worker                    out0 = u_val + res;
2371*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
2372*35238bceSAndroid Build Coastguard Worker                }
2373*35238bceSAndroid Build Coastguard Worker            ""
2374*35238bceSAndroid Build Coastguard Worker        end
2375*35238bceSAndroid Build Coastguard Worker        case precision_conflict_2
2376*35238bceSAndroid Build Coastguard Worker            version 300 es
2377*35238bceSAndroid Build Coastguard Worker            desc "Vertex side uniform has highp, fragment side uniform mediump."
2378*35238bceSAndroid Build Coastguard Worker            expect link_fail
2379*35238bceSAndroid Build Coastguard Worker            values {output float out0 = 3.0;}
2380*35238bceSAndroid Build Coastguard Worker            vertex ""
2381*35238bceSAndroid Build Coastguard Worker                #version 300 es
2382*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
2383*35238bceSAndroid Build Coastguard Worker                uniform highp float u_val;
2384*35238bceSAndroid Build Coastguard Worker                out mediump float res;
2385*35238bceSAndroid Build Coastguard Worker                void main()
2386*35238bceSAndroid Build Coastguard Worker                {
2387*35238bceSAndroid Build Coastguard Worker                    res = u_val;
2388*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
2389*35238bceSAndroid Build Coastguard Worker                }
2390*35238bceSAndroid Build Coastguard Worker            ""
2391*35238bceSAndroid Build Coastguard Worker            fragment ""
2392*35238bceSAndroid Build Coastguard Worker                #version 300 es
2393*35238bceSAndroid Build Coastguard Worker                precision highp float;
2394*35238bceSAndroid Build Coastguard Worker                uniform mediump float u_val;
2395*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
2396*35238bceSAndroid Build Coastguard Worker                in mediump float res;
2397*35238bceSAndroid Build Coastguard Worker                void main()
2398*35238bceSAndroid Build Coastguard Worker                {
2399*35238bceSAndroid Build Coastguard Worker                    out0 = u_val + res;
2400*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
2401*35238bceSAndroid Build Coastguard Worker                }
2402*35238bceSAndroid Build Coastguard Worker            ""
2403*35238bceSAndroid Build Coastguard Worker        end
2404*35238bceSAndroid Build Coastguard Worker        case precision_conflict_3
2405*35238bceSAndroid Build Coastguard Worker            version 300 es
2406*35238bceSAndroid Build Coastguard Worker            desc "Vertex side uniform has lowp, fragment side uniform highp."
2407*35238bceSAndroid Build Coastguard Worker            expect link_fail
2408*35238bceSAndroid Build Coastguard Worker            values {output float out0 = 3.0;}
2409*35238bceSAndroid Build Coastguard Worker            vertex ""
2410*35238bceSAndroid Build Coastguard Worker                #version 300 es
2411*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
2412*35238bceSAndroid Build Coastguard Worker                uniform lowp int u_val;
2413*35238bceSAndroid Build Coastguard Worker                out mediump float res;
2414*35238bceSAndroid Build Coastguard Worker                void main()
2415*35238bceSAndroid Build Coastguard Worker                {
2416*35238bceSAndroid Build Coastguard Worker                    res = float(u_val);
2417*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
2418*35238bceSAndroid Build Coastguard Worker                }
2419*35238bceSAndroid Build Coastguard Worker            ""
2420*35238bceSAndroid Build Coastguard Worker            fragment ""
2421*35238bceSAndroid Build Coastguard Worker                #version 300 es
2422*35238bceSAndroid Build Coastguard Worker                precision highp float;
2423*35238bceSAndroid Build Coastguard Worker                uniform highp int u_val;
2424*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
2425*35238bceSAndroid Build Coastguard Worker                in mediump float res;
2426*35238bceSAndroid Build Coastguard Worker                void main()
2427*35238bceSAndroid Build Coastguard Worker                {
2428*35238bceSAndroid Build Coastguard Worker                    out0 = float(u_val) + res;
2429*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
2430*35238bceSAndroid Build Coastguard Worker                }
2431*35238bceSAndroid Build Coastguard Worker            ""
2432*35238bceSAndroid Build Coastguard Worker        end
2433*35238bceSAndroid Build Coastguard Worker        case precision_conflict_4
2434*35238bceSAndroid Build Coastguard Worker            version 300 es
2435*35238bceSAndroid Build Coastguard Worker            desc "Vertex side uniform has lowp, fragment side uniform mediump."
2436*35238bceSAndroid Build Coastguard Worker            expect link_fail
2437*35238bceSAndroid Build Coastguard Worker            values {output float out0 = 3.0;}
2438*35238bceSAndroid Build Coastguard Worker            vertex ""
2439*35238bceSAndroid Build Coastguard Worker                #version 300 es
2440*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
2441*35238bceSAndroid Build Coastguard Worker                uniform lowp vec3 u_val;
2442*35238bceSAndroid Build Coastguard Worker                out mediump float res;
2443*35238bceSAndroid Build Coastguard Worker                void main()
2444*35238bceSAndroid Build Coastguard Worker                {
2445*35238bceSAndroid Build Coastguard Worker                    res = u_val.y;
2446*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
2447*35238bceSAndroid Build Coastguard Worker                }
2448*35238bceSAndroid Build Coastguard Worker            ""
2449*35238bceSAndroid Build Coastguard Worker            fragment ""
2450*35238bceSAndroid Build Coastguard Worker                #version 300 es
2451*35238bceSAndroid Build Coastguard Worker                precision highp float;
2452*35238bceSAndroid Build Coastguard Worker                uniform mediump vec3 u_val;
2453*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
2454*35238bceSAndroid Build Coastguard Worker                in mediump float res;
2455*35238bceSAndroid Build Coastguard Worker                void main()
2456*35238bceSAndroid Build Coastguard Worker                {
2457*35238bceSAndroid Build Coastguard Worker                    out0 = u_val.z + res;
2458*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
2459*35238bceSAndroid Build Coastguard Worker                }
2460*35238bceSAndroid Build Coastguard Worker            ""
2461*35238bceSAndroid Build Coastguard Worker        end
2462*35238bceSAndroid Build Coastguard Worker    end
2463*35238bceSAndroid Build Coastguard Worker
2464*35238bceSAndroid Build Coastguard Worker    group struct "Uniform structs"
2465*35238bceSAndroid Build Coastguard Worker        # Struct linkage handling
2466*35238bceSAndroid Build Coastguard Worker        case basic
2467*35238bceSAndroid Build Coastguard Worker            version 300 es
2468*35238bceSAndroid Build Coastguard Worker            desc "Same uniform struct in both shaders"
2469*35238bceSAndroid Build Coastguard Worker            values {
2470*35238bceSAndroid Build Coastguard Worker                uniform float val.a = 1.0;
2471*35238bceSAndroid Build Coastguard Worker                uniform float val.b = 2.0;
2472*35238bceSAndroid Build Coastguard Worker                output float out0 = 3.0;
2473*35238bceSAndroid Build Coastguard Worker            }
2474*35238bceSAndroid Build Coastguard Worker            vertex ""
2475*35238bceSAndroid Build Coastguard Worker                #version 300 es
2476*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
2477*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump float a; mediump float b;};
2478*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
2479*35238bceSAndroid Build Coastguard Worker                out mediump float dummy;
2480*35238bceSAndroid Build Coastguard Worker                void main()
2481*35238bceSAndroid Build Coastguard Worker                {
2482*35238bceSAndroid Build Coastguard Worker                    dummy = val.a + val.b;
2483*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
2484*35238bceSAndroid Build Coastguard Worker                }
2485*35238bceSAndroid Build Coastguard Worker            ""
2486*35238bceSAndroid Build Coastguard Worker            fragment ""
2487*35238bceSAndroid Build Coastguard Worker                #version 300 es
2488*35238bceSAndroid Build Coastguard Worker                precision mediump float;
2489*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump float a; mediump float b;};
2490*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
2491*35238bceSAndroid Build Coastguard Worker                in mediump float dummy;
2492*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
2493*35238bceSAndroid Build Coastguard Worker                void main()
2494*35238bceSAndroid Build Coastguard Worker                {
2495*35238bceSAndroid Build Coastguard Worker                    out0 = val.b + val.a;
2496*35238bceSAndroid Build Coastguard Worker                    out0 = out0 + dummy;
2497*35238bceSAndroid Build Coastguard Worker                    out0 = out0 - dummy;
2498*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
2499*35238bceSAndroid Build Coastguard Worker                }
2500*35238bceSAndroid Build Coastguard Worker            ""
2501*35238bceSAndroid Build Coastguard Worker        end
2502*35238bceSAndroid Build Coastguard Worker
2503*35238bceSAndroid Build Coastguard Worker        case vertex_only
2504*35238bceSAndroid Build Coastguard Worker            version 300 es
2505*35238bceSAndroid Build Coastguard Worker            desc "Uniform struct declared in both, used only in vertex."
2506*35238bceSAndroid Build Coastguard Worker            values {
2507*35238bceSAndroid Build Coastguard Worker                uniform float val.a = 1.0;
2508*35238bceSAndroid Build Coastguard Worker                uniform float val.b = 2.0;
2509*35238bceSAndroid Build Coastguard Worker                output float out0 = 3.0;
2510*35238bceSAndroid Build Coastguard Worker            }
2511*35238bceSAndroid Build Coastguard Worker            vertex ""
2512*35238bceSAndroid Build Coastguard Worker                #version 300 es
2513*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
2514*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump float a; mediump float b;};
2515*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
2516*35238bceSAndroid Build Coastguard Worker                out mediump float res;
2517*35238bceSAndroid Build Coastguard Worker                void main()
2518*35238bceSAndroid Build Coastguard Worker                {
2519*35238bceSAndroid Build Coastguard Worker                    res = val.a + val.b;
2520*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
2521*35238bceSAndroid Build Coastguard Worker                }
2522*35238bceSAndroid Build Coastguard Worker            ""
2523*35238bceSAndroid Build Coastguard Worker            fragment ""
2524*35238bceSAndroid Build Coastguard Worker                #version 300 es
2525*35238bceSAndroid Build Coastguard Worker                precision mediump float;
2526*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump float a; mediump float b;};
2527*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
2528*35238bceSAndroid Build Coastguard Worker                in mediump float res;
2529*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
2530*35238bceSAndroid Build Coastguard Worker                void main()
2531*35238bceSAndroid Build Coastguard Worker                {
2532*35238bceSAndroid Build Coastguard Worker                    out0 = res;
2533*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
2534*35238bceSAndroid Build Coastguard Worker                }
2535*35238bceSAndroid Build Coastguard Worker            ""
2536*35238bceSAndroid Build Coastguard Worker        end
2537*35238bceSAndroid Build Coastguard Worker
2538*35238bceSAndroid Build Coastguard Worker        case fragment_only
2539*35238bceSAndroid Build Coastguard Worker            version 300 es
2540*35238bceSAndroid Build Coastguard Worker            desc "Uniform struct declared in both, used only in fragment."
2541*35238bceSAndroid Build Coastguard Worker            values {
2542*35238bceSAndroid Build Coastguard Worker                uniform float val.a = 1.0;
2543*35238bceSAndroid Build Coastguard Worker                uniform float val.b = 2.0;
2544*35238bceSAndroid Build Coastguard Worker                output float out0 = 3.0;
2545*35238bceSAndroid Build Coastguard Worker            }
2546*35238bceSAndroid Build Coastguard Worker            vertex ""
2547*35238bceSAndroid Build Coastguard Worker                #version 300 es
2548*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
2549*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump float a; mediump float b;};
2550*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
2551*35238bceSAndroid Build Coastguard Worker                void main()
2552*35238bceSAndroid Build Coastguard Worker                {
2553*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
2554*35238bceSAndroid Build Coastguard Worker                }
2555*35238bceSAndroid Build Coastguard Worker            ""
2556*35238bceSAndroid Build Coastguard Worker            fragment ""
2557*35238bceSAndroid Build Coastguard Worker                #version 300 es
2558*35238bceSAndroid Build Coastguard Worker                precision mediump float;
2559*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump float a; mediump float b;};
2560*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
2561*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
2562*35238bceSAndroid Build Coastguard Worker                void main()
2563*35238bceSAndroid Build Coastguard Worker                {
2564*35238bceSAndroid Build Coastguard Worker                    out0 = val.a + val.b;
2565*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
2566*35238bceSAndroid Build Coastguard Worker                }
2567*35238bceSAndroid Build Coastguard Worker            ""
2568*35238bceSAndroid Build Coastguard Worker        end
2569*35238bceSAndroid Build Coastguard Worker
2570*35238bceSAndroid Build Coastguard Worker        case partial
2571*35238bceSAndroid Build Coastguard Worker            version 300 es
2572*35238bceSAndroid Build Coastguard Worker            desc "Uniform struct declared in both, used partially in both."
2573*35238bceSAndroid Build Coastguard Worker            values {
2574*35238bceSAndroid Build Coastguard Worker                uniform float val.a = 1.0;
2575*35238bceSAndroid Build Coastguard Worker                uniform float val.b = 2.0;
2576*35238bceSAndroid Build Coastguard Worker                output float out0 = 3.0;
2577*35238bceSAndroid Build Coastguard Worker            }
2578*35238bceSAndroid Build Coastguard Worker            vertex ""
2579*35238bceSAndroid Build Coastguard Worker                #version 300 es
2580*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
2581*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump float a; mediump float b;};
2582*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
2583*35238bceSAndroid Build Coastguard Worker                out mediump float res;
2584*35238bceSAndroid Build Coastguard Worker                void main()
2585*35238bceSAndroid Build Coastguard Worker                {
2586*35238bceSAndroid Build Coastguard Worker                    res = val.a;
2587*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
2588*35238bceSAndroid Build Coastguard Worker                }
2589*35238bceSAndroid Build Coastguard Worker            ""
2590*35238bceSAndroid Build Coastguard Worker            fragment ""
2591*35238bceSAndroid Build Coastguard Worker                #version 300 es
2592*35238bceSAndroid Build Coastguard Worker                precision mediump float;
2593*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump float a; mediump float b;};
2594*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
2595*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
2596*35238bceSAndroid Build Coastguard Worker                in mediump float res;
2597*35238bceSAndroid Build Coastguard Worker                void main()
2598*35238bceSAndroid Build Coastguard Worker                {
2599*35238bceSAndroid Build Coastguard Worker                    out0 = res + val.b;
2600*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
2601*35238bceSAndroid Build Coastguard Worker                }
2602*35238bceSAndroid Build Coastguard Worker            ""
2603*35238bceSAndroid Build Coastguard Worker        end
2604*35238bceSAndroid Build Coastguard Worker
2605*35238bceSAndroid Build Coastguard Worker        case vec4
2606*35238bceSAndroid Build Coastguard Worker            version 300 es
2607*35238bceSAndroid Build Coastguard Worker            desc "Same uniform struct in both shaders. Datatype vec4"
2608*35238bceSAndroid Build Coastguard Worker            values {
2609*35238bceSAndroid Build Coastguard Worker                uniform vec4 val.a = vec4(1.0, 2.0, 3.0, 4.0);
2610*35238bceSAndroid Build Coastguard Worker                uniform vec4 val.b = vec4(1.0, 2.0, 3.0, 4.0);
2611*35238bceSAndroid Build Coastguard Worker                output float out0 = 3.0;
2612*35238bceSAndroid Build Coastguard Worker            }
2613*35238bceSAndroid Build Coastguard Worker            vertex ""
2614*35238bceSAndroid Build Coastguard Worker                #version 300 es
2615*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
2616*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump vec4 a; mediump vec4 b;};
2617*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
2618*35238bceSAndroid Build Coastguard Worker                out mediump float dummy;
2619*35238bceSAndroid Build Coastguard Worker                void main()
2620*35238bceSAndroid Build Coastguard Worker                {
2621*35238bceSAndroid Build Coastguard Worker                    dummy = val.a.x + val.b.y;
2622*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
2623*35238bceSAndroid Build Coastguard Worker                }
2624*35238bceSAndroid Build Coastguard Worker            ""
2625*35238bceSAndroid Build Coastguard Worker            fragment ""
2626*35238bceSAndroid Build Coastguard Worker                #version 300 es
2627*35238bceSAndroid Build Coastguard Worker                precision mediump float;
2628*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump vec4 a; mediump vec4 b;};
2629*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
2630*35238bceSAndroid Build Coastguard Worker                in mediump float dummy;
2631*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
2632*35238bceSAndroid Build Coastguard Worker                void main()
2633*35238bceSAndroid Build Coastguard Worker                {
2634*35238bceSAndroid Build Coastguard Worker                    out0 = val.b.y + val.a.x;
2635*35238bceSAndroid Build Coastguard Worker                    out0 = out0 + dummy;
2636*35238bceSAndroid Build Coastguard Worker                    out0 = out0 - dummy;
2637*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
2638*35238bceSAndroid Build Coastguard Worker                }
2639*35238bceSAndroid Build Coastguard Worker            ""
2640*35238bceSAndroid Build Coastguard Worker        end
2641*35238bceSAndroid Build Coastguard Worker
2642*35238bceSAndroid Build Coastguard Worker        case vertex_only_vec4
2643*35238bceSAndroid Build Coastguard Worker            version 300 es
2644*35238bceSAndroid Build Coastguard Worker            desc "Uniform struct declared in both, used only in vertex. Datatype vec4    "
2645*35238bceSAndroid Build Coastguard Worker            values {
2646*35238bceSAndroid Build Coastguard Worker                uniform vec4 val.a = vec4(1.0, 2.0, 3.0, 4.0);
2647*35238bceSAndroid Build Coastguard Worker                uniform vec4 val.b = vec4(1.0, 2.0, 3.0, 4.0);
2648*35238bceSAndroid Build Coastguard Worker                output float out0 = 3.0;
2649*35238bceSAndroid Build Coastguard Worker            }
2650*35238bceSAndroid Build Coastguard Worker            vertex ""
2651*35238bceSAndroid Build Coastguard Worker                #version 300 es
2652*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
2653*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump vec4 a; mediump vec4 b;};
2654*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
2655*35238bceSAndroid Build Coastguard Worker                out mediump float res;
2656*35238bceSAndroid Build Coastguard Worker                void main()
2657*35238bceSAndroid Build Coastguard Worker                {
2658*35238bceSAndroid Build Coastguard Worker                    res = val.a.x + val.b.y;
2659*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
2660*35238bceSAndroid Build Coastguard Worker                }
2661*35238bceSAndroid Build Coastguard Worker            ""
2662*35238bceSAndroid Build Coastguard Worker            fragment ""
2663*35238bceSAndroid Build Coastguard Worker                #version 300 es
2664*35238bceSAndroid Build Coastguard Worker                precision mediump float;
2665*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump vec4 a; mediump vec4 b;};
2666*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
2667*35238bceSAndroid Build Coastguard Worker                in mediump float res;
2668*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
2669*35238bceSAndroid Build Coastguard Worker                void main()
2670*35238bceSAndroid Build Coastguard Worker                {            out0 = res;
2671*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
2672*35238bceSAndroid Build Coastguard Worker                }
2673*35238bceSAndroid Build Coastguard Worker            ""
2674*35238bceSAndroid Build Coastguard Worker        end
2675*35238bceSAndroid Build Coastguard Worker
2676*35238bceSAndroid Build Coastguard Worker        case fragment_only_vec4
2677*35238bceSAndroid Build Coastguard Worker            version 300 es
2678*35238bceSAndroid Build Coastguard Worker            desc "Uniform struct declared in both, used only in fragment. Datatype vec4"
2679*35238bceSAndroid Build Coastguard Worker            values {
2680*35238bceSAndroid Build Coastguard Worker                uniform vec4 val.a = vec4(1.0, 2.0, 3.0, 4.0);
2681*35238bceSAndroid Build Coastguard Worker                uniform vec4 val.b = vec4(1.0, 2.0, 3.0, 4.0);
2682*35238bceSAndroid Build Coastguard Worker                output float out0 = 3.0;
2683*35238bceSAndroid Build Coastguard Worker            }
2684*35238bceSAndroid Build Coastguard Worker            vertex ""
2685*35238bceSAndroid Build Coastguard Worker                #version 300 es
2686*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
2687*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump vec4 a; mediump vec4 b;};
2688*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
2689*35238bceSAndroid Build Coastguard Worker                void main()
2690*35238bceSAndroid Build Coastguard Worker                {
2691*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
2692*35238bceSAndroid Build Coastguard Worker                }
2693*35238bceSAndroid Build Coastguard Worker            ""
2694*35238bceSAndroid Build Coastguard Worker            fragment ""
2695*35238bceSAndroid Build Coastguard Worker                #version 300 es
2696*35238bceSAndroid Build Coastguard Worker                precision mediump float;
2697*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump vec4 a; mediump vec4 b;};
2698*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
2699*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
2700*35238bceSAndroid Build Coastguard Worker                void main()
2701*35238bceSAndroid Build Coastguard Worker                {            out0 = val.a.x + val.b.y;
2702*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
2703*35238bceSAndroid Build Coastguard Worker                }
2704*35238bceSAndroid Build Coastguard Worker            ""
2705*35238bceSAndroid Build Coastguard Worker        end
2706*35238bceSAndroid Build Coastguard Worker
2707*35238bceSAndroid Build Coastguard Worker        case partial_vec4
2708*35238bceSAndroid Build Coastguard Worker            version 300 es
2709*35238bceSAndroid Build Coastguard Worker            desc "Uniform struct declared in both, used partially in both. Datatype vec4"
2710*35238bceSAndroid Build Coastguard Worker            values {
2711*35238bceSAndroid Build Coastguard Worker                uniform vec4 val.a = vec4(1.0, 2.0, 3.0, 4.0);
2712*35238bceSAndroid Build Coastguard Worker                uniform vec4 val.b = vec4(1.0, 2.0, 3.0, 4.0);
2713*35238bceSAndroid Build Coastguard Worker                output float out0 = 3.0;
2714*35238bceSAndroid Build Coastguard Worker            }
2715*35238bceSAndroid Build Coastguard Worker            vertex ""
2716*35238bceSAndroid Build Coastguard Worker                #version 300 es
2717*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
2718*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump vec4 a; mediump vec4 b;};
2719*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
2720*35238bceSAndroid Build Coastguard Worker                out mediump float res;
2721*35238bceSAndroid Build Coastguard Worker                void main()
2722*35238bceSAndroid Build Coastguard Worker                {
2723*35238bceSAndroid Build Coastguard Worker                    res = val.a.x;
2724*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
2725*35238bceSAndroid Build Coastguard Worker                }
2726*35238bceSAndroid Build Coastguard Worker            ""
2727*35238bceSAndroid Build Coastguard Worker            fragment ""
2728*35238bceSAndroid Build Coastguard Worker                #version 300 es
2729*35238bceSAndroid Build Coastguard Worker                precision mediump float;
2730*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump vec4 a; mediump vec4 b;};
2731*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
2732*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
2733*35238bceSAndroid Build Coastguard Worker                in mediump float res;
2734*35238bceSAndroid Build Coastguard Worker                void main()
2735*35238bceSAndroid Build Coastguard Worker                {            out0 = res + val.b.y;
2736*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
2737*35238bceSAndroid Build Coastguard Worker                }
2738*35238bceSAndroid Build Coastguard Worker            ""
2739*35238bceSAndroid Build Coastguard Worker        end
2740*35238bceSAndroid Build Coastguard Worker
2741*35238bceSAndroid Build Coastguard Worker        case vec4_vec3
2742*35238bceSAndroid Build Coastguard Worker            version 300 es
2743*35238bceSAndroid Build Coastguard Worker            desc "Same uniform struct in both shaders. Datatype vec4 and vec3"
2744*35238bceSAndroid Build Coastguard Worker            values {
2745*35238bceSAndroid Build Coastguard Worker                uniform vec4 val.a = vec4(1.0, 2.0, 3.0, 4.0);
2746*35238bceSAndroid Build Coastguard Worker                uniform vec3 val.b = vec3(1.0, 2.0, 3.0);
2747*35238bceSAndroid Build Coastguard Worker                output float out0 = 3.0;
2748*35238bceSAndroid Build Coastguard Worker            }
2749*35238bceSAndroid Build Coastguard Worker            vertex ""
2750*35238bceSAndroid Build Coastguard Worker                #version 300 es
2751*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
2752*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump vec4 a; mediump vec3 b;};
2753*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
2754*35238bceSAndroid Build Coastguard Worker                out mediump float dummy;
2755*35238bceSAndroid Build Coastguard Worker                void main()
2756*35238bceSAndroid Build Coastguard Worker                {
2757*35238bceSAndroid Build Coastguard Worker                    dummy = val.a.x + val.b.y;
2758*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
2759*35238bceSAndroid Build Coastguard Worker                }
2760*35238bceSAndroid Build Coastguard Worker            ""
2761*35238bceSAndroid Build Coastguard Worker            fragment ""
2762*35238bceSAndroid Build Coastguard Worker                #version 300 es
2763*35238bceSAndroid Build Coastguard Worker                precision mediump float;
2764*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump vec4 a; mediump vec3 b;};
2765*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
2766*35238bceSAndroid Build Coastguard Worker                in mediump float dummy;
2767*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
2768*35238bceSAndroid Build Coastguard Worker                void main()
2769*35238bceSAndroid Build Coastguard Worker                {            out0 = val.b.y + val.a.x;
2770*35238bceSAndroid Build Coastguard Worker                    out0 = out0 + dummy;
2771*35238bceSAndroid Build Coastguard Worker                    out0 = out0 - dummy;
2772*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
2773*35238bceSAndroid Build Coastguard Worker                }
2774*35238bceSAndroid Build Coastguard Worker            ""
2775*35238bceSAndroid Build Coastguard Worker        end
2776*35238bceSAndroid Build Coastguard Worker
2777*35238bceSAndroid Build Coastguard Worker        case vertex_only_vec4_vec3
2778*35238bceSAndroid Build Coastguard Worker            version 300 es
2779*35238bceSAndroid Build Coastguard Worker            desc "Uniform struct declared in both, used only in vertex. Datatype vec4 and vec3"
2780*35238bceSAndroid Build Coastguard Worker            values {
2781*35238bceSAndroid Build Coastguard Worker                uniform vec4 val.a = vec4(1.0, 2.0, 3.0, 4.0);
2782*35238bceSAndroid Build Coastguard Worker                uniform vec3 val.b = vec3(1.0, 2.0, 3.0);
2783*35238bceSAndroid Build Coastguard Worker                output float out0 = 3.0;
2784*35238bceSAndroid Build Coastguard Worker            }
2785*35238bceSAndroid Build Coastguard Worker            vertex ""
2786*35238bceSAndroid Build Coastguard Worker                #version 300 es
2787*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
2788*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump vec4 a; mediump vec3 b;};
2789*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
2790*35238bceSAndroid Build Coastguard Worker                out mediump float res;
2791*35238bceSAndroid Build Coastguard Worker                void main()
2792*35238bceSAndroid Build Coastguard Worker                {
2793*35238bceSAndroid Build Coastguard Worker                    res = val.a.x + val.b.y;
2794*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
2795*35238bceSAndroid Build Coastguard Worker                }
2796*35238bceSAndroid Build Coastguard Worker            ""
2797*35238bceSAndroid Build Coastguard Worker            fragment ""
2798*35238bceSAndroid Build Coastguard Worker                #version 300 es
2799*35238bceSAndroid Build Coastguard Worker                precision mediump float;
2800*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump vec4 a; mediump vec3 b;};
2801*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
2802*35238bceSAndroid Build Coastguard Worker                in mediump float res;
2803*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
2804*35238bceSAndroid Build Coastguard Worker                void main()
2805*35238bceSAndroid Build Coastguard Worker                {            out0 = res;
2806*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
2807*35238bceSAndroid Build Coastguard Worker                }
2808*35238bceSAndroid Build Coastguard Worker            ""
2809*35238bceSAndroid Build Coastguard Worker        end
2810*35238bceSAndroid Build Coastguard Worker
2811*35238bceSAndroid Build Coastguard Worker        case fragment_only_vec4_vec3
2812*35238bceSAndroid Build Coastguard Worker            version 300 es
2813*35238bceSAndroid Build Coastguard Worker            desc "Uniform struct declared in both, used only in fragment. Datatype vec4 and vec3"
2814*35238bceSAndroid Build Coastguard Worker            values {
2815*35238bceSAndroid Build Coastguard Worker                uniform vec4 val.a = vec4(1.0, 2.0, 3.0, 4.0);
2816*35238bceSAndroid Build Coastguard Worker                uniform vec3 val.b = vec3(1.0, 2.0, 3.0);
2817*35238bceSAndroid Build Coastguard Worker                output float out0 = 3.0;
2818*35238bceSAndroid Build Coastguard Worker            }
2819*35238bceSAndroid Build Coastguard Worker            vertex ""
2820*35238bceSAndroid Build Coastguard Worker                #version 300 es
2821*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
2822*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump vec4 a; mediump vec3 b;};
2823*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
2824*35238bceSAndroid Build Coastguard Worker                void main()
2825*35238bceSAndroid Build Coastguard Worker                {
2826*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
2827*35238bceSAndroid Build Coastguard Worker                }
2828*35238bceSAndroid Build Coastguard Worker            ""
2829*35238bceSAndroid Build Coastguard Worker            fragment ""
2830*35238bceSAndroid Build Coastguard Worker                #version 300 es
2831*35238bceSAndroid Build Coastguard Worker                precision mediump float;
2832*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump vec4 a; mediump vec3 b;};
2833*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
2834*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
2835*35238bceSAndroid Build Coastguard Worker                void main()
2836*35238bceSAndroid Build Coastguard Worker                {            out0 = val.a.x + val.b.y;
2837*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
2838*35238bceSAndroid Build Coastguard Worker                }
2839*35238bceSAndroid Build Coastguard Worker            ""
2840*35238bceSAndroid Build Coastguard Worker        end
2841*35238bceSAndroid Build Coastguard Worker
2842*35238bceSAndroid Build Coastguard Worker        case partial_vec4_vec3
2843*35238bceSAndroid Build Coastguard Worker            version 300 es
2844*35238bceSAndroid Build Coastguard Worker            desc "Uniform struct declared in both, used partially in both. Datatype vec4 and vec3"
2845*35238bceSAndroid Build Coastguard Worker            values {
2846*35238bceSAndroid Build Coastguard Worker                uniform vec4 val.a = vec4(1.0, 2.0, 3.0, 4.0);
2847*35238bceSAndroid Build Coastguard Worker                uniform vec3 val.b = vec3(1.0, 2.0, 3.0);
2848*35238bceSAndroid Build Coastguard Worker                output float out0 = 3.0;
2849*35238bceSAndroid Build Coastguard Worker            }
2850*35238bceSAndroid Build Coastguard Worker            vertex ""
2851*35238bceSAndroid Build Coastguard Worker                #version 300 es
2852*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
2853*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump vec4 a; mediump vec3 b;};
2854*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
2855*35238bceSAndroid Build Coastguard Worker                out mediump float res;
2856*35238bceSAndroid Build Coastguard Worker                void main()
2857*35238bceSAndroid Build Coastguard Worker                {
2858*35238bceSAndroid Build Coastguard Worker                    res = val.a.x;
2859*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
2860*35238bceSAndroid Build Coastguard Worker                }
2861*35238bceSAndroid Build Coastguard Worker            ""
2862*35238bceSAndroid Build Coastguard Worker            fragment ""
2863*35238bceSAndroid Build Coastguard Worker                #version 300 es
2864*35238bceSAndroid Build Coastguard Worker                precision mediump float;
2865*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump vec4 a; mediump vec3 b;};
2866*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
2867*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
2868*35238bceSAndroid Build Coastguard Worker                in mediump float res;
2869*35238bceSAndroid Build Coastguard Worker                void main()
2870*35238bceSAndroid Build Coastguard Worker                {            out0 = res + val.b.y;
2871*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
2872*35238bceSAndroid Build Coastguard Worker                }
2873*35238bceSAndroid Build Coastguard Worker            ""
2874*35238bceSAndroid Build Coastguard Worker        end
2875*35238bceSAndroid Build Coastguard Worker
2876*35238bceSAndroid Build Coastguard Worker        case vec4_float
2877*35238bceSAndroid Build Coastguard Worker            version 300 es
2878*35238bceSAndroid Build Coastguard Worker            desc "Same uniform struct in both shaders. Datatype vec4 and float"
2879*35238bceSAndroid Build Coastguard Worker            values {
2880*35238bceSAndroid Build Coastguard Worker                uniform vec4 val.a = vec4(1.0, 2.0, 3.0, 4.0);
2881*35238bceSAndroid Build Coastguard Worker                uniform float val.b = 2.0;
2882*35238bceSAndroid Build Coastguard Worker                output float out0 = 3.0;
2883*35238bceSAndroid Build Coastguard Worker            }
2884*35238bceSAndroid Build Coastguard Worker            vertex ""
2885*35238bceSAndroid Build Coastguard Worker                #version 300 es
2886*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
2887*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump vec4 a; mediump float b;};
2888*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
2889*35238bceSAndroid Build Coastguard Worker                out mediump float dummy;
2890*35238bceSAndroid Build Coastguard Worker                void main()
2891*35238bceSAndroid Build Coastguard Worker                {
2892*35238bceSAndroid Build Coastguard Worker                    dummy = val.a.x + val.b;
2893*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
2894*35238bceSAndroid Build Coastguard Worker                }
2895*35238bceSAndroid Build Coastguard Worker            ""
2896*35238bceSAndroid Build Coastguard Worker            fragment ""
2897*35238bceSAndroid Build Coastguard Worker                #version 300 es
2898*35238bceSAndroid Build Coastguard Worker                precision mediump float;
2899*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump vec4 a; mediump float b;};
2900*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
2901*35238bceSAndroid Build Coastguard Worker                in mediump float dummy;
2902*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
2903*35238bceSAndroid Build Coastguard Worker                void main()
2904*35238bceSAndroid Build Coastguard Worker                {            out0 = val.b + val.a.x;
2905*35238bceSAndroid Build Coastguard Worker                    out0 = out0 + dummy;
2906*35238bceSAndroid Build Coastguard Worker                    out0 = out0 - dummy;
2907*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
2908*35238bceSAndroid Build Coastguard Worker                }
2909*35238bceSAndroid Build Coastguard Worker            ""
2910*35238bceSAndroid Build Coastguard Worker        end
2911*35238bceSAndroid Build Coastguard Worker
2912*35238bceSAndroid Build Coastguard Worker        case vertex_only_vec4_float
2913*35238bceSAndroid Build Coastguard Worker            version 300 es
2914*35238bceSAndroid Build Coastguard Worker            desc "Uniform struct declared in both, used only in vertex. Datatype vec4 and float"
2915*35238bceSAndroid Build Coastguard Worker            values {
2916*35238bceSAndroid Build Coastguard Worker                uniform vec4 val.a = vec4(1.0, 2.0, 3.0, 4.0);
2917*35238bceSAndroid Build Coastguard Worker                uniform float val.b = 2.0;
2918*35238bceSAndroid Build Coastguard Worker                output float out0 = 3.0;
2919*35238bceSAndroid Build Coastguard Worker            }
2920*35238bceSAndroid Build Coastguard Worker            vertex ""
2921*35238bceSAndroid Build Coastguard Worker                #version 300 es
2922*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
2923*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump vec4 a; mediump float b;};
2924*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
2925*35238bceSAndroid Build Coastguard Worker                out mediump float res;
2926*35238bceSAndroid Build Coastguard Worker                void main()
2927*35238bceSAndroid Build Coastguard Worker                {
2928*35238bceSAndroid Build Coastguard Worker                    res = val.a.x + val.b;
2929*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
2930*35238bceSAndroid Build Coastguard Worker                }
2931*35238bceSAndroid Build Coastguard Worker            ""
2932*35238bceSAndroid Build Coastguard Worker            fragment ""
2933*35238bceSAndroid Build Coastguard Worker                #version 300 es
2934*35238bceSAndroid Build Coastguard Worker                precision mediump float;
2935*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump vec4 a; mediump float b;};
2936*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
2937*35238bceSAndroid Build Coastguard Worker                in mediump float res;
2938*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
2939*35238bceSAndroid Build Coastguard Worker                void main()
2940*35238bceSAndroid Build Coastguard Worker                {            out0 = res;
2941*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
2942*35238bceSAndroid Build Coastguard Worker                }
2943*35238bceSAndroid Build Coastguard Worker            ""
2944*35238bceSAndroid Build Coastguard Worker        end
2945*35238bceSAndroid Build Coastguard Worker
2946*35238bceSAndroid Build Coastguard Worker        case fragment_only_vec4_float
2947*35238bceSAndroid Build Coastguard Worker            version 300 es
2948*35238bceSAndroid Build Coastguard Worker            desc "Uniform struct declared in both, used only in fragment. Datatype vec4 and float"
2949*35238bceSAndroid Build Coastguard Worker            values {
2950*35238bceSAndroid Build Coastguard Worker                uniform vec4 val.a = vec4(1.0, 2.0, 3.0, 4.0);
2951*35238bceSAndroid Build Coastguard Worker                uniform float val.b = 2.0;
2952*35238bceSAndroid Build Coastguard Worker                output float out0 = 3.0;
2953*35238bceSAndroid Build Coastguard Worker            }
2954*35238bceSAndroid Build Coastguard Worker            vertex ""
2955*35238bceSAndroid Build Coastguard Worker                #version 300 es
2956*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
2957*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump vec4 a; mediump float b;};
2958*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
2959*35238bceSAndroid Build Coastguard Worker                void main()
2960*35238bceSAndroid Build Coastguard Worker                {
2961*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
2962*35238bceSAndroid Build Coastguard Worker                }
2963*35238bceSAndroid Build Coastguard Worker            ""
2964*35238bceSAndroid Build Coastguard Worker            fragment ""
2965*35238bceSAndroid Build Coastguard Worker                #version 300 es
2966*35238bceSAndroid Build Coastguard Worker                precision mediump float;
2967*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump vec4 a; mediump float b;};
2968*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
2969*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
2970*35238bceSAndroid Build Coastguard Worker                void main()
2971*35238bceSAndroid Build Coastguard Worker                {            out0 = val.a.x + val.b;
2972*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
2973*35238bceSAndroid Build Coastguard Worker                }
2974*35238bceSAndroid Build Coastguard Worker            ""
2975*35238bceSAndroid Build Coastguard Worker        end
2976*35238bceSAndroid Build Coastguard Worker
2977*35238bceSAndroid Build Coastguard Worker        case partial_vec4_float
2978*35238bceSAndroid Build Coastguard Worker            version 300 es
2979*35238bceSAndroid Build Coastguard Worker            desc "Uniform struct declared in both, used partially in both. Datatype vec4 and float"
2980*35238bceSAndroid Build Coastguard Worker            values {
2981*35238bceSAndroid Build Coastguard Worker                uniform vec4 val.a = vec4(1.0, 2.0, 3.0, 4.0);
2982*35238bceSAndroid Build Coastguard Worker                uniform float val.b = 2.0;
2983*35238bceSAndroid Build Coastguard Worker                output float out0 = 3.0;
2984*35238bceSAndroid Build Coastguard Worker            }
2985*35238bceSAndroid Build Coastguard Worker            vertex ""
2986*35238bceSAndroid Build Coastguard Worker                #version 300 es
2987*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
2988*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump vec4 a; mediump float b;};
2989*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
2990*35238bceSAndroid Build Coastguard Worker                out mediump float res;
2991*35238bceSAndroid Build Coastguard Worker                void main()
2992*35238bceSAndroid Build Coastguard Worker                {
2993*35238bceSAndroid Build Coastguard Worker                    res = val.a.x;
2994*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
2995*35238bceSAndroid Build Coastguard Worker                }
2996*35238bceSAndroid Build Coastguard Worker            ""
2997*35238bceSAndroid Build Coastguard Worker            fragment ""
2998*35238bceSAndroid Build Coastguard Worker                #version 300 es
2999*35238bceSAndroid Build Coastguard Worker                precision mediump float;
3000*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump vec4 a; mediump float b;};
3001*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
3002*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
3003*35238bceSAndroid Build Coastguard Worker                in mediump float res;
3004*35238bceSAndroid Build Coastguard Worker                void main()
3005*35238bceSAndroid Build Coastguard Worker                {            out0 = res + val.b;
3006*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
3007*35238bceSAndroid Build Coastguard Worker                }
3008*35238bceSAndroid Build Coastguard Worker            ""
3009*35238bceSAndroid Build Coastguard Worker        end
3010*35238bceSAndroid Build Coastguard Worker
3011*35238bceSAndroid Build Coastguard Worker        case partial_vec4_struct
3012*35238bceSAndroid Build Coastguard Worker            version 300 es
3013*35238bceSAndroid Build Coastguard Worker            desc "Uniform struct declared in both, used partially in both. Datatype vec4 and struct with vec4"
3014*35238bceSAndroid Build Coastguard Worker            values {
3015*35238bceSAndroid Build Coastguard Worker                uniform vec4 val.a = vec4(1.0, 2.0, 3.0, 4.0);
3016*35238bceSAndroid Build Coastguard Worker                uniform vec4 val.b.c = vec4(1.0, 2.0, 3.0, 4.0);
3017*35238bceSAndroid Build Coastguard Worker                output float out0 = 3.0;
3018*35238bceSAndroid Build Coastguard Worker            }
3019*35238bceSAndroid Build Coastguard Worker            vertex ""
3020*35238bceSAndroid Build Coastguard Worker                #version 300 es
3021*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
3022*35238bceSAndroid Build Coastguard Worker                struct Inner {mediump vec4 c;};
3023*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump vec4 a; Inner b;};
3024*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
3025*35238bceSAndroid Build Coastguard Worker                out mediump float res;
3026*35238bceSAndroid Build Coastguard Worker                void main()
3027*35238bceSAndroid Build Coastguard Worker                {
3028*35238bceSAndroid Build Coastguard Worker                    res = val.a.x;
3029*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
3030*35238bceSAndroid Build Coastguard Worker                }
3031*35238bceSAndroid Build Coastguard Worker            ""
3032*35238bceSAndroid Build Coastguard Worker            fragment ""
3033*35238bceSAndroid Build Coastguard Worker                #version 300 es
3034*35238bceSAndroid Build Coastguard Worker                precision mediump float;
3035*35238bceSAndroid Build Coastguard Worker                struct Inner {mediump vec4 c;};
3036*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump vec4 a; Inner b;};
3037*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
3038*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
3039*35238bceSAndroid Build Coastguard Worker                in mediump float res;
3040*35238bceSAndroid Build Coastguard Worker                void main()
3041*35238bceSAndroid Build Coastguard Worker                {            out0 = res + val.b.c.y;
3042*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
3043*35238bceSAndroid Build Coastguard Worker                }
3044*35238bceSAndroid Build Coastguard Worker            ""
3045*35238bceSAndroid Build Coastguard Worker        end
3046*35238bceSAndroid Build Coastguard Worker
3047*35238bceSAndroid Build Coastguard Worker        case partial_vec4_vec3_struct
3048*35238bceSAndroid Build Coastguard Worker            version 300 es
3049*35238bceSAndroid Build Coastguard Worker            desc "Uniform struct declared in both, used partially in both. Datatype vec4 and struct with vec3"
3050*35238bceSAndroid Build Coastguard Worker            values {
3051*35238bceSAndroid Build Coastguard Worker                uniform vec4 val.a = vec4(1.0, 2.0, 3.0, 4.0);
3052*35238bceSAndroid Build Coastguard Worker                uniform vec3 val.b.c = vec3(1.0, 2.0, 3.0);
3053*35238bceSAndroid Build Coastguard Worker                output float out0 = 3.0;
3054*35238bceSAndroid Build Coastguard Worker            }
3055*35238bceSAndroid Build Coastguard Worker            vertex ""
3056*35238bceSAndroid Build Coastguard Worker                #version 300 es
3057*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
3058*35238bceSAndroid Build Coastguard Worker                struct Inner {mediump vec3 c;};
3059*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump vec4 a; Inner b;};
3060*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
3061*35238bceSAndroid Build Coastguard Worker                out mediump float res;
3062*35238bceSAndroid Build Coastguard Worker                void main()
3063*35238bceSAndroid Build Coastguard Worker                {
3064*35238bceSAndroid Build Coastguard Worker                    res = val.a.x;
3065*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
3066*35238bceSAndroid Build Coastguard Worker                }
3067*35238bceSAndroid Build Coastguard Worker            ""
3068*35238bceSAndroid Build Coastguard Worker            fragment ""
3069*35238bceSAndroid Build Coastguard Worker                #version 300 es
3070*35238bceSAndroid Build Coastguard Worker                precision mediump float;
3071*35238bceSAndroid Build Coastguard Worker                struct Inner {mediump vec3 c;};
3072*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump vec4 a; Inner b;};
3073*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
3074*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
3075*35238bceSAndroid Build Coastguard Worker                in mediump float res;
3076*35238bceSAndroid Build Coastguard Worker                void main()
3077*35238bceSAndroid Build Coastguard Worker                {            out0 = res + val.b.c.y;
3078*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
3079*35238bceSAndroid Build Coastguard Worker                }
3080*35238bceSAndroid Build Coastguard Worker            ""
3081*35238bceSAndroid Build Coastguard Worker        end
3082*35238bceSAndroid Build Coastguard Worker
3083*35238bceSAndroid Build Coastguard Worker        case partial_vec2_vec3
3084*35238bceSAndroid Build Coastguard Worker            version 300 es
3085*35238bceSAndroid Build Coastguard Worker            desc "Uniform struct declared in both, used partially in both. Datatype vec2 and vec3"
3086*35238bceSAndroid Build Coastguard Worker            values {
3087*35238bceSAndroid Build Coastguard Worker                uniform vec2 val.a = vec2(1.0, 2.0);
3088*35238bceSAndroid Build Coastguard Worker                uniform vec3 val.b = vec3(1.0, 2.0, 3.0);
3089*35238bceSAndroid Build Coastguard Worker                output float out0 = 3.0;
3090*35238bceSAndroid Build Coastguard Worker            }
3091*35238bceSAndroid Build Coastguard Worker            vertex ""
3092*35238bceSAndroid Build Coastguard Worker                #version 300 es
3093*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
3094*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump vec2 a; mediump vec3 b;};
3095*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
3096*35238bceSAndroid Build Coastguard Worker                out mediump float res;
3097*35238bceSAndroid Build Coastguard Worker                void main()
3098*35238bceSAndroid Build Coastguard Worker                {
3099*35238bceSAndroid Build Coastguard Worker                    res = val.a.x;
3100*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
3101*35238bceSAndroid Build Coastguard Worker                }
3102*35238bceSAndroid Build Coastguard Worker            ""
3103*35238bceSAndroid Build Coastguard Worker            fragment ""
3104*35238bceSAndroid Build Coastguard Worker                #version 300 es
3105*35238bceSAndroid Build Coastguard Worker                precision mediump float;
3106*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump vec2 a; mediump vec3 b;};
3107*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
3108*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
3109*35238bceSAndroid Build Coastguard Worker                in mediump float res;
3110*35238bceSAndroid Build Coastguard Worker                void main()
3111*35238bceSAndroid Build Coastguard Worker                {            out0 = res + val.b.y;
3112*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
3113*35238bceSAndroid Build Coastguard Worker                }
3114*35238bceSAndroid Build Coastguard Worker            ""
3115*35238bceSAndroid Build Coastguard Worker        end
3116*35238bceSAndroid Build Coastguard Worker
3117*35238bceSAndroid Build Coastguard Worker        case partial_vec2_int
3118*35238bceSAndroid Build Coastguard Worker            version 300 es
3119*35238bceSAndroid Build Coastguard Worker            desc "Uniform struct declared in both, used partially in both. Datatype vec2 and int"
3120*35238bceSAndroid Build Coastguard Worker            values {
3121*35238bceSAndroid Build Coastguard Worker                uniform vec2 val.a = vec2(1.0, 2.0);
3122*35238bceSAndroid Build Coastguard Worker                uniform int val.b = 2;
3123*35238bceSAndroid Build Coastguard Worker                output float out0 = 3.0;
3124*35238bceSAndroid Build Coastguard Worker            }
3125*35238bceSAndroid Build Coastguard Worker            vertex ""
3126*35238bceSAndroid Build Coastguard Worker                #version 300 es
3127*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
3128*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump vec2 a; mediump int b;};
3129*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
3130*35238bceSAndroid Build Coastguard Worker                out mediump float res;
3131*35238bceSAndroid Build Coastguard Worker                void main()
3132*35238bceSAndroid Build Coastguard Worker                {
3133*35238bceSAndroid Build Coastguard Worker                    res = val.a.x;
3134*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
3135*35238bceSAndroid Build Coastguard Worker                }
3136*35238bceSAndroid Build Coastguard Worker            ""
3137*35238bceSAndroid Build Coastguard Worker            fragment ""
3138*35238bceSAndroid Build Coastguard Worker                #version 300 es
3139*35238bceSAndroid Build Coastguard Worker                precision mediump float;
3140*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump vec2 a; mediump int b;};
3141*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
3142*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
3143*35238bceSAndroid Build Coastguard Worker                in mediump float res;
3144*35238bceSAndroid Build Coastguard Worker                void main()
3145*35238bceSAndroid Build Coastguard Worker                {            out0 = res + float(val.b);
3146*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
3147*35238bceSAndroid Build Coastguard Worker                }
3148*35238bceSAndroid Build Coastguard Worker            ""
3149*35238bceSAndroid Build Coastguard Worker        end
3150*35238bceSAndroid Build Coastguard Worker
3151*35238bceSAndroid Build Coastguard Worker        case partial_int_float
3152*35238bceSAndroid Build Coastguard Worker            version 300 es
3153*35238bceSAndroid Build Coastguard Worker            desc "Uniform struct declared in both, used partially in both. Datatype int and float"
3154*35238bceSAndroid Build Coastguard Worker            values {
3155*35238bceSAndroid Build Coastguard Worker                uniform float val.a = 1.0;
3156*35238bceSAndroid Build Coastguard Worker                uniform int val.b = 2;
3157*35238bceSAndroid Build Coastguard Worker                output float out0 = 3.0;
3158*35238bceSAndroid Build Coastguard Worker            }
3159*35238bceSAndroid Build Coastguard Worker            vertex ""
3160*35238bceSAndroid Build Coastguard Worker                #version 300 es
3161*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
3162*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump float a; mediump int b;};
3163*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
3164*35238bceSAndroid Build Coastguard Worker                out mediump float res;
3165*35238bceSAndroid Build Coastguard Worker                void main()
3166*35238bceSAndroid Build Coastguard Worker                {
3167*35238bceSAndroid Build Coastguard Worker                    res = val.a;
3168*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
3169*35238bceSAndroid Build Coastguard Worker                }
3170*35238bceSAndroid Build Coastguard Worker            ""
3171*35238bceSAndroid Build Coastguard Worker            fragment ""
3172*35238bceSAndroid Build Coastguard Worker                #version 300 es
3173*35238bceSAndroid Build Coastguard Worker                precision mediump float;
3174*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump float a; mediump int b;};
3175*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
3176*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
3177*35238bceSAndroid Build Coastguard Worker                in mediump float res;
3178*35238bceSAndroid Build Coastguard Worker                void main()
3179*35238bceSAndroid Build Coastguard Worker                {            out0 = res + float(val.b);
3180*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
3181*35238bceSAndroid Build Coastguard Worker                }
3182*35238bceSAndroid Build Coastguard Worker            ""
3183*35238bceSAndroid Build Coastguard Worker        end
3184*35238bceSAndroid Build Coastguard Worker
3185*35238bceSAndroid Build Coastguard Worker        case partial_bvec2_vec2
3186*35238bceSAndroid Build Coastguard Worker            version 300 es
3187*35238bceSAndroid Build Coastguard Worker            desc "Uniform struct declared in both, used partially in both. Datatype bvec2 and vec2"
3188*35238bceSAndroid Build Coastguard Worker            values {
3189*35238bceSAndroid Build Coastguard Worker                uniform bvec2 val.a = bvec2(true, true);
3190*35238bceSAndroid Build Coastguard Worker                uniform vec2 val.b = vec2(1.0, 2.0);
3191*35238bceSAndroid Build Coastguard Worker                output float out0 = 3.0;
3192*35238bceSAndroid Build Coastguard Worker            }
3193*35238bceSAndroid Build Coastguard Worker            vertex ""
3194*35238bceSAndroid Build Coastguard Worker                #version 300 es
3195*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
3196*35238bceSAndroid Build Coastguard Worker                struct Struct {bvec2 a; mediump vec2 b;};
3197*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
3198*35238bceSAndroid Build Coastguard Worker                out mediump float res;
3199*35238bceSAndroid Build Coastguard Worker                void main()
3200*35238bceSAndroid Build Coastguard Worker                {
3201*35238bceSAndroid Build Coastguard Worker                    res = float(val.a.x);
3202*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
3203*35238bceSAndroid Build Coastguard Worker                }
3204*35238bceSAndroid Build Coastguard Worker            ""
3205*35238bceSAndroid Build Coastguard Worker            fragment ""
3206*35238bceSAndroid Build Coastguard Worker                #version 300 es
3207*35238bceSAndroid Build Coastguard Worker                precision mediump float;
3208*35238bceSAndroid Build Coastguard Worker                struct Struct {bvec2 a; mediump vec2 b;};
3209*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
3210*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
3211*35238bceSAndroid Build Coastguard Worker                in mediump float res;
3212*35238bceSAndroid Build Coastguard Worker                void main()
3213*35238bceSAndroid Build Coastguard Worker                {            out0 = res + val.b.y;
3214*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
3215*35238bceSAndroid Build Coastguard Worker                }
3216*35238bceSAndroid Build Coastguard Worker            ""
3217*35238bceSAndroid Build Coastguard Worker        end
3218*35238bceSAndroid Build Coastguard Worker
3219*35238bceSAndroid Build Coastguard Worker        case partial_ivec2_vec2
3220*35238bceSAndroid Build Coastguard Worker            version 300 es
3221*35238bceSAndroid Build Coastguard Worker            desc "Uniform struct declared in both, used partially in both. Datatype ivec2 and vec2"
3222*35238bceSAndroid Build Coastguard Worker            values {
3223*35238bceSAndroid Build Coastguard Worker                uniform ivec2 val.a = ivec2(1, 2);
3224*35238bceSAndroid Build Coastguard Worker                uniform vec2 val.b = vec2(1.0, 2.0);
3225*35238bceSAndroid Build Coastguard Worker                output float out0 = 3.0;
3226*35238bceSAndroid Build Coastguard Worker            }
3227*35238bceSAndroid Build Coastguard Worker            vertex ""
3228*35238bceSAndroid Build Coastguard Worker                #version 300 es
3229*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
3230*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump ivec2 a; mediump vec2 b;};
3231*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
3232*35238bceSAndroid Build Coastguard Worker                out mediump float res;
3233*35238bceSAndroid Build Coastguard Worker                void main()
3234*35238bceSAndroid Build Coastguard Worker                {
3235*35238bceSAndroid Build Coastguard Worker                    res = vec2(val.a).x;
3236*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
3237*35238bceSAndroid Build Coastguard Worker                }
3238*35238bceSAndroid Build Coastguard Worker            ""
3239*35238bceSAndroid Build Coastguard Worker            fragment ""
3240*35238bceSAndroid Build Coastguard Worker                #version 300 es
3241*35238bceSAndroid Build Coastguard Worker                precision mediump float;
3242*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump ivec2 a; mediump vec2 b;};
3243*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
3244*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
3245*35238bceSAndroid Build Coastguard Worker                in mediump float res;
3246*35238bceSAndroid Build Coastguard Worker                void main()
3247*35238bceSAndroid Build Coastguard Worker                {            out0 = res + val.b.y;
3248*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
3249*35238bceSAndroid Build Coastguard Worker                }
3250*35238bceSAndroid Build Coastguard Worker            ""
3251*35238bceSAndroid Build Coastguard Worker        end
3252*35238bceSAndroid Build Coastguard Worker
3253*35238bceSAndroid Build Coastguard Worker        case partial_ivec2_ivec2
3254*35238bceSAndroid Build Coastguard Worker            version 300 es
3255*35238bceSAndroid Build Coastguard Worker            desc "Uniform struct declared in both, used partially in both. Datatype ivec2 and ivec2"
3256*35238bceSAndroid Build Coastguard Worker            values {
3257*35238bceSAndroid Build Coastguard Worker                uniform ivec2 val.a = ivec2(1, 2);
3258*35238bceSAndroid Build Coastguard Worker                uniform ivec2 val.b = ivec2(1, 2);
3259*35238bceSAndroid Build Coastguard Worker                output float out0 = 3.0;
3260*35238bceSAndroid Build Coastguard Worker            }
3261*35238bceSAndroid Build Coastguard Worker            vertex ""
3262*35238bceSAndroid Build Coastguard Worker                #version 300 es
3263*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
3264*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump ivec2 a; mediump ivec2 b;};
3265*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
3266*35238bceSAndroid Build Coastguard Worker                out mediump float res;
3267*35238bceSAndroid Build Coastguard Worker                void main()
3268*35238bceSAndroid Build Coastguard Worker                {
3269*35238bceSAndroid Build Coastguard Worker                    res = vec2(val.a).x;
3270*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
3271*35238bceSAndroid Build Coastguard Worker                }
3272*35238bceSAndroid Build Coastguard Worker            ""
3273*35238bceSAndroid Build Coastguard Worker            fragment ""
3274*35238bceSAndroid Build Coastguard Worker                #version 300 es
3275*35238bceSAndroid Build Coastguard Worker                precision mediump float;
3276*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump ivec2 a; mediump ivec2 b;};
3277*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
3278*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
3279*35238bceSAndroid Build Coastguard Worker                in mediump float res;
3280*35238bceSAndroid Build Coastguard Worker                void main()
3281*35238bceSAndroid Build Coastguard Worker                {            out0 = res + vec2(val.b).y;
3282*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
3283*35238bceSAndroid Build Coastguard Worker                }
3284*35238bceSAndroid Build Coastguard Worker            ""
3285*35238bceSAndroid Build Coastguard Worker        end
3286*35238bceSAndroid Build Coastguard Worker
3287*35238bceSAndroid Build Coastguard Worker        case type_conflict_1
3288*35238bceSAndroid Build Coastguard Worker            version 300 es
3289*35238bceSAndroid Build Coastguard Worker            desc "Fragment struct has one less member than fragment version"
3290*35238bceSAndroid Build Coastguard Worker            expect link_fail
3291*35238bceSAndroid Build Coastguard Worker            values {output float out0 = 3.0;}
3292*35238bceSAndroid Build Coastguard Worker            vertex ""
3293*35238bceSAndroid Build Coastguard Worker                #version 300 es
3294*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
3295*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump float a; mediump float b;};
3296*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
3297*35238bceSAndroid Build Coastguard Worker                out mediump float res;
3298*35238bceSAndroid Build Coastguard Worker                void main()
3299*35238bceSAndroid Build Coastguard Worker                {
3300*35238bceSAndroid Build Coastguard Worker                    res = val.a;
3301*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
3302*35238bceSAndroid Build Coastguard Worker                }
3303*35238bceSAndroid Build Coastguard Worker            ""
3304*35238bceSAndroid Build Coastguard Worker            fragment ""
3305*35238bceSAndroid Build Coastguard Worker                #version 300 es
3306*35238bceSAndroid Build Coastguard Worker                precision mediump float;
3307*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump float a;};
3308*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
3309*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
3310*35238bceSAndroid Build Coastguard Worker                in mediump float res;
3311*35238bceSAndroid Build Coastguard Worker                void main()
3312*35238bceSAndroid Build Coastguard Worker                {            out0 = res + val.a;
3313*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
3314*35238bceSAndroid Build Coastguard Worker                }
3315*35238bceSAndroid Build Coastguard Worker            ""
3316*35238bceSAndroid Build Coastguard Worker        end
3317*35238bceSAndroid Build Coastguard Worker
3318*35238bceSAndroid Build Coastguard Worker        case type_conflict_2
3319*35238bceSAndroid Build Coastguard Worker            version 300 es
3320*35238bceSAndroid Build Coastguard Worker            desc "Vertex struct has int, fragment struct has float."
3321*35238bceSAndroid Build Coastguard Worker            expect link_fail
3322*35238bceSAndroid Build Coastguard Worker            values {output float out0 = 3.0;}
3323*35238bceSAndroid Build Coastguard Worker            vertex ""
3324*35238bceSAndroid Build Coastguard Worker                #version 300 es
3325*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
3326*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump int a;};
3327*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
3328*35238bceSAndroid Build Coastguard Worker                out mediump float res;
3329*35238bceSAndroid Build Coastguard Worker                void main()
3330*35238bceSAndroid Build Coastguard Worker                {
3331*35238bceSAndroid Build Coastguard Worker                    res = float(val.a);
3332*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
3333*35238bceSAndroid Build Coastguard Worker                }
3334*35238bceSAndroid Build Coastguard Worker            ""
3335*35238bceSAndroid Build Coastguard Worker            fragment ""
3336*35238bceSAndroid Build Coastguard Worker                #version 300 es
3337*35238bceSAndroid Build Coastguard Worker                precision mediump float;
3338*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump float a;};
3339*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
3340*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
3341*35238bceSAndroid Build Coastguard Worker                in mediump float res;
3342*35238bceSAndroid Build Coastguard Worker                void main()
3343*35238bceSAndroid Build Coastguard Worker                {            out0 = val.a;
3344*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
3345*35238bceSAndroid Build Coastguard Worker                }
3346*35238bceSAndroid Build Coastguard Worker            ""
3347*35238bceSAndroid Build Coastguard Worker        end
3348*35238bceSAndroid Build Coastguard Worker
3349*35238bceSAndroid Build Coastguard Worker        case type_conflict_3
3350*35238bceSAndroid Build Coastguard Worker            version 300 es
3351*35238bceSAndroid Build Coastguard Worker            desc "Vertex struct has vec3, fragment struct has vec4."
3352*35238bceSAndroid Build Coastguard Worker            expect link_fail
3353*35238bceSAndroid Build Coastguard Worker            values {output float out0 = 3.0;}
3354*35238bceSAndroid Build Coastguard Worker            vertex ""
3355*35238bceSAndroid Build Coastguard Worker                #version 300 es
3356*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
3357*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump vec3 a;};
3358*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
3359*35238bceSAndroid Build Coastguard Worker                out mediump float res;
3360*35238bceSAndroid Build Coastguard Worker                void main()
3361*35238bceSAndroid Build Coastguard Worker                {
3362*35238bceSAndroid Build Coastguard Worker                    res = float(val.a.x);
3363*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
3364*35238bceSAndroid Build Coastguard Worker                }
3365*35238bceSAndroid Build Coastguard Worker            ""
3366*35238bceSAndroid Build Coastguard Worker            fragment ""
3367*35238bceSAndroid Build Coastguard Worker                #version 300 es
3368*35238bceSAndroid Build Coastguard Worker                precision mediump float;
3369*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump vec4 a;};
3370*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
3371*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
3372*35238bceSAndroid Build Coastguard Worker                in mediump float res;
3373*35238bceSAndroid Build Coastguard Worker                void main()
3374*35238bceSAndroid Build Coastguard Worker                {            out0 = val.a.x;
3375*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
3376*35238bceSAndroid Build Coastguard Worker                }
3377*35238bceSAndroid Build Coastguard Worker            ""
3378*35238bceSAndroid Build Coastguard Worker        end
3379*35238bceSAndroid Build Coastguard Worker
3380*35238bceSAndroid Build Coastguard Worker        case precision_conflict_1
3381*35238bceSAndroid Build Coastguard Worker            version 300 es
3382*35238bceSAndroid Build Coastguard Worker            desc "Vertex side struct has highp, fragment side struct mediump."
3383*35238bceSAndroid Build Coastguard Worker            expect link_fail
3384*35238bceSAndroid Build Coastguard Worker            values {output float out0 = 3.0;}
3385*35238bceSAndroid Build Coastguard Worker            vertex ""
3386*35238bceSAndroid Build Coastguard Worker                #version 300 es
3387*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
3388*35238bceSAndroid Build Coastguard Worker                struct Struct {highp float a;};
3389*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
3390*35238bceSAndroid Build Coastguard Worker                out mediump float res;
3391*35238bceSAndroid Build Coastguard Worker                void main()
3392*35238bceSAndroid Build Coastguard Worker                {
3393*35238bceSAndroid Build Coastguard Worker                    res = val.a;
3394*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
3395*35238bceSAndroid Build Coastguard Worker                }
3396*35238bceSAndroid Build Coastguard Worker            ""
3397*35238bceSAndroid Build Coastguard Worker            fragment ""
3398*35238bceSAndroid Build Coastguard Worker                #version 300 es
3399*35238bceSAndroid Build Coastguard Worker                precision mediump float;
3400*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump float a;};
3401*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
3402*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
3403*35238bceSAndroid Build Coastguard Worker                in mediump float res;
3404*35238bceSAndroid Build Coastguard Worker                void main()
3405*35238bceSAndroid Build Coastguard Worker                {            out0 = val.a;
3406*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
3407*35238bceSAndroid Build Coastguard Worker                }
3408*35238bceSAndroid Build Coastguard Worker            ""
3409*35238bceSAndroid Build Coastguard Worker        end
3410*35238bceSAndroid Build Coastguard Worker
3411*35238bceSAndroid Build Coastguard Worker        case precision_conflict_2
3412*35238bceSAndroid Build Coastguard Worker            version 300 es
3413*35238bceSAndroid Build Coastguard Worker            desc "Vertex side struct has mediump, fragment side struct lowp."
3414*35238bceSAndroid Build Coastguard Worker            expect link_fail
3415*35238bceSAndroid Build Coastguard Worker            values {output float out0 = 3.0;}
3416*35238bceSAndroid Build Coastguard Worker            vertex ""
3417*35238bceSAndroid Build Coastguard Worker                #version 300 es
3418*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
3419*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump float a;};
3420*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
3421*35238bceSAndroid Build Coastguard Worker                out mediump float res;
3422*35238bceSAndroid Build Coastguard Worker                void main()
3423*35238bceSAndroid Build Coastguard Worker                {
3424*35238bceSAndroid Build Coastguard Worker                    res = val.a;
3425*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
3426*35238bceSAndroid Build Coastguard Worker                }
3427*35238bceSAndroid Build Coastguard Worker            ""
3428*35238bceSAndroid Build Coastguard Worker            fragment ""
3429*35238bceSAndroid Build Coastguard Worker                #version 300 es
3430*35238bceSAndroid Build Coastguard Worker                precision mediump float;
3431*35238bceSAndroid Build Coastguard Worker                struct Struct {lowp float a;};
3432*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
3433*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
3434*35238bceSAndroid Build Coastguard Worker                in mediump float res;
3435*35238bceSAndroid Build Coastguard Worker                void main()
3436*35238bceSAndroid Build Coastguard Worker                {            out0 = val.a;
3437*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
3438*35238bceSAndroid Build Coastguard Worker                }
3439*35238bceSAndroid Build Coastguard Worker            ""
3440*35238bceSAndroid Build Coastguard Worker        end
3441*35238bceSAndroid Build Coastguard Worker
3442*35238bceSAndroid Build Coastguard Worker        case precision_conflict_3
3443*35238bceSAndroid Build Coastguard Worker            version 300 es
3444*35238bceSAndroid Build Coastguard Worker            desc "Vertex side struct has lowp, fragment side struct mediump."
3445*35238bceSAndroid Build Coastguard Worker            expect link_fail
3446*35238bceSAndroid Build Coastguard Worker            values {output float out0 = 3.0;}
3447*35238bceSAndroid Build Coastguard Worker            vertex ""
3448*35238bceSAndroid Build Coastguard Worker                #version 300 es
3449*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
3450*35238bceSAndroid Build Coastguard Worker                struct Struct {lowp float a;};
3451*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
3452*35238bceSAndroid Build Coastguard Worker                out mediump float res;
3453*35238bceSAndroid Build Coastguard Worker                void main()
3454*35238bceSAndroid Build Coastguard Worker                {
3455*35238bceSAndroid Build Coastguard Worker                    res = val.a;
3456*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
3457*35238bceSAndroid Build Coastguard Worker                }
3458*35238bceSAndroid Build Coastguard Worker            ""
3459*35238bceSAndroid Build Coastguard Worker            fragment ""
3460*35238bceSAndroid Build Coastguard Worker                #version 300 es
3461*35238bceSAndroid Build Coastguard Worker                precision mediump float;
3462*35238bceSAndroid Build Coastguard Worker                struct Struct {mediump float a;};
3463*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
3464*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
3465*35238bceSAndroid Build Coastguard Worker                in mediump float res;
3466*35238bceSAndroid Build Coastguard Worker                void main()
3467*35238bceSAndroid Build Coastguard Worker                {            out0 = val.a;
3468*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
3469*35238bceSAndroid Build Coastguard Worker                }
3470*35238bceSAndroid Build Coastguard Worker            ""
3471*35238bceSAndroid Build Coastguard Worker        end
3472*35238bceSAndroid Build Coastguard Worker
3473*35238bceSAndroid Build Coastguard Worker        case precision_conflict_4
3474*35238bceSAndroid Build Coastguard Worker            version 300 es
3475*35238bceSAndroid Build Coastguard Worker            desc "Vertex side struct has lowp, fragment side struct implicit mediump."
3476*35238bceSAndroid Build Coastguard Worker            expect link_fail
3477*35238bceSAndroid Build Coastguard Worker            values {output float out0 = 3.0;}
3478*35238bceSAndroid Build Coastguard Worker            vertex ""
3479*35238bceSAndroid Build Coastguard Worker                #version 300 es
3480*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
3481*35238bceSAndroid Build Coastguard Worker                struct Struct {lowp float a;};
3482*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
3483*35238bceSAndroid Build Coastguard Worker                out mediump float res;
3484*35238bceSAndroid Build Coastguard Worker                void main()
3485*35238bceSAndroid Build Coastguard Worker                {
3486*35238bceSAndroid Build Coastguard Worker                    res = val.a;
3487*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
3488*35238bceSAndroid Build Coastguard Worker                }
3489*35238bceSAndroid Build Coastguard Worker            ""
3490*35238bceSAndroid Build Coastguard Worker            fragment ""
3491*35238bceSAndroid Build Coastguard Worker                #version 300 es
3492*35238bceSAndroid Build Coastguard Worker                precision mediump float;
3493*35238bceSAndroid Build Coastguard Worker                struct Struct {float a;};
3494*35238bceSAndroid Build Coastguard Worker                uniform Struct val;
3495*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
3496*35238bceSAndroid Build Coastguard Worker                in mediump float res;
3497*35238bceSAndroid Build Coastguard Worker                void main()
3498*35238bceSAndroid Build Coastguard Worker                {            out0 = val.a;
3499*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
3500*35238bceSAndroid Build Coastguard Worker                }
3501*35238bceSAndroid Build Coastguard Worker            ""
3502*35238bceSAndroid Build Coastguard Worker        end
3503*35238bceSAndroid Build Coastguard Worker
3504*35238bceSAndroid Build Coastguard Worker        case light_struct_highp
3505*35238bceSAndroid Build Coastguard Worker            version 300 es
3506*35238bceSAndroid Build Coastguard Worker            desc "Complex Light struct from use case tests."
3507*35238bceSAndroid Build Coastguard Worker            values {
3508*35238bceSAndroid Build Coastguard Worker                uniform float val.constantAttenuation = 1.0;
3509*35238bceSAndroid Build Coastguard Worker                uniform float val.quadraticAttenuation = 1.0;
3510*35238bceSAndroid Build Coastguard Worker                output float out0 = 2.0;
3511*35238bceSAndroid Build Coastguard Worker            }
3512*35238bceSAndroid Build Coastguard Worker            vertex ""
3513*35238bceSAndroid Build Coastguard Worker                #version 300 es
3514*35238bceSAndroid Build Coastguard Worker                struct Light
3515*35238bceSAndroid Build Coastguard Worker                {
3516*35238bceSAndroid Build Coastguard Worker                    mediump vec3    color;
3517*35238bceSAndroid Build Coastguard Worker                    highp vec4        position;
3518*35238bceSAndroid Build Coastguard Worker                    highp vec3        direction;
3519*35238bceSAndroid Build Coastguard Worker                    mediump float    constantAttenuation;
3520*35238bceSAndroid Build Coastguard Worker                    mediump float    linearAttenuation;
3521*35238bceSAndroid Build Coastguard Worker                    mediump float    quadraticAttenuation;
3522*35238bceSAndroid Build Coastguard Worker                };
3523*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
3524*35238bceSAndroid Build Coastguard Worker                uniform Light val;
3525*35238bceSAndroid Build Coastguard Worker                out mediump float res;
3526*35238bceSAndroid Build Coastguard Worker                void main()
3527*35238bceSAndroid Build Coastguard Worker                {
3528*35238bceSAndroid Build Coastguard Worker                    res = val.constantAttenuation;
3529*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
3530*35238bceSAndroid Build Coastguard Worker                }
3531*35238bceSAndroid Build Coastguard Worker            ""
3532*35238bceSAndroid Build Coastguard Worker            fragment ""
3533*35238bceSAndroid Build Coastguard Worker                #version 300 es
3534*35238bceSAndroid Build Coastguard Worker                precision mediump float;
3535*35238bceSAndroid Build Coastguard Worker                struct Light
3536*35238bceSAndroid Build Coastguard Worker                {
3537*35238bceSAndroid Build Coastguard Worker                    mediump vec3    color;
3538*35238bceSAndroid Build Coastguard Worker                    highp vec4        position;
3539*35238bceSAndroid Build Coastguard Worker                    highp vec3        direction;
3540*35238bceSAndroid Build Coastguard Worker                    mediump float    constantAttenuation;
3541*35238bceSAndroid Build Coastguard Worker                    mediump float    linearAttenuation;
3542*35238bceSAndroid Build Coastguard Worker                    mediump float    quadraticAttenuation;
3543*35238bceSAndroid Build Coastguard Worker                };
3544*35238bceSAndroid Build Coastguard Worker                struct Struct {float a;};
3545*35238bceSAndroid Build Coastguard Worker                uniform Light val;
3546*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
3547*35238bceSAndroid Build Coastguard Worker                in mediump float res;
3548*35238bceSAndroid Build Coastguard Worker                void main()
3549*35238bceSAndroid Build Coastguard Worker                {
3550*35238bceSAndroid Build Coastguard Worker                    out0 = res + val.quadraticAttenuation;
3551*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
3552*35238bceSAndroid Build Coastguard Worker                }
3553*35238bceSAndroid Build Coastguard Worker            ""
3554*35238bceSAndroid Build Coastguard Worker        end
3555*35238bceSAndroid Build Coastguard Worker
3556*35238bceSAndroid Build Coastguard Worker        case light_struct_mediump
3557*35238bceSAndroid Build Coastguard Worker            version 300 es
3558*35238bceSAndroid Build Coastguard Worker            desc "Complex Light struct from use case tests, without highp usage"
3559*35238bceSAndroid Build Coastguard Worker            values {
3560*35238bceSAndroid Build Coastguard Worker                uniform float val.constantAttenuation = 1.0;
3561*35238bceSAndroid Build Coastguard Worker                uniform float val.quadraticAttenuation = 1.0;
3562*35238bceSAndroid Build Coastguard Worker                output float out0 = 2.0;
3563*35238bceSAndroid Build Coastguard Worker            }
3564*35238bceSAndroid Build Coastguard Worker            vertex ""
3565*35238bceSAndroid Build Coastguard Worker                #version 300 es
3566*35238bceSAndroid Build Coastguard Worker                struct Light
3567*35238bceSAndroid Build Coastguard Worker                {
3568*35238bceSAndroid Build Coastguard Worker                    mediump vec3    color;
3569*35238bceSAndroid Build Coastguard Worker                    mediump vec4    position;
3570*35238bceSAndroid Build Coastguard Worker                    mediump vec3    direction;
3571*35238bceSAndroid Build Coastguard Worker                    mediump float    constantAttenuation;
3572*35238bceSAndroid Build Coastguard Worker                    mediump float    linearAttenuation;
3573*35238bceSAndroid Build Coastguard Worker                    mediump float    quadraticAttenuation;
3574*35238bceSAndroid Build Coastguard Worker                };
3575*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
3576*35238bceSAndroid Build Coastguard Worker                uniform Light val;
3577*35238bceSAndroid Build Coastguard Worker                out mediump float res;
3578*35238bceSAndroid Build Coastguard Worker                void main()
3579*35238bceSAndroid Build Coastguard Worker                {
3580*35238bceSAndroid Build Coastguard Worker                    res = val.constantAttenuation;
3581*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
3582*35238bceSAndroid Build Coastguard Worker                }
3583*35238bceSAndroid Build Coastguard Worker            ""
3584*35238bceSAndroid Build Coastguard Worker            fragment ""
3585*35238bceSAndroid Build Coastguard Worker                #version 300 es
3586*35238bceSAndroid Build Coastguard Worker                precision mediump float;
3587*35238bceSAndroid Build Coastguard Worker                struct Light
3588*35238bceSAndroid Build Coastguard Worker                {
3589*35238bceSAndroid Build Coastguard Worker                    mediump vec3    color;
3590*35238bceSAndroid Build Coastguard Worker                    mediump vec4    position;
3591*35238bceSAndroid Build Coastguard Worker                    mediump vec3    direction;
3592*35238bceSAndroid Build Coastguard Worker                    mediump float    constantAttenuation;
3593*35238bceSAndroid Build Coastguard Worker                    mediump float    linearAttenuation;
3594*35238bceSAndroid Build Coastguard Worker                    mediump float    quadraticAttenuation;
3595*35238bceSAndroid Build Coastguard Worker                };
3596*35238bceSAndroid Build Coastguard Worker                struct Struct {float a;};
3597*35238bceSAndroid Build Coastguard Worker                uniform Light val;
3598*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
3599*35238bceSAndroid Build Coastguard Worker                in mediump float res;
3600*35238bceSAndroid Build Coastguard Worker                void main()
3601*35238bceSAndroid Build Coastguard Worker                {
3602*35238bceSAndroid Build Coastguard Worker                    out0 = res + val.quadraticAttenuation;
3603*35238bceSAndroid Build Coastguard Worker                    ${FRAGMENT_OUTPUT}
3604*35238bceSAndroid Build Coastguard Worker                }
3605*35238bceSAndroid Build Coastguard Worker            ""
3606*35238bceSAndroid Build Coastguard Worker        end
3607*35238bceSAndroid Build Coastguard Worker    end
3608*35238bceSAndroid Build Coastguard Worker
3609*35238bceSAndroid Build Coastguard Worker    group block "Uniform blocks"
3610*35238bceSAndroid Build Coastguard Worker        case type_mismatch
3611*35238bceSAndroid Build Coastguard Worker            version 300 es
3612*35238bceSAndroid Build Coastguard Worker            expect link_fail
3613*35238bceSAndroid Build Coastguard Worker            vertex ""
3614*35238bceSAndroid Build Coastguard Worker                #version 300 es
3615*35238bceSAndroid Build Coastguard Worker
3616*35238bceSAndroid Build Coastguard Worker                uniform Block
3617*35238bceSAndroid Build Coastguard Worker                {
3618*35238bceSAndroid Build Coastguard Worker                    highp vec4 val;
3619*35238bceSAndroid Build Coastguard Worker                };
3620*35238bceSAndroid Build Coastguard Worker
3621*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
3622*35238bceSAndroid Build Coastguard Worker                out mediump float res;
3623*35238bceSAndroid Build Coastguard Worker                void main()
3624*35238bceSAndroid Build Coastguard Worker                {
3625*35238bceSAndroid Build Coastguard Worker                    res = val.x;
3626*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
3627*35238bceSAndroid Build Coastguard Worker                }
3628*35238bceSAndroid Build Coastguard Worker            ""
3629*35238bceSAndroid Build Coastguard Worker            fragment ""
3630*35238bceSAndroid Build Coastguard Worker                #version 300 es
3631*35238bceSAndroid Build Coastguard Worker
3632*35238bceSAndroid Build Coastguard Worker                uniform Block
3633*35238bceSAndroid Build Coastguard Worker                {
3634*35238bceSAndroid Build Coastguard Worker                    highp vec3 val;
3635*35238bceSAndroid Build Coastguard Worker                };
3636*35238bceSAndroid Build Coastguard Worker
3637*35238bceSAndroid Build Coastguard Worker                precision mediump float;
3638*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
3639*35238bceSAndroid Build Coastguard Worker                in mediump float res;
3640*35238bceSAndroid Build Coastguard Worker                void main()
3641*35238bceSAndroid Build Coastguard Worker                {
3642*35238bceSAndroid Build Coastguard Worker                    dEQP_FragColor = vec4(val, 1.0);
3643*35238bceSAndroid Build Coastguard Worker                }
3644*35238bceSAndroid Build Coastguard Worker            ""
3645*35238bceSAndroid Build Coastguard Worker        end
3646*35238bceSAndroid Build Coastguard Worker
3647*35238bceSAndroid Build Coastguard Worker        case members_mismatch
3648*35238bceSAndroid Build Coastguard Worker            version 300 es
3649*35238bceSAndroid Build Coastguard Worker            expect link_fail
3650*35238bceSAndroid Build Coastguard Worker            vertex ""
3651*35238bceSAndroid Build Coastguard Worker                #version 300 es
3652*35238bceSAndroid Build Coastguard Worker
3653*35238bceSAndroid Build Coastguard Worker                uniform Block
3654*35238bceSAndroid Build Coastguard Worker                {
3655*35238bceSAndroid Build Coastguard Worker                    highp vec4 val;
3656*35238bceSAndroid Build Coastguard Worker                };
3657*35238bceSAndroid Build Coastguard Worker
3658*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
3659*35238bceSAndroid Build Coastguard Worker                out mediump float res;
3660*35238bceSAndroid Build Coastguard Worker                void main()
3661*35238bceSAndroid Build Coastguard Worker                {
3662*35238bceSAndroid Build Coastguard Worker                    res = val.x;
3663*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
3664*35238bceSAndroid Build Coastguard Worker                }
3665*35238bceSAndroid Build Coastguard Worker            ""
3666*35238bceSAndroid Build Coastguard Worker            fragment ""
3667*35238bceSAndroid Build Coastguard Worker                #version 300 es
3668*35238bceSAndroid Build Coastguard Worker
3669*35238bceSAndroid Build Coastguard Worker                uniform Block
3670*35238bceSAndroid Build Coastguard Worker                {
3671*35238bceSAndroid Build Coastguard Worker                    highp vec4 val;
3672*35238bceSAndroid Build Coastguard Worker                    lowp uint u;
3673*35238bceSAndroid Build Coastguard Worker                };
3674*35238bceSAndroid Build Coastguard Worker
3675*35238bceSAndroid Build Coastguard Worker                precision mediump float;
3676*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
3677*35238bceSAndroid Build Coastguard Worker                in mediump float res;
3678*35238bceSAndroid Build Coastguard Worker                void main()
3679*35238bceSAndroid Build Coastguard Worker                {
3680*35238bceSAndroid Build Coastguard Worker                    dEQP_FragColor = vec4(val);
3681*35238bceSAndroid Build Coastguard Worker                }
3682*35238bceSAndroid Build Coastguard Worker            ""
3683*35238bceSAndroid Build Coastguard Worker        end
3684*35238bceSAndroid Build Coastguard Worker
3685*35238bceSAndroid Build Coastguard Worker        case layout_qualifier_mismatch_1
3686*35238bceSAndroid Build Coastguard Worker            version 300 es
3687*35238bceSAndroid Build Coastguard Worker            expect link_fail
3688*35238bceSAndroid Build Coastguard Worker            vertex ""
3689*35238bceSAndroid Build Coastguard Worker                #version 300 es
3690*35238bceSAndroid Build Coastguard Worker
3691*35238bceSAndroid Build Coastguard Worker                layout(std140) uniform Block
3692*35238bceSAndroid Build Coastguard Worker                {
3693*35238bceSAndroid Build Coastguard Worker                    highp vec4 val;
3694*35238bceSAndroid Build Coastguard Worker                };
3695*35238bceSAndroid Build Coastguard Worker
3696*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
3697*35238bceSAndroid Build Coastguard Worker                out mediump float res;
3698*35238bceSAndroid Build Coastguard Worker                void main()
3699*35238bceSAndroid Build Coastguard Worker                {
3700*35238bceSAndroid Build Coastguard Worker                    res = val.x;
3701*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
3702*35238bceSAndroid Build Coastguard Worker                }
3703*35238bceSAndroid Build Coastguard Worker            ""
3704*35238bceSAndroid Build Coastguard Worker            fragment ""
3705*35238bceSAndroid Build Coastguard Worker                #version 300 es
3706*35238bceSAndroid Build Coastguard Worker
3707*35238bceSAndroid Build Coastguard Worker                uniform Block
3708*35238bceSAndroid Build Coastguard Worker                {
3709*35238bceSAndroid Build Coastguard Worker                    highp vec4 val;
3710*35238bceSAndroid Build Coastguard Worker                };
3711*35238bceSAndroid Build Coastguard Worker
3712*35238bceSAndroid Build Coastguard Worker                precision mediump float;
3713*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
3714*35238bceSAndroid Build Coastguard Worker                in mediump float res;
3715*35238bceSAndroid Build Coastguard Worker                void main()
3716*35238bceSAndroid Build Coastguard Worker                {
3717*35238bceSAndroid Build Coastguard Worker                    dEQP_FragColor = vec4(val);
3718*35238bceSAndroid Build Coastguard Worker                }
3719*35238bceSAndroid Build Coastguard Worker            ""
3720*35238bceSAndroid Build Coastguard Worker        end
3721*35238bceSAndroid Build Coastguard Worker
3722*35238bceSAndroid Build Coastguard Worker        case layout_qualifier_mismatch_2
3723*35238bceSAndroid Build Coastguard Worker            version 300 es
3724*35238bceSAndroid Build Coastguard Worker            expect link_fail
3725*35238bceSAndroid Build Coastguard Worker            vertex ""
3726*35238bceSAndroid Build Coastguard Worker                #version 300 es
3727*35238bceSAndroid Build Coastguard Worker
3728*35238bceSAndroid Build Coastguard Worker                layout(shared) uniform Block
3729*35238bceSAndroid Build Coastguard Worker                {
3730*35238bceSAndroid Build Coastguard Worker                    highp vec4 val;
3731*35238bceSAndroid Build Coastguard Worker                };
3732*35238bceSAndroid Build Coastguard Worker
3733*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
3734*35238bceSAndroid Build Coastguard Worker                out mediump float res;
3735*35238bceSAndroid Build Coastguard Worker                void main()
3736*35238bceSAndroid Build Coastguard Worker                {
3737*35238bceSAndroid Build Coastguard Worker                    res = val.x;
3738*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
3739*35238bceSAndroid Build Coastguard Worker                }
3740*35238bceSAndroid Build Coastguard Worker            ""
3741*35238bceSAndroid Build Coastguard Worker            fragment ""
3742*35238bceSAndroid Build Coastguard Worker                #version 300 es
3743*35238bceSAndroid Build Coastguard Worker
3744*35238bceSAndroid Build Coastguard Worker                layout(packed) uniform Block
3745*35238bceSAndroid Build Coastguard Worker                {
3746*35238bceSAndroid Build Coastguard Worker                    highp vec4 val;
3747*35238bceSAndroid Build Coastguard Worker                };
3748*35238bceSAndroid Build Coastguard Worker
3749*35238bceSAndroid Build Coastguard Worker                precision mediump float;
3750*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
3751*35238bceSAndroid Build Coastguard Worker                in mediump float res;
3752*35238bceSAndroid Build Coastguard Worker                void main()
3753*35238bceSAndroid Build Coastguard Worker                {
3754*35238bceSAndroid Build Coastguard Worker                    dEQP_FragColor = vec4(val);
3755*35238bceSAndroid Build Coastguard Worker                }
3756*35238bceSAndroid Build Coastguard Worker            ""
3757*35238bceSAndroid Build Coastguard Worker        end
3758*35238bceSAndroid Build Coastguard Worker
3759*35238bceSAndroid Build Coastguard Worker        case layout_qualifier_mismatch_3
3760*35238bceSAndroid Build Coastguard Worker            version 300 es
3761*35238bceSAndroid Build Coastguard Worker            expect link_fail
3762*35238bceSAndroid Build Coastguard Worker            vertex ""
3763*35238bceSAndroid Build Coastguard Worker                #version 300 es
3764*35238bceSAndroid Build Coastguard Worker
3765*35238bceSAndroid Build Coastguard Worker                layout(row_major) uniform Block
3766*35238bceSAndroid Build Coastguard Worker                {
3767*35238bceSAndroid Build Coastguard Worker                    highp vec4 val;
3768*35238bceSAndroid Build Coastguard Worker                };
3769*35238bceSAndroid Build Coastguard Worker
3770*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
3771*35238bceSAndroid Build Coastguard Worker                out mediump float res;
3772*35238bceSAndroid Build Coastguard Worker                void main()
3773*35238bceSAndroid Build Coastguard Worker                {
3774*35238bceSAndroid Build Coastguard Worker                    res = val.x;
3775*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
3776*35238bceSAndroid Build Coastguard Worker                }
3777*35238bceSAndroid Build Coastguard Worker            ""
3778*35238bceSAndroid Build Coastguard Worker            fragment ""
3779*35238bceSAndroid Build Coastguard Worker                #version 300 es
3780*35238bceSAndroid Build Coastguard Worker
3781*35238bceSAndroid Build Coastguard Worker                layout(column_major) uniform Block
3782*35238bceSAndroid Build Coastguard Worker                {
3783*35238bceSAndroid Build Coastguard Worker                    highp vec4 val;
3784*35238bceSAndroid Build Coastguard Worker                };
3785*35238bceSAndroid Build Coastguard Worker
3786*35238bceSAndroid Build Coastguard Worker                precision mediump float;
3787*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
3788*35238bceSAndroid Build Coastguard Worker                in mediump float res;
3789*35238bceSAndroid Build Coastguard Worker                void main()
3790*35238bceSAndroid Build Coastguard Worker                {
3791*35238bceSAndroid Build Coastguard Worker                    dEQP_FragColor = vec4(val);
3792*35238bceSAndroid Build Coastguard Worker                }
3793*35238bceSAndroid Build Coastguard Worker            ""
3794*35238bceSAndroid Build Coastguard Worker        end
3795*35238bceSAndroid Build Coastguard Worker
3796*35238bceSAndroid Build Coastguard Worker        case layout_qualifier_mismatch_4
3797*35238bceSAndroid Build Coastguard Worker            version 300 es
3798*35238bceSAndroid Build Coastguard Worker            expect link_fail
3799*35238bceSAndroid Build Coastguard Worker            vertex ""
3800*35238bceSAndroid Build Coastguard Worker                #version 300 es
3801*35238bceSAndroid Build Coastguard Worker
3802*35238bceSAndroid Build Coastguard Worker                layout(row_major) uniform Block
3803*35238bceSAndroid Build Coastguard Worker                {
3804*35238bceSAndroid Build Coastguard Worker                    highp mat3 val;
3805*35238bceSAndroid Build Coastguard Worker                };
3806*35238bceSAndroid Build Coastguard Worker
3807*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
3808*35238bceSAndroid Build Coastguard Worker                out mediump float res;
3809*35238bceSAndroid Build Coastguard Worker                void main()
3810*35238bceSAndroid Build Coastguard Worker                {
3811*35238bceSAndroid Build Coastguard Worker                    res = val[0][1];
3812*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
3813*35238bceSAndroid Build Coastguard Worker                }
3814*35238bceSAndroid Build Coastguard Worker            ""
3815*35238bceSAndroid Build Coastguard Worker            fragment ""
3816*35238bceSAndroid Build Coastguard Worker                #version 300 es
3817*35238bceSAndroid Build Coastguard Worker
3818*35238bceSAndroid Build Coastguard Worker                layout(column_major) uniform Block
3819*35238bceSAndroid Build Coastguard Worker                {
3820*35238bceSAndroid Build Coastguard Worker                    highp mat3 val;
3821*35238bceSAndroid Build Coastguard Worker                };
3822*35238bceSAndroid Build Coastguard Worker
3823*35238bceSAndroid Build Coastguard Worker                precision mediump float;
3824*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
3825*35238bceSAndroid Build Coastguard Worker                in mediump float res;
3826*35238bceSAndroid Build Coastguard Worker                void main()
3827*35238bceSAndroid Build Coastguard Worker                {
3828*35238bceSAndroid Build Coastguard Worker                    dEQP_FragColor = vec4(val[2], 1.0);
3829*35238bceSAndroid Build Coastguard Worker                }
3830*35238bceSAndroid Build Coastguard Worker            ""
3831*35238bceSAndroid Build Coastguard Worker        end
3832*35238bceSAndroid Build Coastguard Worker
3833*35238bceSAndroid Build Coastguard Worker        case layout_qualifier_mismatch_5
3834*35238bceSAndroid Build Coastguard Worker            version 300 es
3835*35238bceSAndroid Build Coastguard Worker            expect link_fail
3836*35238bceSAndroid Build Coastguard Worker            vertex ""
3837*35238bceSAndroid Build Coastguard Worker                #version 300 es
3838*35238bceSAndroid Build Coastguard Worker
3839*35238bceSAndroid Build Coastguard Worker                uniform Block
3840*35238bceSAndroid Build Coastguard Worker                {
3841*35238bceSAndroid Build Coastguard Worker                    layout(row_major) uniform highp mat3 val;
3842*35238bceSAndroid Build Coastguard Worker                };
3843*35238bceSAndroid Build Coastguard Worker
3844*35238bceSAndroid Build Coastguard Worker                ${VERTEX_DECLARATIONS}
3845*35238bceSAndroid Build Coastguard Worker                out mediump float res;
3846*35238bceSAndroid Build Coastguard Worker                void main()
3847*35238bceSAndroid Build Coastguard Worker                {
3848*35238bceSAndroid Build Coastguard Worker                    res = val[0][1];
3849*35238bceSAndroid Build Coastguard Worker                    ${VERTEX_OUTPUT}
3850*35238bceSAndroid Build Coastguard Worker                }
3851*35238bceSAndroid Build Coastguard Worker            ""
3852*35238bceSAndroid Build Coastguard Worker            fragment ""
3853*35238bceSAndroid Build Coastguard Worker                #version 300 es
3854*35238bceSAndroid Build Coastguard Worker
3855*35238bceSAndroid Build Coastguard Worker                uniform Block
3856*35238bceSAndroid Build Coastguard Worker                {
3857*35238bceSAndroid Build Coastguard Worker                    layout(column_major) uniform highp mat3 val;
3858*35238bceSAndroid Build Coastguard Worker                };
3859*35238bceSAndroid Build Coastguard Worker
3860*35238bceSAndroid Build Coastguard Worker                precision mediump float;
3861*35238bceSAndroid Build Coastguard Worker                ${FRAGMENT_DECLARATIONS}
3862*35238bceSAndroid Build Coastguard Worker                in mediump float res;
3863*35238bceSAndroid Build Coastguard Worker                void main()
3864*35238bceSAndroid Build Coastguard Worker                {
3865*35238bceSAndroid Build Coastguard Worker                    dEQP_FragColor = vec4(val[2], 1.0);
3866*35238bceSAndroid Build Coastguard Worker                }
3867*35238bceSAndroid Build Coastguard Worker            ""
3868*35238bceSAndroid Build Coastguard Worker        end
3869*35238bceSAndroid Build Coastguard Worker    end
3870*35238bceSAndroid Build Coastguard Workerend
3871