xserver: Branch 'master' - 2 commits

Keith Packard keithp at kemper.freedesktop.org
Mon Dec 28 22:02:07 PST 2009


 exa/exa_migration_mixed.c  |    3 ++-
 hw/xfree86/exa/examodule.c |   37 +++++++++++++++++++------------------
 2 files changed, 21 insertions(+), 19 deletions(-)

New commits:
commit d42f3960514f1c410863ac6c09c5638b5ddeae20
Author: Michel Dänzer <daenzer at vmware.com>
Date:   Mon Dec 28 16:48:18 2009 +0100

    EXA: Allow optimized migration to be enabled with mixed pixmaps.
    
    This was always the intention, I only recently realized it wasn't the case
    yet...
    
    Signed-off-by: Michel Dänzer <daenzer at vmware.com>
    Acked-by: Maarten Maathuis <madman2003 at gmail.com>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/hw/xfree86/exa/examodule.c b/hw/xfree86/exa/examodule.c
index 601288c..bcb6a40 100644
--- a/hw/xfree86/exa/examodule.c
+++ b/hw/xfree86/exa/examodule.c
@@ -122,24 +122,25 @@ exaDDXDriverInit(ScreenPtr pScreen)
     memcpy(pScreenPriv->options, EXAOptions, sizeof(EXAOptions));
     xf86ProcessOptions (pScrn->scrnIndex, pScrn->options, pScreenPriv->options);
 
-    if ((pExaScr->info->flags & EXA_OFFSCREEN_PIXMAPS) &&
-  	pExaScr->info->offScreenBase < pExaScr->info->memorySize)
-    {
-	char *heuristicName;
-
-	heuristicName = xf86GetOptValString (pScreenPriv->options,
-					     EXAOPT_MIGRATION_HEURISTIC);
-	if (heuristicName != NULL) {
-	    if (strcmp(heuristicName, "greedy") == 0)
-		pExaScr->migration = ExaMigrationGreedy;
-	    else if (strcmp(heuristicName, "always") == 0)
-		pExaScr->migration = ExaMigrationAlways;
-	    else if (strcmp(heuristicName, "smart") == 0)
-		pExaScr->migration = ExaMigrationSmart;
-	    else {
-		xf86DrvMsg (pScreen->myNum, X_WARNING, 
-			    "EXA: unknown migration heuristic %s\n",
-			    heuristicName);
+    if (pExaScr->info->flags & EXA_OFFSCREEN_PIXMAPS) {
+	if (!(pExaScr->info->flags & EXA_HANDLES_PIXMAPS) &&
+	    pExaScr->info->offScreenBase < pExaScr->info->memorySize) {
+	    char *heuristicName;
+
+	    heuristicName = xf86GetOptValString (pScreenPriv->options,
+						 EXAOPT_MIGRATION_HEURISTIC);
+	    if (heuristicName != NULL) {
+		if (strcmp(heuristicName, "greedy") == 0)
+		    pExaScr->migration = ExaMigrationGreedy;
+		else if (strcmp(heuristicName, "always") == 0)
+		    pExaScr->migration = ExaMigrationAlways;
+		else if (strcmp(heuristicName, "smart") == 0)
+		    pExaScr->migration = ExaMigrationSmart;
+		else {
+		    xf86DrvMsg (pScreen->myNum, X_WARNING, 
+				"EXA: unknown migration heuristic %s\n",
+				heuristicName);
+		}
 	    }
 	}
 
commit 661630f9099f254e54c8da513aaed12f6532cc35
Author: Michel Dänzer <daenzer at vmware.com>
Date:   Mon Dec 28 16:48:17 2009 +0100

    EXA/mixed: Don't clear deferred status of pixmaps if migration is limited.
    
    * With optimized migration, only the pending damage region is synchronized for
      destination pixmaps.
    * Migration of source pixmaps can be limited to a bounding region.
    
    Signed-off-by: Michel Dänzer <daenzer at vmware.com>
    Acked-by: Maarten Maathuis <madman2003 at gmail.com>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/exa/exa_migration_mixed.c b/exa/exa_migration_mixed.c
index b755b83..14cb5a7 100644
--- a/exa/exa_migration_mixed.c
+++ b/exa/exa_migration_mixed.c
@@ -112,7 +112,8 @@ exaDoMigration_mixed(ExaMigrationPtr pixmaps, int npixmaps, Bool can_accel)
 	    pPixmap->devKind = pExaPixmap->fb_pitch;
 	    exaCopyDirtyToFb(pixmaps + i);
 
-	    if (pExaScr->deferred_mixed_pixmap == pPixmap)
+	    if (pExaScr->deferred_mixed_pixmap == pPixmap &&
+		!pixmaps[i].as_dst && !pixmaps[i].pReg)
 		pExaScr->deferred_mixed_pixmap = NULL;
 	}
 


More information about the xorg-commit mailing list