[Piglit] [PATCH] glsl-vs-copy-propagation-1: New test for i965 driver bug.
Eric Anholt
eric at anholt.net
Tue Dec 27 12:19:49 PST 2011
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=42032
---
Ken: Here's a regression test for the bug. Thanks for figuring it out!
I think it was easier for me to read the squash of the 2/3 and 3/3
than to read them separately, though.
.../shaders/glsl-vs-copy-propagation-1.shader_test | 44 ++++++++++++++++++++
1 files changed, 44 insertions(+), 0 deletions(-)
create mode 100644 tests/shaders/glsl-vs-copy-propagation-1.shader_test
diff --git a/tests/shaders/glsl-vs-copy-propagation-1.shader_test b/tests/shaders/glsl-vs-copy-propagation-1.shader_test
new file mode 100644
index 0000000..2261287
--- /dev/null
+++ b/tests/shaders/glsl-vs-copy-propagation-1.shader_test
@@ -0,0 +1,44 @@
+[require]
+GLSL >= 1.10
+
+[vertex shader]
+/* Tests for a bug in the 965 vertex shader backend where kills of
+ * overwritten copy propagation sources didn't happen when new
+ * propagation entries were being created.
+ */
+
+uniform vec4 u;
+uniform int j;
+varying vec4 color;
+
+void main()
+{
+ float a;
+ float b = u.y;
+
+ color = u;
+
+ /* This loop tricks core GLSL into not optimizing out the
+ * pattern for hitting the driver bug.
+ */
+ for (int i = 0; i < j; i++) {
+ a = b; /* a = 1.0 */
+ b = color.z; /* b = 0 */
+ color.z = a; /* color.z = 0.5, but the bug makes it 0. */
+ }
+ gl_Position = gl_Vertex;
+}
+
+[fragment shader]
+varying vec4 color;
+
+void main()
+{
+ gl_FragColor = color;
+}
+
+[test]
+uniform vec4 u 0 1 0 0
+uniform int j 1
+draw rect -1 -1 2 2
+probe all rgba 0 1 1 0
--
1.7.7.3
More information about the Piglit
mailing list