summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2012-08-06 14:24:18 -0700
committerEric Anholt <eric@anholt.net>2012-08-06 14:56:18 -0700
commite78f8adbf06b9752353ed3249be45837f567374c (patch)
treebca12e67128e28ee302c1048be54288e360669ff
parent1eb3ba06c76de0cad6d0ff4e600fe768a8b3b1bd (diff)
glsl-1.10: Add tests for a bunch of i965 code generation bugs.saturate
It turns out that everywhere I looked, there were bugs related to saturate handling with math. (I started with 2 tests for 3 bugs, and found another bug requiring more tests while fixing it)
-rw-r--r--tests/spec/glsl-1.10/execution/fs-saturate-pow.shader_test24
-rw-r--r--tests/spec/glsl-1.10/execution/fs-saturate-sqrt.shader_test22
-rw-r--r--tests/spec/glsl-1.10/execution/vs-saturate-pow.shader_test28
-rw-r--r--tests/spec/glsl-1.10/execution/vs-saturate-sqrt.shader_test26
4 files changed, 100 insertions, 0 deletions
diff --git a/tests/spec/glsl-1.10/execution/fs-saturate-pow.shader_test b/tests/spec/glsl-1.10/execution/fs-saturate-pow.shader_test
new file mode 100644
index 000000000..0ce5d6600
--- /dev/null
+++ b/tests/spec/glsl-1.10/execution/fs-saturate-pow.shader_test
@@ -0,0 +1,24 @@
+# This test exercises a bug introduced in i965: Comparison of comparison
+# results to boolean values gave incorrect results.
+
+[vertex shader]
+void main()
+{
+ gl_Position = gl_Vertex;
+}
+
+[fragment shader]
+uniform vec4 x;
+uniform vec4 y;
+
+void main()
+{
+ gl_FragColor = 0.25 + clamp(pow(x, y), 0.0, 1.0) * 0.5;
+}
+
+[test]
+uniform vec4 x 0.5 2.0 0.5 1.0
+uniform vec4 y 2.0 0.5 -1.0 1.0
+
+draw rect -1 -1 2 2
+probe all rgba 0.375 0.75 0.75 0.75
diff --git a/tests/spec/glsl-1.10/execution/fs-saturate-sqrt.shader_test b/tests/spec/glsl-1.10/execution/fs-saturate-sqrt.shader_test
new file mode 100644
index 000000000..78ffb26ec
--- /dev/null
+++ b/tests/spec/glsl-1.10/execution/fs-saturate-sqrt.shader_test
@@ -0,0 +1,22 @@
+# This test exercises a bug introduced in i965: Comparison of comparison
+# results to boolean values gave incorrect results.
+
+[vertex shader]
+void main()
+{
+ gl_Position = gl_Vertex;
+}
+
+[fragment shader]
+uniform vec4 v;
+
+void main()
+{
+ gl_FragColor = 0.25 + clamp(sqrt(v), 0.0, 1.0) * 0.5;
+}
+
+[test]
+uniform vec4 v 0.25 1.0 2.0 0.25
+
+draw rect -1 -1 2 2
+probe all rgba 0.5 0.75 0.75 0.5
diff --git a/tests/spec/glsl-1.10/execution/vs-saturate-pow.shader_test b/tests/spec/glsl-1.10/execution/vs-saturate-pow.shader_test
new file mode 100644
index 000000000..01da4b8ea
--- /dev/null
+++ b/tests/spec/glsl-1.10/execution/vs-saturate-pow.shader_test
@@ -0,0 +1,28 @@
+# This test exercises a bug introduced in i965: Comparison of comparison
+# results to boolean values gave incorrect results.
+
+[vertex shader]
+uniform vec4 x;
+uniform vec4 y;
+varying vec4 color;
+
+void main()
+{
+ gl_Position = gl_Vertex;
+ color = 0.25 + clamp(pow(x, y), 0.0, 1.0) * 0.5;
+}
+
+[fragment shader]
+varying vec4 color;
+
+void main()
+{
+ gl_FragColor = color;
+}
+
+[test]
+uniform vec4 x 0.5 2.0 0.5 1.0
+uniform vec4 y 2.0 0.5 -1.0 1.0
+
+draw rect -1 -1 2 2
+probe all rgba 0.375 0.75 0.75 0.75
diff --git a/tests/spec/glsl-1.10/execution/vs-saturate-sqrt.shader_test b/tests/spec/glsl-1.10/execution/vs-saturate-sqrt.shader_test
new file mode 100644
index 000000000..4f64382e3
--- /dev/null
+++ b/tests/spec/glsl-1.10/execution/vs-saturate-sqrt.shader_test
@@ -0,0 +1,26 @@
+# This test exercises a bug introduced in i965: Comparison of comparison
+# results to boolean values gave incorrect results.
+
+[vertex shader]
+uniform vec4 v;
+varying vec4 color;
+
+void main()
+{
+ gl_Position = gl_Vertex;
+ color = 0.25 + clamp(sqrt(v), 0.0, 1.0) * 0.5;
+}
+
+[fragment shader]
+varying vec4 color;
+
+void main()
+{
+ gl_FragColor = color;
+}
+
+[test]
+uniform vec4 v 0.25 1.0 2.0 0.25
+
+draw rect -1 -1 2 2
+probe all rgba 0.5 0.75 0.75 0.5