diff options
author | Ian Romanick <idr@us.ibm.com> | 2006-12-11 13:16:53 -0800 |
---|---|---|
committer | Ian Romanick <idr@us.ibm.com> | 2006-12-11 13:16:53 -0800 |
commit | 36c444e80324c82f7d02d9d95372123c923336a0 (patch) | |
tree | 1989fec6bbe1d5546e431ca774441aa2550c10bc /src/savage_dri.c | |
parent | f2191d412832312b494f313841d094f87f64a5ff (diff) | |
parent | e361a9523394a2f0558f7d2648bf6a43ebe31f2e (diff) |
Merge branch 'master' of git+ssh://git.freedesktop.org/git/xorg/driver/xf86-video-savage into pci-rework
Conflicts:
src/savage_driver.c
Diffstat (limited to 'src/savage_dri.c')
-rw-r--r-- | src/savage_dri.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/src/savage_dri.c b/src/savage_dri.c index 432df3d..41e8bb1 100644 --- a/src/savage_dri.c +++ b/src/savage_dri.c @@ -338,7 +338,9 @@ static void SAVAGEWakeupHandler( int screenNum, pointer wakeupData, ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; SavagePtr psav = SAVPTR(pScrn); - DRILock(pScreen, 0); + psav->pDRIInfo->wrap.WakeupHandler = psav->coreWakeupHandler; + (*psav->pDRIInfo->wrap.WakeupHandler) (screenNum, wakeupData, result, pReadmask); + psav->pDRIInfo->wrap.WakeupHandler = SAVAGEWakeupHandler; psav->LockHeld = 1; if (psav->ShadowStatus) { /* fetch the global shadow counter */ @@ -350,7 +352,10 @@ static void SAVAGEWakeupHandler( int screenNum, pointer wakeupData, #endif psav->ShadowCounter = psav->ShadowVirtual[1023] & 0xffff; } - psav->AccelInfoRec->NeedToSync = TRUE; + if (psav->useEXA) + exaMarkSync(pScreen); + else + psav->AccelInfoRec->NeedToSync = TRUE; /* FK: this flag doesn't seem to be used. */ } @@ -376,7 +381,9 @@ static void SAVAGEBlockHandler( int screenNum, pointer blockData, psav->ShadowVirtual[1023] = globalShadowCounter; } psav->LockHeld = 0; - DRIUnlock(pScreen); + psav->pDRIInfo->wrap.BlockHandler = psav->coreBlockHandler; + (*psav->pDRIInfo->wrap.BlockHandler) (screenNum, blockData, pTimeout, pReadmask); + psav->pDRIInfo->wrap.BlockHandler = SAVAGEBlockHandler; } void SAVAGESelectBuffer( ScrnInfoPtr pScrn, int which ) @@ -888,7 +895,9 @@ Bool SAVAGEDRIScreenInit( ScreenPtr pScreen ) pDRIInfo->ddxDrawableTableEntry = SAVAGE_MAX_DRAWABLES; /* override default DRI block and wakeup handler */ + psav->coreBlockHandler = pDRIInfo->wrap.BlockHandler; pDRIInfo->wrap.BlockHandler = SAVAGEBlockHandler; + psav->coreWakeupHandler = pDRIInfo->wrap.WakeupHandler; pDRIInfo->wrap.WakeupHandler = SAVAGEWakeupHandler; pDRIInfo->wrap.ValidateTree = NULL; @@ -1529,7 +1538,10 @@ SAVAGEDRIMoveBuffers(WindowPtr pParent, DDXPointRec ptOldOrg, } BCI_SEND(0xc0020000); /* wait for 2D idle */ - psav->AccelInfoRec->NeedToSync = TRUE; + if (psav->useEXA) + exaMarkSync(pScreen); + else + psav->AccelInfoRec->NeedToSync = TRUE; } static void |