diff options
author | Michel Dänzer <daenzer@vmware.com> | 2009-05-15 15:48:37 +0200 |
---|---|---|
committer | Michel Dänzer <daenzer@vmware.com> | 2009-05-15 15:48:37 +0200 |
commit | 850675d4de4373e5df95507dbf2cd9affaaf54bc (patch) | |
tree | bad789481074fed23539d6312278e914bd5825a3 | |
parent | c1bbac2708bbccbec01cecba39cdf2b8160c1dc3 (diff) |
EXA: Take GC client clip type into account for migration.
Fixes http://bugs.freedesktop.org/show_bug.cgi?id=18950 .
Signed-off-by: Michel Dänzer <daenzer@vmware.com>
-rw-r--r-- | exa/exa_accel.c | 35 | ||||
-rw-r--r-- | exa/exa_priv.h | 10 | ||||
-rw-r--r-- | exa/exa_render.c | 2 | ||||
-rw-r--r-- | exa/exa_unaccel.c | 2 |
4 files changed, 25 insertions, 24 deletions
diff --git a/exa/exa_accel.c b/exa/exa_accel.c index d284ff560..39f343784 100644 --- a/exa/exa_accel.c +++ b/exa/exa_accel.c @@ -408,3 +408,4 @@ exaHWCopyNtoN (DrawablePtr pSrcDrawable, if (!pGC || !exaGCReadsDestination(pDstDrawable, pGC->planemask, - pGC->fillStyle, pGC->alu)) { + pGC->fillStyle, pGC->alu, + pGC->clientClipType)) { dstregion = REGION_CREATE(pScreen, NullBox, 0); @@ -736,3 +737,4 @@ exaPolySegment (DrawablePtr pDrawable, GCPtr pGC, int nseg, static Bool exaFillRegionSolid (DrawablePtr pDrawable, RegionPtr pRegion, - Pixel pixel, CARD32 planemask, CARD32 alu); + Pixel pixel, CARD32 planemask, CARD32 alu, + unsigned int clientClipType); @@ -789,6 +791,7 @@ exaPolyFillRect(DrawablePtr pDrawable, pGC->fgPixel : pGC->tile.pixel, pGC->planemask, - pGC->alu)) || + pGC->alu, pGC->clientClipType)) || (pGC->fillStyle == FillTiled && !pGC->tileIsPixel && exaFillRegionTiled(pDrawable, pReg, pGC->tile.pixmap, &pGC->patOrg, - pGC->planemask, pGC->alu))) { + pGC->planemask, pGC->alu, + pGC->clientClipType))) { goto out; @@ -954,7 +957,4 @@ exaCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc) static Bool -exaFillRegionSolid (DrawablePtr pDrawable, - RegionPtr pRegion, - Pixel pixel, - CARD32 planemask, - CARD32 alu) +exaFillRegionSolid (DrawablePtr pDrawable, RegionPtr pRegion, Pixel pixel, + CARD32 planemask, CARD32 alu, unsigned int clientClipType) { @@ -971,3 +971,4 @@ exaFillRegionSolid (DrawablePtr pDrawable, pixmaps[0].pReg = exaGCReadsDestination(pDrawable, planemask, FillSolid, - alu) ? NULL : pRegion; + alu, clientClipType) + ? NULL : pRegion; @@ -1034,8 +1035,5 @@ out: Bool -exaFillRegionTiled (DrawablePtr pDrawable, - RegionPtr pRegion, - PixmapPtr pTile, - DDXPointPtr pPatOrg, - CARD32 planemask, - CARD32 alu) +exaFillRegionTiled (DrawablePtr pDrawable, RegionPtr pRegion, PixmapPtr pTile, + DDXPointPtr pPatOrg, CARD32 planemask, CARD32 alu, + unsigned int clientClipType) { @@ -1062,3 +1060,3 @@ exaFillRegionTiled (DrawablePtr pDrawable, exaGetPixmapFirstPixel (pTile), planemask, - alu); + alu, clientClipType); @@ -1068,3 +1066,4 @@ exaFillRegionTiled (DrawablePtr pDrawable, pixmaps[0].pReg = exaGCReadsDestination(pDrawable, planemask, FillTiled, - alu) ? NULL : pRegion; + alu, clientClipType) + ? NULL : pRegion; pixmaps[1].as_dst = FALSE; diff --git a/exa/exa_priv.h b/exa/exa_priv.h index 9efbbc98c..874e7e987 100644 --- a/exa/exa_priv.h +++ b/exa/exa_priv.h @@ -417,7 +417,8 @@ static _X_INLINE Bool exaGCReadsDestination(DrawablePtr pDrawable, unsigned long planemask, - unsigned int fillStyle, unsigned char alu) + unsigned int fillStyle, unsigned char alu, + unsigned int clientClipType) { - return ((alu != GXcopy && alu != GXclear &&alu != GXset && + return ((alu != GXcopy && alu != GXclear && alu != GXset && alu != GXcopyInverted) || fillStyle == FillStippled || - !EXA_PM_IS_SOLID(pDrawable, planemask)); + clientClipType != CT_NONE || !EXA_PM_IS_SOLID(pDrawable, planemask)); } @@ -429,3 +430,4 @@ Bool exaFillRegionTiled (DrawablePtr pDrawable, RegionPtr pRegion, PixmapPtr pTile, - DDXPointPtr pPatOrg, CARD32 planemask, CARD32 alu); + DDXPointPtr pPatOrg, CARD32 planemask, CARD32 alu, + unsigned int clientClipType); diff --git a/exa/exa_render.c b/exa/exa_render.c index a9344977f..14d710b57 100644 --- a/exa/exa_render.c +++ b/exa/exa_render.c @@ -947,3 +947,3 @@ exaComposite(CARD8 op, (PixmapPtr)pSrc->pDrawable, - &patOrg, FB_ALLONES, GXcopy); + &patOrg, FB_ALLONES, GXcopy, CT_NONE); diff --git a/exa/exa_unaccel.c b/exa/exa_unaccel.c index 4279c877c..0d53b67d8 100644 --- a/exa/exa_unaccel.c +++ b/exa/exa_unaccel.c @@ -108,3 +108,3 @@ ExaCheckPutImage (DrawablePtr pDrawable, GCPtr pGC, int depth, if (exaGCReadsDestination(pDrawable, pGC->planemask, pGC->fillStyle, - pGC->alu)) + pGC->alu, pGC->clientClipType)) exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); |