Mesa (master): tgsi: try and handle overflowing shaders. (v2)

Dave Airlie airlied at kemper.freedesktop.org
Fri Oct 23 04:41:38 UTC 2015


Module: Mesa
Branch: master
Commit: 531f5d1270782927911c5c720201e86c6f40182d
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=531f5d1270782927911c5c720201e86c6f40182d

Author: Dave Airlie <airlied at redhat.com>
Date:   Thu Jan 22 15:18:05 2015 +1000

tgsi: try and handle overflowing shaders. (v2)

This is used to detect error in virgl if we overflow the shader
dumping buffers.

v2: return a bool.

Reviewed-by: Marek Olšák <marek.olsak at amd.com>
Signed-off-by: Dave Airlie <airlied at redhat.com>

---

 src/gallium/auxiliary/tgsi/tgsi_dump.c |   10 ++++++++--
 src/gallium/auxiliary/tgsi/tgsi_dump.h |    2 +-
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/gallium/auxiliary/tgsi/tgsi_dump.c b/src/gallium/auxiliary/tgsi/tgsi_dump.c
index 3470739..e29ffb3 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_dump.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_dump.c
@@ -709,6 +709,7 @@ struct str_dump_ctx
    char *str;
    char *ptr;
    int left;
+   bool nospace;
 };
 
 static void
@@ -731,10 +732,11 @@ str_dump_ctx_printf(struct dump_ctx *ctx, const char *format, ...)
          sctx->ptr += written;
          sctx->left -= written;
       }
-   }
+   } else
+      sctx->nospace = true;
 }
 
-void
+bool
 tgsi_dump_str(
    const struct tgsi_token *tokens,
    uint flags,
@@ -761,6 +763,7 @@ tgsi_dump_str(
    ctx.str[0] = 0;
    ctx.ptr = str;
    ctx.left = (int)size;
+   ctx.nospace = false;
 
    if (flags & TGSI_DUMP_FLOAT_AS_HEX)
       ctx.base.dump_float_as_hex = TRUE;
@@ -768,6 +771,8 @@ tgsi_dump_str(
       ctx.base.dump_float_as_hex = FALSE;
 
    tgsi_iterate_shader( tokens, &ctx.base.iter );
+
+   return !ctx.nospace;
 }
 
 void
@@ -790,6 +795,7 @@ tgsi_dump_instruction_str(
    ctx.str[0] = 0;
    ctx.ptr = str;
    ctx.left = (int)size;
+   ctx.nospace = false;
 
    iter_instruction( &ctx.base.iter, (struct tgsi_full_instruction *)inst );
 }
diff --git a/src/gallium/auxiliary/tgsi/tgsi_dump.h b/src/gallium/auxiliary/tgsi/tgsi_dump.h
index 6666b98..c3722d3 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_dump.h
+++ b/src/gallium/auxiliary/tgsi/tgsi_dump.h
@@ -40,7 +40,7 @@ extern "C" {
 
 #define TGSI_DUMP_FLOAT_AS_HEX (1 << 0)
 
-void
+bool
 tgsi_dump_str(
    const struct tgsi_token *tokens,
    uint flags,




More information about the mesa-commit mailing list