xref: /aosp_15_r20/external/deqp/data/gles2/shaders/constant_expressions.test (revision 35238bce31c2a825756842865a792f8cf7f89930)
1*35238bceSAndroid Build Coastguard Workergroup trivial "Trivial expressions"
2*35238bceSAndroid Build Coastguard Worker
3*35238bceSAndroid Build Coastguard Worker    case float
4*35238bceSAndroid Build Coastguard Worker        values { output float out0 = 5.0; }
5*35238bceSAndroid Build Coastguard Worker        both ""
6*35238bceSAndroid Build Coastguard Worker
7*35238bceSAndroid Build Coastguard Worker            precision highp float;
8*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
9*35238bceSAndroid Build Coastguard Worker
10*35238bceSAndroid Build Coastguard Worker            void main()
11*35238bceSAndroid Build Coastguard Worker            {
12*35238bceSAndroid Build Coastguard Worker                const float a = 5.0;
13*35238bceSAndroid Build Coastguard Worker                out0 = a;
14*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
15*35238bceSAndroid Build Coastguard Worker            }
16*35238bceSAndroid Build Coastguard Worker        ""
17*35238bceSAndroid Build Coastguard Worker    end
18*35238bceSAndroid Build Coastguard Worker
19*35238bceSAndroid Build Coastguard Worker    case int
20*35238bceSAndroid Build Coastguard Worker        values { output int out0 = 5; }
21*35238bceSAndroid Build Coastguard Worker        both ""
22*35238bceSAndroid Build Coastguard Worker            precision highp float;
23*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
24*35238bceSAndroid Build Coastguard Worker
25*35238bceSAndroid Build Coastguard Worker            void main()
26*35238bceSAndroid Build Coastguard Worker            {
27*35238bceSAndroid Build Coastguard Worker                const int a = 5;
28*35238bceSAndroid Build Coastguard Worker                out0 = a;
29*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
30*35238bceSAndroid Build Coastguard Worker            }
31*35238bceSAndroid Build Coastguard Worker        ""
32*35238bceSAndroid Build Coastguard Worker    end
33*35238bceSAndroid Build Coastguard Worker
34*35238bceSAndroid Build Coastguard Worker    case bool
35*35238bceSAndroid Build Coastguard Worker        values { output bool out0 = true; }
36*35238bceSAndroid Build Coastguard Worker        both ""
37*35238bceSAndroid Build Coastguard Worker            precision highp float;
38*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
39*35238bceSAndroid Build Coastguard Worker
40*35238bceSAndroid Build Coastguard Worker            void main()
41*35238bceSAndroid Build Coastguard Worker            {
42*35238bceSAndroid Build Coastguard Worker                const bool a = true;
43*35238bceSAndroid Build Coastguard Worker                out0 = a;
44*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
45*35238bceSAndroid Build Coastguard Worker            }
46*35238bceSAndroid Build Coastguard Worker        ""
47*35238bceSAndroid Build Coastguard Worker    end
48*35238bceSAndroid Build Coastguard Worker
49*35238bceSAndroid Build Coastguard Worker    case cast
50*35238bceSAndroid Build Coastguard Worker        values { output float out0 = 1.0; }
51*35238bceSAndroid Build Coastguard Worker        both ""
52*35238bceSAndroid Build Coastguard Worker            precision highp float;
53*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
54*35238bceSAndroid Build Coastguard Worker
55*35238bceSAndroid Build Coastguard Worker            void main()
56*35238bceSAndroid Build Coastguard Worker            {
57*35238bceSAndroid Build Coastguard Worker                const float a = float(int(bool(true)));
58*35238bceSAndroid Build Coastguard Worker                out0 = a;
59*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
60*35238bceSAndroid Build Coastguard Worker            }
61*35238bceSAndroid Build Coastguard Worker        ""
62*35238bceSAndroid Build Coastguard Worker    end
63*35238bceSAndroid Build Coastguard Worker
64*35238bceSAndroid Build Coastguard Workerend # trivial
65*35238bceSAndroid Build Coastguard Worker
66*35238bceSAndroid Build Coastguard Workergroup operators "Operators"
67*35238bceSAndroid Build Coastguard Worker
68*35238bceSAndroid Build Coastguard Worker    case math_float
69*35238bceSAndroid Build Coastguard Worker        values { output float out0 = 2.19; }
70*35238bceSAndroid Build Coastguard Worker        both ""
71*35238bceSAndroid Build Coastguard Worker            precision highp float;
72*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
73*35238bceSAndroid Build Coastguard Worker
74*35238bceSAndroid Build Coastguard Worker            void main()
75*35238bceSAndroid Build Coastguard Worker            {
76*35238bceSAndroid Build Coastguard Worker                const float a = 6.0/3.5 + 1.8*2.6 - 4.2;
77*35238bceSAndroid Build Coastguard Worker                out0 = a;
78*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
79*35238bceSAndroid Build Coastguard Worker            }
80*35238bceSAndroid Build Coastguard Worker        ""
81*35238bceSAndroid Build Coastguard Worker    end
82*35238bceSAndroid Build Coastguard Worker
83*35238bceSAndroid Build Coastguard Worker    case math_vec
84*35238bceSAndroid Build Coastguard Worker        values { output float out0 = 15.0; }
85*35238bceSAndroid Build Coastguard Worker        both ""
86*35238bceSAndroid Build Coastguard Worker            precision highp float;
87*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
88*35238bceSAndroid Build Coastguard Worker
89*35238bceSAndroid Build Coastguard Worker            void main()
90*35238bceSAndroid Build Coastguard Worker            {
91*35238bceSAndroid Build Coastguard Worker                const vec3 a = (vec4(1.0, 2.0, 3.0, 4.0).zyx * vec3(1.0, 1.5, 3.0).xyz).xzy + (vec2(5.0)/vec2(2.5)).xxy;
92*35238bceSAndroid Build Coastguard Worker                out0 = a.x + a.y + a.z;
93*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
94*35238bceSAndroid Build Coastguard Worker            }
95*35238bceSAndroid Build Coastguard Worker        ""
96*35238bceSAndroid Build Coastguard Worker    end
97*35238bceSAndroid Build Coastguard Worker
98*35238bceSAndroid Build Coastguard Worker    case math_int
99*35238bceSAndroid Build Coastguard Worker        values { output int out0 = 7; }
100*35238bceSAndroid Build Coastguard Worker        both ""
101*35238bceSAndroid Build Coastguard Worker            precision highp int;
102*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
103*35238bceSAndroid Build Coastguard Worker
104*35238bceSAndroid Build Coastguard Worker            void main()
105*35238bceSAndroid Build Coastguard Worker            {
106*35238bceSAndroid Build Coastguard Worker                const int a = 5-1 + 2*3 - 9/3;
107*35238bceSAndroid Build Coastguard Worker                out0 = a;
108*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
109*35238bceSAndroid Build Coastguard Worker            }
110*35238bceSAndroid Build Coastguard Worker        ""
111*35238bceSAndroid Build Coastguard Worker    end
112*35238bceSAndroid Build Coastguard Worker
113*35238bceSAndroid Build Coastguard Worker    case math_ivec
114*35238bceSAndroid Build Coastguard Worker        values { output int out0 = 21; }
115*35238bceSAndroid Build Coastguard Worker        both ""
116*35238bceSAndroid Build Coastguard Worker            precision highp int;
117*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
118*35238bceSAndroid Build Coastguard Worker
119*35238bceSAndroid Build Coastguard Worker            void main()
120*35238bceSAndroid Build Coastguard Worker            {
121*35238bceSAndroid Build Coastguard Worker                const ivec3 a = ivec2(5-1, 4).xxy + ivec4(1*3, 9/3, 1+2, 8/4).xyz;
122*35238bceSAndroid Build Coastguard Worker                out0 = a.x + a.y + a.z;
123*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
124*35238bceSAndroid Build Coastguard Worker            }
125*35238bceSAndroid Build Coastguard Worker        ""
126*35238bceSAndroid Build Coastguard Worker    end
127*35238bceSAndroid Build Coastguard Worker
128*35238bceSAndroid Build Coastguard Worker    case math_mat
129*35238bceSAndroid Build Coastguard Worker        values { output float out0 = 8.0; }
130*35238bceSAndroid Build Coastguard Worker        both ""
131*35238bceSAndroid Build Coastguard Worker            precision highp float;
132*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
133*35238bceSAndroid Build Coastguard Worker
134*35238bceSAndroid Build Coastguard Worker            void main()
135*35238bceSAndroid Build Coastguard Worker            {
136*35238bceSAndroid Build Coastguard Worker                const mat3 a = mat3(3.0) * mat3(4.0);
137*35238bceSAndroid Build Coastguard Worker                const mat4 b = mat4(a[1][1])*2.0;
138*35238bceSAndroid Build Coastguard Worker                const mat2 c = mat2(b[0][0]) / 3.0;
139*35238bceSAndroid Build Coastguard Worker                out0 = c[0][0]+c[1][0];
140*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
141*35238bceSAndroid Build Coastguard Worker            }
142*35238bceSAndroid Build Coastguard Worker        ""
143*35238bceSAndroid Build Coastguard Worker    end
144*35238bceSAndroid Build Coastguard Worker
145*35238bceSAndroid Build Coastguard Worker    case logical
146*35238bceSAndroid Build Coastguard Worker        values { output bool out0 = true; }
147*35238bceSAndroid Build Coastguard Worker        both ""
148*35238bceSAndroid Build Coastguard Worker            precision highp int;
149*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
150*35238bceSAndroid Build Coastguard Worker
151*35238bceSAndroid Build Coastguard Worker            void main()
152*35238bceSAndroid Build Coastguard Worker            {
153*35238bceSAndroid Build Coastguard Worker                const bool a = (!false || false) && (true ^^ false);
154*35238bceSAndroid Build Coastguard Worker                out0 = a;
155*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
156*35238bceSAndroid Build Coastguard Worker            }
157*35238bceSAndroid Build Coastguard Worker        ""
158*35238bceSAndroid Build Coastguard Worker    end
159*35238bceSAndroid Build Coastguard Worker
160*35238bceSAndroid Build Coastguard Worker    case compare
161*35238bceSAndroid Build Coastguard Worker        values { output bool out0 = true; }
162*35238bceSAndroid Build Coastguard Worker        both ""
163*35238bceSAndroid Build Coastguard Worker            precision highp int;
164*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
165*35238bceSAndroid Build Coastguard Worker
166*35238bceSAndroid Build Coastguard Worker            void main()
167*35238bceSAndroid Build Coastguard Worker            {
168*35238bceSAndroid Build Coastguard Worker                const bool a = (false == false) && (true != false) && (1 < 2) && (3 <= 3) && ((1 > 1) != (1 >= 1));
169*35238bceSAndroid Build Coastguard Worker                out0 = a;
170*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
171*35238bceSAndroid Build Coastguard Worker            }
172*35238bceSAndroid Build Coastguard Worker        ""
173*35238bceSAndroid Build Coastguard Worker    end
174*35238bceSAndroid Build Coastguard Worker
175*35238bceSAndroid Build Coastguard Worker    case selection
176*35238bceSAndroid Build Coastguard Worker        values { output float out0 = 5.3; }
177*35238bceSAndroid Build Coastguard Worker        both ""
178*35238bceSAndroid Build Coastguard Worker            precision highp float;
179*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
180*35238bceSAndroid Build Coastguard Worker
181*35238bceSAndroid Build Coastguard Worker            void main()
182*35238bceSAndroid Build Coastguard Worker            {
183*35238bceSAndroid Build Coastguard Worker                const float a = false ? 0.0 : (true ? 5.3 : 1.0);
184*35238bceSAndroid Build Coastguard Worker                out0 = a;
185*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
186*35238bceSAndroid Build Coastguard Worker            }
187*35238bceSAndroid Build Coastguard Worker        ""
188*35238bceSAndroid Build Coastguard Worker    end
189*35238bceSAndroid Build Coastguard Worker
190*35238bceSAndroid Build Coastguard Workerend # operators
191*35238bceSAndroid Build Coastguard Worker
192*35238bceSAndroid Build Coastguard Workergroup complex_types "Arrays, structs & nested calls"
193*35238bceSAndroid Build Coastguard Worker
194*35238bceSAndroid Build Coastguard Worker    case struct
195*35238bceSAndroid Build Coastguard Worker        values { output float out0 = 260.922; }
196*35238bceSAndroid Build Coastguard Worker        both ""
197*35238bceSAndroid Build Coastguard Worker            precision highp float;
198*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
199*35238bceSAndroid Build Coastguard Worker
200*35238bceSAndroid Build Coastguard Worker            struct S
201*35238bceSAndroid Build Coastguard Worker            {
202*35238bceSAndroid Build Coastguard Worker                vec4 a;
203*35238bceSAndroid Build Coastguard Worker                int  b;
204*35238bceSAndroid Build Coastguard Worker            };
205*35238bceSAndroid Build Coastguard Worker
206*35238bceSAndroid Build Coastguard Worker            void main()
207*35238bceSAndroid Build Coastguard Worker            {
208*35238bceSAndroid Build Coastguard Worker                const S s = S(vec4(1.5), 123);
209*35238bceSAndroid Build Coastguard Worker                out0 = length(s.a.xy)*float(s.b);
210*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
211*35238bceSAndroid Build Coastguard Worker            }
212*35238bceSAndroid Build Coastguard Worker        ""
213*35238bceSAndroid Build Coastguard Worker    end
214*35238bceSAndroid Build Coastguard Worker
215*35238bceSAndroid Build Coastguard Worker    case nested_struct
216*35238bceSAndroid Build Coastguard Worker        values { output float out0 = 965.9; }
217*35238bceSAndroid Build Coastguard Worker        both ""
218*35238bceSAndroid Build Coastguard Worker            precision highp float;
219*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
220*35238bceSAndroid Build Coastguard Worker
221*35238bceSAndroid Build Coastguard Worker            struct S
222*35238bceSAndroid Build Coastguard Worker            {
223*35238bceSAndroid Build Coastguard Worker                vec4 v;
224*35238bceSAndroid Build Coastguard Worker                int  i;
225*35238bceSAndroid Build Coastguard Worker            };
226*35238bceSAndroid Build Coastguard Worker
227*35238bceSAndroid Build Coastguard Worker            struct T
228*35238bceSAndroid Build Coastguard Worker            {
229*35238bceSAndroid Build Coastguard Worker                S s;
230*35238bceSAndroid Build Coastguard Worker                bool b;
231*35238bceSAndroid Build Coastguard Worker                int i;
232*35238bceSAndroid Build Coastguard Worker            };
233*35238bceSAndroid Build Coastguard Worker
234*35238bceSAndroid Build Coastguard Worker            struct U
235*35238bceSAndroid Build Coastguard Worker            {
236*35238bceSAndroid Build Coastguard Worker                S s;
237*35238bceSAndroid Build Coastguard Worker                T t;
238*35238bceSAndroid Build Coastguard Worker            };
239*35238bceSAndroid Build Coastguard Worker
240*35238bceSAndroid Build Coastguard Worker            void main()
241*35238bceSAndroid Build Coastguard Worker            {
242*35238bceSAndroid Build Coastguard Worker                const S s = S(vec4(1.5), 123);
243*35238bceSAndroid Build Coastguard Worker                const T t = T(s, false, 3);
244*35238bceSAndroid Build Coastguard Worker                const U u = U(s, t);
245*35238bceSAndroid Build Coastguard Worker                const U v = U(S(vec4(1.3), 4), T(S(vec4(2.0), 5), true, 6));
246*35238bceSAndroid Build Coastguard Worker                out0 = float(u.s.i*v.t.i + v.t.s.i)*v.s.v.x; // float(123*6 + 5)*1.3
247*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
248*35238bceSAndroid Build Coastguard Worker            }
249*35238bceSAndroid Build Coastguard Worker        ""
250*35238bceSAndroid Build Coastguard Worker    end
251*35238bceSAndroid Build Coastguard Worker
252*35238bceSAndroid Build Coastguard Worker    case array
253*35238bceSAndroid Build Coastguard Worker        values
254*35238bceSAndroid Build Coastguard Worker        {
255*35238bceSAndroid Build Coastguard Worker            input float in0 = [ 0.0 | 1.0];
256*35238bceSAndroid Build Coastguard Worker            output float out0 = [0.0 | 1.0];
257*35238bceSAndroid Build Coastguard Worker        }
258*35238bceSAndroid Build Coastguard Worker        both ""
259*35238bceSAndroid Build Coastguard Worker            precision highp float;
260*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
261*35238bceSAndroid Build Coastguard Worker
262*35238bceSAndroid Build Coastguard Worker            void main()
263*35238bceSAndroid Build Coastguard Worker            {
264*35238bceSAndroid Build Coastguard Worker                float a[int(max(-1.0, 2.0))];
265*35238bceSAndroid Build Coastguard Worker                a[0] = -1.0;
266*35238bceSAndroid Build Coastguard Worker                a[1] = in0;
267*35238bceSAndroid Build Coastguard Worker                out0 = a[int(min(1.0, 2.0))];
268*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
269*35238bceSAndroid Build Coastguard Worker            }
270*35238bceSAndroid Build Coastguard Worker        ""
271*35238bceSAndroid Build Coastguard Worker    end
272*35238bceSAndroid Build Coastguard Worker
273*35238bceSAndroid Build Coastguard Worker    case nested_builtin_funcs
274*35238bceSAndroid Build Coastguard Worker        values { output float out0 = 3.05; }
275*35238bceSAndroid Build Coastguard Worker        both ""
276*35238bceSAndroid Build Coastguard Worker            precision highp float;
277*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
278*35238bceSAndroid Build Coastguard Worker
279*35238bceSAndroid Build Coastguard Worker            void main()
280*35238bceSAndroid Build Coastguard Worker            {
281*35238bceSAndroid Build Coastguard Worker                const float a = sqrt( atan(sin(1.5)/cos(1.5)) /*1.5*/ * log2(exp2(log(exp(6.2) + 0.1)) + 0.1) /*~6.2*/);
282*35238bceSAndroid Build Coastguard Worker                out0 = a;
283*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
284*35238bceSAndroid Build Coastguard Worker            }
285*35238bceSAndroid Build Coastguard Worker        ""
286*35238bceSAndroid Build Coastguard Worker    end
287*35238bceSAndroid Build Coastguard Worker
288*35238bceSAndroid Build Coastguard Workerend # complex_types
289