summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Stellard <thomas.stellard@amd.com>2013-04-23 20:08:57 -0700
committerTom Stellard <thomas.stellard@amd.com>2013-04-24 12:42:41 -0400
commitf64058803ad43e360ffaa5f14763485f4cac0158 (patch)
tree46a8c123c76e4dbbaf2fdbf6f8a6707ccc090b84
parente29525f79fdb62993e14a4bc87a9e0955b838de0 (diff)
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.c7
-rw-r--r--src/gallium/drivers/r600/r600_llvm.h4
-rw-r--r--src/gallium/drivers/r600/r600_shader.c4
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 8344fb02509..2050be26df8 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 b08343abd1d..919dd244cd0 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 606dbeaf987..0204f805432 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;