xorg-server: Changes to 'debian-unstable'
debian/changelog | 6
debian/patches/09_EXA-Fall-back-earlier-and-more-thoroughly-from-exaGlyphs.diff | 127 ++++++++++
debian/patches/series | 1
3 files changed, 132 insertions(+), 2 deletions(-)
New commits:
commit cd8f16019743fd3cc6d0dbe5b1fdefa24d7805ee
Author: Julien Cristau <jcristau@debian.org>
Date: Sun Nov 4 00:43:25 2012 +0100
Upload to unstable
diff --git a/debian/changelog b/debian/changelog
index c586ffd..d62a530 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,4 @@
-xorg-server (2:1.12.4-2) UNRELEASED; urgency=low
+xorg-server (2:1.12.4-2) unstable; urgency=low
* Fix Xephyr command line option parsing (closes: #689246). Thanks, Andrzej
Pietrasiewicz!
@@ -7,7 +7,7 @@ xorg-server (2:1.12.4-2) UNRELEASED; urgency=low
* EXA: Fall back earlier and more thoroughly from exaGlyphs (closes:
#666468). Patch by Michel Dänzer stolen from upstream bugzilla.
- -- Julien Cristau <jcristau@debian.org> Sun, 07 Oct 2012 18:50:40 +0200
+ -- Julien Cristau <jcristau@debian.org> Wed, 24 Oct 2012 16:46:48 +0200
xorg-server (2:1.12.4-1) unstable; urgency=low
commit e756ff3b3d5cd15398eedd50daa1261dd0785f47
Author: Julien Cristau <jcristau@debian.org>
Date: Wed Oct 24 11:57:03 2012 +0200
EXA: Fall back earlier and more thoroughly from exaGlyphs (closes: #666468).
Patch by Michel Dänzer stolen from upstream bugzilla.
diff --git a/debian/changelog b/debian/changelog
index 054673f..c586ffd 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -4,6 +4,8 @@ xorg-server (2:1.12.4-2) UNRELEASED; urgency=low
Pietrasiewicz!
* Restore {in,out}{b,w,l} on ia64 (closes: #685750). Thanks, Stephan
Schreiber!
+ * EXA: Fall back earlier and more thoroughly from exaGlyphs (closes:
+ #666468). Patch by Michel Dänzer stolen from upstream bugzilla.
-- Julien Cristau <jcristau@debian.org> Sun, 07 Oct 2012 18:50:40 +0200
diff --git a/debian/patches/09_EXA-Fall-back-earlier-and-more-thoroughly-from-exaGlyphs.diff b/debian/patches/09_EXA-Fall-back-earlier-and-more-thoroughly-from-exaGlyphs.diff
new file mode 100644
index 0000000..76fc2b6
--- /dev/null
+++ b/debian/patches/09_EXA-Fall-back-earlier-and-more-thoroughly-from-exaGlyphs.diff
@@ -0,0 +1,127 @@
+From: Michel Dänzer <michel@daenzer.net>
+Subject: EXA: Fall back earlier and more thoroughly from exaGlyphs. (v2)
+
+Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=47266
+
+[https://bugs.freedesktop.org/attachment.cgi?id=59437, rebased by jcristau]
+
+Index: xorg-server/exa/exa_glyphs.c
+===================================================================
+--- xorg-server.orig/exa/exa_glyphs.c
++++ xorg-server/exa/exa_glyphs.c
+@@ -686,6 +686,7 @@ exaGlyphs(CARD8 op,
+ PixmapPtr pMaskPixmap = 0;
+ PicturePtr pMask = NULL;
+ ScreenPtr pScreen = pDst->pDrawable->pScreen;
++ ExaScreenPriv(pScreen);
+ int width = 0, height = 0;
+ int x, y;
+ int first_xOff = list->xOff, first_yOff = list->yOff;
+@@ -697,7 +698,6 @@ exaGlyphs(CARD8 op,
+ ExaGlyphBuffer buffer;
+
+ if (maskFormat) {
+- ExaScreenPriv(pScreen);
+ GCPtr pGC;
+ xRectangle rect;
+
+@@ -719,22 +719,20 @@ exaGlyphs(CARD8 op,
+ maskFormat->depth,
+ CREATE_PIXMAP_USAGE_SCRATCH);
+ if (!pMaskPixmap)
+- return;
++ goto fallback;
+ component_alpha = NeedsComponent(maskFormat->format);
+ pMask = CreatePicture(0, &pMaskPixmap->drawable,
+ maskFormat, CPComponentAlpha, &component_alpha,
+ serverClient, &error);
+- if (!pMask ||
+- (!component_alpha && pExaScr->info->CheckComposite &&
+- !(*pExaScr->info->CheckComposite) (PictOpAdd, pSrc, NULL, pMask)))
++ (*pScreen->DestroyPixmap) (pMaskPixmap);
++ if (!pMask)
++ goto fallback;
++
++ if (!component_alpha && pExaScr->info->CheckComposite &&
++ !(*pExaScr->info->CheckComposite) (PictOpAdd, pSrc, NULL, pMask))
+ {
+ PictFormatPtr argbFormat;
+
+- (*pScreen->DestroyPixmap) (pMaskPixmap);
+-
+- if (!pMask)
+- return;
+-
+ /* The driver can't seem to composite to a8, let's try argb (but
+ * without component-alpha) */
+ FreePicture((pointer) pMask, (XID) 0);
+@@ -748,15 +746,25 @@ exaGlyphs(CARD8 op,
+ maskFormat->depth,
+ CREATE_PIXMAP_USAGE_SCRATCH);
+ if (!pMaskPixmap)
+- return;
++ goto fallback;
+
+ pMask = CreatePicture(0, &pMaskPixmap->drawable, maskFormat, 0, 0,
+ serverClient, &error);
+- if (!pMask) {
+- (*pScreen->DestroyPixmap) (pMaskPixmap);
+- return;
+- }
++ (*pScreen->DestroyPixmap) (pMaskPixmap);
++ if (!pMask)
++ goto fallback;
++ }
++
++ if (pExaScr->info->CheckComposite &&
++ (!(*pExaScr->info->CheckComposite) (PictOpAdd, pSrc, NULL, pMask) ||
++ (!(*pExaScr->info->CheckComposite) (op, pSrc, pMask, pDst) &&
++ (op != PictOpOver ||
++ !(*pExaScr->info->CheckComposite) (PictOpOutReverse, pSrc, pMask, pDst) ||
++ !(*pExaScr->info->CheckComposite) (PictOpOver, pSrc, pMask, pDst))))) {
++ FreePicture ((pointer) pMask, (XID) 0);
++ goto fallback;
+ }
++
+ pGC = GetScratchGC(pMaskPixmap->drawable.depth, pScreen);
+ ValidateGC(&pMaskPixmap->drawable, pGC);
+ rect.x = 0;
+@@ -769,6 +777,13 @@ exaGlyphs(CARD8 op,
+ y = -extents.y1;
+ }
+ else {
++ if (pExaScr->info->CheckComposite &&
++ !(*pExaScr->info->CheckComposite) (op, pSrc, NULL, pDst) &&
++ (op != PictOpOver ||
++ !(*pExaScr->info->CheckComposite) (PictOpOutReverse, pSrc, NULL, pDst) ||
++ !(*pExaScr->info->CheckComposite) (PictOpOver, pSrc, NULL, pDst)))
++ goto fallback;
++
+ x = 0;
+ y = 0;
+ }
+@@ -834,6 +849,10 @@ exaGlyphs(CARD8 op,
+ xSrc + x - first_xOff,
+ ySrc + y - first_yOff, 0, 0, x, y, width, height);
+ FreePicture((pointer) pMask, (XID) 0);
+- (*pScreen->DestroyPixmap) (pMaskPixmap);
+ }
++
++ return;
++
++fallback:
++ ExaCheckGlyphs(op, pSrc, pDst, maskFormat, xSrc, ySrc, nlist, list, glyphs);
+ }
+Index: xorg-server/exa/exa_render.c
+===================================================================
+--- xorg-server.orig/exa/exa_render.c
++++ xorg-server/exa/exa_render.c
+@@ -878,7 +878,7 @@ exaComposite(CARD8 op,
+ Bool saveMaskRepeat = pMask ? pMask->repeat : 0;
+ RegionRec region;
+
+- if (pExaScr->swappedOut)
++ if (pExaScr->fallback_counter || pExaScr->swappedOut)
+ goto fallback;
+
+ /* Remove repeat in source if useless */
diff --git a/debian/patches/series b/debian/patches/series
index be5e00e..4e75993 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -9,3 +9,4 @@
06_Revert-fb-reorder-Bresenham-error-correction-to-avoi.diff
07_Revert-kinput-allocate-enough-space-for-null-charact.diff
08_xfree86_fix_ia64_inx_outx.diff
+09_EXA-Fall-back-earlier-and-more-thoroughly-from-exaGlyphs.diff
Reply to: