[Piglit] [PATCH 3/3] arb_uniform_buffer_objects: add a test for a GLSL bug
Marek Olšák
maraeo at gmail.com
Thu Jan 1 06:17:12 PST 2015
From: Marek Olšák <marek.olsak at amd.com>
---
.../2-buffers-bug.shader_test | 58 ++++++++++++++++++++++
1 file changed, 58 insertions(+)
create mode 100644 tests/spec/arb_uniform_buffer_object/2-buffers-bug.shader_test
diff --git a/tests/spec/arb_uniform_buffer_object/2-buffers-bug.shader_test b/tests/spec/arb_uniform_buffer_object/2-buffers-bug.shader_test
new file mode 100644
index 0000000..6c45946
--- /dev/null
+++ b/tests/spec/arb_uniform_buffer_object/2-buffers-bug.shader_test
@@ -0,0 +1,58 @@
+[require]
+GLSL >= 1.30
+GL_ARB_uniform_buffer_object
+
+[vertex shader]
+#extension GL_ARB_uniform_buffer_object : require
+
+uniform test_unif1
+{
+ float test1;
+ float test2;
+};
+
+uniform test_unif2
+{
+ float test3;
+ float test4;
+};
+
+in vec4 piglit_vertex;
+out vec4 fcolor;
+
+void main(void)
+{
+ gl_Position = piglit_vertex;
+
+ // The GLSL compiler has a bug that compiles this expression as:
+ // vec4(test1, test2, test1, test2)
+ //
+ // In other words, it only fetches from the first uniform block.
+ //
+ // This bug can be avoided by doing:
+ // vec4(test1, test2, test3, 0.4)
+ //
+ // In this case, the GLSL compiler correctly generates a fetch
+ // from the second uniform block.
+
+ fcolor = vec4(test1, test2, test3, test4);
+}
+
+[fragment shader]
+in vec4 fcolor;
+
+void main()
+{
+ gl_FragColor = fcolor;
+}
+
+[test]
+link success
+
+uniform float test1 0.1
+uniform float test2 0.2
+uniform float test3 0.3
+uniform float test4 0.4
+
+draw rect -1 -1 2 2
+probe all rgba 0.1 0.2 0.3 0.4
--
2.1.0
More information about the Piglit
mailing list