diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mga_exa.c | 9 | ||||
-rw-r--r-- | src/mga_reg.h | 1 |
2 files changed, 8 insertions, 2 deletions
diff --git a/src/mga_exa.c b/src/mga_exa.c index d89e42a..20534dc 100644 --- a/src/mga_exa.c +++ b/src/mga_exa.c @@ -720,9 +720,14 @@ static void mgaWaitMarker(ScreenPtr pScreen, int marker) { ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + MGAPtr pMga = pScrn->driverPrivate; + + WAITFIFO(1); + + OUTREG(MGAREG_CACHEFLUSH, 0); - /* FIXME: is this correct? */ - CHECK_DMA_QUIESCENT(MGAPTR(pScrn), pScrn); + /* wait until the "drawing engine busy" bit is unset */ + while (INREG (MGAREG_Status) & 0x10000); } Bool diff --git a/src/mga_reg.h b/src/mga_reg.h index 7fe729a..857fe64 100644 --- a/src/mga_reg.h +++ b/src/mga_reg.h @@ -109,6 +109,7 @@ #define MGAREG_FIFOSTATUS 0x1e10 #define MGAREG_Status 0x1e14 +#define MGAREG_CACHEFLUSH 0x1fff #define MGAREG_ICLEAR 0x1e18 #define MGAREG_IEN 0x1e1c |