<div dir="ltr"> <div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="Ih2E3d"><br>
>         for a single composite operation to the destination picture in<br>
>         order to<br>
>         actually render the glyphs. Without a mask format, each glyph<br>
>         is used as<br>
>         a mask for a composite operation to the destination picture<br>
>         directly.<br>
><br>
>         The result should be visually identical unless the mask format<br>
>         is<br>
>         different from any of the glyphs or the glyphs overlap.<br>
><br>
> Thanks for the explanation. Do we know how this is done in practice ?<br>
> I am trying to understand the sequence of operations<br>
><br>
> 1) The client adds glyphs to the server<br>
> 2) The client calls CompositeGlyph with a non-null format<br>
> 3) The client calls CompositeGlyph with a null-format and a<br>
> destination picture<br>
><br>
> Is (2) and (3) done separately or just (3) is done ?<br>
<br>
</div>I'm not sure I understand. (2) needs a destination as well, so (2) and<br>
(3) should be essentially identical, with the caveats I mentioned above.<br>
<div class="Ih2E3d"></div></blockquote><div><br>Ah!, when non-null maskFormat is passed, the first composite operation the Mask<br>is the destination. But then the second composite operation needs a destination<br>also. I am understanding slightly better after reading your mail again and the code<br>
again :-)<br><br>What i am trying to understand is what exactly happens<br>when i need to display characters on my xterm ? I can see that glyphs are<br>added to the Xserver. Later a Composite operation is called by the client.<br>
As the maskFormat argument can be null, i am wondering what cases it<br>is null and what cases it is not null. Initially, i thought you always need to<br>composite Glyph with Mask and then composite to the destination which<br>
means maskFormat will always be non-null. Obviously, this is not the case.<br>So, to render characters on my xterm, i can just send src, dst and glyph with a<br>null mask. Is this sufficient ? What cases would require me to pass a non-null<br>
mask ? What am i missing ?<br><br>thanks<br>mohan<br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="Ih2E3d"><br>
<br>
>         > I searched around in Xft and server side to see where this<br>
>         code is<br>
>         > implemented. I can see that in libXrender, maskFormat<br>
>         getting set to<br>
>         > None or the id. So, it has to be on the server side Perhaps,<br>
>         i am<br>
>         > missing something very obvious.. Can someone point me to<br>
>         this code ?<br>
><br>
><br>
>         miGlyphs() in render/glyph.c or exaGlyphs() in<br>
>         exa/exa_glyphs.c .<br>
><br>
> I sort of figured that out working backwards from exaCompositeRects -><br>
> exaGlyphstoMask...<br>
> But could not find out when the mask is set to null or not-null.<br>
<br>
</div>I think it's simply NULL if the client passes None as maskFormat<br>
parameter to XRenderCompositeString/Text*() and non-NULL otherwise.<br>
<font color="#888888"><br>
<br>
--<br>
</font><div><div></div><div class="Wj3C7c">Earthling Michel Dänzer           |          <a href="http://tungstengraphics.com" target="_blank">http://tungstengraphics.com</a><br>
Libre software enthusiast         |          Debian, X and DRI developer<br>
<br>
</div></div></blockquote></div><br></div>