ARB_ubo/referenced-by-shader: pass if shader compiler moves UBOs between shaders
[piglit.git] / tests / spec / arb_uniform_buffer_object / 2-buffers-bug.shader_test
blob6c459465d62344856f8dbd2f184a4907290542d0
1 [require]
2 GLSL >= 1.30
3 GL_ARB_uniform_buffer_object
5 [vertex shader]
6 #extension GL_ARB_uniform_buffer_object : require
8 uniform test_unif1
10         float test1;
11         float test2;
14 uniform test_unif2
16         float test3;
17         float test4;
20 in vec4 piglit_vertex;
21 out vec4 fcolor;
23 void main(void)
25         gl_Position = piglit_vertex;
27         // The GLSL compiler has a bug that compiles this expression as:
28         //    vec4(test1, test2, test1, test2)
29         //
30         // In other words, it only fetches from the first uniform block.
31         //
32         // This bug can be avoided by doing:
33         //    vec4(test1, test2, test3, 0.4)
34         //
35         // In this case, the GLSL compiler correctly generates a fetch
36         // from the second uniform block.
38         fcolor = vec4(test1, test2, test3, test4);
41 [fragment shader]
42 in vec4 fcolor;
44 void main()
46         gl_FragColor = fcolor;
49 [test]
50 link success
52 uniform float test1 0.1
53 uniform float test2 0.2
54 uniform float test3 0.3
55 uniform float test4 0.4
57 draw rect -1 -1 2 2
58 probe all rgba 0.1 0.2 0.3 0.4