perf/pixel-rate: new pixel throughput microbenchmark
[piglit.git] / tests / spec / glsl-1.10 / execution / vs-loop-complex-unroll-nested-break.shader_test
blob42721ca79a9f6ab4632bce093a4259807e876cea
1 # This tests for a bug in loop unrolling where we were detecting 2 breaks in
2 # the loop but only found a single terminator (exit condition). The result was
3 # we were attempting to do a complex unroll but failing half way through the
4 # unroll process. As a result we ended up creating an infinite loop.
5 [require]
6 GLSL >= 1.10
8 [vertex shader]
9 uniform int loop_break;
11 void main()
13   gl_Position = gl_Vertex;
15   vec4 colour;
16   int j = 0;
17   for (int i = 0; i < 4; i++) {
19      colour = vec4(0.0, 1.0, 0.0, 1.0);
21      if (i >= 2) {
22         j++; // we use this so the if doesn't get reduced to a series of bcsel
23         if (loop_break == 1 || j == loop_break) {
24            colour = vec4(1.0, 0.0, 0.0, 1.0);
25            break;
26         }
27      }
28   }
30   gl_FrontColor = colour;
33 [fragment shader]
34 void main()
36   gl_FragColor = gl_Color;
39 [test]
40 clear color 0.5 0.5 0.5 0.5
42 uniform int loop_break 0
43 draw rect -1 -1 2 2
44 probe all rgba 0.0 1.0 0.0 1.0
46 uniform int loop_break 1
47 draw rect -1 -1 2 2
48 probe all rgba 1.0 0.0 0.0 1.0