<div dir="ltr"><br><br><div class="gmail_quote">On Wed, Jul 23, 2008 at 12:19 AM, Michel Dänzer <<a href="mailto:michel@tungstengraphics.com">michel@tungstengraphics.com</a>> wrote:<br><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">On Tue, 2008-07-22 at 11:01 -0700, Mohan Parthasarathy wrote:<br>
><br>
> CompositeGlyph according to the spec,<br>
><br>
><br>
> When mask-format is not None, glyphs are rendered in the<br>
> following way with the effective mask computed in mask-format:<br>
><br>
> tmp = temporary alpha picture<br>
> Combine (Zero, tmp, tmp, None)<br>
> for each glyph<br>
> Combine (Add, tmp, glyph, None)<br>
> Combine (op, dst, source, tmp)<br>
><br>
><br>
> So, i can see that before glyphs are actually rendered, it is<br>
> combined with a mask.<br>
<br>
</div>When a mask format is specified, the glyphs are first accumulated to a<br>
temporary picture of the specified format, which is then used as a mask</blockquote><div> </div><div>Is this accumulation a composite operation ? <br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
for a single composite operation to the destination picture in order to<br>
actually render the glyphs. Without a mask format, each glyph is used as<br>
a mask for a composite operation to the destination picture directly.<br>
<br>
The result should be visually identical unless the mask format is<br>
different from any of the glyphs or the glyphs overlap.</blockquote><div> </div><div>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 destination picture<br><br>Is (2) and (3) done separately or just (3) is done ? <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>
> I searched around in Xft and server side to see where this code is<br>
> implemented. I can see that in libXrender, maskFormat getting set to<br>
> None or the id. So, it has to be on the server side Perhaps, i am<br>
> missing something very obvious.. Can someone point me to this code ?<br>
<br>
</div>miGlyphs() in render/glyph.c or exaGlyphs() in exa/exa_glyphs.c .<br>
<font color="#888888"><br>
</font></blockquote><div>I sort of figured that out working backwards from exaCompositeRects -> exaGlyphstoMask...<br>But could not find out when the mask is set to null or not-null. <br><br>Thanks <br>mohan<br> <br></div>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><font color="#888888"><br>
--<br>
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>
</font></blockquote></div><br></div>