From f6e19fd83141122722d8230ae60f6e0664f424c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Tue, 11 May 2021 09:11:34 -0400 Subject: [PATCH] radeonsi: don't use GS fast launch with small instances MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Acked-by: Timur Kristóf Acked-by: Pierre-Eric Pelloux-Prayer Part-of: --- src/gallium/drivers/radeonsi/si_state_draw.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/radeonsi/si_state_draw.cpp b/src/gallium/drivers/radeonsi/si_state_draw.cpp index 682195ba528..0d91d8520e1 100644 --- a/src/gallium/drivers/radeonsi/si_state_draw.cpp +++ b/src/gallium/drivers/radeonsi/si_state_draw.cpp @@ -2064,8 +2064,12 @@ static void si_draw_vbo(struct pipe_context *ctx, /* Use NGG fast launch for certain primitive types. * A draw must have at least 1 full primitive. * The fast launch doesn't work with tessellation. + * + * Small instances (including small draws) don't perform well with fast launch. + * It's better to use normal launch with NOT_EOP for small draws, and it's + * always better to use normal launch for small instances. */ - if (!HAS_TESS && ngg_culling && min_direct_count >= 3 && + if (!HAS_TESS && ngg_culling && min_direct_count >= 64 && !(sctx->screen->debug_flags & DBG(NO_FAST_LAUNCH))) { if (prim == PIPE_PRIM_TRIANGLES && !index_size) { ngg_culling |= SI_NGG_CULL_GS_FAST_LAUNCH_TRI_LIST;