mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-04 22:49:13 +02:00
radeonsi/gfx10: implement a bug workaround for NGG -> legacy transitions
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
This commit is contained in:
parent
cb9d95623b
commit
8f8c28767e
2 changed files with 16 additions and 2 deletions
|
|
@ -1106,10 +1106,14 @@ void gfx10_emit_cache_flush(struct si_context *ctx)
|
|||
}
|
||||
|
||||
/* We don't need these. */
|
||||
assert(!(flags & (SI_CONTEXT_VGT_FLUSH |
|
||||
SI_CONTEXT_VGT_STREAMOUT_SYNC |
|
||||
assert(!(flags & (SI_CONTEXT_VGT_STREAMOUT_SYNC |
|
||||
SI_CONTEXT_FLUSH_AND_INV_DB_META)));
|
||||
|
||||
if (flags & SI_CONTEXT_VGT_FLUSH) {
|
||||
radeon_emit(cs, PKT3(PKT3_EVENT_WRITE, 0, 0));
|
||||
radeon_emit(cs, EVENT_TYPE(V_028A90_VGT_FLUSH) | EVENT_INDEX(0));
|
||||
}
|
||||
|
||||
if (flags & SI_CONTEXT_FLUSH_AND_INV_CB)
|
||||
ctx->num_cb_cache_flushes++;
|
||||
if (flags & SI_CONTEXT_FLUSH_AND_INV_DB)
|
||||
|
|
|
|||
|
|
@ -3022,6 +3022,16 @@ static bool si_update_ngg(struct si_context *sctx)
|
|||
new_ngg = false;
|
||||
|
||||
if (new_ngg != sctx->ngg) {
|
||||
/* Transitioning from NGG to legacy GS requires VGT_FLUSH on Navi10-14.
|
||||
* VGT_FLUSH is also emitted at the beginning of IBs when legacy GS ring
|
||||
* pointers are set.
|
||||
*/
|
||||
if ((sctx->family == CHIP_NAVI10 ||
|
||||
sctx->family == CHIP_NAVI12 ||
|
||||
sctx->family == CHIP_NAVI14) &&
|
||||
!new_ngg)
|
||||
sctx->flags |= SI_CONTEXT_VGT_FLUSH;
|
||||
|
||||
sctx->ngg = new_ngg;
|
||||
sctx->last_rast_prim = -1; /* reset this so that it gets updated */
|
||||
return true;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue