ext_gpu_shader4: add compiler tests for everything
[piglit.git] / tests / spec / glsl-1.10 / execution / vs-loop-simple-unroll-cf-inside-terminator.shader_test
blob182e65655ebf6fcf0f6784a9280887a666abdf5c
1 # This tests unrolling of a loop with a single exit point.
3 # Here we test that control flow nested inside the limiting terminator is
4 # correctly unrolled.
5 [require]
6 GLSL >= 1.10
8 [vertex shader]
9 void main()
11   gl_Position = gl_Vertex;
13   vec4 colour = vec4(1.0, 0.0, 0.0, 1.0);
15   int i = 0;
16   int j = 0; // we use this so the if doesn't get reduced to a series of bcsel
17   do {
18     i++;
19     j++;
21     if (i >= 3) {
22       if (i == 3) {
23          colour = vec4(0.0, 1.0, 0.0, 1.0);
24          j++;
25          if (j != 6)
26            colour = vec4(1.0, 0.0, 1.0, 1.0);
27       } else {
28         colour = vec4(1.0, 1.0, 0.0, 1.0);
29       }
30       break;
31     } else {
32       if (i != 1) {
33          j++;
34       }
35     }
37    if (i >= 5) {
38       j++; // unreachable
39       break;
40     } else {
41       if (i != 1) {
42          j++;
43       }
44     }
45   } while (i < 4);
47   gl_FrontColor = colour;
50 [fragment shader]
51 void main()
53   gl_FragColor = gl_Color;
56 [test]
57 clear color 0.5 0.5 0.5 0.5
59 draw rect -1 -1 2 2
60 probe all rgba 0.0 1.0 0.0 1.0