Thanks a lot! I would agree with your explanations. However, I have another confusion.<br>In mixed pixmap mode, when the arguments 'w' and 'h' passed to exaCreatePixmap_mixed is either zero, <br>this pixmap will become a driver pixmap through exaCreateDriverPixmap_mixed right away. Usually, <br>
in this situation, the exaModifyPixmapHeader_mixed should be called with non-null pPixData. But, <br>exaModifyPixmapHeader_mixed will delete pixmap driver private when pPixData is non-null and set <br>this pixmap pinned. Therefore, I think this(create pixmap driver private, then destroy it without using it) is <br>
meaningless. Do I understand it wrong? Thanks!<br><br>Best wishes<br><br><div class="gmail_quote">2010/10/12 Adam Jackson <span dir="ltr"><<a href="mailto:ajax@nwnk.net">ajax@nwnk.net</a>></span><br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div class="im">On Tue, 2010-10-12 at 11:34 +0800, fly fancy wrote:<br>
> Hello, all<br>
> In newer XServer edition, the fallback_counter is<br>
> introduced to EXA. However, I almost can not understand the motivation<br>
> of the fallback_counter mechanism. Anyone understand it? I'll be very<br>
> appreciated for your explanation. Thanks !<br>
<br>
</div>Near as I can tell (the commit message isn't great), it's like this:<br>
<br>
Sometimes, you're doing a software fallback, and to do that fallback you<br>
need to draw into a scratch pixmap and then scrape the bits out of it<br>
and put them into the real destination. Any scratch pixmap so created<br>
should itself be rendered entirely in software in host memory, since<br>
otherwise you'll be reading bits back out of the framebuffer and that's<br>
_super_ slow.<br>
<br>
So once the fallback count is non-zero, force everything to the host<br>
memory path; and then allow it to be an integer so recursive fallbacks<br>
work (which is pathological, but I guess it could happen).<br>
<br>
- ajax<br>
</blockquote></div><br>