diff options
author | Nicolai Hähnle <[email protected]> | 2016-10-07 12:54:34 +0200 |
---|---|---|
committer | Nicolai Hähnle <[email protected]> | 2016-10-10 10:37:50 +0200 |
commit | 39a29c243162e57c0e45a83133ece00ffb44e76b (patch) | |
tree | 8cb23bd0d4f08de3c5eeb8272094261ab99a8f68 | |
parent | 77c81164bc1cd9ec98b32c40753f590791450434 (diff) |
gallium/radeon: avoid redundant work with overlapping in/out arrays
Reviewed-by: Edward O'Callaghan <[email protected]>
Reviewed-by: Marek Olšák <[email protected]>
-rw-r--r-- | src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c b/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c index 8e364c90f07..da4a030a9ef 100644 --- a/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c +++ b/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c @@ -680,7 +680,8 @@ static void emit_declaration(struct lp_build_tgsi_context *bld_base, { unsigned idx; for (idx = decl->Range.First; idx <= decl->Range.Last; idx++) { - if (ctx->load_input) { + if (ctx->load_input && + ctx->input_decls[idx].Declaration.File != TGSI_FILE_INPUT) { ctx->input_decls[idx] = *decl; if (bld_base->info->processor != PIPE_SHADER_FRAGMENT) @@ -706,6 +707,8 @@ static void emit_declaration(struct lp_build_tgsi_context *bld_base, for (idx = decl->Range.First; idx <= decl->Range.Last; idx++) { unsigned chan; assert(idx < RADEON_LLVM_MAX_OUTPUTS); + if (ctx->soa.outputs[idx][0]) + continue; for (chan = 0; chan < TGSI_NUM_CHANNELS; chan++) { ctx->soa.outputs[idx][chan] = lp_build_alloca_undef( &ctx->gallivm, |