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 <jcris...@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 <jcris...@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 <airl...@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 <mic...@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.daen...@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.daen...@amd.com> +Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> +Signed-off-by: Keith Packard <kei...@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(®, &box, 1); + RegionUnion(dst, dst, ®); + RegionUninit(®); +@@ -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 -- To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/e1tvjbc-00061z...@vasks.debian.org