[PATCH xserver] EXA: Avoid GPU memory readback on ImageGlyphBlt fallback.
Michel Dänzer
michel at daenzer.net
Tue May 17 06:03:42 PDT 2011
From: Michel Dänzer <daenzer at vmware.com>
See https://bugs.freedesktop.org/show_bug.cgi?id=35197 .
Signed-off-by: Michel Dänzer <daenzer at vmware.com>
---
exa/exa_unaccel.c | 11 ++++++++++-
1 files changed, 10 insertions(+), 1 deletions(-)
diff --git a/exa/exa_unaccel.c b/exa/exa_unaccel.c
index 078b91c..5d26b77 100644
--- a/exa/exa_unaccel.c
+++ b/exa/exa_unaccel.c
@@ -319,10 +319,19 @@ ExaCheckImageGlyphBlt (DrawablePtr pDrawable, GCPtr pGC,
int x, int y, unsigned int nglyph,
CharInfoPtr *ppci, pointer pglyphBase)
{
+ PixmapPtr pPixmap = exaGetDrawablePixmap(pDrawable);
+ ExaPixmapPriv(pPixmap);
+
EXA_PRE_FALLBACK_GC(pGC);
EXA_FALLBACK(("to %p (%c)\n", pDrawable,
exaDrawableLocation(pDrawable)));
- exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
+ if (!pExaScr->prepare_access_reg || !pExaPixmap->pDamage ||
+ exaGCReadsDestination(pDrawable, pGC->planemask, pGC->fillStyle,
+ pGC->alu, pGC->clientClipType))
+ exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
+ else
+ pExaScr->prepare_access_reg(pPixmap, EXA_PREPARE_DEST,
+ DamagePendingRegion(pExaPixmap->pDamage));
exaPrepareAccessGC (pGC);
pGC->ops->ImageGlyphBlt (pDrawable, pGC, x, y, nglyph, ppci, pglyphBase);
exaFinishAccessGC (pGC);
--
1.7.5.1
More information about the xorg-devel
mailing list