From: Ian Romanick <ian.d.roman...@intel.com> The fsign(-abs(x)) tests tickle a bug in the Mesa i965 driver that was found by inspection.
Signed-off-by: Ian Romanick <ian.d.roman...@intel.com> --- .../execution/fs-sign-neg-abs.shader_test | 28 ++++++++++++++++ .../glsl-1.10/execution/fs-sign-neg.shader_test | 26 +++++++++++++++ .../execution/vs-sign-neg-abs.shader_test | 38 ++++++++++++++++++++++ .../glsl-1.10/execution/vs-sign-neg.shader_test | 36 ++++++++++++++++++++ 4 files changed, 128 insertions(+) create mode 100644 tests/spec/glsl-1.10/execution/fs-sign-neg-abs.shader_test create mode 100644 tests/spec/glsl-1.10/execution/fs-sign-neg.shader_test create mode 100644 tests/spec/glsl-1.10/execution/vs-sign-neg-abs.shader_test create mode 100644 tests/spec/glsl-1.10/execution/vs-sign-neg.shader_test diff --git a/tests/spec/glsl-1.10/execution/fs-sign-neg-abs.shader_test b/tests/spec/glsl-1.10/execution/fs-sign-neg-abs.shader_test new file mode 100644 index 000000000..285c6e749 --- /dev/null +++ b/tests/spec/glsl-1.10/execution/fs-sign-neg-abs.shader_test @@ -0,0 +1,28 @@ +[require] +GLSL >= 1.10 + +[vertex shader passthrough] + +[fragment shader] +uniform vec4 arg0; +uniform vec4 arg1; +uniform vec4 expect; + +void main() +{ + if (sign(-abs(arg0)) != -sign(abs(arg1))) + gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); + else if (sign(-abs(arg0)) != -abs(sign(arg1))) + gl_FragColor = vec4(0.5, 0.0, 0.5, 1.0); + else if (sign(-abs(arg0)) != expect) + gl_FragColor = vec4(0.0, 0.0, 1.0, 1.0); + else + gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0); +} + +[test] +uniform vec4 arg0 -5.0 5.0 0.0 0.0 +uniform vec4 arg1 -2.0 2.0 0.0 0.0 +uniform vec4 expect 1.0 -1.0 0.0 0.0 +draw rect -1 -1 2 2 +probe rgb 1 1 0.0 1.0 0.0 diff --git a/tests/spec/glsl-1.10/execution/fs-sign-neg.shader_test b/tests/spec/glsl-1.10/execution/fs-sign-neg.shader_test new file mode 100644 index 000000000..a881fc80f --- /dev/null +++ b/tests/spec/glsl-1.10/execution/fs-sign-neg.shader_test @@ -0,0 +1,26 @@ +[require] +GLSL >= 1.10 + +[vertex shader passthrough] + +[fragment shader] +uniform vec4 arg0; +uniform vec4 arg1; +uniform vec4 expect; + +void main() +{ + if (sign(-arg0) != -sign(arg1)) + gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); + else if (sign(-arg0) != expect) + gl_FragColor = vec4(0.0, 0.0, 1.0, 1.0); + else + gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0); +} + +[test] +uniform vec4 arg0 -5.0 5.0 0.0 0.0 +uniform vec4 arg1 -2.0 2.0 0.0 0.0 +uniform vec4 expect 1.0 -1.0 0.0 0.0 +draw rect -1 -1 2 2 +probe rgb 1 1 0.0 1.0 0.0 diff --git a/tests/spec/glsl-1.10/execution/vs-sign-neg-abs.shader_test b/tests/spec/glsl-1.10/execution/vs-sign-neg-abs.shader_test new file mode 100644 index 000000000..e7f0546f3 --- /dev/null +++ b/tests/spec/glsl-1.10/execution/vs-sign-neg-abs.shader_test @@ -0,0 +1,38 @@ +[require] +GLSL >= 1.10 + +[vertex shader] +uniform vec4 arg0; +uniform vec4 arg1; +uniform vec4 expect; + +varying vec4 color; + +void main() +{ + if (sign(-abs(arg0)) != -sign(abs(arg1))) + color = vec4(1.0, 0.0, 0.0, 1.0); + else if (sign(-abs(arg0)) != -abs(sign(arg1))) + color = vec4(0.5, 0.0, 0.5, 1.0); + else if (sign(-abs(arg0)) != expect) + color = vec4(0.0, 0.0, 1.0, 1.0); + else + color = vec4(0.0, 1.0, 0.0, 1.0); + + gl_Position = gl_Vertex; +} + +[fragment shader] +varying vec4 color; + +void main() +{ + gl_FragColor = color; +} + +[test] +uniform vec4 arg0 -5.0 5.0 0.0 0.0 +uniform vec4 arg1 -2.0 2.0 0.0 0.0 +uniform vec4 expect 1.0 -1.0 0.0 0.0 +draw rect -1 -1 2 2 +probe rgb 1 1 0.0 1.0 0.0 diff --git a/tests/spec/glsl-1.10/execution/vs-sign-neg.shader_test b/tests/spec/glsl-1.10/execution/vs-sign-neg.shader_test new file mode 100644 index 000000000..0f7526d63 --- /dev/null +++ b/tests/spec/glsl-1.10/execution/vs-sign-neg.shader_test @@ -0,0 +1,36 @@ +[require] +GLSL >= 1.10 + +[vertex shader] +uniform vec4 arg0; +uniform vec4 arg1; +uniform vec4 expect; + +varying vec4 color; + +void main() +{ + if (sign(-arg0) != -sign(arg1)) + color = vec4(1.0, 0.0, 0.0, 1.0); + else if (sign(-arg0) != expect) + color = vec4(0.0, 0.0, 1.0, 1.0); + else + color = vec4(0.0, 1.0, 0.0, 1.0); + + gl_Position = gl_Vertex; +} + +[fragment shader] +varying vec4 color; + +void main() +{ + gl_FragColor = color; +} + +[test] +uniform vec4 arg0 -5.0 5.0 0.0 0.0 +uniform vec4 arg1 -2.0 2.0 0.0 0.0 +uniform vec4 expect 1.0 -1.0 0.0 0.0 +draw rect -1 -1 2 2 +probe rgb 1 1 0.0 1.0 0.0 -- 2.14.4 _______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/piglit