summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoland Scheidegger <rscheidegger_lists@hispeed.ch>2006-05-20 09:08:18 +0000
committerRoland Scheidegger <rscheidegger_lists@hispeed.ch>2006-05-20 09:08:18 +0000
commite1b627c17e31bb659fe8aeffeaa2e301d5e2a88c (patch)
treede79df12ff0db185491e2bb33d91750e8f0e6138
parent79e596917290807f11ba6f529abc30b7c6336e52 (diff)
Do a tcl state flush before accessing tcl vector space. This fixes some
more problems with flickering (bug #6637). drm may not be appropriate place for this, since doing that flush there might both be overkill and insufficient in some cases. However, it's hard to figure out when that flush is needed, so this has to suffice. There does not seem to be a performance penalty associated with it.
-rw-r--r--shared-core/radeon_state.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/shared-core/radeon_state.c b/shared-core/radeon_state.c
index ab749ab2..04408224 100644
--- a/shared-core/radeon_state.c
+++ b/shared-core/radeon_state.c
@@ -2630,7 +2630,8 @@ static __inline__ int radeon_emit_vectors(drm_radeon_private_t *dev_priv,
int stride = header.vectors.stride;
RING_LOCALS;
- BEGIN_RING(3 + sz);
+ BEGIN_RING(5 + sz);
+ OUT_RING_REG(RADEON_SE_TCL_STATE_FLUSH, 0);
OUT_RING(CP_PACKET0(RADEON_SE_TCL_VECTOR_INDX_REG, 0));
OUT_RING(start | (stride << RADEON_VEC_INDX_OCTWORD_STRIDE_SHIFT));
OUT_RING(CP_PACKET0_TABLE(RADEON_SE_TCL_VECTOR_DATA_REG, (sz - 1)));