xf86-video-intel: Branch 'i830-pageflip' - 3 commits - src/i830_display.c src/i830_dri.c src/i830_driver.c
Michel Daenzer
daenzer at kemper.freedesktop.org
Wed Feb 28 18:54:16 EET 2007
src/i830_display.c | 6 +++---
src/i830_dri.c | 14 +++++++++++---
src/i830_driver.c | 4 ----
3 files changed, 14 insertions(+), 10 deletions(-)
New commits:
diff-tree 36cad3fcb65e3dcd88e58e301cd60adb121cb96b (from b5316fb2623e9630cbd58020e0a7c95bf354c587)
Author: Michel Dänzer <michel at tungstengraphics.com>
Date: Wed Feb 28 17:52:42 2007 +0100
Update vblank pipe setup when setting a mode.
diff --git a/src/i830_display.c b/src/i830_display.c
index 258897e..04159e7 100644
--- a/src/i830_display.c
+++ b/src/i830_display.c
@@ -864,6 +864,9 @@ i830_crtc_mode_set(xf86CrtcPtr crtc, Dis
OUTREG(dspcntr_reg, dspcntr);
/* Flush the plane changes */
i830PipeSetBase(crtc, x, y);
+#ifdef XF86DRI
+ I830DRISetVBlankInterrupt (pScrn, TRUE);
+#endif
i830WaitForVblank(pScrn);
}
@@ -1041,9 +1044,6 @@ i830SetMode(ScrnInfoPtr pScrn, DisplayMo
i830DescribeOutputConfiguration(pScrn);
-#ifdef XF86DRI
- I830DRISetVBlankInterrupt (pScrn, TRUE);
-#endif
done:
i830DumpRegs (pScrn);
i830_sdvo_dump(pScrn);
diff --git a/src/i830_driver.c b/src/i830_driver.c
index 3c8ec1a..9bd7029 100644
--- a/src/i830_driver.c
+++ b/src/i830_driver.c
@@ -3085,10 +3085,6 @@ I830EnterVT(int scrnIndex, int flags)
i830DumpRegs (pScrn);
i830DescribeOutputConfiguration(pScrn);
-#ifdef XF86DRI
- I830DRISetVBlankInterrupt (pScrn, TRUE);
-#endif
-
ResetState(pScrn, TRUE);
SetHWOperatingState(pScrn);
diff-tree b5316fb2623e9630cbd58020e0a7c95bf354c587 (from f5ab9e0ad3a65c972861dd53be6e33e1aac13191)
Author: Michel Dänzer <michel at tungstengraphics.com>
Date: Wed Feb 28 17:50:56 2007 +0100
I830DRIClipNotify: Fix initialization of crtcBox[1].[xy]2.
diff --git a/src/i830_dri.c b/src/i830_dri.c
index afc7de0..e546066 100644
--- a/src/i830_dri.c
+++ b/src/i830_dri.c
@@ -1523,8 +1523,8 @@ I830DRIClipNotify(ScreenPtr pScreen, Win
crtcBox[0].y2 = crtcBox[0].y1 + sPriv->pipeA_h;
crtcBox[1].x1 = sPriv->pipeB_x;
crtcBox[1].y1 = sPriv->pipeB_y;
- crtcBox[1].x2 = crtcBox[0].x1 + sPriv->pipeB_w;
- crtcBox[1].y2 = crtcBox[0].y1 + sPriv->pipeB_h;
+ crtcBox[1].x2 = crtcBox[1].x1 + sPriv->pipeB_w;
+ crtcBox[1].y2 = crtcBox[1].y1 + sPriv->pipeB_h;
for (i = 0; i < 2; i++) {
for (j = 0; j < num; j++) {
diff-tree f5ab9e0ad3a65c972861dd53be6e33e1aac13191 (from 8cce74f195e5ef6ce5599ecd52f35bcfcb0d7913)
Author: Michel Dänzer <michel at tungstengraphics.com>
Date: Thu Feb 22 18:57:23 2007 +0100
I830DRISwapContext: Some cleanups.
Also call I830EmitFlush() when entering/leaving the server context. Doesn't
seem to help for artifacts with page flipping and mixed 2D/3D unfortunately.
diff --git a/src/i830_dri.c b/src/i830_dri.c
index 6c91cdc..afc7de0 100644
--- a/src/i830_dri.c
+++ b/src/i830_dri.c
@@ -1135,6 +1135,8 @@ I830DRISwapContext(ScreenPtr pScreen, DR
pI830->LockHeld = 1;
I830RefreshRing(pScrn);
+ I830EmitFlush(pScrn);
+
#ifdef DAMAGE
if (!pI830->pDamage && pI830->allowPageFlip) {
PixmapPtr pPix = pScreen->GetScreenPixmap(pScreen);
@@ -1159,10 +1161,12 @@ I830DRISwapContext(ScreenPtr pScreen, DR
} else if (syncType == DRI_2D_SYNC &&
oldContextType == DRI_NO_CONTEXT &&
newContextType == DRI_2D_CONTEXT) {
- pI830->LockHeld = 0;
if (I810_DEBUG & DEBUG_VERBOSE_DRI)
ErrorF("i830DRISwapContext (out)\n");
+ if (!pScrn->vtSema)
+ return;
+
#ifdef DAMAGE
if (pI830->pDamage) {
RegionPtr pDamageReg = DamageRegion(pI830->pDamage);
@@ -1181,6 +1185,10 @@ I830DRISwapContext(ScreenPtr pScreen, DR
}
}
#endif
+
+ I830EmitFlush(pScrn);
+
+ pI830->LockHeld = 0;
} else if (I810_DEBUG & DEBUG_VERBOSE_DRI)
ErrorF("i830DRISwapContext (other)\n");
}
More information about the xorg-commit
mailing list