Module: Mesa Branch: main Commit: 465f249ec89bce91a5b523e63d12560ba7b855cb URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=465f249ec89bce91a5b523e63d12560ba7b855cb
Author: Marek Olšák <[email protected]> Date: Mon Sep 20 07:44:50 2021 -0400 radeonsi: change the units of oversub_pc_factor to integer multiples of 1/4 to match radv Reviewed-by: Timur Kristóf <[email protected]> Reviewed-by: Pierre-Eric Pelloux-Prayer <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13048> --- src/gallium/drivers/radeonsi/si_state_shaders.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/gallium/drivers/radeonsi/si_state_shaders.c b/src/gallium/drivers/radeonsi/si_state_shaders.c index 59ac9c14fed..8a78c928fc3 100644 --- a/src/gallium/drivers/radeonsi/si_state_shaders.c +++ b/src/gallium/drivers/radeonsi/si_state_shaders.c @@ -1288,19 +1288,20 @@ static void gfx10_shader_ngg(struct si_screen *sscreen, struct si_shader *shader shader->pa_cl_vs_out_cntl = si_get_vs_out_cntl(shader->selector, shader, true); /* Oversubscribe PC. This improves performance when there are too many varyings. */ - float oversub_pc_factor = 0.25; + unsigned oversub_pc_factor = 1; if (shader->key.opt.ngg_culling) { /* Be more aggressive with NGG culling. */ if (shader->info.nr_param_exports > 4) - oversub_pc_factor = 1; + oversub_pc_factor = 4; else if (shader->info.nr_param_exports > 2) - oversub_pc_factor = 0.75; + oversub_pc_factor = 3; else - oversub_pc_factor = 0.5; + oversub_pc_factor = 2; } - unsigned oversub_pc_lines = late_alloc_wave64 ? sscreen->info.pc_lines * oversub_pc_factor : 0; + unsigned oversub_pc_lines = + late_alloc_wave64 ? (sscreen->info.pc_lines / 4) * oversub_pc_factor : 0; shader->ctx_reg.ngg.ge_pc_alloc = S_030980_OVERSUB_EN(oversub_pc_lines > 0) | S_030980_NUM_PC_LINES(oversub_pc_lines - 1);
