summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Lejeune <vljn@ovi.com>2013-04-19 20:10:44 +0200
committerVincent Lejeune <vljn@ovi.com>2013-04-19 20:37:41 +0200
commit578e2d7ffc521613a1112b252cbdbc47c162feca (patch)
tree270545a5aab5bc37a71c366833892d6aef36809d
parentce35997061082e3d364c4962d23c08319df552dd (diff)
r600/llvm: Read stacksize from config headernative
-rw-r--r--src/gallium/drivers/r600/r600_llvm.c2
-rw-r--r--src/gallium/drivers/r600/r600_llvm.h1
-rw-r--r--src/gallium/drivers/r600/r600_shader.c3
3 files changed, 4 insertions, 2 deletions
diff --git a/src/gallium/drivers/r600/r600_llvm.c b/src/gallium/drivers/r600/r600_llvm.c
index 35d6c9015d..8344fb0250 100644
--- a/src/gallium/drivers/r600/r600_llvm.c
+++ b/src/gallium/drivers/r600/r600_llvm.c
@@ -556,6 +556,7 @@ unsigned r600_llvm_compile(
unsigned * inst_byte_count,
enum radeon_family family,
unsigned *ngpr,
+ unsigned *stack_size,
unsigned dump)
{
unsigned r;
@@ -565,6 +566,7 @@ unsigned r600_llvm_compile(
*inst_bytes = binary.code;
*inst_byte_count = binary.code_size;
*ngpr = util_le32_to_cpu(*(uint32_t*)binary.config);
+ *stack_size = util_le32_to_cpu(*(uint32_t*)binary.config + 4);
return r;
}
diff --git a/src/gallium/drivers/r600/r600_llvm.h b/src/gallium/drivers/r600/r600_llvm.h
index afc6881d67..b08343abd1 100644
--- a/src/gallium/drivers/r600/r600_llvm.h
+++ b/src/gallium/drivers/r600/r600_llvm.h
@@ -21,6 +21,7 @@ unsigned r600_llvm_compile(
unsigned * inst_byte_count,
enum radeon_family family,
unsigned *ngpr,
+ unsigned *stack_size,
unsigned dump);
#endif /* defined R600_USE_LLVM || defined HAVE_OPENCL */
diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c
index 9e83ce6f54..606dbeaf98 100644
--- a/src/gallium/drivers/r600/r600_shader.c
+++ b/src/gallium/drivers/r600/r600_shader.c
@@ -591,7 +591,6 @@ static void r600_bytecode_from_byte_stream(struct r600_shader_ctx *ctx,
unsigned char * bytes, unsigned num_bytes)
{
unsigned bytes_read = 0;
- ctx->bc->nstack = bytes[bytes_read++];
unsigned i, byte;
while (bytes_read < num_bytes) {
char inst_type = bytes[bytes_read++];
@@ -1462,7 +1461,7 @@ static int r600_shader_from_tgsi(struct r600_screen *rscreen,
mod = r600_tgsi_llvm(&radeon_llvm_ctx, tokens);
if (r600_llvm_compile(mod, &inst_bytes, &inst_byte_count,
- rscreen->family, &ctx.bc->ngpr, dump)) {
+ rscreen->family, &ctx.bc->ngpr, &ctx.bc->nstack, dump)) {
FREE(inst_bytes);
radeon_llvm_dispose(&radeon_llvm_ctx);
use_llvm = 0;