xref: /aosp_15_r20/external/deqp/data/gles3/shaders/loops.test (revision 35238bce31c2a825756842865a792f8cf7f89930)
1*35238bceSAndroid Build Coastguard Workergroup custom "Custom loop tests"
2*35238bceSAndroid Build Coastguard Worker
3*35238bceSAndroid Build Coastguard Worker    case continue_in_fragment_for_loop
4*35238bceSAndroid Build Coastguard Worker        version 300 es
5*35238bceSAndroid Build Coastguard Worker        vertex ""
6*35238bceSAndroid Build Coastguard Worker            #version 300 es
7*35238bceSAndroid Build Coastguard Worker            ${VERTEX_DECLARATIONS}
8*35238bceSAndroid Build Coastguard Worker            void main()
9*35238bceSAndroid Build Coastguard Worker            {
10*35238bceSAndroid Build Coastguard Worker                ${VERTEX_OUTPUT}
11*35238bceSAndroid Build Coastguard Worker            }
12*35238bceSAndroid Build Coastguard Worker        ""
13*35238bceSAndroid Build Coastguard Worker        fragment ""
14*35238bceSAndroid Build Coastguard Worker            #version 300 es
15*35238bceSAndroid Build Coastguard Worker            ${FRAGMENT_DECLARATIONS}
16*35238bceSAndroid Build Coastguard Worker            void main()
17*35238bceSAndroid Build Coastguard Worker            {
18*35238bceSAndroid Build Coastguard Worker                int count1 = 0;
19*35238bceSAndroid Build Coastguard Worker                for(int i=0;i<4;i++)
20*35238bceSAndroid Build Coastguard Worker                {
21*35238bceSAndroid Build Coastguard Worker                    if (count1 == 2)
22*35238bceSAndroid Build Coastguard Worker                        continue;
23*35238bceSAndroid Build Coastguard Worker                }
24*35238bceSAndroid Build Coastguard Worker                ${FRAG_COLOR} = vec4(1.0);
25*35238bceSAndroid Build Coastguard Worker            }
26*35238bceSAndroid Build Coastguard Worker        ""
27*35238bceSAndroid Build Coastguard Worker    end
28*35238bceSAndroid Build Coastguard Worker
29*35238bceSAndroid Build Coastguard Workerend # custom
30*35238bceSAndroid Build Coastguard Worker
31*35238bceSAndroid Build Coastguard Worker# https://github.com/KhronosGroup/WebGL/blob/main/sdk/tests/conformance2/glsl3/short-circuiting-in-loop-condition.html
32*35238bceSAndroid Build Coastguard Workergroup short_circuit "Short-circuiting operator in a loop using a function call with side effects"
33*35238bceSAndroid Build Coastguard Worker
34*35238bceSAndroid Build Coastguard Worker    case while
35*35238bceSAndroid Build Coastguard Worker        version 300 es
36*35238bceSAndroid Build Coastguard Worker        values
37*35238bceSAndroid Build Coastguard Worker        {
38*35238bceSAndroid Build Coastguard Worker            input bool in0 = [ false | true ];
39*35238bceSAndroid Build Coastguard Worker            output int sideEffectCounter = [ 0 | 10 ];
40*35238bceSAndroid Build Coastguard Worker        }
41*35238bceSAndroid Build Coastguard Worker
42*35238bceSAndroid Build Coastguard Worker        both ""
43*35238bceSAndroid Build Coastguard Worker            #version 300 es
44*35238bceSAndroid Build Coastguard Worker            precision mediump float;
45*35238bceSAndroid Build Coastguard Worker            precision mediump int;
46*35238bceSAndroid Build Coastguard Worker
47*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
48*35238bceSAndroid Build Coastguard Worker
49*35238bceSAndroid Build Coastguard Worker            bool foo() {
50*35238bceSAndroid Build Coastguard Worker                ++sideEffectCounter;
51*35238bceSAndroid Build Coastguard Worker                return true;
52*35238bceSAndroid Build Coastguard Worker            }
53*35238bceSAndroid Build Coastguard Worker
54*35238bceSAndroid Build Coastguard Worker            void main()
55*35238bceSAndroid Build Coastguard Worker            {
56*35238bceSAndroid Build Coastguard Worker                ${SETUP}
57*35238bceSAndroid Build Coastguard Worker                sideEffectCounter = 0;
58*35238bceSAndroid Build Coastguard Worker                int iterations = 0;
59*35238bceSAndroid Build Coastguard Worker                while (in0 && foo()) {
60*35238bceSAndroid Build Coastguard Worker                    ++iterations;
61*35238bceSAndroid Build Coastguard Worker                    if (iterations >= 10) {
62*35238bceSAndroid Build Coastguard Worker                        break;
63*35238bceSAndroid Build Coastguard Worker                    }
64*35238bceSAndroid Build Coastguard Worker                }
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 for
71*35238bceSAndroid Build Coastguard Worker        version 300 es
72*35238bceSAndroid Build Coastguard Worker        values
73*35238bceSAndroid Build Coastguard Worker        {
74*35238bceSAndroid Build Coastguard Worker            input bool in0 = [ false | true ];
75*35238bceSAndroid Build Coastguard Worker            output int sideEffectCounter = [ 0 | 10 ];
76*35238bceSAndroid Build Coastguard Worker        }
77*35238bceSAndroid Build Coastguard Worker
78*35238bceSAndroid Build Coastguard Worker        both ""
79*35238bceSAndroid Build Coastguard Worker            #version 300 es
80*35238bceSAndroid Build Coastguard Worker            precision mediump float;
81*35238bceSAndroid Build Coastguard Worker            precision mediump int;
82*35238bceSAndroid Build Coastguard Worker
83*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
84*35238bceSAndroid Build Coastguard Worker
85*35238bceSAndroid Build Coastguard Worker            bool foo() {
86*35238bceSAndroid Build Coastguard Worker                ++sideEffectCounter;
87*35238bceSAndroid Build Coastguard Worker                return true;
88*35238bceSAndroid Build Coastguard Worker            }
89*35238bceSAndroid Build Coastguard Worker
90*35238bceSAndroid Build Coastguard Worker            void main()
91*35238bceSAndroid Build Coastguard Worker            {
92*35238bceSAndroid Build Coastguard Worker                ${SETUP}
93*35238bceSAndroid Build Coastguard Worker                sideEffectCounter = 0;
94*35238bceSAndroid Build Coastguard Worker                for (int iterations = 0; true; in0 && foo()) {
95*35238bceSAndroid Build Coastguard Worker                    ++iterations;
96*35238bceSAndroid Build Coastguard Worker                    if (iterations > 10) {
97*35238bceSAndroid Build Coastguard Worker                        break;
98*35238bceSAndroid Build Coastguard Worker                    }
99*35238bceSAndroid Build Coastguard Worker                }
100*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
101*35238bceSAndroid Build Coastguard Worker            }
102*35238bceSAndroid Build Coastguard Worker        ""
103*35238bceSAndroid Build Coastguard Worker    end
104*35238bceSAndroid Build Coastguard Worker
105*35238bceSAndroid Build Coastguard Worker    case do_while
106*35238bceSAndroid Build Coastguard Worker        version 300 es
107*35238bceSAndroid Build Coastguard Worker        values
108*35238bceSAndroid Build Coastguard Worker        {
109*35238bceSAndroid Build Coastguard Worker            input bool in0 = [ false | true ];
110*35238bceSAndroid Build Coastguard Worker            output int sideEffectCounter = [ 0 | 10 ];
111*35238bceSAndroid Build Coastguard Worker        }
112*35238bceSAndroid Build Coastguard Worker
113*35238bceSAndroid Build Coastguard Worker        both ""
114*35238bceSAndroid Build Coastguard Worker            #version 300 es
115*35238bceSAndroid Build Coastguard Worker            precision mediump float;
116*35238bceSAndroid Build Coastguard Worker            precision mediump int;
117*35238bceSAndroid Build Coastguard Worker
118*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
119*35238bceSAndroid Build Coastguard Worker
120*35238bceSAndroid Build Coastguard Worker            bool foo() {
121*35238bceSAndroid Build Coastguard Worker                ++sideEffectCounter;
122*35238bceSAndroid Build Coastguard Worker                return true;
123*35238bceSAndroid Build Coastguard Worker            }
124*35238bceSAndroid Build Coastguard Worker
125*35238bceSAndroid Build Coastguard Worker            void main()
126*35238bceSAndroid Build Coastguard Worker            {
127*35238bceSAndroid Build Coastguard Worker                ${SETUP}
128*35238bceSAndroid Build Coastguard Worker                sideEffectCounter = 0;
129*35238bceSAndroid Build Coastguard Worker                int iterations = 0;
130*35238bceSAndroid Build Coastguard Worker                do {
131*35238bceSAndroid Build Coastguard Worker                    ++iterations;
132*35238bceSAndroid Build Coastguard Worker                    if (iterations > 10) {
133*35238bceSAndroid Build Coastguard Worker                        break;
134*35238bceSAndroid Build Coastguard Worker                    }
135*35238bceSAndroid Build Coastguard Worker                } while (in0 && foo());
136*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
137*35238bceSAndroid Build Coastguard Worker            }
138*35238bceSAndroid Build Coastguard Worker        ""
139*35238bceSAndroid Build Coastguard Worker    end
140*35238bceSAndroid Build Coastguard Worker
141*35238bceSAndroid Build Coastguard Worker    case while_sequence
142*35238bceSAndroid Build Coastguard Worker        version 300 es
143*35238bceSAndroid Build Coastguard Worker        values
144*35238bceSAndroid Build Coastguard Worker        {
145*35238bceSAndroid Build Coastguard Worker            input bool in0 = [ false | true ];
146*35238bceSAndroid Build Coastguard Worker            output int sideEffectCounter = [ 0 | 10 ];
147*35238bceSAndroid Build Coastguard Worker        }
148*35238bceSAndroid Build Coastguard Worker
149*35238bceSAndroid Build Coastguard Worker        both ""
150*35238bceSAndroid Build Coastguard Worker            #version 300 es
151*35238bceSAndroid Build Coastguard Worker            precision mediump float;
152*35238bceSAndroid Build Coastguard Worker            precision mediump int;
153*35238bceSAndroid Build Coastguard Worker
154*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
155*35238bceSAndroid Build Coastguard Worker
156*35238bceSAndroid Build Coastguard Worker            bool foo() {
157*35238bceSAndroid Build Coastguard Worker                ++sideEffectCounter;
158*35238bceSAndroid Build Coastguard Worker                return true;
159*35238bceSAndroid Build Coastguard Worker            }
160*35238bceSAndroid Build Coastguard Worker
161*35238bceSAndroid Build Coastguard Worker            void main()
162*35238bceSAndroid Build Coastguard Worker            {
163*35238bceSAndroid Build Coastguard Worker                ${SETUP}
164*35238bceSAndroid Build Coastguard Worker                sideEffectCounter = 0;
165*35238bceSAndroid Build Coastguard Worker                int iterations = 0;
166*35238bceSAndroid Build Coastguard Worker                while ((in0, in0 && foo())) {
167*35238bceSAndroid Build Coastguard Worker                    ++iterations;
168*35238bceSAndroid Build Coastguard Worker                    if (iterations >= 10) {
169*35238bceSAndroid Build Coastguard Worker                        break;
170*35238bceSAndroid Build Coastguard Worker                    }
171*35238bceSAndroid Build Coastguard Worker                }
172*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
173*35238bceSAndroid Build Coastguard Worker            }
174*35238bceSAndroid Build Coastguard Worker        ""
175*35238bceSAndroid Build Coastguard Worker    end
176*35238bceSAndroid Build Coastguard Worker
177*35238bceSAndroid Build Coastguard Workerend # short_circuit
178