radeonsi: limit DPBB context_states_per_bin batches when using gfx9 workaround
authorPierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Mon, 5 Aug 2019 13:11:41 +0000 (15:11 +0200)
committerMarek Olšák <marek.olsak@amd.com>
Wed, 7 Aug 2019 22:45:24 +0000 (18:45 -0400)
It seems that using 'context_states_per_bin = 1' for DPBB fixes the reported issue.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=110214

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
src/gallium/drivers/radeonsi/si_state_binning.c

index 157a38f88a0f1e954b24c7bd5b2ca69e11134cc8..a361ea253c32e20e332455c4fa2da5701befeaf7 100644 (file)
@@ -563,7 +563,11 @@ void si_emit_dpbb_state(struct si_context *sctx)
                context_states_per_bin = 1;
                persistent_states_per_bin = 1;
        } else {
-               context_states_per_bin = 6;
+               /* 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). */
+               context_states_per_bin = sctx->screen->has_gfx9_scissor_bug ? 1 : 6;
                /* Using 32 here can cause GPU hangs on RAVEN1 */
                persistent_states_per_bin = 16;
        }