radv: update binning settings to work around GPU hangs

Ported from RadeonSI, but it seems PAL always use 1 for both
parameters as well.

This should fix random GPU hangs with small chips (eg. NAVI24, GFX1103),
though all chips might have been affected.

Cc: mesa-stable
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/8046
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/8597
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/8683
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22528>
(cherry picked from commit 74ab940156)
This commit is contained in:
Samuel Pitoiset 2023-04-10 17:08:21 +02:00 committed by Eric Engestrom
parent 3556a3e600
commit 38da1ae68a
2 changed files with 3 additions and 14 deletions

View file

@ -553,7 +553,7 @@
"description": "radv: update binning settings to work around GPU hangs",
"nominated": true,
"nomination_type": 0,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": null
},

View file

@ -389,20 +389,9 @@ static void
radv_get_binning_settings(const struct radv_physical_device *pdevice,
struct radv_binning_settings *settings)
{
if (pdevice->rad_info.has_dedicated_vram && pdevice->rad_info.max_render_backends > 4) {
settings->context_states_per_bin = 1;
settings->persistent_states_per_bin = 1;
} else {
settings->context_states_per_bin = 3;
/* 32 causes hangs for RAVEN. */
settings->persistent_states_per_bin = 8;
}
settings->context_states_per_bin = 1;
settings->persistent_states_per_bin = 1;
settings->fpovs_per_batch = 63;
/* The context states are affected by the scissor bug. */
if (pdevice->rad_info.has_gfx9_scissor_bug)
settings->context_states_per_bin = 1;
}
static void