[Mesa-dev] [PATCH 22/22 v2] radeonsi: NaN should pass kill_if

Axel Davy davyaxel0 at gmail.com
Mon Sep 24 06:29:11 UTC 2018


Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=105333
Fixes: https://github.com/iXit/Mesa-3D/issues/314

For this application, NaN is passed to KILL_IF and is expected to
pass.

v2: Explain in the code why UGE is used.

Signed-off-by: Axel Davy <davyaxel0 at gmail.com>
Reviewed-by: Marek Olšák <marek.olsak at amd.com>

CC: <mesa-stable at lists.freedesktop.org>
---
 src/gallium/drivers/radeonsi/si_shader_tgsi_alu.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/gallium/drivers/radeonsi/si_shader_tgsi_alu.c b/src/gallium/drivers/radeonsi/si_shader_tgsi_alu.c
index f54d025aec0..a768b449047 100644
--- a/src/gallium/drivers/radeonsi/si_shader_tgsi_alu.c
+++ b/src/gallium/drivers/radeonsi/si_shader_tgsi_alu.c
@@ -60,7 +60,8 @@ static void kil_emit(const struct lp_build_tgsi_action *action,
 
 		for (i = 0; i < TGSI_NUM_CHANNELS; i++) {
 			LLVMValueRef value = lp_build_emit_fetch(bld_base, inst, 0, i);
-			conds[i] = LLVMBuildFCmp(builder, LLVMRealOGE, value,
+			/* UGE because NaN shouldn't get killed */
+			conds[i] = LLVMBuildFCmp(builder, LLVMRealUGE, value,
 						ctx->ac.f32_0, "");
 		}
 
-- 
2.18.0



More information about the mesa-dev mailing list