mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-02-19 10:20:30 +01:00
aco: do not fix_exports when separately compiled ngg vs or es
For radeonsi not abort when this case, as it does not jump at last. Reviewed-by: Daniel Schürmann <daniel@schuermann.dev> Signed-off-by: Qiang Yu <yuq825@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25631>
This commit is contained in:
parent
895c85ca8f
commit
71fd3c2a35
2 changed files with 6 additions and 9 deletions
|
|
@ -1008,13 +1008,6 @@ fix_exports(asm_context& ctx, std::vector<uint32_t>& out, Program* program)
|
|||
}
|
||||
} else if ((*it)->definitions.size() && (*it)->definitions[0].physReg() == exec) {
|
||||
break;
|
||||
} else if ((*it)->opcode == aco_opcode::s_setpc_b64) {
|
||||
/* Do not abort for VS/TES as NGG if they are non-monolithic shaders
|
||||
* because a jump would be emitted.
|
||||
*/
|
||||
exported |= (program->stage.sw == SWStage::VS || program->stage.sw == SWStage::TES) &&
|
||||
program->stage.hw == AC_HW_NEXT_GEN_GEOMETRY_SHADER &&
|
||||
program->info.merged_shader_compiled_separately;
|
||||
}
|
||||
++it;
|
||||
}
|
||||
|
|
@ -1293,8 +1286,13 @@ emit_program(Program* program, std::vector<uint32_t>& code, std::vector<struct a
|
|||
{
|
||||
asm_context ctx(program, symbols);
|
||||
|
||||
bool is_separately_compiled_ngg_vs_or_es =
|
||||
(program->stage.sw == SWStage::VS || program->stage.sw == SWStage::TES) &&
|
||||
program->stage.hw == AC_HW_NEXT_GEN_GEOMETRY_SHADER &&
|
||||
program->info.merged_shader_compiled_separately;
|
||||
|
||||
/* Prolog has no exports. */
|
||||
if (!program->is_prolog && !program->info.has_epilog &&
|
||||
if (!program->is_prolog && !program->info.has_epilog && !is_separately_compiled_ngg_vs_or_es &&
|
||||
(program->stage.hw == AC_HW_VERTEX_SHADER || program->stage.hw == AC_HW_PIXEL_SHADER ||
|
||||
program->stage.hw == AC_HW_NEXT_GEN_GEOMETRY_SHADER))
|
||||
fix_exports(ctx, code, program);
|
||||
|
|
|
|||
|
|
@ -11829,7 +11829,6 @@ select_shader(isel_context& ctx, nir_shader* nir, const bool need_startpgm, cons
|
|||
(ctx.stage.sw == SWStage::VS || ctx.stage.sw == SWStage::TES)) {
|
||||
assert(program->gfx_level >= GFX9);
|
||||
create_merged_jump_to_epilog(&ctx);
|
||||
ctx.block->kind |= block_kind_export_end;
|
||||
}
|
||||
|
||||
cleanup_context(&ctx);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue