<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">On 25/10/12 12:00 PM,
      <a class="moz-txt-link-abbreviated" href="mailto:michel@daenzer.net">michel@daenzer.net</a> wrote:<br>
    </div>
    <blockquote
      cite="mid:mailman.15.1351191622.32574.xorg-devel@lists.x.org"
      type="cite">
      <div class="moz-txt-sig">On Mit, 2012-10-24 at 17:13 -0400, Adam
        Jackson wrote: </div>
      <blockquote type="cite" style="color: #000000;">
        <pre wrap="">Did you know we have two of these?  Can we have only one of these?

I'd like to merge them together, one way or another, but there are some 
slight semantic differences.  shadowfb gives you hooks for both pre- and 
post-rendering callbacks.  Exactly one driver uses this, vmware, for 
what looks like tearing down and putting back up the cursor.  I'm 
reasonably sure that could be better handled, but it's also easy enough 
to preserve.

More interestingly, shadow batches updates until BlockHandler, whereas 
shadowfb is immediate.  I would expect shadow's performance to be better 
in the typical use case since it would reduce overdraw.  I don't know of 
any drivers that <span class="moz-txt-underscore"><span class="moz-txt-tag">_</span>depend<span class="moz-txt-tag">_</span></span> on shadowfb giving an immediate callback,
</pre>
      </blockquote>
      I wonder if e.g. xf86-video-r128's page flipping support doesn't
      depend
      on immediate callbacks. Otherwise, can't the second page display
      stale
      non-GLX bits?
    </blockquote>
    If you merge shadow and shadowfb and it turns out to be detrimental
    to r128, I'm sure I can update it to use damage directly. <a
href="http://cgit.freedesktop.org/xorg/driver/xf86-video-ati/commit/?id=d43ad88fa3913437f6987ab5ab46a38f0cb555a8">This
      commit</a> for radeon would be just as easy to perform on r128.<br>
    <blockquote
      cite="mid:mailman.15.1351191622.32574.xorg-devel@lists.x.org"
      type="cite">
      <blockquote type="cite" style="color: #000000;">
        <pre wrap="">but conversely BlockHandler isn't exactly a great interface for periodic 
updates, since it gets called on no particular schedule.

So my thinking is:

- port shadowfb to damage instead of handrolling it
</pre>
      </blockquote>
      That sounds like a good idea anyway.
      <blockquote type="cite" style="color: #000000;">
        <pre wrap="">- merge that with shadow since they'll then be largely equivalent
- keep the external API intact since it's easy enough
</pre>
      </blockquote>
      Maybe the merged module could preserve immediate vs. delayed
      updates
      depending on which external API is used.</blockquote>
    <br>
  </body>
</html>