diff options
author | Maarten Maathuis <madman2003@gmail.com> | 2009-08-01 19:19:19 +0200 |
---|---|---|
committer | Maarten Maathuis <madman2003@gmail.com> | 2009-08-06 23:48:14 +0200 |
commit | 03ecb164f2592c954aa408bf121e0c67b604d854 (patch) | |
tree | 98acdd425239b9c8723cea9c537eebca70af8cba /exa/exa_render.c | |
parent | ac7ac913fd98ea359c05c89968ab53a3223615b4 (diff) |
exa: A simple 3rd backend implementation.
- Based on driver pixmaps with some changes (completely transparent to driver).
- It helps with the problem of known software fallbacks, such as trapezoids.
- exaDoMigration is now called for all cases that provide a do_migration hook.
- exa_migration.c is renamed to exa_migration_classic.c
Diffstat (limited to 'exa/exa_render.c')
-rw-r--r-- | exa/exa_render.c | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/exa/exa_render.c b/exa/exa_render.c index 3c822d16b..1ac29f233 100644 --- a/exa/exa_render.c +++ b/exa/exa_render.c @@ -301,7 +301,7 @@ exaTryDriverSolidFill(PicturePtr pSrc, pixel = exaGetPixmapFirstPixel (pSrcPix); - if (pDstExaPix->pDamage) { + if (pExaScr->do_migration) { ExaMigrationRec pixmaps[1]; pixmaps[0].as_dst = TRUE; @@ -395,8 +395,7 @@ exaTryDriverCompositeRects(CARD8 op, return -1; } - if (pSrcExaPix->pDamage || pDstExaPix->pDamage || - (pMask && pMaskExaPix->pDamage)) { + if (pExaScr->do_migration) { ExaMigrationRec pixmaps[3]; pixmaps[0].as_dst = TRUE; @@ -507,8 +506,6 @@ exaCompositeRects(CARD8 op, ExaCompositeRectPtr rects) { ExaScreenPriv (pDst->pDrawable->pScreen); - PixmapPtr pPixmap = exaGetDrawablePixmap(pDst->pDrawable); - ExaPixmapPriv(pPixmap); int n; ExaCompositeRectPtr r; int ret; @@ -516,7 +513,7 @@ exaCompositeRects(CARD8 op, /* If we get a mask, that means we're rendering to the exaGlyphs * destination directly, so the damage layer takes care of this. */ - if (!pMask && pExaPixmap->pDamage) { + if (!pMask) { RegionRec region; int x1 = MAXSHORT; int y1 = MAXSHORT; @@ -610,7 +607,7 @@ exaCompositeRects(CARD8 op, /************************************************************/ - if (!pMask && pExaPixmap->pDamage) { + if (!pMask) { /* Now we have to flush the damage out from pendingDamage => damage * Calling DamageRegionProcessPending has that effect. */ @@ -689,8 +686,7 @@ exaTryDriverComposite(CARD8 op, REGION_TRANSLATE(pScreen, ®ion, dst_off_x, dst_off_y); - if (pSrcExaPix->pDamage || pDstExaPix->pDamage || - (pMask && pMaskExaPix->pDamage)) { + if (pExaScr->do_migration) { ExaMigrationRec pixmaps[3]; pixmaps[0].as_dst = TRUE; @@ -707,9 +703,8 @@ exaTryDriverComposite(CARD8 op, pixmaps[2].pPix = pMaskPix; pixmaps[2].pReg = NULL; exaDoMigration(pixmaps, 3, TRUE); - } else { + } else exaDoMigration(pixmaps, 2, TRUE); - } } pSrcPix = exaGetOffscreenPixmap (pSrc->pDrawable, &src_off_x, &src_off_y); |