diff options
author | Eric Anholt <eric@anholt.net> | 2012-08-06 14:24:18 -0700 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2012-08-06 14:56:18 -0700 |
commit | e78f8adbf06b9752353ed3249be45837f567374c (patch) | |
tree | bca12e67128e28ee302c1048be54288e360669ff | |
parent | 1eb3ba06c76de0cad6d0ff4e600fe768a8b3b1bd (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)
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 |