ext_gpu_shader4: add compiler tests for everything
[piglit.git] / tests / spec / glsl-1.10 / execution / vs-loop-variable-iteration-limit-unroll3.shader_test
blobb21f43ad0e8fb9eae3235c7d3ba5ca7a2c2544f4
1 # This tests unrolling of a loop with a single exit point but where the
2 # exact trip count is unknown, only the max iteration count (4) is known.
4 # Here we test all possible outcomes for the loop and also add some
5 # unreachable code to make sure it is not accessible after unrolling.
6 [require]
7 GLSL >= 1.10
9 [vertex shader]
10 uniform int loop_count;
12 void main()
14   gl_Position = gl_Vertex;
16   vec4 colour = vec4(1.0, 1.0, 1.0, 1.0);
18   int i = 0;
19   int x = 0;
20   while (x < loop_count && i < 4) {
21     if (x == 0 && i == 0)
22       colour = vec4(0.0, 0.25, 0.0, 1.0);
24     if (x == 2 && i == 1)
25       colour = vec4(0.0, 0.5, 0.0, 1.0);
27     if (x == 4 && i == 2)
28       colour = vec4(0.0, 0.75, 0.0, 1.0);
30     if (x == 6 && i == 3)
31       colour = vec4(0.0, 1.0, 0.0, 1.0);
33     /* This should be unreachable */
34     if (x >= 8 || i >= 4)
35       colour = vec4(1.0, 0.0, 0.0, 1.0);
37     i++;
38     x+=2;
39   }
41   gl_FrontColor = colour;
44 [fragment shader]
45 void main()
47   gl_FragColor = gl_Color;
50 [test]
51 clear color 0.5 0.5 0.5 0.5
53 uniform int loop_count 0
54 draw rect -1 -1 2 2
55 probe all rgba 1.0 1.0 1.0 1.0
57 uniform int loop_count 2
58 draw rect -1 -1 2 2
59 probe all rgba 0.0 0.25 0.0 1.0
61 uniform int loop_count 4
62 draw rect -1 -1 2 2
63 probe all rgba 0.0 0.5 0.0 1.0
65 uniform int loop_count 6
66 draw rect -1 -1 2 2
67 probe all rgba 0.0 0.75 0.0 1.0
69 uniform int loop_count 8
70 draw rect -1 -1 2 2
71 probe all rgba 0.0 1.0 0.0 1.0
73 uniform int loop_count 10
74 draw rect -1 -1 2 2
75 probe all rgba 0.0 1.0 0.0 1.0