summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'x11-base/xorg-server/files/1.5.2-exa_migration.patch')
-rw-r--r--x11-base/xorg-server/files/1.5.2-exa_migration.patch35
1 files changed, 35 insertions, 0 deletions
diff --git a/x11-base/xorg-server/files/1.5.2-exa_migration.patch b/x11-base/xorg-server/files/1.5.2-exa_migration.patch
new file mode 100644
index 0000000..b6dd10a
--- /dev/null
+++ b/x11-base/xorg-server/files/1.5.2-exa_migration.patch
@@ -0,0 +1,35 @@
+Patch from Michel Dänzer on xorg mailing list in the thread
+"ProcPutImage calls exaDoMoveOutPixmap, 4x slowdown":
+
+"Looks like we are we're syncing unnecessarily in the migration no-op case"
+
+diff --git a/exa/exa_migration.c b/exa/exa_migration.c
+index 56b6945..c68cd76 100644
+--- a/exa/exa_migration.c
++++ b/exa/exa_migration.c
+@@ -129,6 +131,7 @@ exaCopyDirty(ExaMigrationPtr migrate, RegionPtr pValidDst, RegionPtr pValidSrc,
+ BoxPtr pBox;
+ int nbox;
+ Bool access_prepared = FALSE;
++ Bool need_sync = FALSE;
+
+ /* Damaged bits are valid in current copy but invalid in other one */
+ if (exaPixmapIsOffscreen(pPixmap)) {
+@@ -220,14 +253,15 @@ exaCopyDirty(ExaMigrationPtr migrate, RegionPtr pValidDst, RegionPtr pValidSrc,
+ exaMemcpyBox (pPixmap, pBox,
+ fallback_src, fallback_srcpitch,
+ fallback_dst, fallback_dstpitch);
+- }
++ } else
++ need_sync = TRUE;
+
+ pBox++;
+ }
+
+ if (access_prepared)
+ exaFinishAccess(&pPixmap->drawable, fallback_index);
+- else
++ else if (need_sync)
+ sync (pPixmap->drawable.pScreen);
+
+ pExaPixmap->offscreen = save_offscreen;