xf86-video-intel: Branch 'i830-pageflip' - 2 commits - man/intel.man src/i830.h src/i830_dri.c
Michel Daenzer
daenzer at kemper.freedesktop.org
Thu Feb 22 19:28:30 EET 2007
man/intel.man | 2 +-
src/i830.h | 1 +
src/i830_dri.c | 38 +++++++++++++++++++++++++++++++-------
3 files changed, 33 insertions(+), 8 deletions(-)
New commits:
diff-tree 8cce74f195e5ef6ce5599ecd52f35bcfcb0d7913 (from f346549183a407a4bff6521ec2450dacb97442e9)
Author: Michel Dänzer <michel at tungstengraphics.com>
Date: Thu Feb 22 18:27:59 2007 +0100
Do not sync DRI windows between pages when possible.
diff --git a/src/i830.h b/src/i830.h
index bbbb4a8..e26556f 100644
--- a/src/i830.h
+++ b/src/i830.h
@@ -310,6 +310,7 @@ typedef struct _I830Rec {
#ifdef DAMAGE
DamagePtr pDamage;
+ RegionRec driRegion;
#endif
#endif
diff --git a/src/i830_dri.c b/src/i830_dri.c
index 65736cd..6c91cdc 100644
--- a/src/i830_dri.c
+++ b/src/i830_dri.c
@@ -980,6 +980,10 @@ I830DRICloseScreen(ScreenPtr pScreen)
DPRINTF(PFX, "I830DRICloseScreen\n");
+#ifdef DAMAGE
+ REGION_UNINIT(pScreen, &pI830->driRegion);
+#endif
+
if (pI830DRI->irq) {
drmCtlUninstHandler(pI830->drmSubFD);
pI830DRI->irq = 0;
@@ -1164,10 +1168,16 @@ I830DRISwapContext(ScreenPtr pScreen, DR
RegionPtr pDamageReg = DamageRegion(pI830->pDamage);
if (pDamageReg) {
- int nrects = REGION_NUM_RECTS(pDamageReg);
+ RegionRec region;
+ int nrects;
- if (nrects)
- I830DRIRefreshArea(pScrn, nrects, REGION_RECTS(pDamageReg));
+ REGION_NULL(pScreen, ®ion);
+ REGION_SUBTRACT(pScreen, ®ion, pDamageReg, &pI830->driRegion);
+
+ if ((nrects = REGION_NUM_RECTS(®ion)))
+ I830DRIRefreshArea(pScrn, nrects, REGION_RECTS(®ion));
+
+ REGION_UNINIT(pScreen, ®ion);
}
}
#endif
@@ -1486,8 +1496,13 @@ I830DRITransitionTo2d(ScreenPtr pScreen)
static void
I830DRIClipNotify(ScreenPtr pScreen, WindowPtr *ppWin, int num)
{
+ ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ I830Ptr pI830 = I830PTR(pScrn);
unsigned pfMask = 0;
+ REGION_UNINIT(pScreen, &pI830->driRegion);
+ REGION_NULL(pScreen, &pI830->driRegion);
+
if (num > 0) {
drmI830Sarea *sPriv = (drmI830Sarea *) DRIGetSAREAPrivate(pScreen);
BoxRec crtcBox[2];
@@ -1505,15 +1520,24 @@ I830DRIClipNotify(ScreenPtr pScreen, Win
for (i = 0; i < 2; i++) {
for (j = 0; j < num; j++) {
- if (ppWin[j] && RECT_IN_REGION(pScreen, &ppWin[j]->clipList,
- &crtcBox[i]) != rgnOUT)
- numvisible[i]++;
+ WindowPtr pWin = ppWin[j];
+
+ if (pWin) {
+ if (RECT_IN_REGION(pScreen, &pWin->clipList, &crtcBox[i]) !=
+ rgnOUT)
+ numvisible[i]++;
+
+ if (i == 0)
+ REGION_UNION(pScreen, &pI830->driRegion, &pWin->clipList,
+ &pI830->driRegion);
+ }
}
if (numvisible[i] == 1)
pfMask |= 1 << i;
}
- }
+ } else
+ REGION_NULL(pScreen, &pI830->driRegion);
I830DRISetPfMask(pScreen, pfMask);
}
diff-tree f346549183a407a4bff6521ec2450dacb97442e9 (from 0bee64f4bc7581de7ab28ca438581d215e85c610)
Author: Michel Dänzer <michel at tungstengraphics.com>
Date: Wed Feb 21 09:19:54 2007 +0100
intel.man: Fix typo.
diff --git a/man/intel.man b/man/intel.man
index 503b52a..05a91f7 100644
--- a/man/intel.man
+++ b/man/intel.man
@@ -170,7 +170,7 @@ Default for i810: The option is not used
Default for i830 and above: Disabled.
.TP
.BI "Option \*qTripleBuffer\*q \*q" boolean \*q
-Enable support for triple flipping. This should improve 3D performance at the
+Enable support for triple buffering. This should improve 3D performance at the
potential cost of worse performance with mixed 2D/3D. Also note that this gives
no benefit without corresponding support in the Mesa 3D driver and may not give
any benefit without page flipping either (see
More information about the xorg-commit
mailing list