EXA: Punt for all fallbacks in exaFillRegion*.
Now that PaintWindow is gone, all callers already handle fallbacks.
This commit is contained in:
parent
006f652505
commit
598698678b
|
@ -1098,6 +1098,7 @@ exaFillRegionSolid (DrawablePtr pDrawable,
|
||||||
ExaPixmapPriv (pPixmap);
|
ExaPixmapPriv (pPixmap);
|
||||||
int xoff, yoff;
|
int xoff, yoff;
|
||||||
ExaMigrationRec pixmaps[1];
|
ExaMigrationRec pixmaps[1];
|
||||||
|
Bool ret = FALSE;
|
||||||
|
|
||||||
pixmaps[0].as_dst = TRUE;
|
pixmaps[0].as_dst = TRUE;
|
||||||
pixmaps[0].as_src = FALSE;
|
pixmaps[0].as_src = FALSE;
|
||||||
|
@ -1110,12 +1111,12 @@ exaFillRegionSolid (DrawablePtr pDrawable,
|
||||||
|
|
||||||
if (pExaPixmap->accel_blocked)
|
if (pExaPixmap->accel_blocked)
|
||||||
{
|
{
|
||||||
goto fallback;
|
goto out;
|
||||||
} else {
|
} else {
|
||||||
exaDoMigration (pixmaps, 1, TRUE);
|
exaDoMigration (pixmaps, 1, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((pPixmap = exaGetOffscreenPixmap (pDrawable, &xoff, &yoff)) &&
|
if (exaPixmapIsOffscreen (pPixmap) &&
|
||||||
(*pExaScr->info->PrepareSolid) (pPixmap, alu, planemask, pixel))
|
(*pExaScr->info->PrepareSolid) (pPixmap, alu, planemask, pixel))
|
||||||
{
|
{
|
||||||
int nbox;
|
int nbox;
|
||||||
|
@ -1152,24 +1153,13 @@ exaFillRegionSolid (DrawablePtr pDrawable,
|
||||||
pRegion);
|
pRegion);
|
||||||
}
|
}
|
||||||
|
|
||||||
REGION_TRANSLATE(pScreen, pRegion, -xoff, -yoff);
|
ret = TRUE;
|
||||||
return TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fallback:
|
out:
|
||||||
if (alu != GXcopy || !EXA_PM_IS_SOLID(pDrawable, planemask)) {
|
|
||||||
REGION_TRANSLATE(pScreen, pRegion, -xoff, -yoff);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
EXA_FALLBACK(("to %p (%c)\n", pDrawable,
|
|
||||||
exaDrawableLocation(pDrawable)));
|
|
||||||
exaPrepareAccessReg (pDrawable, EXA_PREPARE_DEST, pixmaps[0].pReg);
|
|
||||||
REGION_TRANSLATE(pScreen, pRegion, -xoff, -yoff);
|
REGION_TRANSLATE(pScreen, pRegion, -xoff, -yoff);
|
||||||
fbFillRegionSolid (pDrawable, pRegion, 0,
|
|
||||||
fbReplicatePixel (pixel, pDrawable->bitsPerPixel));
|
|
||||||
exaFinishAccess (pDrawable, EXA_PREPARE_DEST);
|
|
||||||
|
|
||||||
return TRUE;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Try to do an accelerated tile of the pTile into pRegion of pDrawable.
|
/* Try to do an accelerated tile of the pTile into pRegion of pDrawable.
|
||||||
|
@ -1192,6 +1182,7 @@ exaFillRegionTiled (DrawablePtr pDrawable,
|
||||||
ExaMigrationRec pixmaps[2];
|
ExaMigrationRec pixmaps[2];
|
||||||
int nbox = REGION_NUM_RECTS (pRegion);
|
int nbox = REGION_NUM_RECTS (pRegion);
|
||||||
BoxPtr pBox = REGION_RECTS (pRegion);
|
BoxPtr pBox = REGION_RECTS (pRegion);
|
||||||
|
Bool ret = FALSE;
|
||||||
|
|
||||||
tileWidth = pTile->drawable.width;
|
tileWidth = pTile->drawable.width;
|
||||||
tileHeight = pTile->drawable.height;
|
tileHeight = pTile->drawable.height;
|
||||||
|
@ -1221,7 +1212,7 @@ exaFillRegionTiled (DrawablePtr pDrawable,
|
||||||
|
|
||||||
if (pExaPixmap->accel_blocked || pTileExaPixmap->accel_blocked)
|
if (pExaPixmap->accel_blocked || pTileExaPixmap->accel_blocked)
|
||||||
{
|
{
|
||||||
goto fallback;
|
goto out;
|
||||||
} else {
|
} else {
|
||||||
exaDoMigration (pixmaps, 2, TRUE);
|
exaDoMigration (pixmaps, 2, TRUE);
|
||||||
}
|
}
|
||||||
|
@ -1229,7 +1220,7 @@ exaFillRegionTiled (DrawablePtr pDrawable,
|
||||||
pPixmap = exaGetOffscreenPixmap (pDrawable, &xoff, &yoff);
|
pPixmap = exaGetOffscreenPixmap (pDrawable, &xoff, &yoff);
|
||||||
|
|
||||||
if (!pPixmap || !exaPixmapIsOffscreen(pTile))
|
if (!pPixmap || !exaPixmapIsOffscreen(pTile))
|
||||||
goto fallback;
|
goto out;
|
||||||
|
|
||||||
if ((*pExaScr->info->PrepareCopy) (pTile, pPixmap, 1, 1, alu, planemask))
|
if ((*pExaScr->info->PrepareCopy) (pTile, pPixmap, 1, 1, alu, planemask))
|
||||||
{
|
{
|
||||||
|
@ -1272,27 +1263,14 @@ exaFillRegionTiled (DrawablePtr pDrawable,
|
||||||
}
|
}
|
||||||
(*pExaScr->info->DoneCopy) (pPixmap);
|
(*pExaScr->info->DoneCopy) (pPixmap);
|
||||||
exaMarkSync(pDrawable->pScreen);
|
exaMarkSync(pDrawable->pScreen);
|
||||||
REGION_TRANSLATE(pScreen, pRegion, -xoff, -yoff);
|
|
||||||
return TRUE;
|
ret = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
fallback:
|
out:
|
||||||
if (alu != GXcopy || pPatOrg->x != 0 || pPatOrg->y != 0 ||
|
|
||||||
!EXA_PM_IS_SOLID(pDrawable, planemask)) {
|
|
||||||
REGION_TRANSLATE(pScreen, pRegion, -xoff, -yoff);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
EXA_FALLBACK(("from %p to %p (%c,%c)\n", pTile, pDrawable,
|
|
||||||
exaDrawableLocation(&pTile->drawable),
|
|
||||||
exaDrawableLocation(pDrawable)));
|
|
||||||
exaPrepareAccessReg (pDrawable, EXA_PREPARE_DEST, pixmaps[0].pReg);
|
|
||||||
REGION_TRANSLATE(pScreen, pRegion, -xoff, -yoff);
|
REGION_TRANSLATE(pScreen, pRegion, -xoff, -yoff);
|
||||||
exaPrepareAccess ((DrawablePtr)pTile, EXA_PREPARE_SRC);
|
|
||||||
fbFillRegionTiled (pDrawable, pRegion, pTile);
|
|
||||||
exaFinishAccess ((DrawablePtr)pTile, EXA_PREPARE_SRC);
|
|
||||||
exaFinishAccess (pDrawable, EXA_PREPARE_DEST);
|
|
||||||
|
|
||||||
return TRUE;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue