Browse Source

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@amd.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
tags/11.1-branchpoint
Dave Airlie 11 years ago
parent
commit
531f5d1270
2 changed files with 9 additions and 3 deletions
  1. 8
    2
      src/gallium/auxiliary/tgsi/tgsi_dump.c
  2. 1
    1
      src/gallium/auxiliary/tgsi/tgsi_dump.h

+ 8
- 2
src/gallium/auxiliary/tgsi/tgsi_dump.c View File

@@ -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 );
}

+ 1
- 1
src/gallium/auxiliary/tgsi/tgsi_dump.h View File

@@ -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,

Loading…
Cancel
Save