radeonsi: simplify dpbb settings

Use only 2 sets of parameters and add some debug variables
to ease tweaking them when testing.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20645>
This commit is contained in:
Pierre-Eric Pelloux-Prayer
2023-01-11 15:45:11 +01:00
parent 3be7a28b24
commit 7893369c2e

View File

@@ -1362,24 +1362,24 @@ static struct pipe_screen *radeonsi_screen_create_impl(struct radeon_winsys *ws,
sscreen->debug_flags & DBG(DPBB));
if (sscreen->dpbb_allowed) {
if (sscreen->info.has_dedicated_vram) {
if (sscreen->info.max_render_backends > 4) {
if (sscreen->info.has_dedicated_vram && sscreen->info.max_render_backends > 4) {
sscreen->pbb_context_states_per_bin = 1;
sscreen->pbb_persistent_states_per_bin = 1;
} else {
sscreen->pbb_context_states_per_bin = 3;
sscreen->pbb_persistent_states_per_bin = 8;
}
} else {
/* This is a workaround for:
* https://bugs.freedesktop.org/show_bug.cgi?id=110214
* (an alternative is to insert manual BATCH_BREAK event when
* a context_roll is detected). */
sscreen->pbb_context_states_per_bin = sscreen->info.has_gfx9_scissor_bug ? 1 : 6;
/* Using 32 here can cause GPU hangs on RAVEN1 */
sscreen->pbb_persistent_states_per_bin = 16;
sscreen->pbb_context_states_per_bin = sscreen->info.has_gfx9_scissor_bug ? 1 : 3;
sscreen->pbb_persistent_states_per_bin = 8;
}
if (!sscreen->info.has_gfx9_scissor_bug)
sscreen->pbb_context_states_per_bin =
debug_get_num_option("AMD_DEBUG_DPBB_CS", sscreen->pbb_context_states_per_bin);
sscreen->pbb_persistent_states_per_bin =
debug_get_num_option("AMD_DEBUG_DPBB_PS", sscreen->pbb_persistent_states_per_bin);
assert(sscreen->pbb_context_states_per_bin >= 1 &&
sscreen->pbb_context_states_per_bin <= 6);
assert(sscreen->pbb_persistent_states_per_bin >= 1 &&