Mesa (master): prog_to_nir, tgsi_to_nir: make sure kill doesn't discard NaNs
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Sep 11 14:59:51 UTC 2019
Module: Mesa
Branch: master
Commit: b97c5edd7aa31fb531a330742a9e20064591fec2
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=b97c5edd7aa31fb531a330742a9e20064591fec2
Author: Marek Olšák <marek.olsak at amd.com>
Date: Fri Sep 6 14:01:51 2019 -0400
prog_to_nir, tgsi_to_nir: make sure kill doesn't discard NaNs
Reviewed-by: Connor Abbott <cwabbott0 at gmail.com>
---
src/gallium/auxiliary/nir/tgsi_to_nir.c | 4 ++++
src/mesa/program/prog_to_nir.c | 3 +++
2 files changed, 7 insertions(+)
diff --git a/src/gallium/auxiliary/nir/tgsi_to_nir.c b/src/gallium/auxiliary/nir/tgsi_to_nir.c
index b70e608ddf7..a8c798f9015 100644
--- a/src/gallium/auxiliary/nir/tgsi_to_nir.c
+++ b/src/gallium/auxiliary/nir/tgsi_to_nir.c
@@ -1109,7 +1109,11 @@ ttn_kill(nir_builder *b, nir_op op, nir_alu_dest dest, nir_ssa_def **src)
static void
ttn_kill_if(nir_builder *b, nir_op op, nir_alu_dest dest, nir_ssa_def **src)
{
+ /* flt must be exact, because NaN shouldn't discard. (apps rely on this) */
+ b->exact = true;
nir_ssa_def *cmp = nir_bany(b, nir_flt(b, src[0], nir_imm_float(b, 0.0)));
+ b->exact = false;
+
nir_intrinsic_instr *discard =
nir_intrinsic_instr_create(b->shader, nir_intrinsic_discard_if);
discard->src[0] = nir_src_for_ssa(cmp);
diff --git a/src/mesa/program/prog_to_nir.c b/src/mesa/program/prog_to_nir.c
index a5ac37af908..84ba708d0be 100644
--- a/src/mesa/program/prog_to_nir.c
+++ b/src/mesa/program/prog_to_nir.c
@@ -456,7 +456,10 @@ ptn_lrp(nir_builder *b, nir_alu_dest dest, nir_ssa_def **src)
static void
ptn_kil(nir_builder *b, nir_ssa_def **src)
{
+ /* flt must be exact, because NaN shouldn't discard. (apps rely on this) */
+ b->exact = true;
nir_ssa_def *cmp = nir_bany(b, nir_flt(b, src[0], nir_imm_float(b, 0.0)));
+ b->exact = false;
nir_intrinsic_instr *discard =
nir_intrinsic_instr_create(b->shader, nir_intrinsic_discard_if);
More information about the mesa-commit
mailing list