diff options
author | Dave Airlie <airlied@linux.ie> | 2006-06-24 02:55:34 -0400 |
---|---|---|
committer | Dave Airlie <airlied@linux.ie> | 2006-06-24 03:32:04 -0400 |
commit | f2a2279ffc0dfd27f6909184a29910e40ae7eebd (patch) | |
tree | e1e9e8a652256a6fd25a595f429f88a39543b3f2 /drivers/char/drm/radeon_state.c | |
parent | d384ea691fe4ea8c2dd5b9b8d9042eb181776f18 (diff) |
drm: radeon add a tcl state flush before accessing tcl vector space
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.
From: Roland Scheidegger (DRM CVS)
Signed-off-by: Dave Airlie <airlied@linux.ie>
Diffstat (limited to 'drivers/char/drm/radeon_state.c')
-rw-r--r-- | drivers/char/drm/radeon_state.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/char/drm/radeon_state.c b/drivers/char/drm/radeon_state.c index c5b8f774a599..4ca6bd13d589 100644 --- a/drivers/char/drm/radeon_state.c +++ b/drivers/char/drm/radeon_state.c | |||
@@ -2595,7 +2595,8 @@ static __inline__ int radeon_emit_vectors(drm_radeon_private_t *dev_priv, | |||
2595 | int stride = header.vectors.stride; | 2595 | int stride = header.vectors.stride; |
2596 | RING_LOCALS; | 2596 | RING_LOCALS; |
2597 | 2597 | ||
2598 | BEGIN_RING(3 + sz); | 2598 | BEGIN_RING(5 + sz); |
2599 | OUT_RING_REG(RADEON_SE_TCL_STATE_FLUSH, 0); | ||
2599 | OUT_RING(CP_PACKET0(RADEON_SE_TCL_VECTOR_INDX_REG, 0)); | 2600 | OUT_RING(CP_PACKET0(RADEON_SE_TCL_VECTOR_INDX_REG, 0)); |
2600 | OUT_RING(start | (stride << RADEON_VEC_INDX_OCTWORD_STRIDE_SHIFT)); | 2601 | OUT_RING(start | (stride << RADEON_VEC_INDX_OCTWORD_STRIDE_SHIFT)); |
2601 | OUT_RING(CP_PACKET0_TABLE(RADEON_SE_TCL_VECTOR_DATA_REG, (sz - 1))); | 2602 | OUT_RING(CP_PACKET0_TABLE(RADEON_SE_TCL_VECTOR_DATA_REG, (sz - 1))); |