mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-20 11:40:10 +01:00
radeonsi: deduplicate min_esverts code in gfx10_ngg_calculate_subgroup_info
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13829>
This commit is contained in:
parent
9d7ac70ffb
commit
cdeecadcb6
1 changed files with 5 additions and 14 deletions
|
|
@ -2204,7 +2204,8 @@ bool gfx10_ngg_calculate_subgroup_info(struct si_shader *shader)
|
||||||
unsigned gsprim_lds_size = 0;
|
unsigned gsprim_lds_size = 0;
|
||||||
|
|
||||||
/* All these are per subgroup: */
|
/* All these are per subgroup: */
|
||||||
const unsigned min_esverts = gs_sel->screen->info.chip_class >= GFX10_3 ? 29 : 24;
|
const unsigned min_esverts =
|
||||||
|
gs_sel->screen->info.chip_class >= GFX10_3 ? 29 : (24 - 1 + max_verts_per_prim);
|
||||||
bool max_vert_out_per_gs_instance = false;
|
bool max_vert_out_per_gs_instance = false;
|
||||||
unsigned max_gsprims_base = gs_sel->screen->ngg_subgroup_size; /* default prim group size clamp */
|
unsigned max_gsprims_base = gs_sel->screen->ngg_subgroup_size; /* default prim group size clamp */
|
||||||
unsigned max_esverts_base = gs_sel->screen->ngg_subgroup_size;
|
unsigned max_esverts_base = gs_sel->screen->ngg_subgroup_size;
|
||||||
|
|
@ -2290,9 +2291,6 @@ retry_select_mode:
|
||||||
max_esverts = MIN2(max_esverts, max_gsprims * max_verts_per_prim);
|
max_esverts = MIN2(max_esverts, max_gsprims * max_verts_per_prim);
|
||||||
|
|
||||||
/* Hardware restriction: minimum value of max_esverts */
|
/* Hardware restriction: minimum value of max_esverts */
|
||||||
if (gs_sel->screen->info.chip_class == GFX10)
|
|
||||||
max_esverts = MAX2(max_esverts, min_esverts - 1 + max_verts_per_prim);
|
|
||||||
else
|
|
||||||
max_esverts = MAX2(max_esverts, min_esverts);
|
max_esverts = MAX2(max_esverts, min_esverts);
|
||||||
|
|
||||||
max_gsprims = align(max_gsprims, wavesize);
|
max_gsprims = align(max_gsprims, wavesize);
|
||||||
|
|
@ -2311,15 +2309,8 @@ retry_select_mode:
|
||||||
} while (orig_max_esverts != max_esverts || orig_max_gsprims != max_gsprims);
|
} while (orig_max_esverts != max_esverts || orig_max_gsprims != max_gsprims);
|
||||||
|
|
||||||
/* Verify the restriction. */
|
/* Verify the restriction. */
|
||||||
if (gs_sel->screen->info.chip_class == GFX10)
|
|
||||||
assert(max_esverts >= min_esverts - 1 + max_verts_per_prim);
|
|
||||||
else
|
|
||||||
assert(max_esverts >= min_esverts);
|
assert(max_esverts >= min_esverts);
|
||||||
} else {
|
} else {
|
||||||
/* Hardware restriction: minimum value of max_esverts */
|
|
||||||
if (gs_sel->screen->info.chip_class == GFX10)
|
|
||||||
max_esverts = MAX2(max_esverts, min_esverts - 1 + max_verts_per_prim);
|
|
||||||
else
|
|
||||||
max_esverts = MAX2(max_esverts, min_esverts);
|
max_esverts = MAX2(max_esverts, min_esverts);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue