[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

xorg-server: Changes to 'debian-unstable'



 debian/changelog                                                                |    7 
 debian/patches/07_Revert-kinput-allocate-enough-space-for-null-charact.diff     |   13 -
 debian/patches/09_EXA-Fall-back-earlier-and-more-thoroughly-from-exaGlyphs.diff |  127 ----------
 debian/patches/09_EXA-Track-source-mask-pixmaps-more-explicitly-for-Co.diff     |   86 ++++++
 debian/patches/series                                                           |    2 
 5 files changed, 99 insertions(+), 136 deletions(-)

New commits:
commit 5865e42d2a3471a18e74d0a9e8262c9cc9a550e2
Author: Julien Cristau <jcristau@debian.org>
Date:   Mon Nov 5 10:40:41 2012 +0100

    Replace EXA patch from previous upload with the one actually applied upstream
    
    Closes: #666468.

diff --git a/debian/changelog b/debian/changelog
index d62a530..393c4de 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+xorg-server (2:1.12.4-3) unstable; urgency=low
+
+  * Replace EXA patch from previous upload with the one actually applied
+    upstream (closes: #666468).
+
+ -- Julien Cristau <jcristau@debian.org>  Mon, 05 Nov 2012 10:44:58 +0100
+
 xorg-server (2:1.12.4-2) unstable; urgency=low
 
   * Fix Xephyr command line option parsing (closes: #689246).  Thanks, Andrzej
diff --git a/debian/patches/07_Revert-kinput-allocate-enough-space-for-null-charact.diff b/debian/patches/07_Revert-kinput-allocate-enough-space-for-null-charact.diff
index fbb6ac7..be1b598 100644
--- a/debian/patches/07_Revert-kinput-allocate-enough-space-for-null-charact.diff
+++ b/debian/patches/07_Revert-kinput-allocate-enough-space-for-null-charact.diff
@@ -36,11 +36,11 @@ Cc: Dave Airlie <airlied@redhat.com>
  hw/kdrive/src/kinput.c |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
-diff --git a/hw/kdrive/src/kinput.c b/hw/kdrive/src/kinput.c
-index d35dcf8..b1068bb 100644
---- a/hw/kdrive/src/kinput.c
-+++ b/hw/kdrive/src/kinput.c
-@@ -1034,7 +1034,7 @@ KdGetOptions(InputOption **options, char *string)
+Index: xorg-server/hw/kdrive/src/kinput.c
+===================================================================
+--- xorg-server.orig/hw/kdrive/src/kinput.c
++++ xorg-server/hw/kdrive/src/kinput.c
+@@ -1055,7 +1055,7 @@ KdGetOptions(InputOption **options, char
  
      if (strchr(string, '=')) {
          tam_key = (strchr(string, '=') - string);
@@ -49,6 +49,3 @@ index d35dcf8..b1068bb 100644
          if (!key)
              goto out;
  
--- 
-1.7.10.4
-
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
deleted file mode 100644
index 76fc2b6..0000000
--- a/debian/patches/09_EXA-Fall-back-earlier-and-more-thoroughly-from-exaGlyphs.diff
+++ /dev/null
@@ -1,127 +0,0 @@
-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/09_EXA-Track-source-mask-pixmaps-more-explicitly-for-Co.diff b/debian/patches/09_EXA-Track-source-mask-pixmaps-more-explicitly-for-Co.diff
new file mode 100644
index 0000000..6fb782a
--- /dev/null
+++ b/debian/patches/09_EXA-Track-source-mask-pixmaps-more-explicitly-for-Co.diff
@@ -0,0 +1,86 @@
+From 1ca096d5e07221025c4c4110528772b7d94f15ee Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <michel.daenzer@amd.com>
+Date: Mon, 29 Oct 2012 12:57:54 +0100
+Subject: [PATCH] EXA: Track source/mask pixmaps more explicitly for Composite
+ fallback regions.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+In particular, make sure pExaScr->src/maskPix are cleared when the
+corresponding pictures aren't associated with drawables, i.e. solid or gradient
+pictures. Without this, we would in some cases associate the source/mask region
+with unrelated pixmaps from previous Composite fallbacks, resulting in random
+corruption.
+
+Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=47266
+
+Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
+Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Keith Packard <keithp@keithp.com>
+---
+ exa/exa_priv.h    |    1 +
+ exa/exa_unaccel.c |   16 ++++++++++++----
+ 2 files changed, 13 insertions(+), 4 deletions(-)
+
+Index: xorg-server/exa/exa_priv.h
+===================================================================
+--- xorg-server.orig/exa/exa_priv.h
++++ xorg-server/exa/exa_priv.h
+@@ -207,6 +207,7 @@ typedef struct {
+     RegionRec srcReg;
+     RegionRec maskReg;
+     PixmapPtr srcPix;
++    PixmapPtr maskPix;
+ 
+ } ExaScreenPrivRec, *ExaScreenPrivPtr;
+ 
+Index: xorg-server/exa/exa_unaccel.c
+===================================================================
+--- xorg-server.orig/exa/exa_unaccel.c
++++ xorg-server/exa/exa_unaccel.c
+@@ -442,6 +442,13 @@ ExaSrcValidate(DrawablePtr pDrawable,
+     RegionPtr dst;
+     int xoff, yoff;
+ 
++    if (pExaScr->srcPix == pPix)
++        dst = &pExaScr->srcReg;
++    else if (pExaScr->maskPix == pPix)
++        dst = &pExaScr->maskReg;
++    else
++        return;
++
+     exaGetDrawableDeltas(pDrawable, pPix, &xoff, &yoff);
+ 
+     box.x1 = x + xoff;
+@@ -449,8 +456,6 @@ ExaSrcValidate(DrawablePtr pDrawable,
+     box.x2 = box.x1 + width;
+     box.y2 = box.y1 + height;
+ 
+-    dst = (pExaScr->srcPix == pPix) ? &pExaScr->srcReg : &pExaScr->maskReg;
+-
+     RegionInit(&reg, &box, 1);
+     RegionUnion(dst, dst, &reg);
+     RegionUninit(&reg);
+@@ -495,16 +500,19 @@ ExaPrepareCompositeReg(ScreenPtr pScreen
+         if (pSrc != pDst)
+             RegionTranslate(pSrc->pCompositeClip,
+                             -pSrc->pDrawable->x, -pSrc->pDrawable->y);
+-    }
++    } else
++        pExaScr->srcPix = NULL;
+ 
+     if (pMask && pMask->pDrawable) {
+         pMaskPix = exaGetDrawablePixmap(pMask->pDrawable);
+         RegionNull(&pExaScr->maskReg);
+         maskReg = &pExaScr->maskReg;
++        pExaScr->maskPix = pMaskPix;
+         if (pMask != pDst && pMask != pSrc)
+             RegionTranslate(pMask->pCompositeClip,
+                             -pMask->pDrawable->x, -pMask->pDrawable->y);
+-    }
++    } else
++        pExaScr->maskPix = NULL;
+ 
+     RegionTranslate(pDst->pCompositeClip,
+                     -pDst->pDrawable->x, -pDst->pDrawable->y);
diff --git a/debian/patches/series b/debian/patches/series
index 4e75993..c89edaf 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -9,4 +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
+09_EXA-Track-source-mask-pixmaps-more-explicitly-for-Co.diff


Reply to: