diff --git a/src/radeon_exa_render.c b/src/radeon_exa_render.c index b5f0197..6e08aa0 100644 --- a/src/radeon_exa_render.c +++ b/src/radeon_exa_render.c @@ -2161,12 +2161,15 @@ static void FUNC_NAME(RadeonDoneComposite)(PixmapPtr pDst) ENTER_DRAW(0); if (IS_R300_3D || IS_R500_3D) { - BEGIN_ACCEL(3); + BEGIN_ACCEL(4); OUT_ACCEL_REG(R300_SC_CLIP_RULE, 0xAAAA); OUT_ACCEL_REG(R300_RB3D_DSTCACHE_CTLSTAT, R300_RB3D_DC_FLUSH_ALL); - } else + OUT_ACCEL_REG(RADEON_WAIT_UNTIL, RADEON_WAIT_3D_IDLECLEAN); + OUT_ACCEL_REG(R300_SC_CLIP_RULE, 0xAAAA); + } else { BEGIN_ACCEL(1); - OUT_ACCEL_REG(RADEON_WAIT_UNTIL, RADEON_WAIT_3D_IDLECLEAN); + OUT_ACCEL_REG(RADEON_WAIT_UNTIL, RADEON_WAIT_3D_IDLECLEAN); + } FINISH_ACCEL(); LEAVE_DRAW(0); diff --git a/src/radeon_textured_videofuncs.c b/src/radeon_textured_videofuncs.c index 44f7228..84fdb0c 100644 --- a/src/radeon_textured_videofuncs.c +++ b/src/radeon_textured_videofuncs.c @@ -1616,12 +1616,15 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv } if (IS_R300_3D || IS_R500_3D) { - BEGIN_ACCEL(3); + BEGIN_ACCEL(4); OUT_ACCEL_REG(R300_SC_CLIP_RULE, 0xAAAA); OUT_ACCEL_REG(R300_RB3D_DSTCACHE_CTLSTAT, R300_RB3D_DC_FLUSH_ALL); - } else + OUT_ACCEL_REG(RADEON_WAIT_UNTIL, RADEON_WAIT_3D_IDLECLEAN); + OUT_ACCEL_REG(R300_SC_CLIP_RULE, 0xAAAA); + } else { BEGIN_ACCEL(1); - OUT_ACCEL_REG(RADEON_WAIT_UNTIL, RADEON_WAIT_3D_IDLECLEAN); + OUT_ACCEL_REG(RADEON_WAIT_UNTIL, RADEON_WAIT_3D_IDLECLEAN); + } FINISH_ACCEL(); DamageDamageRegion(pPriv->pDraw, &pPriv->clip);