[PATCH] EXA: Avoid using < 8 bit mask formats for trapezoid/triangle composition.
Maarten Maathuis
madman2003 at gmail.com
Mon Dec 28 04:29:49 PST 2009
The A1 trapezoids are used for aliased rendering, is that still preserved?
Maarten.
2009/12/28 Michel Dänzer <michel at daenzer.net>:
> From: Michel Dänzer <daenzer at vmware.com>
>
> It's more or less impossible for us to accelerate such formats at this point.
>
> Signed-off-by: Michel Dänzer <daenzer at vmware.com>
> ---
> exa/exa_render.c | 21 +++++++++------------
> 1 files changed, 9 insertions(+), 12 deletions(-)
>
> diff --git a/exa/exa_render.c b/exa/exa_render.c
> index 1b68e1c..d4d4abf 100644
> --- a/exa/exa_render.c
> +++ b/exa/exa_render.c
> @@ -1099,10 +1099,7 @@ exaCreateAlphaPicture (ScreenPtr pScreen,
>
> if (!pPictFormat)
> {
> - if (pDst->polyEdge == PolyEdgeSharp)
> - pPictFormat = PictureMatchFormat (pScreen, 1, PICT_a1);
> - else
> - pPictFormat = PictureMatchFormat (pScreen, 8, PICT_a8);
> + pPictFormat = PictureMatchFormat (pScreen, 8, PICT_a8);
> if (!pPictFormat)
> return 0;
> }
> @@ -1158,6 +1155,9 @@ exaTrapezoids (CARD8 op, PicturePtr pSrc, PicturePtr pDst,
> INT16 xDst, yDst;
> INT16 xRel, yRel;
>
> + if (maskFormat->depth < 8)
> + maskFormat = PictureMatchFormat (pScreen, 8, PICT_a8);
> +
> miTrapezoidBounds (ntrap, traps, &bounds);
>
> if (bounds.y1 >= bounds.y2 || bounds.x1 >= bounds.x2)
> @@ -1186,10 +1186,7 @@ exaTrapezoids (CARD8 op, PicturePtr pSrc, PicturePtr pDst,
> bounds.y2 - bounds.y1);
> FreePicture (pPicture, 0);
> } else {
> - if (pDst->polyEdge == PolyEdgeSharp)
> - maskFormat = PictureMatchFormat (pScreen, 1, PICT_a1);
> - else
> - maskFormat = PictureMatchFormat (pScreen, 8, PICT_a8);
> + maskFormat = PictureMatchFormat (pScreen, 8, PICT_a8);
> for (; ntrap; ntrap--, traps++)
> exaTrapezoids (op, pSrc, pDst, maskFormat, xSrc, ySrc, 1, traps);
> }
> @@ -1222,6 +1219,9 @@ exaTriangles (CARD8 op, PicturePtr pSrc, PicturePtr pDst,
> INT16 xDst, yDst;
> INT16 xRel, yRel;
>
> + if (maskFormat->depth < 8)
> + maskFormat = PictureMatchFormat (pScreen, 8, PICT_a8);
> +
> miTriangleBounds (ntri, tris, &bounds);
>
> if (bounds.y1 >= bounds.y2 || bounds.x1 >= bounds.x2)
> @@ -1247,10 +1247,7 @@ exaTriangles (CARD8 op, PicturePtr pSrc, PicturePtr pDst,
> bounds.x2 - bounds.x1, bounds.y2 - bounds.y1);
> FreePicture (pPicture, 0);
> } else {
> - if (pDst->polyEdge == PolyEdgeSharp)
> - maskFormat = PictureMatchFormat (pScreen, 1, PICT_a1);
> - else
> - maskFormat = PictureMatchFormat (pScreen, 8, PICT_a8);
> + maskFormat = PictureMatchFormat (pScreen, 8, PICT_a8);
>
> for (; ntri; ntri--, tris++)
> exaTriangles (op, pSrc, pDst, maskFormat, xSrc, ySrc, 1, tris);
> --
> 1.6.5.7
>
> _______________________________________________
> xorg-devel mailing list
> xorg-devel at lists.x.org
> http://lists.x.org/mailman/listinfo/xorg-devel
>
More information about the xorg-devel
mailing list