Mesa (9.1): svga: check for NaN shader immediates

Brian Paul brianp at kemper.freedesktop.org
Tue Jul 9 19:40:49 UTC 2013


Module: Mesa
Branch: 9.1
Commit: 26f802d0635fc247bbc3ebf6f7e9bf126b6b5e69
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=26f802d0635fc247bbc3ebf6f7e9bf126b6b5e69

Author: Brian Paul <brianp at vmware.com>
Date:   Wed Jan 30 17:44:25 2013 -0700

svga: check for NaN shader immediates

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 <jfonseca at vmware.com>
(cherry picked from commit 3cb491534493a52e9a88cb88d31727569afb8167)

---

 src/gallium/drivers/svga/svga_tgsi_insn.c |    6 ++++--
 1 files 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 36ed008..d439e5b 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];




More information about the mesa-commit mailing list