ARB_ubo/referenced-by-shader: pass if shader compiler moves UBOs between shaders
[piglit.git] / tests / spec / glsl-1.10 / execution / vs-loop-complex-unroll-cf-before-terminators.shader_test
blob9e766220da9a242177f82174bb9a8732215fce55
1 # This tests unrolling of a loop with two exit point where the trip count
2 # of one of the exits is known and the other unknown (conditional on uniform).
4 # Here we test that control flow that comes before the terminators is properly
5 # inserted into the unrolled loop.
6 [require]
7 GLSL >= 1.10
9 [vertex shader]
10 uniform int a;
12 void main()
14   gl_Position = gl_Vertex;
16   vec4 colour = vec4(1.0, 0.0, 0.0, 1.0);
18   int i = 0;
19   int j = 0;
20   do {
21     if (i == 2) {
22       colour = vec4(0.0, 0.0, 1.0, 1.0);
23       j++; // we use this so the if doesn't get reduced to a series of bcsel
24     } else {
25       colour = vec4(0.0, 1.0, 0.0, 1.0);
26     }
28     i++;
29     j++;
31     if (i >= 3) {
32       if (j != 4)
33          colour = vec4(1.0, 0.0, 0.0, 1.0);
34       break;
35     }
36   } while (a == 1);
38   gl_FrontColor = colour;
41 [fragment shader]
42 void main()
44   gl_FragColor = gl_Color;
47 [test]
48 clear color 0.5 0.5 0.5 0.5
50 uniform int a 0
51 draw rect -1 -1 2 2
52 probe all rgba 0.0 1.0 0.0 1.0
54 uniform int a 1
55 draw rect -1 -1 2 2
56 probe all rgba 0.0 0.0 1.0 1.0