xserver: Branch 'master' - 2 commits

Keith Packard keithp at kemper.freedesktop.org
Fri Dec 4 07:46:44 PST 2009


 exa/exa_migration_mixed.c |   13 +++++++++----
 exa/exa_unaccel.c         |    4 +++-
 2 files changed, 12 insertions(+), 5 deletions(-)

New commits:
commit bb7acfbcfbc37869c2215c26791c6175a5a6c526
Author: Michel Dänzer <daenzer at vmware.com>
Date:   Fri Dec 4 08:37:14 2009 +0100

    EXA: Use correct coordinate system for calculating Composite fallback region.
    
    Fixes incorrectly skipped rendering of some Composite operations to windows.
    
    Signed-off-by: Michel Dänzer <daenzer at vmware.com>
    Reviewed-by: Keith Packard <keithp at keithp.com>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/exa/exa_unaccel.c b/exa/exa_unaccel.c
index 9bc765a..eee14da 100644
--- a/exa/exa_unaccel.c
+++ b/exa/exa_unaccel.c
@@ -414,7 +414,9 @@ ExaCheckComposite (CARD8      op,
 	PixmapPtr pDstPix;
 
 	if (!miComputeCompositeRegion (&region, pSrc, pMask, pDst,
-				       xSrc, ySrc, xMask, yMask, xDst, yDst,
+				       xSrc, ySrc, xMask, yMask,
+				       xDst + pDst->pDrawable->x,
+				       yDst + pDst->pDrawable->y,
 				       width, height))
 	    goto skip;
 
commit 0f4ef7123d3e6e09e04dc55e8edb47aecf017648
Author: Maarten Maathuis <madman2003 at gmail.com>
Date:   Thu Dec 3 19:28:13 2009 +0100

    exa/mixed: setting devKind before exaCopyDirty* is not needed
    
    Signed-off-by: Maarten Maathuis <madman2003 at gmail.com>
    Acked-by: Michel Dänzer <michel at daenzer.net>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/exa/exa_migration_mixed.c b/exa/exa_migration_mixed.c
index a7fdf63..9587ea2 100644
--- a/exa/exa_migration_mixed.c
+++ b/exa/exa_migration_mixed.c
@@ -101,6 +101,14 @@ exaDoMigration_mixed(ExaMigrationPtr pixmaps, int npixmaps, Bool can_accel)
 	if (pExaPixmap->pDamage && exaPixmapHasGpuCopy(pPixmap)) {
 	    ExaScreenPriv(pPixmap->drawable.pScreen);
 
+	    /* This pitch is needed for proper acceleration. For some reason
+	     * there are pixmaps without pDamage and a bad fb_pitch value.
+	     * So setting devKind when only exaPixmapHasGpuCopy() is true
+	     * causes corruption. Pixmaps without pDamage are not migrated
+	     * and should have a valid devKind at all times, so that's why this
+	     * isn't causing problems. Pixmaps have their gpu pitch set the
+	     * first time in the MPH call from exaCreateDriverPixmap_mixed().
+	     */
 	    pPixmap->devKind = pExaPixmap->fb_pitch;
 	    exaCopyDirtyToFb(pixmaps + i);
 
@@ -183,17 +191,14 @@ exaPrepareAccessReg_mixed(PixmapPtr pPixmap, int index, RegionPtr pReg)
 		    pixmaps[0].as_src = TRUE;
 		    pixmaps[0].pReg = NULL;
 		}
-		pPixmap->devKind = pExaPixmap->fb_pitch;
 		exaCopyDirtyToSys(pixmaps);
 	    }
 
 	    if (as_dst)
 		exaPixmapDirty(pPixmap, 0, 0, pPixmap->drawable.width,
 			       pPixmap->drawable.height);
-	} else if (has_gpu_copy) {
-	    pPixmap->devKind = pExaPixmap->fb_pitch;
+	} else if (has_gpu_copy)
 	    exaCopyDirtyToSys(pixmaps);
-	}
 
 	pPixmap->devPrivate.ptr = pExaPixmap->sys_ptr;
 	pPixmap->devKind = pExaPixmap->sys_pitch;


More information about the xorg-commit mailing list