On 11/13/2017 07:12 PM, Roland Scheidegger wrote:
Ping?
Am 09.11.2017 um 19:11 schrieb srol...@vmware.com:
From: Roland Scheidegger <srol...@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 */
My only nit-pick is to change that to NAN_OK.
Reviewed-by: Brian Paul <bri...@vmware.com>
};
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;
_______________________________________________
Piglit mailing list
Piglit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/piglit
_______________________________________________
Piglit mailing list
Piglit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/piglit