mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-28 06:00:10 +01:00
radeonsi: only export from GS copy shader for vertex stream 0
When running the copy shader for vertex streams != 0, the SX does not need any data from us (there is no rasterization for the higher vertex streams, only streamout). Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
parent
21f2bb22a3
commit
dfb69cac33
1 changed files with 19 additions and 12 deletions
|
|
@ -6421,26 +6421,33 @@ si_generate_gs_copy_shader(struct si_screen *sscreen,
|
|||
}
|
||||
}
|
||||
|
||||
if (gs_selector->so.num_outputs) {
|
||||
for (int stream = 0; stream < 4; stream++) {
|
||||
struct lp_build_if_state if_ctx_stream;
|
||||
for (int stream = 0; stream < 4; stream++) {
|
||||
struct lp_build_if_state if_ctx_stream;
|
||||
|
||||
if (!gsinfo->num_stream_output_components[stream])
|
||||
continue;
|
||||
if (!gsinfo->num_stream_output_components[stream])
|
||||
continue;
|
||||
|
||||
LLVMValueRef is_stream =
|
||||
LLVMBuildICmp(builder, LLVMIntEQ,
|
||||
stream_id,
|
||||
lp_build_const_int32(gallivm, stream), "");
|
||||
if (stream > 0 && !gs_selector->so.num_outputs)
|
||||
continue;
|
||||
|
||||
lp_build_if(&if_ctx_stream, gallivm, is_stream);
|
||||
LLVMValueRef is_stream =
|
||||
LLVMBuildICmp(builder, LLVMIntEQ,
|
||||
stream_id,
|
||||
lp_build_const_int32(gallivm, stream), "");
|
||||
|
||||
lp_build_if(&if_ctx_stream, gallivm, is_stream);
|
||||
|
||||
if (gs_selector->so.num_outputs) {
|
||||
si_llvm_emit_streamout(&ctx, outputs,
|
||||
gsinfo->num_outputs,
|
||||
stream);
|
||||
lp_build_endif(&if_ctx_stream);
|
||||
}
|
||||
|
||||
if (stream == 0)
|
||||
si_llvm_export_vs(bld_base, outputs, gsinfo->num_outputs);
|
||||
|
||||
lp_build_endif(&if_ctx_stream);
|
||||
}
|
||||
si_llvm_export_vs(bld_base, outputs, gsinfo->num_outputs);
|
||||
|
||||
LLVMBuildRetVoid(gallivm->builder);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue