mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-30 01:20:17 +01:00
radeonsi/gfx10.3: add a GPU hang workaround for legacy tess+GS
Fixes: a23802bcb9 - ac,radeonsi: start adding support for gfx10.3
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27943>
This commit is contained in:
parent
7d3a414662
commit
ea94cb95e4
2 changed files with 10 additions and 1 deletions
|
|
@ -342,7 +342,7 @@ enum si_tracked_reg
|
|||
|
||||
/* The slots below can be reused by other generations. */
|
||||
SI_TRACKED_VGT_ESGS_RING_ITEMSIZE, /* GFX6-8 (GFX9+ can reuse this slot) */
|
||||
SI_TRACKED_VGT_REUSE_OFF, /* GFX6-8 (GFX9+ can reuse this slot) */
|
||||
SI_TRACKED_VGT_REUSE_OFF, /* GFX6-8,10.3 */
|
||||
SI_TRACKED_IA_MULTI_VGT_PARAM, /* GFX6-8 (GFX9+ can reuse this slot) */
|
||||
|
||||
SI_TRACKED_VGT_GS_MAX_PRIMS_PER_SUBGROUP, /* GFX9 - the slots above can be reused */
|
||||
|
|
|
|||
|
|
@ -4352,6 +4352,15 @@ static void si_emit_vgt_pipeline_state(struct si_context *sctx, unsigned index)
|
|||
radeon_begin(cs);
|
||||
radeon_opt_set_context_reg(sctx, R_028B54_VGT_SHADER_STAGES_EN, SI_TRACKED_VGT_SHADER_STAGES_EN,
|
||||
sctx->vgt_shader_stages_en);
|
||||
if (sctx->gfx_level == GFX10_3) {
|
||||
/* Legacy Tess+GS should disable reuse to prevent hangs on GFX10.3. */
|
||||
bool has_legacy_tess_gs = G_028B54_HS_EN(sctx->vgt_shader_stages_en) &&
|
||||
G_028B54_GS_EN(sctx->vgt_shader_stages_en) &&
|
||||
!G_028B54_PRIMGEN_EN(sctx->vgt_shader_stages_en); /* !NGG */
|
||||
|
||||
radeon_opt_set_context_reg(sctx, R_028AB4_VGT_REUSE_OFF, SI_TRACKED_VGT_REUSE_OFF,
|
||||
S_028AB4_REUSE_OFF(has_legacy_tess_gs));
|
||||
}
|
||||
radeon_end_update_context_roll(sctx);
|
||||
|
||||
if (sctx->gfx_level >= GFX10) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue