xf86-video-intel: Branch 'exa' - 3 commits - src/i830_driver.c src/i830_exa.c
Zhenyu Wang
zhen at kemper.freedesktop.org
Sat Apr 29 05:59:32 EEST 2006
src/i830_driver.c | 17 +++++++++++++----
src/i830_exa.c | 4 +++-
2 files changed, 16 insertions(+), 5 deletions(-)
New commits:
diff-tree fcec956807038a2e90287850df8b4410b1f8b3c2 (from 0be9bc604420e4433697cc31e8ac58c9f36185e1)
Author: Wang Zhenyu <zhenyu.z.wang at intel.com>
Date: Sat Apr 29 10:55:25 2006 +0800
Save initialize EXADriverPtr, and free it in failure.
diff --git a/src/i830_exa.c b/src/i830_exa.c
index 6db94d9..59c2d51 100644
--- a/src/i830_exa.c
+++ b/src/i830_exa.c
@@ -362,7 +362,8 @@ I830EXAInit(ScreenPtr pScreen)
pI830->noAccel = TRUE;
return FALSE;
}
-
+ memset(pI830->EXADriverPtr, 0, sizeof(*pI830->EXADriverPtr));
+
pI830->bufferOffset = 0;
pI830->EXADriverPtr->exa_major = 2;
pI830->EXADriverPtr->exa_minor = 0;
@@ -409,6 +410,7 @@ I830EXAInit(ScreenPtr pScreen)
#endif
if(!exaDriverInit(pScreen, pI830->EXADriverPtr)) {
+ xfree(pI830->EXADriverPtr);
pI830->noAccel = TRUE;
return FALSE;
}
diff-tree 0be9bc604420e4433697cc31e8ac58c9f36185e1 (from a00a3d198aee7c173c2c36858f4447e13c86eb7f)
Author: Wang Zhenyu <zhenyu.z.wang at intel.com>
Date: Sat Apr 29 10:54:02 2006 +0800
I830CheckDevicesTimer() sync should be in I830_USE_XAA case.
diff --git a/src/i830_driver.c b/src/i830_driver.c
index 50f2059..5cfb6fc 100644
--- a/src/i830_driver.c
+++ b/src/i830_driver.c
@@ -6122,13 +6122,14 @@ I830CheckDevicesTimer(OsTimerPtr timer,
xf86DrvMsg(pScrn->scrnIndex, X_INFO,
"Hotkey switch to 0x%lx.\n", (unsigned long) temp);
- if (pI830->AccelInfoRec && pI830->AccelInfoRec->NeedToSync) {
+#ifdef I830_USE_XAA
+ if (!pI830->useEXA && pI830->AccelInfoRec && pI830->AccelInfoRec->NeedToSync) {
(*pI830->AccelInfoRec->Sync)(pScrn);
pI830->AccelInfoRec->NeedToSync = FALSE;
if (xf86IsEntityShared(pScrn->entityList[0]))
pI8302->AccelInfoRec->NeedToSync = FALSE;
}
-
+#endif
GetAttachableDisplayDeviceList(pScrn);
pI8301->lastDevice0 = pI8301->lastDevice1;
diff-tree a00a3d198aee7c173c2c36858f4447e13c86eb7f (from c94cc67bcc507e8256ae4b51b84dfe3f4aa12ab5)
Author: Wang Zhenyu <zhenyu.z.wang at intel.com>
Date: Sat Apr 29 10:52:45 2006 +0800
fix I830BIOSAdjustFrame() sync in I830_USE_EXA case, use exaWaitSync() helper.
diff --git a/src/i830_driver.c b/src/i830_driver.c
index 6b03c0f..50f2059 100644
--- a/src/i830_driver.c
+++ b/src/i830_driver.c
@@ -196,6 +196,7 @@ const char *I830exaSymbols[] = {
"exaDriverFini",
"exaOffscreenAlloc",
"exaOffscreenFree",
+ "exaWaitSync",
NULL
};
#endif
@@ -5257,11 +5258,18 @@ I830BIOSAdjustFrame(int scrnIndex, int x
x, pI830->xoffset, y, pI830->yoffset);
/* Sync the engine before adjust frame */
- if (pI830->AccelInfoRec && pI830->AccelInfoRec->NeedToSync) {
+#ifdef I830_USE_XAA
+ if (!pI830->noAccel && !pI830->useEXA && pI830->AccelInfoRec->NeedToSync) {
(*pI830->AccelInfoRec->Sync)(pScrn);
pI830->AccelInfoRec->NeedToSync = FALSE;
}
-
+#endif
+#ifdef I830_USE_EXA
+ if (!pI830->noAccel && pI830->useEXA) {
+ ScreenPtr pScreen = screenInfo.screens[pScrn->scrnIndex];
+ exaWaitSync(pScreen);
+ }
+#endif
if (I830IsPrimary(pScrn))
Start = pI830->FrontBuffer.Start;
else {
More information about the xorg-commit
mailing list