summaryrefslogtreecommitdiff
path: root/src/savage_dri.c
diff options
context:
space:
mode:
authorIan Romanick <idr@us.ibm.com>2006-12-11 13:16:53 -0800
committerIan Romanick <idr@us.ibm.com>2006-12-11 13:16:53 -0800
commit36c444e80324c82f7d02d9d95372123c923336a0 (patch)
tree1989fec6bbe1d5546e431ca774441aa2550c10bc /src/savage_dri.c
parentf2191d412832312b494f313841d094f87f64a5ff (diff)
parente361a9523394a2f0558f7d2648bf6a43ebe31f2e (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.c20
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