diff options
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.patch | 35 |
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; |