[Piglit] [PATCH] isinf-and-isnan: add clamp / min / max tests
Roland Scheidegger
sroland at vmware.com
Tue Nov 14 02:12:25 UTC 2017
Ping?
Am 09.11.2017 um 19:11 schrieb sroland at vmware.com:
> From: Roland Scheidegger <sroland at vmware.com>
>
> We expect non-nan results for these (according to d3d10 rules, and at least
> for min/max, also according to ieee rules). The tests will not actually fail
> with other results (since GL's NaN behavior is all undefined), albeit some
> apps may rely on this.
> (We'll use clamp to 0/1 on purpose, which may get optimized to a saturate
> modifier on some hw, and ideally we'd see a non-nan result there too. The
> expected result there is really zero (d3d10 would require this), so if
> it gets decomposed into min/max combo the order is actually important.)
> On r600, right now all 3 give undesired (NaN) results (pending fixes),
> albeit all legal.
> ---
> tests/spec/glsl-1.30/execution/isinf-and-isnan.c | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/tests/spec/glsl-1.30/execution/isinf-and-isnan.c b/tests/spec/glsl-1.30/execution/isinf-and-isnan.c
> index 099b5c2..77a7591 100644
> --- a/tests/spec/glsl-1.30/execution/isinf-and-isnan.c
> +++ b/tests/spec/glsl-1.30/execution/isinf-and-isnan.c
> @@ -340,6 +340,7 @@ enum behavior
> B_FINITE = 1, /* Expected to evaluate to a finite value */
> B_POSINF = 2, /* Expected to evaluate to +Infinity */
> B_NEGINF = 3, /* Expected to evaluate to -Infinity */
> + B_FINITE_NANOK = 4, /* Expected finite value, but NaN ok */
> };
>
> struct expression_table_element
> @@ -369,6 +370,10 @@ static struct expression_table_element expressions[] = {
> { "log(-1.0+z)", B_NAN },
> { "sqrt(-1.0)", B_NAN },
> { "sqrt(-1.0+z)", B_NAN },
> + { "clamp(u_nan, 0.0, 1.0)", B_FINITE_NANOK },
> + { "min(u_two, u_nan)", B_FINITE_NANOK },
> + { "max(u_two, u_nan)", B_FINITE_NANOK },
> +
> };
>
> /**
> @@ -446,6 +451,7 @@ test_expr(char *expression, int expected_behavior)
> "uniform float u_inf;\n" /* Always == +infinity */
> "uniform float u_minus_inf;\n" /* Always == -infinity */
> "uniform float u_nan;\n" /* Always == NaN */
> + "uniform float u_two = 2.0;\n" /* To defeat constant folding */
> "float compute_value() {\n"
> " return %s;\n"
> "}\n",
> @@ -523,6 +529,9 @@ test_expr(char *expression, int expected_behavior)
> pass = false;
> }
> break;
> + case B_FINITE_NANOK:
> + expected_behavior_string = "finite";
> + break;
> default:
> expected_behavior_string = "NaN";
> break;
>
More information about the Piglit
mailing list