xref: /aosp_15_r20/external/deqp/data/gles3/shaders/conditionals.test (revision 35238bce31c2a825756842865a792f8cf7f89930)
1*35238bceSAndroid Build Coastguard Workergroup if "If Statements"
2*35238bceSAndroid Build Coastguard Worker
3*35238bceSAndroid Build Coastguard Worker    case single_statement
4*35238bceSAndroid Build Coastguard Worker        version 300 es
5*35238bceSAndroid Build Coastguard Worker        values
6*35238bceSAndroid Build Coastguard Worker        {
7*35238bceSAndroid Build Coastguard Worker            input float in0 = [ 0.0 | 1.0 | 2.0 ];
8*35238bceSAndroid Build Coastguard Worker            output float out0 = [ 0.0 | 1.0 | 1.0 ];
9*35238bceSAndroid Build Coastguard Worker        }
10*35238bceSAndroid Build Coastguard Worker
11*35238bceSAndroid Build Coastguard Worker        both ""
12*35238bceSAndroid Build Coastguard Worker            #version 300 es
13*35238bceSAndroid Build Coastguard Worker            precision mediump float;
14*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
15*35238bceSAndroid Build Coastguard Worker            void main()
16*35238bceSAndroid Build Coastguard Worker            {
17*35238bceSAndroid Build Coastguard Worker                out0 = 0.0;
18*35238bceSAndroid Build Coastguard Worker                if (in0 >= 1.0)
19*35238bceSAndroid Build Coastguard Worker                    out0 = 1.0;
20*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
21*35238bceSAndroid Build Coastguard Worker            }
22*35238bceSAndroid Build Coastguard Worker        ""
23*35238bceSAndroid Build Coastguard Worker    end
24*35238bceSAndroid Build Coastguard Worker
25*35238bceSAndroid Build Coastguard Worker    case compound_statement
26*35238bceSAndroid Build Coastguard Worker        version 300 es
27*35238bceSAndroid Build Coastguard Worker        values
28*35238bceSAndroid Build Coastguard Worker        {
29*35238bceSAndroid Build Coastguard Worker            input float in0 = [ 0.0 | 1.0 | 2.0 ];
30*35238bceSAndroid Build Coastguard Worker            output float out0 = [ 0.0 | 1.0 | 1.0 ];
31*35238bceSAndroid Build Coastguard Worker            output float out1 = [ 1.0 | 0.0 | 0.0 ];
32*35238bceSAndroid Build Coastguard Worker        }
33*35238bceSAndroid Build Coastguard Worker
34*35238bceSAndroid Build Coastguard Worker        both ""
35*35238bceSAndroid Build Coastguard Worker            #version 300 es
36*35238bceSAndroid Build Coastguard Worker            precision mediump float;
37*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
38*35238bceSAndroid Build Coastguard Worker            void main()
39*35238bceSAndroid Build Coastguard Worker            {
40*35238bceSAndroid Build Coastguard Worker                out0 = 0.0;
41*35238bceSAndroid Build Coastguard Worker                out1 = 1.0;
42*35238bceSAndroid Build Coastguard Worker                if (in0 >= 1.0)
43*35238bceSAndroid Build Coastguard Worker                {
44*35238bceSAndroid Build Coastguard Worker                    out0 = 1.0;
45*35238bceSAndroid Build Coastguard Worker                    out1 = 0.0;
46*35238bceSAndroid Build Coastguard Worker                }
47*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
48*35238bceSAndroid Build Coastguard Worker            }
49*35238bceSAndroid Build Coastguard Worker        ""
50*35238bceSAndroid Build Coastguard Worker    end
51*35238bceSAndroid Build Coastguard Worker
52*35238bceSAndroid Build Coastguard Worker    case sequence_statements
53*35238bceSAndroid Build Coastguard Worker        version 300 es
54*35238bceSAndroid Build Coastguard Worker        values
55*35238bceSAndroid Build Coastguard Worker        {
56*35238bceSAndroid Build Coastguard Worker            input float in0 = [ 0.0 | 1.0 | 2.0 ];
57*35238bceSAndroid Build Coastguard Worker            output float out0 = [ 0.0 | 1.0 | 1.0 ];
58*35238bceSAndroid Build Coastguard Worker            output float out1 = [ 1.0 | 0.0 | 0.0 ];
59*35238bceSAndroid Build Coastguard Worker        }
60*35238bceSAndroid Build Coastguard Worker
61*35238bceSAndroid Build Coastguard Worker        both ""
62*35238bceSAndroid Build Coastguard Worker            #version 300 es
63*35238bceSAndroid Build Coastguard Worker            precision mediump float;
64*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
65*35238bceSAndroid Build Coastguard Worker            void main()
66*35238bceSAndroid Build Coastguard Worker            {
67*35238bceSAndroid Build Coastguard Worker                out0 = 0.0;
68*35238bceSAndroid Build Coastguard Worker                out1 = 1.0;
69*35238bceSAndroid Build Coastguard Worker                if (in0 >= 1.0)
70*35238bceSAndroid Build Coastguard Worker                    out0 = 1.0, out1 = 0.0;
71*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
72*35238bceSAndroid Build Coastguard Worker            }
73*35238bceSAndroid Build Coastguard Worker        ""
74*35238bceSAndroid Build Coastguard Worker    end
75*35238bceSAndroid Build Coastguard Worker
76*35238bceSAndroid Build Coastguard Worker    case sequence_condition
77*35238bceSAndroid Build Coastguard Worker        version 300 es
78*35238bceSAndroid Build Coastguard Worker        values
79*35238bceSAndroid Build Coastguard Worker        {
80*35238bceSAndroid Build Coastguard Worker            input float in0 = [ 0.0 | 1.0 | 2.0 ];
81*35238bceSAndroid Build Coastguard Worker            output float out0 = [ 0.0 | 1.0 | 1.0 ];
82*35238bceSAndroid Build Coastguard Worker            output float out1 = [ 1.0 | 0.0 | 0.0 ];
83*35238bceSAndroid Build Coastguard Worker        }
84*35238bceSAndroid Build Coastguard Worker
85*35238bceSAndroid Build Coastguard Worker        both ""
86*35238bceSAndroid Build Coastguard Worker            #version 300 es
87*35238bceSAndroid Build Coastguard Worker            precision mediump float;
88*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
89*35238bceSAndroid Build Coastguard Worker            void main()
90*35238bceSAndroid Build Coastguard Worker            {
91*35238bceSAndroid Build Coastguard Worker                out0 = 0.0;
92*35238bceSAndroid Build Coastguard Worker                out1 = 1.0;
93*35238bceSAndroid Build Coastguard Worker                if (false, in0 >= 1.0)
94*35238bceSAndroid Build Coastguard Worker                    out0 = 1.0, out1 = 0.0;
95*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
96*35238bceSAndroid Build Coastguard Worker            }
97*35238bceSAndroid Build Coastguard Worker        ""
98*35238bceSAndroid Build Coastguard Worker    end
99*35238bceSAndroid Build Coastguard Worker
100*35238bceSAndroid Build Coastguard Worker    case complex_condition
101*35238bceSAndroid Build Coastguard Worker        version 300 es
102*35238bceSAndroid Build Coastguard Worker        values
103*35238bceSAndroid Build Coastguard Worker        {
104*35238bceSAndroid Build Coastguard Worker            input float in0 = [ 0.0 | 1.0 | 2.0 ];
105*35238bceSAndroid Build Coastguard Worker            output float out0 = [ 0.0 | 1.0 | 1.0 ];
106*35238bceSAndroid Build Coastguard Worker            output float out1 = [ 1.0 | 0.0 | 0.0 ];
107*35238bceSAndroid Build Coastguard Worker        }
108*35238bceSAndroid Build Coastguard Worker
109*35238bceSAndroid Build Coastguard Worker        both ""
110*35238bceSAndroid Build Coastguard Worker            #version 300 es
111*35238bceSAndroid Build Coastguard Worker            precision mediump float;
112*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
113*35238bceSAndroid Build Coastguard Worker            void main()
114*35238bceSAndroid Build Coastguard Worker            {
115*35238bceSAndroid Build Coastguard Worker                out0 = 0.0;
116*35238bceSAndroid Build Coastguard Worker                out1 = 1.0;
117*35238bceSAndroid Build Coastguard Worker                if (false || (in0 >= 1.0) && (in0 - 2.0*in0 < 0.0))
118*35238bceSAndroid Build Coastguard Worker                    out0 = 1.0, out1 = 0.0;
119*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
120*35238bceSAndroid Build Coastguard Worker            }
121*35238bceSAndroid Build Coastguard Worker        ""
122*35238bceSAndroid Build Coastguard Worker    end
123*35238bceSAndroid Build Coastguard Worker
124*35238bceSAndroid Build Coastguard Worker    case if_else
125*35238bceSAndroid Build Coastguard Worker        version 300 es
126*35238bceSAndroid Build Coastguard Worker        values
127*35238bceSAndroid Build Coastguard Worker        {
128*35238bceSAndroid Build Coastguard Worker            input float in0 = [ 0.0 | 1.0 | 2.0 ];
129*35238bceSAndroid Build Coastguard Worker            output float out0 = [ 0.0 | 1.0 | 1.0 ];
130*35238bceSAndroid Build Coastguard Worker        }
131*35238bceSAndroid Build Coastguard Worker
132*35238bceSAndroid Build Coastguard Worker        both ""
133*35238bceSAndroid Build Coastguard Worker            #version 300 es
134*35238bceSAndroid Build Coastguard Worker            precision mediump float;
135*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
136*35238bceSAndroid Build Coastguard Worker            void main()
137*35238bceSAndroid Build Coastguard Worker            {
138*35238bceSAndroid Build Coastguard Worker                if (in0 >= 1.0)
139*35238bceSAndroid Build Coastguard Worker                    out0 = 1.0;
140*35238bceSAndroid Build Coastguard Worker                else
141*35238bceSAndroid Build Coastguard Worker                    out0 = 0.0;
142*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
143*35238bceSAndroid Build Coastguard Worker            }
144*35238bceSAndroid Build Coastguard Worker        ""
145*35238bceSAndroid Build Coastguard Worker    end
146*35238bceSAndroid Build Coastguard Worker
147*35238bceSAndroid Build Coastguard Worker    case if_elseif
148*35238bceSAndroid Build Coastguard Worker        version 300 es
149*35238bceSAndroid Build Coastguard Worker        values
150*35238bceSAndroid Build Coastguard Worker        {
151*35238bceSAndroid Build Coastguard Worker            input float in0 = [ 0.0 | 1.0 | 2.0 ];
152*35238bceSAndroid Build Coastguard Worker            output float out0 = [ 0.0 | 1.0 | 2.0 ];
153*35238bceSAndroid Build Coastguard Worker        }
154*35238bceSAndroid Build Coastguard Worker
155*35238bceSAndroid Build Coastguard Worker        both ""
156*35238bceSAndroid Build Coastguard Worker            #version 300 es
157*35238bceSAndroid Build Coastguard Worker            precision mediump float;
158*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
159*35238bceSAndroid Build Coastguard Worker            void main()
160*35238bceSAndroid Build Coastguard Worker            {
161*35238bceSAndroid Build Coastguard Worker                out0 = 0.0;
162*35238bceSAndroid Build Coastguard Worker                if (in0 >= 2.0)
163*35238bceSAndroid Build Coastguard Worker                    out0 = 2.0;
164*35238bceSAndroid Build Coastguard Worker                else if (in0 >= 1.0)
165*35238bceSAndroid Build Coastguard Worker                    out0 = 1.0;
166*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
167*35238bceSAndroid Build Coastguard Worker            }
168*35238bceSAndroid Build Coastguard Worker        ""
169*35238bceSAndroid Build Coastguard Worker    end
170*35238bceSAndroid Build Coastguard Worker
171*35238bceSAndroid Build Coastguard Worker    case if_elseif_else
172*35238bceSAndroid Build Coastguard Worker        version 300 es
173*35238bceSAndroid Build Coastguard Worker        values
174*35238bceSAndroid Build Coastguard Worker        {
175*35238bceSAndroid Build Coastguard Worker            input float in0 = [ 0.0 | 1.0 | 2.0 ];
176*35238bceSAndroid Build Coastguard Worker            output float out0 = [ 0.0 | 1.0 | 2.0 ];
177*35238bceSAndroid Build Coastguard Worker        }
178*35238bceSAndroid Build Coastguard Worker
179*35238bceSAndroid Build Coastguard Worker        both ""
180*35238bceSAndroid Build Coastguard Worker            #version 300 es
181*35238bceSAndroid Build Coastguard Worker            precision mediump float;
182*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
183*35238bceSAndroid Build Coastguard Worker            void main()
184*35238bceSAndroid Build Coastguard Worker            {
185*35238bceSAndroid Build Coastguard Worker                if (in0 >= 2.0)
186*35238bceSAndroid Build Coastguard Worker                    out0 = 2.0;
187*35238bceSAndroid Build Coastguard Worker                else if (in0 >= 1.0)
188*35238bceSAndroid Build Coastguard Worker                    out0 = 1.0;
189*35238bceSAndroid Build Coastguard Worker                else
190*35238bceSAndroid Build Coastguard Worker                    out0 = 0.0;
191*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
192*35238bceSAndroid Build Coastguard Worker            }
193*35238bceSAndroid Build Coastguard Worker        ""
194*35238bceSAndroid Build Coastguard Worker    end
195*35238bceSAndroid Build Coastguard Worker
196*35238bceSAndroid Build Coastguard Worker    case mixed_if_elseif_else
197*35238bceSAndroid Build Coastguard Worker        version 300 es
198*35238bceSAndroid Build Coastguard Worker        values
199*35238bceSAndroid Build Coastguard Worker        {
200*35238bceSAndroid Build Coastguard Worker            input float in0 = [ 0.0 | 1.0 | 2.0 ];
201*35238bceSAndroid Build Coastguard Worker            output float out0 = [ 0.0 | 1.0 | 2.0 ];
202*35238bceSAndroid Build Coastguard Worker        }
203*35238bceSAndroid Build Coastguard Worker
204*35238bceSAndroid Build Coastguard Worker        both ""
205*35238bceSAndroid Build Coastguard Worker            #version 300 es
206*35238bceSAndroid Build Coastguard Worker            precision mediump float;
207*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
208*35238bceSAndroid Build Coastguard Worker            void main()
209*35238bceSAndroid Build Coastguard Worker            {
210*35238bceSAndroid Build Coastguard Worker                if (in0 >= 2.0)
211*35238bceSAndroid Build Coastguard Worker                {
212*35238bceSAndroid Build Coastguard Worker                    out0 = 2.0;
213*35238bceSAndroid Build Coastguard Worker                }
214*35238bceSAndroid Build Coastguard Worker                else if (in0 >= 1.0)
215*35238bceSAndroid Build Coastguard Worker                    out0 = 2.0, out0 = 1.0;
216*35238bceSAndroid Build Coastguard Worker                else
217*35238bceSAndroid Build Coastguard Worker                    out0 = 0.0;
218*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
219*35238bceSAndroid Build Coastguard Worker            }
220*35238bceSAndroid Build Coastguard Worker        ""
221*35238bceSAndroid Build Coastguard Worker    end
222*35238bceSAndroid Build Coastguard Worker
223*35238bceSAndroid Build Coastguard Worker    case constant_conditional_assignment_to_matrix
224*35238bceSAndroid Build Coastguard Worker        version 300 es
225*35238bceSAndroid Build Coastguard Worker        vertex ""
226*35238bceSAndroid Build Coastguard Worker            #version 300 es
227*35238bceSAndroid Build Coastguard Worker                        // This variant doesn't provoke the crash seen in the versions below.
228*35238bceSAndroid Build Coastguard Worker            ${VERTEX_DECLARATIONS}
229*35238bceSAndroid Build Coastguard Worker            out mediump float FragVarying;
230*35238bceSAndroid Build Coastguard Worker            const float in0 = 0.0;
231*35238bceSAndroid Build Coastguard Worker            void main()
232*35238bceSAndroid Build Coastguard Worker            {
233*35238bceSAndroid Build Coastguard Worker                mat2 projectionMatrix = mat2(0.0, 0.0, 0.0, 0.0);
234*35238bceSAndroid Build Coastguard Worker                if (in0 == 1.0)
235*35238bceSAndroid Build Coastguard Worker                {
236*35238bceSAndroid Build Coastguard Worker                    projectionMatrix[0][0] = 1.0;
237*35238bceSAndroid Build Coastguard Worker                }
238*35238bceSAndroid Build Coastguard Worker
239*35238bceSAndroid Build Coastguard Worker                FragVarying = 1.0;
240*35238bceSAndroid Build Coastguard Worker                gl_Position = dEQP_Position + vec4(projectionMatrix[1][0], 0.0, 0.0, 0.0);
241*35238bceSAndroid Build Coastguard Worker            }
242*35238bceSAndroid Build Coastguard Worker        ""
243*35238bceSAndroid Build Coastguard Worker        fragment ""
244*35238bceSAndroid Build Coastguard Worker            #version 300 es
245*35238bceSAndroid Build Coastguard Worker            precision mediump float;
246*35238bceSAndroid Build Coastguard Worker            ${FRAGMENT_DECLARATIONS}
247*35238bceSAndroid Build Coastguard Worker            in mediump float FragVarying;
248*35238bceSAndroid Build Coastguard Worker            void main()
249*35238bceSAndroid Build Coastguard Worker            {
250*35238bceSAndroid Build Coastguard Worker                ${FRAG_COLOR} = vec4(FragVarying, 1.0, 1.0, 1.0);
251*35238bceSAndroid Build Coastguard Worker            }
252*35238bceSAndroid Build Coastguard Worker        ""
253*35238bceSAndroid Build Coastguard Worker    end
254*35238bceSAndroid Build Coastguard Worker
255*35238bceSAndroid Build Coastguard Worker    case input_conditional_assignment_to_matrix
256*35238bceSAndroid Build Coastguard Worker        version 300 es
257*35238bceSAndroid Build Coastguard Worker        values
258*35238bceSAndroid Build Coastguard Worker        {
259*35238bceSAndroid Build Coastguard Worker            input float in0 = [ 0.0 ];
260*35238bceSAndroid Build Coastguard Worker        }
261*35238bceSAndroid Build Coastguard Worker        vertex ""
262*35238bceSAndroid Build Coastguard Worker            #version 300 es
263*35238bceSAndroid Build Coastguard Worker            ${VERTEX_DECLARATIONS}
264*35238bceSAndroid Build Coastguard Worker            out mediump float FragVarying;  // Necessary to reproduce.
265*35238bceSAndroid Build Coastguard Worker            void main()
266*35238bceSAndroid Build Coastguard Worker            {
267*35238bceSAndroid Build Coastguard Worker                // Crashes with mat4 as well. Does not crash with vectors.
268*35238bceSAndroid Build Coastguard Worker                mat2 projectionMatrix = mat2(0.0, 0.0, 0.0, 0.0);
269*35238bceSAndroid Build Coastguard Worker                // Testing a non-constant variable is necessary.
270*35238bceSAndroid Build Coastguard Worker                if (in0 == 1.0)
271*35238bceSAndroid Build Coastguard Worker                {
272*35238bceSAndroid Build Coastguard Worker                    // Using the matrix variable appears necessary.
273*35238bceSAndroid Build Coastguard Worker                    projectionMatrix[0][0] = 1.0;
274*35238bceSAndroid Build Coastguard Worker                }
275*35238bceSAndroid Build Coastguard Worker
276*35238bceSAndroid Build Coastguard Worker                FragVarying = 1.0;
277*35238bceSAndroid Build Coastguard Worker                // Referencing the matrix is necessary though clearly the compiler
278*35238bceSAndroid Build Coastguard Worker                // doesn't realize the assignment is useless.
279*35238bceSAndroid Build Coastguard Worker                gl_Position = dEQP_Position + vec4(projectionMatrix[1][0], 0.0, 0.0, 0.0);
280*35238bceSAndroid Build Coastguard Worker            }
281*35238bceSAndroid Build Coastguard Worker        ""
282*35238bceSAndroid Build Coastguard Worker        fragment ""
283*35238bceSAndroid Build Coastguard Worker            #version 300 es
284*35238bceSAndroid Build Coastguard Worker            precision mediump float;
285*35238bceSAndroid Build Coastguard Worker            ${FRAGMENT_DECLARATIONS}
286*35238bceSAndroid Build Coastguard Worker            in mediump float FragVarying;
287*35238bceSAndroid Build Coastguard Worker            void main()
288*35238bceSAndroid Build Coastguard Worker            {
289*35238bceSAndroid Build Coastguard Worker                ${FRAG_COLOR} = vec4(FragVarying, 1.0, 1.0, 1.0);
290*35238bceSAndroid Build Coastguard Worker            }
291*35238bceSAndroid Build Coastguard Worker        ""
292*35238bceSAndroid Build Coastguard Worker    end
293*35238bceSAndroid Build Coastguard Worker
294*35238bceSAndroid Build Coastguard Worker    case uniform_conditional_assignment_to_matrix
295*35238bceSAndroid Build Coastguard Worker        version 300 es
296*35238bceSAndroid Build Coastguard Worker        values
297*35238bceSAndroid Build Coastguard Worker        {
298*35238bceSAndroid Build Coastguard Worker            uniform float uni0 = [ 0.0 ];
299*35238bceSAndroid Build Coastguard Worker        }
300*35238bceSAndroid Build Coastguard Worker        vertex ""
301*35238bceSAndroid Build Coastguard Worker            #version 300 es
302*35238bceSAndroid Build Coastguard Worker            precision mediump float;
303*35238bceSAndroid Build Coastguard Worker            ${VERTEX_DECLARATIONS}
304*35238bceSAndroid Build Coastguard Worker            out mediump float FragVarying;  // Necessary to reproduce.
305*35238bceSAndroid Build Coastguard Worker            void main()
306*35238bceSAndroid Build Coastguard Worker            {
307*35238bceSAndroid Build Coastguard Worker                // Crashes with mat4 as well. Does not crash with vectors.
308*35238bceSAndroid Build Coastguard Worker                mat2 projectionMatrix = mat2(0.0, 0.0, 0.0, 0.0);
309*35238bceSAndroid Build Coastguard Worker                // Testing a non-constant variable is necessary.
310*35238bceSAndroid Build Coastguard Worker                if (uni0 == 1.0)
311*35238bceSAndroid Build Coastguard Worker                {
312*35238bceSAndroid Build Coastguard Worker                    // Using the matrix variable appears necessary.
313*35238bceSAndroid Build Coastguard Worker                    projectionMatrix[0][0] = 1.0;
314*35238bceSAndroid Build Coastguard Worker                }
315*35238bceSAndroid Build Coastguard Worker
316*35238bceSAndroid Build Coastguard Worker                FragVarying = 1.0;
317*35238bceSAndroid Build Coastguard Worker                // Referencing the matrix is necessary though clearly the compiler
318*35238bceSAndroid Build Coastguard Worker                // doesn't realize the assignment is useless.
319*35238bceSAndroid Build Coastguard Worker                gl_Position = dEQP_Position + vec4(projectionMatrix[1][0], 0.0, 0.0, 0.0);
320*35238bceSAndroid Build Coastguard Worker            }
321*35238bceSAndroid Build Coastguard Worker        ""
322*35238bceSAndroid Build Coastguard Worker        fragment ""
323*35238bceSAndroid Build Coastguard Worker            #version 300 es
324*35238bceSAndroid Build Coastguard Worker            precision mediump float;
325*35238bceSAndroid Build Coastguard Worker            ${FRAGMENT_DECLARATIONS}
326*35238bceSAndroid Build Coastguard Worker            in mediump float FragVarying;
327*35238bceSAndroid Build Coastguard Worker            void main()
328*35238bceSAndroid Build Coastguard Worker            {
329*35238bceSAndroid Build Coastguard Worker                ${FRAG_COLOR} = vec4(FragVarying, 1.0, 1.0, 1.0);
330*35238bceSAndroid Build Coastguard Worker            }
331*35238bceSAndroid Build Coastguard Worker        ""
332*35238bceSAndroid Build Coastguard Worker    end
333*35238bceSAndroid Build Coastguard Worker
334*35238bceSAndroid Build Coastguard Workerend # if
335*35238bceSAndroid Build Coastguard Worker
336*35238bceSAndroid Build Coastguard Workergroup invalid_if "Invalid If Conditionals"
337*35238bceSAndroid Build Coastguard Worker
338*35238bceSAndroid Build Coastguard Worker    case missing_parenthesis
339*35238bceSAndroid Build Coastguard Worker        version 300 es
340*35238bceSAndroid Build Coastguard Worker        expect compile_fail
341*35238bceSAndroid Build Coastguard Worker        both ""
342*35238bceSAndroid Build Coastguard Worker            #version 300 es
343*35238bceSAndroid Build Coastguard Worker            precision mediump float;
344*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
345*35238bceSAndroid Build Coastguard Worker            void main()
346*35238bceSAndroid Build Coastguard Worker            {
347*35238bceSAndroid Build Coastguard Worker                if true
348*35238bceSAndroid Build Coastguard Worker                    ${POSITION_FRAG_COLOR} = vec4(1.0);
349*35238bceSAndroid Build Coastguard Worker            }
350*35238bceSAndroid Build Coastguard Worker        ""
351*35238bceSAndroid Build Coastguard Worker    end
352*35238bceSAndroid Build Coastguard Worker
353*35238bceSAndroid Build Coastguard Worker    case unclosed_parenthesis
354*35238bceSAndroid Build Coastguard Worker        version 300 es
355*35238bceSAndroid Build Coastguard Worker        expect compile_fail
356*35238bceSAndroid Build Coastguard Worker        both ""
357*35238bceSAndroid Build Coastguard Worker            #version 300 es
358*35238bceSAndroid Build Coastguard Worker            precision mediump float;
359*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
360*35238bceSAndroid Build Coastguard Worker            void main()
361*35238bceSAndroid Build Coastguard Worker            {
362*35238bceSAndroid Build Coastguard Worker                if (true
363*35238bceSAndroid Build Coastguard Worker                    ${POSITION_FRAG_COLOR} = vec4(1.0);
364*35238bceSAndroid Build Coastguard Worker            }
365*35238bceSAndroid Build Coastguard Worker        ""
366*35238bceSAndroid Build Coastguard Worker    end
367*35238bceSAndroid Build Coastguard Worker
368*35238bceSAndroid Build Coastguard Worker    case int_condition
369*35238bceSAndroid Build Coastguard Worker        version 300 es
370*35238bceSAndroid Build Coastguard Worker        expect compile_fail
371*35238bceSAndroid Build Coastguard Worker        both ""
372*35238bceSAndroid Build Coastguard Worker            #version 300 es
373*35238bceSAndroid Build Coastguard Worker            precision mediump float;
374*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
375*35238bceSAndroid Build Coastguard Worker            void main()
376*35238bceSAndroid Build Coastguard Worker            {
377*35238bceSAndroid Build Coastguard Worker                if (5)
378*35238bceSAndroid Build Coastguard Worker                    ${POSITION_FRAG_COLOR} = vec4(1.0);
379*35238bceSAndroid Build Coastguard Worker            }
380*35238bceSAndroid Build Coastguard Worker        ""
381*35238bceSAndroid Build Coastguard Worker    end
382*35238bceSAndroid Build Coastguard Worker
383*35238bceSAndroid Build Coastguard Worker    case int_zero_condition
384*35238bceSAndroid Build Coastguard Worker        version 300 es
385*35238bceSAndroid Build Coastguard Worker        expect compile_fail
386*35238bceSAndroid Build Coastguard Worker        both ""
387*35238bceSAndroid Build Coastguard Worker            #version 300 es
388*35238bceSAndroid Build Coastguard Worker            precision mediump float;
389*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
390*35238bceSAndroid Build Coastguard Worker            void main()
391*35238bceSAndroid Build Coastguard Worker            {
392*35238bceSAndroid Build Coastguard Worker                if (0)
393*35238bceSAndroid Build Coastguard Worker                    ${POSITION_FRAG_COLOR} = vec4(1.0);
394*35238bceSAndroid Build Coastguard Worker            }
395*35238bceSAndroid Build Coastguard Worker        ""
396*35238bceSAndroid Build Coastguard Worker    end
397*35238bceSAndroid Build Coastguard Worker
398*35238bceSAndroid Build Coastguard Worker    case int_one_condition
399*35238bceSAndroid Build Coastguard Worker        version 300 es
400*35238bceSAndroid Build Coastguard Worker        expect compile_fail
401*35238bceSAndroid Build Coastguard Worker        both ""
402*35238bceSAndroid Build Coastguard Worker            #version 300 es
403*35238bceSAndroid Build Coastguard Worker            precision mediump float;
404*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
405*35238bceSAndroid Build Coastguard Worker            void main()
406*35238bceSAndroid Build Coastguard Worker            {
407*35238bceSAndroid Build Coastguard Worker                if (1)
408*35238bceSAndroid Build Coastguard Worker                    ${POSITION_FRAG_COLOR} = vec4(1.0);
409*35238bceSAndroid Build Coastguard Worker            }
410*35238bceSAndroid Build Coastguard Worker        ""
411*35238bceSAndroid Build Coastguard Worker    end
412*35238bceSAndroid Build Coastguard Worker
413*35238bceSAndroid Build Coastguard Worker    case int_uniform_condition
414*35238bceSAndroid Build Coastguard Worker        version 300 es
415*35238bceSAndroid Build Coastguard Worker        expect compile_fail
416*35238bceSAndroid Build Coastguard Worker
417*35238bceSAndroid Build Coastguard Worker        both ""
418*35238bceSAndroid Build Coastguard Worker            #version 300 es
419*35238bceSAndroid Build Coastguard Worker            precision mediump float;
420*35238bceSAndroid Build Coastguard Worker            precision mediump int;
421*35238bceSAndroid Build Coastguard Worker            uniform int u0;
422*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
423*35238bceSAndroid Build Coastguard Worker            void main()
424*35238bceSAndroid Build Coastguard Worker            {
425*35238bceSAndroid Build Coastguard Worker                if (u0)
426*35238bceSAndroid Build Coastguard Worker                    ${POSITION_FRAG_COLOR} = vec4(1.0);
427*35238bceSAndroid Build Coastguard Worker            }
428*35238bceSAndroid Build Coastguard Worker        ""
429*35238bceSAndroid Build Coastguard Worker    end
430*35238bceSAndroid Build Coastguard Worker
431*35238bceSAndroid Build Coastguard Worker    case float_condition
432*35238bceSAndroid Build Coastguard Worker        version 300 es
433*35238bceSAndroid Build Coastguard Worker        expect compile_fail
434*35238bceSAndroid Build Coastguard Worker        both ""
435*35238bceSAndroid Build Coastguard Worker            #version 300 es
436*35238bceSAndroid Build Coastguard Worker            precision mediump float;
437*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
438*35238bceSAndroid Build Coastguard Worker            void main()
439*35238bceSAndroid Build Coastguard Worker            {
440*35238bceSAndroid Build Coastguard Worker                if (5.0)
441*35238bceSAndroid Build Coastguard Worker                    ${POSITION_FRAG_COLOR} = vec4(1.0);
442*35238bceSAndroid Build Coastguard Worker            }
443*35238bceSAndroid Build Coastguard Worker        ""
444*35238bceSAndroid Build Coastguard Worker    end
445*35238bceSAndroid Build Coastguard Worker
446*35238bceSAndroid Build Coastguard Worker    case float_zero_condition
447*35238bceSAndroid Build Coastguard Worker        version 300 es
448*35238bceSAndroid Build Coastguard Worker        expect compile_fail
449*35238bceSAndroid Build Coastguard Worker        both ""
450*35238bceSAndroid Build Coastguard Worker            #version 300 es
451*35238bceSAndroid Build Coastguard Worker            precision mediump float;
452*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
453*35238bceSAndroid Build Coastguard Worker            void main()
454*35238bceSAndroid Build Coastguard Worker            {
455*35238bceSAndroid Build Coastguard Worker                if (0.0)
456*35238bceSAndroid Build Coastguard Worker                    ${POSITION_FRAG_COLOR} = vec4(1.0);
457*35238bceSAndroid Build Coastguard Worker            }
458*35238bceSAndroid Build Coastguard Worker        ""
459*35238bceSAndroid Build Coastguard Worker    end
460*35238bceSAndroid Build Coastguard Worker
461*35238bceSAndroid Build Coastguard Worker    case float_one_condition
462*35238bceSAndroid Build Coastguard Worker        version 300 es
463*35238bceSAndroid Build Coastguard Worker        expect compile_fail
464*35238bceSAndroid Build Coastguard Worker        both ""
465*35238bceSAndroid Build Coastguard Worker            #version 300 es
466*35238bceSAndroid Build Coastguard Worker            precision mediump float;
467*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
468*35238bceSAndroid Build Coastguard Worker            void main()
469*35238bceSAndroid Build Coastguard Worker            {
470*35238bceSAndroid Build Coastguard Worker                if (1.0)
471*35238bceSAndroid Build Coastguard Worker                    ${POSITION_FRAG_COLOR} = vec4(1.0);
472*35238bceSAndroid Build Coastguard Worker            }
473*35238bceSAndroid Build Coastguard Worker        ""
474*35238bceSAndroid Build Coastguard Worker    end
475*35238bceSAndroid Build Coastguard Worker
476*35238bceSAndroid Build Coastguard Worker    case sampler_condition
477*35238bceSAndroid Build Coastguard Worker        version 300 es
478*35238bceSAndroid Build Coastguard Worker        expect compile_fail
479*35238bceSAndroid Build Coastguard Worker        both ""
480*35238bceSAndroid Build Coastguard Worker            #version 300 es
481*35238bceSAndroid Build Coastguard Worker            precision mediump float;
482*35238bceSAndroid Build Coastguard Worker            uniform sampler2D s0;
483*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
484*35238bceSAndroid Build Coastguard Worker            void main()
485*35238bceSAndroid Build Coastguard Worker            {
486*35238bceSAndroid Build Coastguard Worker                if (s0)
487*35238bceSAndroid Build Coastguard Worker                    ${POSITION_FRAG_COLOR} = vec4(1.0);
488*35238bceSAndroid Build Coastguard Worker            }
489*35238bceSAndroid Build Coastguard Worker        ""
490*35238bceSAndroid Build Coastguard Worker    end
491*35238bceSAndroid Build Coastguard Worker
492*35238bceSAndroid Build Coastguard Workerend # invalid_if
493