On Fri, Apr 30, 2010 at 11:28 PM, Chris Wilson <span dir="ltr">&lt;<a href="mailto:chris@chris-wilson.co.uk">chris@chris-wilson.co.uk</a>&gt;</span> wrote:<br><div class="gmail_quote"><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 Fri, 30 Apr 2010 22:36:56 +1200, &quot;Robert O&#39;Callahan&quot; &lt;<a href="mailto:robert@ocallahan.org">robert@ocallahan.org</a>&gt; wrote:<br>
&gt; Should self-copy --- i.e. using the same source as source and destination of<br>
&gt; a composite --- be supported by cairo backends? I notice there are tests for<br>
&gt; self-copy, but it looks like they are expected to fail. Is pixman expected<br>
&gt; to cope with self-copies? I think I&#39;m experiencing some bugs...<br>
<br>
</div>Currently self-copy behaviour is underspecified. I think the consensus is<br>
that self-modification is undesired...<br></blockquote><div> </div></div>Maybe so. However, I am dealing with a case where it is desired. I am using a surface as backing store, and the simplest way to implement scrolling is to do a SOURCE self-copy. The alternative strategies all seem to require using additional buffers, which uses more memory and probably isn&#39;t as fast due to poorer memory locality.<br>
<br>Also I think it&#39;s generally a bad idea for an API to just do something random in certain special cases.<br><br>I can&#39;t think of any reasonable behaviour other than to make self-copies just work. It&#39;s not that hard for the general case; just detect the self-copy and use a temporary buffer. Some simple cases (i.e., the cases I care about!) can easily be optimized to avoid the temporary buffer.<br clear="all">
<br>Rob<br>-- <br>&quot;He was pierced for our transgressions, he was crushed for our iniquities; the punishment that brought us peace was upon him, and by his wounds we are healed. We all, like sheep, have gone astray, each of us has turned to his own way; and the LORD has laid on him the iniquity of us all.&quot; [Isaiah 53:5-6]<br>