Author: branden Date: 2003-10-24 15:47:33 -0500 (Fri, 24 Oct 2003) New Revision: 712
Added: trunk/debian/patches/000_stolen_from_HEAD_xaa.diff Modified: trunk/debian/changelog trunk/debian/patches/000_stolen_from_HEAD.diff Log: Grab latest fixes to XAA (X Acceleration Architecture) from upstream CVS HEAD. - debian/patches/000_stolen_from_HEAD.diff: remove existing XaaPCache patch (moved to 000_stolen_from_HEAD_xaa.diff) - debian/patches/000_stolen_from_HEAD_xaa.diff: new; + (xc/programs/Xserver/hw/xfree86/xaa/xaaFillPoly.c): Fix a bug filling trapezoids in some obscure 8x8 pattern fill case. (Mark Vojkovich) + (xc/programs/Xserver/hw/xfree86/xaa/xaaPCache.c): Fix Color8x8 cache bug (pattern expanded from source) (Thomas Winischhofer) + (xc/programs/Xserver/hw/xfree86/xaa/xaaPict.c): - move existing XaaPCache patch (crash while off-screen memory heavily fragmented) to this patch - Warning fix (Alan Hourihane). - Change XAA to not sync when it sees RENDER operations that don't touch VRAM, and to try to accelerate Glyphs with Composite if it seems likely that will work (#5509, Nolan Leake). - Add missing tests for vtSema to xaa 'Picture' functions. These missing checks caused strange behavior with some drivers when RENDER extension requests were made while X was switched away. (Egbert Eich) + (xc/programs/Xserver/hw/xfree86/xaa/xaaStipple.c): Fix an XAA stipple bug that's been there for some 4+ years. (Mark Vojkovich) Modified: trunk/debian/changelog =================================================================== --- trunk/debian/changelog 2003-10-24 18:46:09 UTC (rev 711) +++ trunk/debian/changelog 2003-10-24 20:47:33 UTC (rev 712) @@ -217,8 +217,31 @@ - debian/patches/000_stolen_from_HEAD.diff: updated - debian/patches/002_xdm_fixes.diff: resynced - -- Branden Robinson <[EMAIL PROTECTED]> Fri, 24 Oct 2003 13:33:35 -0500 + * Grab latest fixes to XAA (X Acceleration Architecture) from upstream CVS + HEAD. + - debian/patches/000_stolen_from_HEAD.diff: remove existing XaaPCache + patch (moved to 000_stolen_from_HEAD_xaa.diff) + - debian/patches/000_stolen_from_HEAD_xaa.diff: new; + + (xc/programs/Xserver/hw/xfree86/xaa/xaaFillPoly.c): Fix a bug filling + trapezoids in some obscure 8x8 pattern fill case. (Mark Vojkovich) + + (xc/programs/Xserver/hw/xfree86/xaa/xaaPCache.c): Fix Color8x8 cache + bug (pattern expanded from source) (Thomas Winischhofer) + + (xc/programs/Xserver/hw/xfree86/xaa/xaaPict.c): + - move existing XaaPCache patch (crash while off-screen memory heavily + fragmented) to this patch + - Warning fix (Alan Hourihane). + - Change XAA to not sync when it sees RENDER operations that don't + touch VRAM, and to try to accelerate Glyphs with Composite if it + seems likely that will work (#5509, Nolan Leake). + - Add missing tests for vtSema to xaa 'Picture' functions. These + missing checks caused strange behavior with some drivers when RENDER + extension requests were made while X was switched away. (Egbert + Eich) + + (xc/programs/Xserver/hw/xfree86/xaa/xaaStipple.c): Fix an XAA stipple + bug that's been there for some 4+ years. (Mark Vojkovich) + -- Branden Robinson <[EMAIL PROTECTED]> Fri, 24 Oct 2003 15:38:12 -0500 + xfree86 (4.2.1-12.1) unstable; urgency=low * Fix typo in xlibs preinst. Closes: #213774, #213776 Modified: trunk/debian/patches/000_stolen_from_HEAD.diff =================================================================== --- trunk/debian/patches/000_stolen_from_HEAD.diff 2003-10-24 18:46:09 UTC (rev 711) +++ trunk/debian/patches/000_stolen_from_HEAD.diff 2003-10-24 20:47:33 UTC (rev 712) @@ -253,11 +253,6 @@ #646). Backported from XFree86 CVS HEAD. -(xc/programs/Xserver/hw/xfree86/xaa/xaaPCache.c): - 376. Fix an XAA pixmap cache server crash that can happen in some cases - when the off-screen memory is heavily fragmented (David Dawes, based on - #5752, Koike Kazuhiko, Chisato Yamauchi). - (xc/lib/Xi/XExtInt.c, xc/lib/Xi/XGetVers.c, xc/lib/Xi/XIint.h): @@ -5318,30 +5313,6 @@ #endif #ifndef OPEN_MAX #if defined(SVR4) || defined(__EMX__) ---- xc/programs/Xserver/hw/xfree86/xaa/xaaPCache.c~ 2003-09-10 15:12:05.000000000 -0500 -+++ xc/programs/Xserver/hw/xfree86/xaa/xaaPCache.c 2003-09-10 15:12:19.000000000 -0500 -@@ -763,6 +763,7 @@ - 1) Don't take up more than half the memory. - 2) Don't bother if you can't get at least four. - 3) Don't make more than MAX_512. -+ 4) Don't have any of there are no 256x256s. - - 256x256 - - 1) Don't take up more than a quarter of the memory enless there -@@ -786,6 +787,13 @@ - else Target256 = ntotal >> 4; - if(Target256 < 4) Target256 = 0; - -+ if(Num512 && Num256 < 4) { -+ while(Num512 && Num256 < Target256) { -+ SubdivideList(&List512, &List256); -+ Num256 += 4; Num512--; -+ } -+ } -+ - if(!Num512) { /* no room */ - } else if((Num512 < 4) || (!Target512)) { - while(Num512) { --- xc/lib/Xi/XGetVers.c 2002-10-16 02:37:29.000000000 +0200 +++ xc/lib/Xi/XGetVers.c 2003-07-08 13:58:15.000000000 +0200 @@ -71,12 +71,33 @@ Added: trunk/debian/patches/000_stolen_from_HEAD_xaa.diff =================================================================== --- trunk/debian/patches/000_stolen_from_HEAD_xaa.diff 2003-10-24 18:46:09 UTC (rev 711) +++ trunk/debian/patches/000_stolen_from_HEAD_xaa.diff 2003-10-24 20:47:33 UTC (rev 712) @@ -0,0 +1,257 @@ +$Id$ + +(xc/programs/Xserver/hw/xfree86/xaa/xaaFillPoly.c): + Fix a bug filling trapezoids in some obscure 8x8 pattern fill case. (Mark + Vojkovich) + +(xc/programs/Xserver/hw/xfree86/xaa/xaaPCache.c): + 376. Fix an XAA pixmap cache server crash that can happen in some cases + when the off-screen memory is heavily fragmented (David Dawes, based + on #5752, Koike Kazuhiko, Chisato Yamauchi). + + Fix Color8x8 cache bug (pattern expanded from source) (Thomas Winischhofer) + +(xc/programs/Xserver/hw/xfree86/xaa/xaaPict.c): + Warning fix (Alan Hourihane). + + 598. Change XAA to not sync when it sees RENDER operations that don't + touch VRAM, and to try to accelerate Glyphs with Composite if it + seems likely that will work (#5509, Nolan Leake). + + 125. Add missing tests for vtSema to xaa 'Picture' functions. These missing + checks caused strange behavior with some drivers when RENDER extension + requests were made while X was switched away. (Egbert Eich) + +(xc/programs/Xserver/hw/xfree86/xaa/xaaStipple.c): + Fix an XAA stipple bug that's been there for some 4+ years. (Mark Vojkovich) + +diff -urN xc/programs/Xserver/hw/xfree86/xaa/xaaFillPoly.c xc/programs/Xserver/hw/xfree86/xaa/xaaFillPoly.c +--- xc/programs/Xserver/hw/xfree86/xaa/xaaFillPoly.c 2001-10-27 22:34:04.000000000 -0500 ++++ xc/programs/Xserver/hw/xfree86/xaa/xaaFillPoly.c 2003-09-13 12:44:00.000000000 -0500 +@@ -1,4 +1,4 @@ +-/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaFillPoly.c,v 1.15 2001/10/28 03:34:04 tsi Exp $ */ ++/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaFillPoly.c,v 1.16 2003/03/23 03:41:44 mvojkovi Exp $ */ + + /* + * Copyright 1996 The XFree86 Project +@@ -770,7 +770,11 @@ + pCache = (*infoRec->CacheMono8x8Pattern)( + infoRec->pScrn, patx, paty); + patx = pCache->x; paty = pCache->y; +- } ++ } else { ++ pCache = &(infoRec->ScratchCacheInfoRec); ++ pCache->pat0 = patx; ++ pCache->pat1 = paty; ++ } + RectFunc = Mono8x8PatternRectHelper; + } + +diff -urN xc/programs/Xserver/hw/xfree86/xaa/xaaPCache.c xc/programs/Xserver/hw/xfree86/xaa/xaaPCache.c +--- xc/programs/Xserver/hw/xfree86/xaa/xaaPCache.c 2003-08-15 20:13:58.000000000 -0500 ++++ xc/programs/Xserver/hw/xfree86/xaa/xaaPCache.c 2003-10-10 03:59:08.000000000 -0500 +@@ -1,4 +1,4 @@ +-/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaPCache.c,v 1.30 2000/09/25 23:56:14 mvojkovi Exp $ */ ++/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaPCache.c,v 1.32 2003/10/06 18:20:14 twini Exp $ */ + + #include "misc.h" + #include "xf86.h" +@@ -763,6 +763,7 @@ + 1) Don't take up more than half the memory. + 2) Don't bother if you can't get at least four. + 3) Don't make more than MAX_512. ++ 4) Don't have any of there are no 256x256s. + + 256x256 - + 1) Don't take up more than a quarter of the memory enless there +@@ -786,6 +787,13 @@ + else Target256 = ntotal >> 4; + if(Target256 < 4) Target256 = 0; + ++ if(Num512 && Num256 < 4) { ++ while(Num512 && Num256 < Target256) { ++ SubdivideList(&List512, &List256); ++ Num256 += 4; Num512--; ++ } ++ } ++ + if(!Num512) { /* no room */ + } else if((Num512 < 4) || (!Target512)) { + while(Num512) { +@@ -2044,7 +2052,7 @@ + nw = w; + memcpy(dstPtr, srcPtr, w * Bpp); + while (nw != 8) { +- memcpy(dstPtr + (nw * Bpp), srcPtr, nw * Bpp); ++ memcpy(dstPtr + (nw * Bpp), dstPtr, nw * Bpp); + nw <<= 1; + } + } +diff -urN xc/programs/Xserver/hw/xfree86/xaa/xaaPict.c xc/programs/Xserver/hw/xfree86/xaa/xaaPict.c +--- xc/programs/Xserver/hw/xfree86/xaa/xaaPict.c 2002-12-09 23:17:21.000000000 -0500 ++++ xc/programs/Xserver/hw/xfree86/xaa/xaaPict.c 2003-09-13 12:44:00.000000000 -0500 +@@ -231,7 +237,7 @@ + (op == PictOpOver) && infoRec->WriteBitmap && !pMask->repeat && + !(infoRec->WriteBitmapFlags & NO_TRANSPARENCY) && + (!(infoRec->WriteBitmapFlags & RGB_EQUAL) || +- (red == green == blue))) ++ ((red == green) && (green == blue)))) + { + PixmapPtr pPix = (PixmapPtr)(pMask->pDrawable); + int skipleft; +@@ -425,8 +431,14 @@ + !(*infoRec->Composite)(op, pSrc, pMask, pDst, + xSrc, ySrc, xMask, yMask, xDst, yDst, + width, height)) +- { +- SYNC_CHECK(pDst->pDrawable); ++ { ++ if((pSrc->pDrawable->type == DRAWABLE_WINDOW || ++ pDst->pDrawable->type == DRAWABLE_WINDOW || ++ IS_OFFSCREEN_PIXMAP(pSrc->pDrawable) || ++ IS_OFFSCREEN_PIXMAP(pDst->pDrawable)) ++ && infoRec->pScrn->vtSema) { ++ SYNC_CHECK(pDst->pDrawable); ++ } + (*GetPictureScreen(pScreen)->Composite) (op, + pSrc, + pMask, +@@ -495,7 +507,7 @@ + + XAAGetPixelFromRGBA(&pixel, red, green, blue, 0, pDst->format); + +- if((infoRec->WriteBitmapFlags & RGB_EQUAL) && !(red == green == blue)) ++ if((infoRec->WriteBitmapFlags & RGB_EQUAL) && !((red == green) && (green == blue))) + return FALSE; + + x = pDst->pDrawable->x; +@@ -617,7 +629,22 @@ + return TRUE; + } + +- return FALSE; ++ /* ++ * If it looks like we have a chance of being able to draw these ++ * glyphs with an accelerated Composite, do that now to avoid ++ * unneeded and costly syncs. ++ */ ++ if(maskFormat) { ++ if(!infoRec->CPUToScreenAlphaTextureFormats) ++ return FALSE; ++ } else { ++ if(!infoRec->CPUToScreenTextureFormats) ++ return FALSE; ++ } ++ ++ miGlyphs(op, pSrc, pDst, maskFormat, xSrc, ySrc, nlist, list, glyphs); ++ ++ return TRUE; + } + + +@@ -640,7 +667,13 @@ + !(*infoRec->Glyphs)(op, pSrc, pDst, maskFormat, + xSrc, ySrc, nlist, list, glyphs)) + { +- SYNC_CHECK(pDst->pDrawable); ++ if(((pSrc->pDrawable->type == DRAWABLE_WINDOW) || ++ (pDst->pDrawable->type == DRAWABLE_WINDOW) || ++ IS_OFFSCREEN_PIXMAP(pSrc->pDrawable) || ++ IS_OFFSCREEN_PIXMAP(pDst->pDrawable)) ++ && infoRec->pScrn->vtSema) { ++ SYNC_CHECK(pDst->pDrawable); ++ } + (*GetPictureScreen(pScreen)->Glyphs) (op, pSrc, pDst, maskFormat, + xSrc, ySrc, nlist, list, glyphs); + } +diff -urN xc/programs/Xserver/hw/xfree86/xaa/xaaStipple.c xc/programs/Xserver/hw/xfree86/xaa/xaaStipple.c +--- xc/programs/Xserver/hw/xfree86/xaa/xaaStipple.c 2001-10-27 22:34:04.000000000 -0500 ++++ xc/programs/Xserver/hw/xfree86/xaa/xaaStipple.c 2003-09-13 12:44:00.000000000 -0500 +@@ -1,4 +1,4 @@ +-/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaStipple.c,v 1.11 2001/10/28 03:34:04 tsi Exp $ */ ++/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaStipple.c,v 1.12 2003/08/04 22:18:31 mvojkovi Exp $ */ + + #include "xaa.h" + #include "xaalocal.h" +@@ -762,20 +762,28 @@ + ){ + CARD32* srcp; + CARD32 bits; +- int bitsleft, shift; ++ int bitsleft, shift, usable; + + while(dwords--) { +- bitsleft = width - offset; +- srcp = src + (offset >> 5); +- shift = offset & 31; +- +- if(bitsleft < 32) +- bits = SHIFT_L(*src,bitsleft) | +- (SHIFT_R(*srcp,shift) & XAAShiftMasks[bitsleft]); +- else if(shift) +- bits = SHIFT_R(*srcp,shift) | SHIFT_L(srcp[1],32-shift); +- else +- bits = *srcp; ++ bitsleft = width - offset; ++ srcp = src + (offset >> 5); ++ shift = offset & 31; ++ usable = 32 - shift; ++ ++ if(bitsleft < 32) { ++ if(bitsleft <= usable) { ++ bits = SHIFT_L(*src,bitsleft) | ++ (SHIFT_R(*srcp,shift) & XAAShiftMasks[bitsleft]); ++ } else { ++ bits = SHIFT_L(*src,bitsleft) | ++ (SHIFT_L(srcp[1],usable) & XAAShiftMasks[bitsleft]) | ++ (SHIFT_R(*srcp,shift) & XAAShiftMasks[usable]); ++ } ++ } ++ else if(shift) ++ bits = SHIFT_R(*srcp,shift) | SHIFT_L(srcp[1],usable); ++ else ++ bits = *srcp; + + #ifdef TRIPLE_BITS + if(dwords >= 2) { +@@ -805,20 +813,28 @@ + ){ + CARD32* srcp; + CARD32 bits; +- int bitsleft, shift; ++ int bitsleft, shift, usable; + + while(dwords--) { +- bitsleft = width - offset; +- srcp = src + (offset >> 5); +- shift = offset & 31; +- +- if(bitsleft < 32) +- bits = SHIFT_L(*src,bitsleft) | +- (SHIFT_R(*srcp,shift) & XAAShiftMasks[bitsleft]); +- else if(shift) +- bits = SHIFT_R(*srcp,shift) | SHIFT_L(srcp[1],32-shift); +- else +- bits = *srcp; ++ bitsleft = width - offset; ++ srcp = src + (offset >> 5); ++ shift = offset & 31; ++ usable = 32 - shift; ++ ++ if(bitsleft < 32) { ++ if(bitsleft <= usable) { ++ bits = SHIFT_L(*src,bitsleft) | ++ (SHIFT_R(*srcp,shift) & XAAShiftMasks[bitsleft]); ++ } else { ++ bits = SHIFT_L(*src,bitsleft) | ++ (SHIFT_L(srcp[1],usable) & XAAShiftMasks[bitsleft]) | ++ (SHIFT_R(*srcp,shift) & XAAShiftMasks[usable]); ++ } ++ } ++ else if(shift) ++ bits = SHIFT_R(*srcp,shift) | SHIFT_L(srcp[1],usable); ++ else ++ bits = *srcp; + + bits = ~bits; + Property changes on: trunk/debian/patches/000_stolen_from_HEAD_xaa.diff ___________________________________________________________________ Name: svn:keywords + Id -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]