xserver: Branch 'master' - 2 commits

Michel Dänzer daenzer at kemper.freedesktop.org
Fri Feb 6 09:31:57 PST 2009


 exa/exa_migration.c |   14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

New commits:
commit f112d6bf59964f317ab236221f7bce7fe2603ab8
Author: Michel Dänzer <daenzer at vmware.com>
Date:   Fri Feb 6 18:30:43 2009 +0100

    EXA: Try harder to keep current pixmap copy up to date in exaMigrateToward*.
    
    This is probably required, but apparently not sufficient, for making migration
    heuristics other than "always" work correctly again. Not that I really care
    about them...

diff --git a/exa/exa_migration.c b/exa/exa_migration.c
index 4623ecc..19e0f71 100644
--- a/exa/exa_migration.c
+++ b/exa/exa_migration.c
@@ -463,7 +463,11 @@ exaMigrateTowardFb (ExaMigrationPtr migrate)
 	exaDoMoveInPixmap(migrate);
     }
 
-    ExaOffscreenMarkUsed (pPixmap);
+    if (exaPixmapIsOffscreen(pPixmap)) {
+	exaCopyDirtyToFb (migrate);
+	ExaOffscreenMarkUsed (pPixmap);
+    } else
+	exaCopyDirtyToSys (migrate);
 }
 
 /**
@@ -496,6 +500,12 @@ exaMigrateTowardSys (ExaMigrationPtr migrate)
 
     if (pExaPixmap->score <= EXA_PIXMAP_SCORE_MOVE_OUT && pExaPixmap->area)
 	exaDoMoveOutPixmap(migrate);
+
+    if (exaPixmapIsOffscreen(pPixmap)) {
+	exaCopyDirtyToFb (migrate);
+	ExaOffscreenMarkUsed (pPixmap);
+    } else
+	exaCopyDirtyToSys (migrate);
 }
 
 /**
commit 3948b523893d3d44b6a088340c4252e969613769
Author: Michel Dänzer <daenzer at vmware.com>
Date:   Fri Feb 6 11:37:53 2009 +0100

    EXA: Guard empty pending region warning by DEBUG_MIGRATE.
    
    It isn't very useful yet while the damage layer calls us for empty operations,
    mostly confuses users.

diff --git a/exa/exa_migration.c b/exa/exa_migration.c
index 571650c..4623ecc 100644
--- a/exa/exa_migration.c
+++ b/exa/exa_migration.c
@@ -162,6 +162,7 @@ exaCopyDirty(ExaMigrationPtr migrate, RegionPtr pValidDst, RegionPtr pValidSrc,
 	if (pExaScr->optimize_migration) {
 	    RegionPtr pending_damage = DamagePendingRegion(pExaPixmap->pDamage);
 
+#if DEBUG_MIGRATE
 	    if (REGION_NIL(pending_damage)) {
 		static Bool firsttime = TRUE;
 
@@ -170,6 +171,7 @@ exaCopyDirty(ExaMigrationPtr migrate, RegionPtr pValidDst, RegionPtr pValidSrc,
 		    firsttime = FALSE;
 		}
 	    }
+#endif
 
 	    REGION_INTERSECT(pScreen, &CopyReg, &CopyReg, pending_damage);
 	}


More information about the xorg-commit mailing list