From 5cb9e15562a32c1f102d94d5e15d5fd298baff3f Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Wed, 20 Feb 2008 10:36:06 -0800 Subject: [PATCH] EXA: Fix Render acceleration in copy and tiling cases. Code shuffling in a634c9b03494ba80aeec28be19662ac96657cc23 broke this by leaving pSrcPixmap = NULL. --- exa/exa_render.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/exa/exa_render.c b/exa/exa_render.c index a510e54f6..6df2a23c8 100644 --- a/exa/exa_render.c +++ b/exa/exa_render.c @@ -587,7 +587,6 @@ exaComposite(CARD8 op, int ret = -1; Bool saveSrcRepeat = pSrc->repeat; Bool saveMaskRepeat = pMask ? pMask->repeat : 0; - PixmapPtr pSrcPixmap = NULL; RegionRec region; /* We currently don't support acceleration of gradients, or other pictures @@ -624,7 +623,9 @@ exaComposite(CARD8 op, if (ret == 1) goto done; } - else if (pSrcPixmap && !pSrc->repeat && !pSrc->transform) + else if (pSrc->pDrawable != NULL && + !pSrc->repeat && + !pSrc->transform) { xDst += pDst->pDrawable->x; yDst += pDst->pDrawable->y; @@ -644,7 +645,9 @@ exaComposite(CARD8 op, REGION_UNINIT(pDst->pDrawable->pScreen, ®ion); goto done; } - else if (pSrcPixmap && !pSrc->transform && + else if (pSrc->pDrawable != NULL && + pSrc->pDrawable->type == DRAWABLE_PIXMAP && + !pSrc->transform && pSrc->repeatType == RepeatNormal) { DDXPointRec srcOrg; @@ -671,10 +674,11 @@ exaComposite(CARD8 op, width, height)) goto done; - srcOrg.x = (xSrc - xDst) % pSrcPixmap->drawable.width; - srcOrg.y = (ySrc - yDst) % pSrcPixmap->drawable.height; + srcOrg.x = (xSrc - xDst) % pSrc->pDrawable->width; + srcOrg.y = (ySrc - yDst) % pSrc->pDrawable->height; - ret = exaFillRegionTiled(pDst->pDrawable, ®ion, pSrcPixmap, + ret = exaFillRegionTiled(pDst->pDrawable, ®ion, + (PixmapPtr)pSrc->pDrawable, &srcOrg, FB_ALLONES, GXcopy); REGION_UNINIT(pDst->pDrawable->pScreen, ®ion);