From e40bd6158810b7f790f4fc20f41e69f329a55aa1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Sun, 26 Sep 2021 04:29:57 -0400 Subject: [PATCH] radeonsi: strenthen the ngg->legacy hw workaround, fix fast launch hangs too Cc: 20.1 20.2 Acked-by: Pierre-Eric Pelloux-Prayer Part-of: --- src/gallium/drivers/radeonsi/si_gfx_cs.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/radeonsi/si_gfx_cs.c b/src/gallium/drivers/radeonsi/si_gfx_cs.c index 4b561ac1be3..007a52372ed 100644 --- a/src/gallium/drivers/radeonsi/si_gfx_cs.c +++ b/src/gallium/drivers/radeonsi/si_gfx_cs.c @@ -358,8 +358,12 @@ void si_begin_new_gfx_cs(struct si_context *ctx, bool first_cs) SI_CONTEXT_INV_L2 | SI_CONTEXT_START_PIPELINE_STATS; ctx->pipeline_stats_enabled = -1; - /* We don't know if the last draw used NGG. */ - if (ctx->screen->info.has_vgt_flush_ngg_legacy_bug) + /* We don't know if the last draw used NGG or NGG fast launch because it can be a different + * process. When switching NGG->legacy or NGG->FAST_LAUNCH, we need to flush VGT for certain + * hw generations. + */ + if ((ctx->screen->info.has_vgt_flush_ngg_legacy_bug && !ctx->ngg) || + (ctx->chip_class == GFX10 && ctx->ngg_culling & SI_NGG_CULL_GS_FAST_LAUNCH_ALL)) ctx->flags |= SI_CONTEXT_VGT_FLUSH; if (ctx->border_color_buffer) {