unsigned * inst_byte_count,
enum radeon_family family,
struct r600_bytecode *bc,
+ boolean *use_kill,
unsigned dump)
{
unsigned r;
*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;
}
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 */
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;
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;
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;
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