[PATCH xserver] EXA: Honour op parameter to exaGlyphs even if maskFormat == NULL

Michel Dänzer michel at daenzer.net
Fri Apr 1 09:19:51 UTC 2016


On 01.04.2016 18:11, Michel Dänzer wrote:
> From: Michel Dänzer <michel.daenzer at amd.com>
> 
> Reported by psychon_ on IRC.
> 
> Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>
> ---
> 
> Only compiled tested.
> 
>  exa/exa_glyphs.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/exa/exa_glyphs.c b/exa/exa_glyphs.c
> index cf21ea9..192a643 100644
> --- a/exa/exa_glyphs.c
> +++ b/exa/exa_glyphs.c
> @@ -618,9 +618,9 @@ exaGlyphsToMask(PicturePtr pMask, ExaGlyphBufferPtr buffer)
>  }
>  
>  static void
> -exaGlyphsToDst(PicturePtr pSrc, PicturePtr pDst, ExaGlyphBufferPtr buffer)
> +exaGlyphsToDst(CARD8 op, PicturePtr pSrc, PicturePtr pDst, ExaGlyphBufferPtr buffer)
>  {
> -    exaCompositeRects(PictOpOver, pSrc, buffer->mask, pDst, buffer->count,
> +    exaCompositeRects(op, pSrc, buffer->mask, pDst, buffer->count,
>                        buffer->rects);
>  
>      buffer->count = 0;
> @@ -801,7 +801,7 @@ exaGlyphs(CARD8 op,
>                                         0, 0, x - glyph->info.x,
>                                         y - glyph->info.y)
>                          == ExaGlyphNeedFlush) {
> -                        exaGlyphsToDst(pSrc, pDst, &buffer);
> +                        exaGlyphsToDst(op, pSrc, pDst, &buffer);
>                          exaBufferGlyph(pScreen, &buffer, glyph, pSrc, pDst,
>                                         xSrc + (x - glyph->info.x) - first_xOff,
>                                         ySrc + (y - glyph->info.y) - first_yOff,
> @@ -821,7 +821,7 @@ exaGlyphs(CARD8 op,
>          if (maskFormat)
>              exaGlyphsToMask(pMask, &buffer);
>          else
> -            exaGlyphsToDst(pSrc, pDst, &buffer);
> +            exaGlyphsToDst(op, pSrc, pDst, &buffer);
>      }
>  
>      if (maskFormat) {
> 

https://bugs.freedesktop.org/show_bug.cgi?id=94775 raises an interesting
issue: Could this break with some operations and intermediate flushes /
overlapping glyphs? If so, I suspect glamor_composite_glyphs would be
affected by that as well.


-- 
Earthling Michel Dänzer               |               http://www.amd.com
Libre software enthusiast             |             Mesa and X developer


More information about the xorg-devel mailing list