From 3cb491534493a52e9a88cb88d31727569afb8167 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Wed, 30 Jan 2013 17:44:25 -0700 Subject: [PATCH] svga: check for NaN shader immediates MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit The svga device doesn't handle them. Replace with zeros. Fixes several piglit tests, such as "glsl-const-builtin-inversesqrt". Reviewed-by: Reviewed-by: José Fonseca --- src/gallium/drivers/svga/svga_tgsi_insn.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/svga/svga_tgsi_insn.c b/src/gallium/drivers/svga/svga_tgsi_insn.c index 36ed0089fba..d439e5b13aa 100644 --- a/src/gallium/drivers/svga/svga_tgsi_insn.c +++ b/src/gallium/drivers/svga/svga_tgsi_insn.c @@ -2716,8 +2716,10 @@ static boolean svga_emit_immediate( struct svga_shader_emitter *emit, unsigned i; assert(1 <= imm->Immediate.NrTokens && imm->Immediate.NrTokens <= 5); - for (i = 0; i < imm->Immediate.NrTokens - 1; i++) - value[i] = imm->u[i].Float; + for (i = 0; i < imm->Immediate.NrTokens - 1; i++) { + float f = imm->u[i].Float; + value[i] = util_is_inf_or_nan(f) ? 0.0f : f; + } for ( ; i < 4; i++ ) value[i] = id[i]; -- 2.30.2