diff options
author | Dave Airlie <airlied@redhat.com> | 2014-02-17 16:35:20 +1000 |
---|---|---|
committer | Dave Airlie <airlied@gmail.com> | 2014-02-27 09:19:02 +1000 |
commit | b063dce5c26758859279d650949c9c1d8fc08a67 (patch) | |
tree | 41c79e78d3edea87839a398dd74b09f97d2a23df | |
parent | 217f2c746543537d5ce7f1e0e5f96661ec00ed66 (diff) |
try and get inf/nan to work
-rw-r--r-- | src/gallium/renderer/graw_shader.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/gallium/renderer/graw_shader.c b/src/gallium/renderer/graw_shader.c index caacc0ab2ef..2a38617fa09 100644 --- a/src/gallium/renderer/graw_shader.c +++ b/src/gallium/renderer/graw_shader.c @@ -3,6 +3,7 @@ #include "tgsi/tgsi_iterate.h" #include <string.h> #include <stdio.h> +#include <math.h> #include "graw_shader.h" extern int vrend_dump_shaders; /* @@ -592,7 +593,7 @@ iter_instruction(struct tgsi_iterate_context *iter, } else if (src->Register.File == TGSI_FILE_IMMEDIATE) { struct immed *imd = &ctx->imm[(src->Register.Index)]; int idx = src->Register.SwizzleX; - char temp[25]; + char temp[48]; const char *vtype = "vec4"; const char *imm_stypeprefix = stypeprefix; @@ -629,7 +630,10 @@ iter_instruction(struct tgsi_iterate_context *iter, idx = src->Register.SwizzleW; switch (imd->type) { case TGSI_IMM_FLOAT32: - snprintf(temp, 25, "%.8g", imd->val[idx].f); + if (isinf(imd->val[idx].f) || isnan(imd->val[idx].f)) + snprintf(temp, 48, "uintBitsToFloat(%uU)", imd->val[idx].ui); + else + snprintf(temp, 25, "%.8g", imd->val[idx].f); break; case TGSI_IMM_UINT32: snprintf(temp, 25, "%u", imd->val[idx].ui); |