xserver: Branch 'server-1.2-branch' - 2 commits
Eric Anholt
anholt at kemper.freedesktop.org
Wed Feb 14 23:08:21 EET 2007
exa/exa_accel.c | 8 ++++++++
exa/exa_render.c | 18 ++++++++++++------
2 files changed, 20 insertions(+), 6 deletions(-)
New commits:
diff-tree d1170fee8a24f6fb9c6c2ff2a1d845adc37729ff (from f8fd7f23cf3c49ed863a18dd8324eb10d2c86a8b)
Author: Eric Anholt <eric at anholt.net>
Date: Wed Feb 14 12:48:15 2007 -0800
Add missing dirty marking in a couple of fallback cases in the exaGlyphs path.
(cherry picked from commit 81aa7f059d3cfd8d28420b7932b8ff7e06d67979)
diff --git a/exa/exa_accel.c b/exa/exa_accel.c
index 6fa481a..e633d80 100644
--- a/exa/exa_accel.c
+++ b/exa/exa_accel.c
@@ -648,6 +648,14 @@ exaPolyFillRect(DrawablePtr pDrawable,
{
exaDoMigration (pixmaps, 1, FALSE);
ExaCheckPolyFillRect (pDrawable, pGC, nrect, prect);
+ while (nrect-- >= 0) {
+ exaDrawableDirty(pDrawable,
+ pDrawable->x + prect->x,
+ pDrawable->y + prect->y,
+ pDrawable->x + prect->x + prect->width,
+ pDrawable->y + prect->y + prect->height);
+ prect++;
+ }
return;
} else {
exaDoMigration (pixmaps, 1, TRUE);
diff --git a/exa/exa_render.c b/exa/exa_render.c
index a442987..b78d728 100644
--- a/exa/exa_render.c
+++ b/exa/exa_render.c
@@ -572,9 +572,7 @@ exaComposite(CARD8 op,
if (pExaScr->swappedOut ||
pSrc->pDrawable == NULL || (pMask != NULL && pMask->pDrawable == NULL))
{
- ExaCheckComposite (op, pSrc, pMask, pDst, xSrc, ySrc,
- xMask, yMask, xDst, yDst, width, height);
- return;
+ goto fallback;
}
/* Remove repeat in source if useless */
@@ -683,12 +681,18 @@ exaComposite(CARD8 op,
}
}
+fallback:
#if DEBUG_TRACE_FALL
exaPrintCompositeFallback (op, pSrc, pMask, pDst);
#endif
ExaCheckComposite (op, pSrc, pMask, pDst, xSrc, ySrc,
xMask, yMask, xDst, yDst, width, height);
+ exaDrawableDirty(pDst->pDrawable,
+ pDst->pDrawable->x + xDst,
+ pDst->pDrawable->y + yDst,
+ pDst->pDrawable->x + xDst + width,
+ pDst->pDrawable->y + yDst + height);
done:
pSrc->repeat = saveSrcRepeat;
diff-tree f8fd7f23cf3c49ed863a18dd8324eb10d2c86a8b (from c328513b36633b7100c7ca3dd7a6682c2b1f2051)
Author: Eric Anholt <eric at anholt.net>
Date: Wed Feb 14 10:39:46 2007 -0800
Mark sync when UploadToScreen succeeds in exaGlyphs().
(cherry picked from commit a5f19c5150a7b3dc2ff3ad759ee1a6ab0ad8925c)
diff --git a/exa/exa_render.c b/exa/exa_render.c
index 75108a7..a442987 100644
--- a/exa/exa_render.c
+++ b/exa/exa_render.c
@@ -995,15 +995,17 @@ exaGlyphs (CARD8 op,
* First we try to use UploadToScreen, if we can, then we fall back
* to a plain exaCopyArea in case of failure.
*/
- if (!pExaScr->info->UploadToScreen ||
- !exaPixmapIsOffscreen(pPixmap) ||
- !(*pExaScr->info->UploadToScreen) (pPixmap, 0, 0,
+ if (pExaScr->info->UploadToScreen &&
+ exaPixmapIsOffscreen(pPixmap) &&
+ (*pExaScr->info->UploadToScreen) (pPixmap, 0, 0,
glyph->info.width,
glyph->info.height,
glyphdata,
PixmapBytePad(glyph->info.width,
list->format->depth)))
{
+ exaMarkSync (pScreen);
+ } else {
/* Set up the scratch pixmap/GC for doing a CopyArea. */
if (pScratchPixmap == NULL) {
/* Get a scratch pixmap to wrap the original glyph data */
More information about the xorg-commit
mailing list