diff options
author | Tom Stellard <thomas.stellard@amd.com> | 2013-04-23 20:08:57 -0700 |
---|---|---|
committer | Tom Stellard <thomas.stellard@amd.com> | 2013-04-24 12:42:41 -0400 |
commit | f64058803ad43e360ffaa5f14763485f4cac0158 (patch) | |
tree | 46a8c123c76e4dbbaf2fdbf6f8a6707ccc090b84 | |
parent | e29525f79fdb62993e14a4bc87a9e0955b838de0 (diff) | |
download | external_mesa3d-f64058803ad43e360ffaa5f14763485f4cac0158.zip external_mesa3d-f64058803ad43e360ffaa5f14763485f4cac0158.tar.gz external_mesa3d-f64058803ad43e360ffaa5f14763485f4cac0158.tar.bz2 |
r600g/llvm: Pass struct r600_bytecode to r600_llvm_compile
This way we don't need to update the function signature everytime we
emit a new config value. This also fixes the build with
--enable-opencl.
-rw-r--r-- | src/gallium/drivers/r600/r600_llvm.c | 7 | ||||
-rw-r--r-- | src/gallium/drivers/r600/r600_llvm.h | 4 | ||||
-rw-r--r-- | src/gallium/drivers/r600/r600_shader.c | 4 |
3 files changed, 7 insertions, 8 deletions
diff --git a/src/gallium/drivers/r600/r600_llvm.c b/src/gallium/drivers/r600/r600_llvm.c index 8344fb0..2050be2 100644 --- a/src/gallium/drivers/r600/r600_llvm.c +++ b/src/gallium/drivers/r600/r600_llvm.c @@ -555,8 +555,7 @@ unsigned r600_llvm_compile( unsigned char ** inst_bytes, unsigned * inst_byte_count, enum radeon_family family, - unsigned *ngpr, - unsigned *stack_size, + struct r600_bytecode *bc, unsigned dump) { unsigned r; @@ -565,8 +564,8 @@ unsigned r600_llvm_compile( r = radeon_llvm_compile(mod, &binary, gpu_family, dump); *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); + bc->ngpr = util_le32_to_cpu(*(uint32_t*)binary.config); + bc->nstack = 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 b08343a..919dd24 100644 --- a/src/gallium/drivers/r600/r600_llvm.h +++ b/src/gallium/drivers/r600/r600_llvm.h @@ -7,6 +7,7 @@ #include "radeon_llvm.h" #include <llvm-c/Core.h> +struct r600_bytecode; struct r600_shader_ctx; struct radeon_llvm_context; enum radeon_family; @@ -20,8 +21,7 @@ unsigned r600_llvm_compile( unsigned char ** inst_bytes, unsigned * inst_byte_count, enum radeon_family family, - unsigned *ngpr, - unsigned *stack_size, + struct r600_bytecode *bc, 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 606dbea..0204f80 100644 --- a/src/gallium/drivers/r600/r600_shader.c +++ b/src/gallium/drivers/r600/r600_shader.c @@ -279,7 +279,7 @@ int r600_compute_shader_create(struct pipe_context * ctx, shader_ctx.bc->type = TGSI_PROCESSOR_COMPUTE; shader_ctx.bc->isa = r600_ctx->isa; r600_llvm_compile(mod, &bytes, &byte_count, r600_ctx->family, - &shader_ctx.bc->ngpr, dump); + shader_ctx.bc, dump); r600_bytecode_from_byte_stream(&shader_ctx, bytes, byte_count); if (shader_ctx.bc->chip_class == CAYMAN) { cm_bytecode_add_cf_end(shader_ctx.bc); @@ -1461,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, &ctx.bc->nstack, dump)) { + rscreen->family, ctx.bc, dump)) { FREE(inst_bytes); radeon_llvm_dispose(&radeon_llvm_ctx); use_llvm = 0; |