From af899c37528c0348a4bfb5a5962d095ed2fc48ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Fri, 13 Dec 2024 20:07:01 -0500 Subject: [PATCH] radeonsi,radv: fix incorrect min_esverts for NGG subgroup calculation Reviewed-by: Samuel Pitoiset Reviewed-by: Qiang Yu Part-of: --- src/amd/vulkan/radv_shader_info.c | 6 +++--- src/gallium/drivers/radeonsi/gfx10_shader_ngg.c | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/amd/vulkan/radv_shader_info.c b/src/amd/vulkan/radv_shader_info.c index 6fe43d21b73..eee82533b41 100644 --- a/src/amd/vulkan/radv_shader_info.c +++ b/src/amd/vulkan/radv_shader_info.c @@ -1487,9 +1487,9 @@ gfx10_get_ngg_info(const struct radv_device *device, struct radv_shader_info *es unsigned gsprim_lds_size = 0; /* All these are per subgroup: */ - const unsigned min_esverts = gfx_level >= GFX11 ? 3 : /* gfx11 requires at least 1 primitive per TG */ - gfx_level >= GFX10_3 ? 29 - : 24; + const unsigned min_esverts = gfx_level >= GFX11 ? max_verts_per_prim /* gfx11 requires at least 1 primitive per TG */ + : gfx_level >= GFX10_3 ? 29 + : (24 - 1 + max_verts_per_prim); bool max_vert_out_per_gs_instance = false; unsigned max_esverts_base = 128; unsigned max_gsprims_base = 128; /* default prim group size clamp */ diff --git a/src/gallium/drivers/radeonsi/gfx10_shader_ngg.c b/src/gallium/drivers/radeonsi/gfx10_shader_ngg.c index ad170448fcd..e3bffc7af51 100644 --- a/src/gallium/drivers/radeonsi/gfx10_shader_ngg.c +++ b/src/gallium/drivers/radeonsi/gfx10_shader_ngg.c @@ -67,7 +67,7 @@ bool gfx10_ngg_calculate_subgroup_info(struct si_shader *shader) /* All these are per subgroup: */ const unsigned min_esverts = - gs_sel->screen->info.gfx_level >= GFX11 ? 3 : /* gfx11 requires at least 1 primitive per TG */ + gs_sel->screen->info.gfx_level >= GFX11 ? max_verts_per_prim : /* gfx11 requires at least 1 primitive per TG */ gs_sel->screen->info.gfx_level >= GFX10_3 ? 29 : (24 - 1 + max_verts_per_prim); bool max_vert_out_per_gs_instance = false; unsigned max_gsprims_base, max_esverts_base;