uxa: Do not remove repeat from solids for 1x1 composites.

Or else we hit the buggy 1x1 source path and trigger:

  rendercheck/mcoords regressed
  http://bugs.freedesktop.org/show_bug.cgi?id=25046

caused by the recent commit e581ceb.
This commit is contained in:
Chris Wilson 2009-11-13 18:35:44 +00:00
parent 14109abf28
commit e9064eacb0
1 changed files with 6 additions and 3 deletions

View File

@ -856,7 +856,8 @@ uxa_composite(CARD8 op,
goto composite;
/* Remove repeat in source if useless */
if (pSrc->repeat && !pSrc->transform && xSrc >= 0 &&
if (pSrc->repeat && (pSrc->pDrawable->width > 1 || pSrc->pDrawable->height > 1 ) &&
!pSrc->transform && xSrc >= 0 &&
(xSrc + width) <= pSrc->pDrawable->width && ySrc >= 0 &&
(ySrc + height) <= pSrc->pDrawable->height)
pSrc->repeat = 0;
@ -872,8 +873,9 @@ uxa_composite(CARD8 op,
&& pSrc->format == pDst->format
&& (pSrc->format == PICT_x8r8g8b8
|| pSrc->format == PICT_x8b8g8r8))) {
if (pSrc->pDrawable->width == 1
&& pSrc->pDrawable->height == 1 && pSrc->repeat) {
if (pSrc->pDrawable->width == 1 &&
pSrc->pDrawable->height == 1 &&
pSrc->repeat) {
ret =
uxa_try_driver_solid_fill(pSrc, pDst, xSrc,
ySrc, xDst, yDst,
@ -964,6 +966,7 @@ uxa_composite(CARD8 op,
composite:
/* Remove repeat in mask if useless */
if (pMask && pMask->repeat && !pMask->transform && pMask->pDrawable &&
(pMask->pDrawable->width > 1 || pMask->pDrawable->height > 1) &&
xMask >= 0 && (xMask + width) <= pMask->pDrawable->width &&
yMask >= 0 && (yMask + height) <= pMask->pDrawable->height)
pMask->repeat = 0;