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