[Piglit] [PATCH] arb_gpu_shader_fp64: Test the sign() function with abs() and negation of its argument

Timothy Arceri tarceri at itsqueeze.com
Sat Jun 30 01:07:27 UTC 2018


Reviewed-by: Timothy Arceri <tarceri at itsqueeze.com>

On 27/06/18 17:28, Ian Romanick wrote:
> From: Ian Romanick <ian.d.romanick at intel.com>
> 
> The saturate version hits an assertion failure in the Mesa i965 driver:
> 
> src/intel/compiler/brw_fs.cpp:2377: bool fs_visitor::opt_algebraic(): Assertion `!"unimplemented: saturate mixed types"' failed.
> 
> Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
> ---
>   .../built-in-functions/fs-sign-neg-abs.shader_test | 33 +++++++++++++++++
>   .../built-in-functions/fs-sign-neg.shader_test     | 31 ++++++++++++++++
>   .../fs-sign-sat-neg-abs.shader_test                | 27 ++++++++++++++
>   .../built-in-functions/vs-sign-neg-abs.shader_test | 43 ++++++++++++++++++++++
>   .../built-in-functions/vs-sign-neg.shader_test     | 41 +++++++++++++++++++++
>   .../vs-sign-sat-neg-abs.shader_test                | 37 +++++++++++++++++++
>   6 files changed, 212 insertions(+)
>   create mode 100644 tests/spec/arb_gpu_shader_fp64/execution/built-in-functions/fs-sign-neg-abs.shader_test
>   create mode 100644 tests/spec/arb_gpu_shader_fp64/execution/built-in-functions/fs-sign-neg.shader_test
>   create mode 100644 tests/spec/arb_gpu_shader_fp64/execution/built-in-functions/fs-sign-sat-neg-abs.shader_test
>   create mode 100644 tests/spec/arb_gpu_shader_fp64/execution/built-in-functions/vs-sign-neg-abs.shader_test
>   create mode 100644 tests/spec/arb_gpu_shader_fp64/execution/built-in-functions/vs-sign-neg.shader_test
>   create mode 100644 tests/spec/arb_gpu_shader_fp64/execution/built-in-functions/vs-sign-sat-neg-abs.shader_test
> 
> diff --git a/tests/spec/arb_gpu_shader_fp64/execution/built-in-functions/fs-sign-neg-abs.shader_test b/tests/spec/arb_gpu_shader_fp64/execution/built-in-functions/fs-sign-neg-abs.shader_test
> new file mode 100644
> index 000000000..642bf3d78
> --- /dev/null
> +++ b/tests/spec/arb_gpu_shader_fp64/execution/built-in-functions/fs-sign-neg-abs.shader_test
> @@ -0,0 +1,33 @@
> +[require]
> +GLSL >= 1.50
> +GL_ARB_gpu_shader_fp64
> +
> +[vertex shader passthrough]
> +
> +[fragment shader]
> +#extension GL_ARB_gpu_shader_fp64: require
> +
> +uniform dvec4 arg0;
> +uniform dvec4 arg1;
> +uniform dvec4 expect;
> +
> +out vec4 piglit_fragcolor;
> +
> +void main()
> +{
> +	if (sign(-abs(arg0)) != -sign(abs(arg1)))
> +		piglit_fragcolor = vec4(1.0, 0.0, 0.0, 1.0);
> +	else if (sign(-abs(arg0)) != -abs(sign(arg1)))
> +		piglit_fragcolor = vec4(0.5, 0.0, 0.5, 1.0);
> +	else if (sign(-abs(arg0)) != expect)
> +		piglit_fragcolor = vec4(0.0, 0.0, 1.0, 1.0);
> +	else
> +		piglit_fragcolor = vec4(0.0, 1.0, 0.0, 1.0);
> +}
> +
> +[test]
> +uniform dvec4 arg0 -5.0 5.0 0.0 0.0
> +uniform dvec4 arg1 -2.0 2.0 0.0 0.0
> +uniform dvec4 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/arb_gpu_shader_fp64/execution/built-in-functions/fs-sign-neg.shader_test b/tests/spec/arb_gpu_shader_fp64/execution/built-in-functions/fs-sign-neg.shader_test
> new file mode 100644
> index 000000000..a8f49874e
> --- /dev/null
> +++ b/tests/spec/arb_gpu_shader_fp64/execution/built-in-functions/fs-sign-neg.shader_test
> @@ -0,0 +1,31 @@
> +[require]
> +GLSL >= 1.50
> +GL_ARB_gpu_shader_fp64
> +
> +[vertex shader passthrough]
> +
> +[fragment shader]
> +#extension GL_ARB_gpu_shader_fp64: require
> +
> +uniform dvec4 arg0;
> +uniform dvec4 arg1;
> +uniform dvec4 expect;
> +
> +out vec4 piglit_fragcolor;
> +
> +void main()
> +{
> +	if (sign(-arg0) != -sign(arg1))
> +		piglit_fragcolor = vec4(1.0, 0.0, 0.0, 1.0);
> +	else if (sign(-arg0) != expect)
> +		piglit_fragcolor = vec4(0.0, 0.0, 1.0, 1.0);
> +	else
> +		piglit_fragcolor = vec4(0.0, 1.0, 0.0, 1.0);
> +}
> +
> +[test]
> +uniform dvec4 arg0 -5.0 5.0 0.0 0.0
> +uniform dvec4 arg1 -2.0 2.0 0.0 0.0
> +uniform dvec4 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/arb_gpu_shader_fp64/execution/built-in-functions/fs-sign-sat-neg-abs.shader_test b/tests/spec/arb_gpu_shader_fp64/execution/built-in-functions/fs-sign-sat-neg-abs.shader_test
> new file mode 100644
> index 000000000..81ae2d441
> --- /dev/null
> +++ b/tests/spec/arb_gpu_shader_fp64/execution/built-in-functions/fs-sign-sat-neg-abs.shader_test
> @@ -0,0 +1,27 @@
> +[require]
> +GLSL >= 1.50
> +GL_ARB_gpu_shader_fp64
> +
> +[vertex shader passthrough]
> +
> +[fragment shader]
> +#extension GL_ARB_gpu_shader_fp64: require
> +
> +uniform dvec4 arg0;
> +uniform dvec4 expect;
> +
> +out vec4 piglit_fragcolor;
> +
> +void main()
> +{
> +	if (clamp(sign(-abs(arg0)), 0.0, 1.0) != expect)
> +		piglit_fragcolor = vec4(1.0, 0.0, 0.0, 1.0);
> +	else
> +		piglit_fragcolor = vec4(0.0, 1.0, 0.0, 1.0);
> +}
> +
> +[test]
> +uniform dvec4 arg0 -5.0 5.0 0.0 0.0
> +uniform dvec4 expect 0.0 0.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/arb_gpu_shader_fp64/execution/built-in-functions/vs-sign-neg-abs.shader_test b/tests/spec/arb_gpu_shader_fp64/execution/built-in-functions/vs-sign-neg-abs.shader_test
> new file mode 100644
> index 000000000..a292f2621
> --- /dev/null
> +++ b/tests/spec/arb_gpu_shader_fp64/execution/built-in-functions/vs-sign-neg-abs.shader_test
> @@ -0,0 +1,43 @@
> +[require]
> +GLSL >= 1.50
> +GL_ARB_gpu_shader_fp64
> +
> +[vertex shader]
> +#extension GL_ARB_gpu_shader_fp64: require
> +
> +uniform dvec4 arg0;
> +uniform dvec4 arg1;
> +uniform dvec4 expect;
> +
> +out vec4 color;
> +in vec4 piglit_vertex;
> +
> +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 = piglit_vertex;
> +}
> +
> +[fragment shader]
> +in vec4 color;
> +out vec4 piglit_fragcolor;
> +
> +void main()
> +{
> +	piglit_fragcolor = color;
> +}
> +
> +[test]
> +uniform dvec4 arg0 -5.0 5.0 0.0 0.0
> +uniform dvec4 arg1 -2.0 2.0 0.0 0.0
> +uniform dvec4 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/arb_gpu_shader_fp64/execution/built-in-functions/vs-sign-neg.shader_test b/tests/spec/arb_gpu_shader_fp64/execution/built-in-functions/vs-sign-neg.shader_test
> new file mode 100644
> index 000000000..fdf87ea1a
> --- /dev/null
> +++ b/tests/spec/arb_gpu_shader_fp64/execution/built-in-functions/vs-sign-neg.shader_test
> @@ -0,0 +1,41 @@
> +[require]
> +GLSL >= 1.50
> +GL_ARB_gpu_shader_fp64
> +
> +[vertex shader]
> +#extension GL_ARB_gpu_shader_fp64: require
> +
> +uniform dvec4 arg0;
> +uniform dvec4 arg1;
> +uniform dvec4 expect;
> +
> +out vec4 color;
> +in vec4 piglit_vertex;
> +
> +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 = piglit_vertex;
> +}
> +
> +[fragment shader]
> +in vec4 color;
> +out vec4 piglit_fragcolor;
> +
> +void main()
> +{
> +	piglit_fragcolor = color;
> +}
> +
> +[test]
> +uniform dvec4 arg0 -5.0 5.0 0.0 0.0
> +uniform dvec4 arg1 -2.0 2.0 0.0 0.0
> +uniform dvec4 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/arb_gpu_shader_fp64/execution/built-in-functions/vs-sign-sat-neg-abs.shader_test b/tests/spec/arb_gpu_shader_fp64/execution/built-in-functions/vs-sign-sat-neg-abs.shader_test
> new file mode 100644
> index 000000000..b70afdd94
> --- /dev/null
> +++ b/tests/spec/arb_gpu_shader_fp64/execution/built-in-functions/vs-sign-sat-neg-abs.shader_test
> @@ -0,0 +1,37 @@
> +[require]
> +GLSL >= 1.50
> +GL_ARB_gpu_shader_fp64
> +
> +[vertex shader]
> +#extension GL_ARB_gpu_shader_fp64: require
> +
> +uniform dvec4 arg0;
> +uniform dvec4 expect;
> +
> +out vec4 color;
> +in vec4 piglit_vertex;
> +
> +void main()
> +{
> +
> +	if (clamp(sign(-abs(arg0)), 0.0, 1.0) != expect)
> +		color = vec4(1.0, 0.0, 0.0, 1.0);
> +	else
> +		color = vec4(0.0, 1.0, 0.0, 1.0);
> +	gl_Position = piglit_vertex;
> +}
> +
> +[fragment shader]
> +in vec4 color;
> +out vec4 piglit_fragcolor;
> +
> +void main()
> +{
> +	piglit_fragcolor = color;
> +}
> +
> +[test]
> +uniform dvec4 arg0 -5.0 5.0 0.0 0.0
> +uniform dvec4 expect 0.0 0.0 0.0 0.0
> +draw rect -1 -1 2 2
> +probe rgb 1 1 0.0 1.0 0.0
> 


More information about the Piglit mailing list