summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Deucher <alexander.deucher@amd.com>2013-02-22 17:04:43 -0500
committerAlex Deucher <alexander.deucher@amd.com>2013-02-22 18:23:46 -0500
commit8442b67f5f3aedbfdb4446164dd09d4eaeda4888 (patch)
tree89bd64e2115547c4af975e6fa269b274d2a368d1
parent7ebf83f109db9dde89830d5844107c936cf42e4d (diff)
r600g: r6xx deadlock workaround (v6)
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>
-rw-r--r--src/gallium/drivers/r600/r600_state_common.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/gallium/drivers/r600/r600_state_common.c b/src/gallium/drivers/r600/r600_state_common.c
index c4bd758d796..1654233b756 100644
--- a/src/gallium/drivers/r600/r600_state_common.c
+++ b/src/gallium/drivers/r600/r600_state_common.c
@@ -1360,6 +1360,12 @@ static void r600_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info
1360 rctx->vgt_state.atom.dirty = true; 1360 rctx->vgt_state.atom.dirty = true;
1361 } 1361 }
1362 1362
1363 /* Workaround for hardware deadlock on certain R600 ASICs: write into a CB register. */
1364 if (rctx->chip_class == R600) {
1365 rctx->flags |= R600_CONTEXT_PS_PARTIAL_FLUSH;
1366 rctx->cb_misc_state.atom.dirty = true;
1367 }
1368
1363 /* Emit states. */ 1369 /* Emit states. */
1364 r600_need_cs_space(rctx, ib.user_buffer ? 5 : 0, TRUE); 1370 r600_need_cs_space(rctx, ib.user_buffer ? 5 : 0, TRUE);
1365 r600_flush_emit(rctx); 1371 r600_flush_emit(rctx);