radeonsi: break a binning batch on a new PS if bins can use multiple state sets

ported from PAL

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6822>
This commit is contained in:
Marek Olšák 2020-09-22 08:59:56 -04:00 committed by Marge Bot
parent 972fb0368c
commit b5debe180e
1 changed files with 8 additions and 0 deletions

View File

@ -1590,6 +1590,14 @@ static void si_shader_ps(struct si_screen *sscreen, struct si_shader *shader)
if (!pm4)
return;
/* If multiple state sets are allowed to be in a bin, break the batch on a new PS. */
if (sscreen->dpbb_allowed &&
(sscreen->pbb_context_states_per_bin > 1 ||
sscreen->pbb_persistent_states_per_bin > 1)) {
si_pm4_cmd_add(pm4, PKT3(PKT3_EVENT_WRITE, 0, 0));
si_pm4_cmd_add(pm4, EVENT_TYPE(V_028A90_BREAK_BATCH) | EVENT_INDEX(0));
}
pm4->atom.emit = si_emit_shader_ps;
/* SPI_BARYC_CNTL.POS_FLOAT_LOCATION