Do a tcl state flush before accessing tcl vector space. This fixes some
authorRoland Scheidegger <rscheidegger_lists@hispeed.ch>
Sat, 20 May 2006 09:08:18 +0000 (09:08 +0000)
committerRoland Scheidegger <rscheidegger_lists@hispeed.ch>
Sat, 20 May 2006 09:08:18 +0000 (09:08 +0000)
    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.

shared-core/radeon_state.c

index ab749ab..0440822 100644 (file)
@@ -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)));