EXA: Fix Render acceleration in copy and tiling cases.
Code shuffling in a634c9b034
broke this by
leaving pSrcPixmap = NULL.
This commit is contained in:
parent
67a78e84a8
commit
5cb9e15562
|
@ -587,7 +587,6 @@ exaComposite(CARD8 op,
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
Bool saveSrcRepeat = pSrc->repeat;
|
Bool saveSrcRepeat = pSrc->repeat;
|
||||||
Bool saveMaskRepeat = pMask ? pMask->repeat : 0;
|
Bool saveMaskRepeat = pMask ? pMask->repeat : 0;
|
||||||
PixmapPtr pSrcPixmap = NULL;
|
|
||||||
RegionRec region;
|
RegionRec region;
|
||||||
|
|
||||||
/* We currently don't support acceleration of gradients, or other pictures
|
/* We currently don't support acceleration of gradients, or other pictures
|
||||||
|
@ -624,7 +623,9 @@ exaComposite(CARD8 op,
|
||||||
if (ret == 1)
|
if (ret == 1)
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
else if (pSrcPixmap && !pSrc->repeat && !pSrc->transform)
|
else if (pSrc->pDrawable != NULL &&
|
||||||
|
!pSrc->repeat &&
|
||||||
|
!pSrc->transform)
|
||||||
{
|
{
|
||||||
xDst += pDst->pDrawable->x;
|
xDst += pDst->pDrawable->x;
|
||||||
yDst += pDst->pDrawable->y;
|
yDst += pDst->pDrawable->y;
|
||||||
|
@ -644,7 +645,9 @@ exaComposite(CARD8 op,
|
||||||
REGION_UNINIT(pDst->pDrawable->pScreen, ®ion);
|
REGION_UNINIT(pDst->pDrawable->pScreen, ®ion);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
else if (pSrcPixmap && !pSrc->transform &&
|
else if (pSrc->pDrawable != NULL &&
|
||||||
|
pSrc->pDrawable->type == DRAWABLE_PIXMAP &&
|
||||||
|
!pSrc->transform &&
|
||||||
pSrc->repeatType == RepeatNormal)
|
pSrc->repeatType == RepeatNormal)
|
||||||
{
|
{
|
||||||
DDXPointRec srcOrg;
|
DDXPointRec srcOrg;
|
||||||
|
@ -671,10 +674,11 @@ exaComposite(CARD8 op,
|
||||||
width, height))
|
width, height))
|
||||||
goto done;
|
goto done;
|
||||||
|
|
||||||
srcOrg.x = (xSrc - xDst) % pSrcPixmap->drawable.width;
|
srcOrg.x = (xSrc - xDst) % pSrc->pDrawable->width;
|
||||||
srcOrg.y = (ySrc - yDst) % pSrcPixmap->drawable.height;
|
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);
|
&srcOrg, FB_ALLONES, GXcopy);
|
||||||
|
|
||||||
REGION_UNINIT(pDst->pDrawable->pScreen, ®ion);
|
REGION_UNINIT(pDst->pDrawable->pScreen, ®ion);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user