EXA: Wrap Glyphs even without Composite acceleration.
In order to avoid migration ping-pong when accumulating glyphs in a mask picture. Signed-off-by: Michel Dänzer <daenzer@vmware.com> Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Keith Packard <keithp@keithp.com>
This commit is contained in:
parent
00581d4a42
commit
a1c2bdb6ab
|
@ -932,8 +932,11 @@ exaDriverInit (ScreenPtr pScreen,
|
||||||
|
|
||||||
if (ps) {
|
if (ps) {
|
||||||
wrap(pExaScr, ps, Composite, exaComposite);
|
wrap(pExaScr, ps, Composite, exaComposite);
|
||||||
if (pScreenInfo->PrepareComposite)
|
if (pScreenInfo->PrepareComposite) {
|
||||||
wrap(pExaScr, ps, Glyphs, exaGlyphs);
|
wrap(pExaScr, ps, Glyphs, exaGlyphs);
|
||||||
|
} else {
|
||||||
|
wrap(pExaScr, ps, Glyphs, ExaCheckGlyphs);
|
||||||
|
}
|
||||||
wrap(pExaScr, ps, Trapezoids, exaTrapezoids);
|
wrap(pExaScr, ps, Trapezoids, exaTrapezoids);
|
||||||
wrap(pExaScr, ps, Triangles, exaTriangles);
|
wrap(pExaScr, ps, Triangles, exaTriangles);
|
||||||
wrap(pExaScr, ps, AddTraps, ExaCheckAddTraps);
|
wrap(pExaScr, ps, AddTraps, ExaCheckAddTraps);
|
||||||
|
|
|
@ -509,6 +509,17 @@ ExaCheckComposite (CARD8 op,
|
||||||
CARD16 width,
|
CARD16 width,
|
||||||
CARD16 height);
|
CARD16 height);
|
||||||
|
|
||||||
|
void
|
||||||
|
ExaCheckGlyphs (CARD8 op,
|
||||||
|
PicturePtr pSrc,
|
||||||
|
PicturePtr pDst,
|
||||||
|
PictFormatPtr maskFormat,
|
||||||
|
INT16 xSrc,
|
||||||
|
INT16 ySrc,
|
||||||
|
int nlist,
|
||||||
|
GlyphListPtr list,
|
||||||
|
GlyphPtr *glyphs);
|
||||||
|
|
||||||
/* exa_offscreen.c */
|
/* exa_offscreen.c */
|
||||||
void
|
void
|
||||||
ExaOffscreenSwapOut (ScreenPtr pScreen);
|
ExaOffscreenSwapOut (ScreenPtr pScreen);
|
||||||
|
|
|
@ -680,6 +680,28 @@ out_no_clip:
|
||||||
EXA_POST_FALLBACK(pScreen);
|
EXA_POST_FALLBACK(pScreen);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Avoid migration ping-pong when using a mask.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
ExaCheckGlyphs (CARD8 op,
|
||||||
|
PicturePtr pSrc,
|
||||||
|
PicturePtr pDst,
|
||||||
|
PictFormatPtr maskFormat,
|
||||||
|
INT16 xSrc,
|
||||||
|
INT16 ySrc,
|
||||||
|
int nlist,
|
||||||
|
GlyphListPtr list,
|
||||||
|
GlyphPtr *glyphs)
|
||||||
|
{
|
||||||
|
ScreenPtr pScreen = pDst->pDrawable->pScreen;
|
||||||
|
EXA_PRE_FALLBACK(pScreen);
|
||||||
|
|
||||||
|
miGlyphs(op, pSrc, pDst, maskFormat, xSrc, ySrc, nlist, list, glyphs);
|
||||||
|
|
||||||
|
EXA_POST_FALLBACK(pScreen);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ExaCheckAddTraps (PicturePtr pPicture,
|
ExaCheckAddTraps (PicturePtr pPicture,
|
||||||
INT16 x_off,
|
INT16 x_off,
|
||||||
|
|
Loading…
Reference in New Issue