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