radeonsi: don't wrap the VS prolog in if (ES thread) .. endif

We can execute it unconditionally and the values computed for disabled
threads won't be used anyway.

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3095>
This commit is contained in:
Marek Olšák 2019-12-12 17:11:40 -05:00 committed by Marge Bot
parent db67e51903
commit de4a4595f6

View file

@ -7429,17 +7429,6 @@ static void si_build_vs_prolog_function(struct si_shader_context *ctx,
key->vs_prolog.num_input_sgprs + i, "");
}
LLVMValueRef original_ret = ret;
bool wrapped = false;
LLVMBasicBlockRef if_entry_block = NULL;
if (key->vs_prolog.is_monolithic && key->vs_prolog.as_ngg) {
LLVMValueRef ena = si_is_es_thread(ctx);
if_entry_block = LLVMGetInsertBlock(ctx->ac.builder);
ac_build_ifcc(&ctx->ac, ena, 11501);
wrapped = true;
}
/* Compute vertex load indices from instance divisors. */
LLVMValueRef instance_divisor_constbuf = NULL;
@ -7495,20 +7484,6 @@ static void si_build_vs_prolog_function(struct si_shader_context *ctx,
ctx->args.arg_count + i, "");
}
if (wrapped) {
LLVMBasicBlockRef bbs[2] = {
LLVMGetInsertBlock(ctx->ac.builder),
if_entry_block,
};
ac_build_endif(&ctx->ac, 11501);
LLVMValueRef values[2] = {
ret,
original_ret
};
ret = ac_build_phi(&ctx->ac, LLVMTypeOf(ret), 2, values, bbs);
}
si_llvm_build_ret(ctx, ret);
}