From 51e9bfdc48b6d73aa0fa0a8f7911863b5968bdb9 Mon Sep 17 00:00:00 2001 From: Vincent Lejeune Date: Sun, 28 Apr 2013 00:01:00 +0200 Subject: [PATCH] r600g/llvm: get use_kill from compiler shader --- src/gallium/drivers/r600/r600_llvm.c | 2 ++ src/gallium/drivers/r600/r600_llvm.h | 1 + src/gallium/drivers/r600/r600_shader.c | 6 +++++- src/gallium/drivers/radeon/LLVM_REVISION.txt | 2 +- 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/r600/r600_llvm.c b/src/gallium/drivers/r600/r600_llvm.c index 2050be26df8..83d73405f83 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, struct r600_bytecode *bc, + boolean *use_kill, unsigned dump) { unsigned r; @@ -566,6 +567,7 @@ unsigned r600_llvm_compile( *inst_byte_count = binary.code_size; bc->ngpr = util_le32_to_cpu(*(uint32_t*)binary.config); bc->nstack = util_le32_to_cpu(*(uint32_t*)(binary.config + 4)); + *use_kill = util_le32_to_cpu(*(uint32_t*)(binary.config + 8)); return r; } diff --git a/src/gallium/drivers/r600/r600_llvm.h b/src/gallium/drivers/r600/r600_llvm.h index 919dd244cd0..50bbca63e37 100644 --- a/src/gallium/drivers/r600/r600_llvm.h +++ b/src/gallium/drivers/r600/r600_llvm.h @@ -22,6 +22,7 @@ unsigned r600_llvm_compile( unsigned * inst_byte_count, enum radeon_family family, struct r600_bytecode *bc, + boolean *use_kill, 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 0204f805432..81c4c36a8c8 100644 --- a/src/gallium/drivers/r600/r600_shader.c +++ b/src/gallium/drivers/r600/r600_shader.c @@ -271,6 +271,7 @@ int r600_compute_shader_create(struct pipe_context * ctx, unsigned char * bytes; unsigned byte_count; struct r600_shader_ctx shader_ctx; + boolean use_kill = false; bool dump = (r600_ctx->screen->debug_flags & DBG_CS) != 0; shader_ctx.bc = bytecode; @@ -1445,6 +1446,7 @@ static int r600_shader_from_tgsi(struct r600_screen *rscreen, struct radeon_llvm_context radeon_llvm_ctx; LLVMModuleRef mod; bool dump = r600_can_dump_shader(rscreen, ctx.type); + boolean use_kill = false; memset(&radeon_llvm_ctx, 0, sizeof(radeon_llvm_ctx)); radeon_llvm_ctx.type = ctx.type; @@ -1461,7 +1463,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, dump)) { + rscreen->family, ctx.bc, &use_kill, dump)) { FREE(inst_bytes); radeon_llvm_dispose(&radeon_llvm_ctx); use_llvm = 0; @@ -1471,6 +1473,8 @@ static int r600_shader_from_tgsi(struct r600_screen *rscreen, ctx.file_offset[TGSI_FILE_OUTPUT] = ctx.file_offset[TGSI_FILE_INPUT]; } + if (use_kill) + ctx.shader->uses_kill = use_kill; radeon_llvm_dispose(&radeon_llvm_ctx); } #endif diff --git a/src/gallium/drivers/radeon/LLVM_REVISION.txt b/src/gallium/drivers/radeon/LLVM_REVISION.txt index f003aab3152..fcd93870bf4 100644 --- a/src/gallium/drivers/radeon/LLVM_REVISION.txt +++ b/src/gallium/drivers/radeon/LLVM_REVISION.txt @@ -1 +1 @@ -@180124 +@180751 -- 2.30.2