[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