EXA: Disable 1x1 pixmap fill optimization for drivers that handle pixmaps.
This reverts commit 1365aeff54
.
It defeated the optimization for drivers that don't provide a CreatePixmap
hook. The optimization makes no sense for drivers that do anyway, so disable
it for them completely.
This commit is contained in:
parent
604ebb5a6d
commit
3549a12823
|
@ -1134,23 +1134,22 @@ exaFillRegionSolid (DrawablePtr pDrawable,
|
||||||
(*pExaScr->info->DoneSolid) (pPixmap);
|
(*pExaScr->info->DoneSolid) (pPixmap);
|
||||||
exaMarkSync(pDrawable->pScreen);
|
exaMarkSync(pDrawable->pScreen);
|
||||||
|
|
||||||
if (pDrawable->width == 1 && pDrawable->height == 1 &&
|
if (!(pExaScr->info->flags & EXA_HANDLES_PIXMAPS) &&
|
||||||
|
pDrawable->width == 1 && pDrawable->height == 1 &&
|
||||||
pDrawable->bitsPerPixel != 24) {
|
pDrawable->bitsPerPixel != 24) {
|
||||||
ExaPixmapPriv(pPixmap);
|
ExaPixmapPriv(pPixmap);
|
||||||
|
|
||||||
exaPrepareAccess(pDrawable, EXA_PREPARE_DEST);
|
|
||||||
switch (pDrawable->bitsPerPixel) {
|
switch (pDrawable->bitsPerPixel) {
|
||||||
case 32:
|
case 32:
|
||||||
*(CARD32*)pPixmap->devPrivate.ptr = pixel;
|
*(CARD32*)pExaPixmap->sys_ptr = pixel;
|
||||||
break;
|
break;
|
||||||
case 16:
|
case 16:
|
||||||
*(CARD16*)pPixmap->devPrivate.ptr = pixel;
|
*(CARD16*)pExaPixmap->sys_ptr = pixel;
|
||||||
break;
|
break;
|
||||||
case 8:
|
case 8:
|
||||||
*(CARD8*)pPixmap->devPrivate.ptr = pixel;
|
*(CARD8*)pExaPixmap->sys_ptr = pixel;
|
||||||
}
|
}
|
||||||
|
|
||||||
exaFinishAccess(pDrawable, EXA_PREPARE_DEST);
|
|
||||||
REGION_UNION(pScreen, &pExaPixmap->validSys, &pExaPixmap->validSys,
|
REGION_UNION(pScreen, &pExaPixmap->validSys, &pExaPixmap->validSys,
|
||||||
pRegion);
|
pRegion);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue