From: Ian Romanick <[email protected]> The fragment shader test reproduces a recently added bug in the i965 driver on GEN4 and GEN5 platforms. The optimization tries to be clever when comparison is with a constant value of zero. However, the generated comparison was inverted, so everything went wrong.
Signed-off-by: Ian Romanick <[email protected]> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=89722 --- .../fs-notEqual-of-expression.shader_test | 35 ++++++++++++++++++++++ .../vs-notEqual-of-expression.shader_test | 27 +++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 tests/spec/glsl-1.10/execution/fs-notEqual-of-expression.shader_test create mode 100644 tests/spec/glsl-1.10/execution/vs-notEqual-of-expression.shader_test diff --git a/tests/spec/glsl-1.10/execution/fs-notEqual-of-expression.shader_test b/tests/spec/glsl-1.10/execution/fs-notEqual-of-expression.shader_test new file mode 100644 index 0000000..0211fc6 --- /dev/null +++ b/tests/spec/glsl-1.10/execution/fs-notEqual-of-expression.shader_test @@ -0,0 +1,35 @@ +[require] +GLSL >= 1.10 + +[vertex shader] +varying vec4 c; +attribute vec4 piglit_vertex; + +void main() +{ + c = vec4(38.2, 2.0, 0.0, 1.0); + gl_Position = piglit_vertex; +} + +[fragment shader] +uniform vec4 a; +uniform float b; + +varying vec4 c; + +void main() +{ + /* This tickles a bug in the i965 driver on GEN4 and GEN5 platforms. An + * optimization tries to be clever doing a float cast of comparison with a + * constant value of zero. However, the generated comparison was + * inverted, so everything went wrong. + */ + gl_FragColor = vec4(notEqual(a * c, vec4(b, 13, 0, 0))); +} + +[test] +uniform vec4 a 1.0 1.0 1.0 1.0 +uniform float b 38.2 + +draw rect -1 -1 2 2 +probe all rgba 0.0 1.0 0.0 1.0 diff --git a/tests/spec/glsl-1.10/execution/vs-notEqual-of-expression.shader_test b/tests/spec/glsl-1.10/execution/vs-notEqual-of-expression.shader_test new file mode 100644 index 0000000..1c77c3c --- /dev/null +++ b/tests/spec/glsl-1.10/execution/vs-notEqual-of-expression.shader_test @@ -0,0 +1,27 @@ +[require] +GLSL >= 1.10 + +[vertex shader] +uniform vec4 a; +varying vec4 color; +attribute vec4 piglit_vertex; + +void main() +{ + color = vec4(notEqual(piglit_vertex.w * a, vec4(0))); + gl_Position = piglit_vertex; +} + +[fragment shader] +varying vec4 color; + +void main() +{ + gl_FragColor = color; +} + +[test] +uniform vec4 a 0.0 38.2 0.0 1.2 + +draw rect -1 -1 2 2 +probe all rgba 0.0 1.0 0.0 1.0 -- 2.1.0 _______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
