Fixes:
https://bugs.freedesktop.org/show_bug.cgi?id=50655
https://bugs.freedesktop.org/show_bug.cgi?id=47116
v2: flush along with workaround.
v3: just need a flush
v4: try WAIT_UNTIL
v5: switch to PS partial flush
v6: rework patch
Note: this is a candidate for the 9.1 branch.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
rctx->vgt_state.atom.dirty = true;
}
+ /* Workaround for hardware deadlock on certain R600 ASICs: write into a CB register. */
+ if (rctx->chip_class == R600) {
+ rctx->flags |= R600_CONTEXT_PS_PARTIAL_FLUSH;
+ rctx->cb_misc_state.atom.dirty = true;
+ }
+
/* Emit states. */
r600_need_cs_space(rctx, ib.user_buffer ? 5 : 0, TRUE);
r600_flush_emit(rctx);