Chris,<br><br>Sure no problem.  I will need to create a smaller testing version of the app to demonstrate the problem first.  The code is actually for something I&#39;m developing for work, so I&#39;ll need to strip out the unnecessary parts first.<br>

<br><br>- Mike<br><br>--<br><div class="gmail_quote">On Fri, Jul 31, 2009 at 3:49 AM, Chris Wilson <span dir="ltr">&lt;<a href="mailto:chris@chris-wilson.co.uk">chris@chris-wilson.co.uk</a>&gt;</span> 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="im">On Thu, 2009-07-30 at 14:02 -0700, Carl Worth wrote:<br>
&gt; On Thu, 2009-07-30 at 16:57 -0400, Mike Gualtieri wrote:<br>
</div><div class="im">&gt; &gt; Setting NoAccel to true fixes the issue.  When it is set to false (the<br>
&gt; &gt; default) the problem occurs.<br>
&gt;<br>
&gt; Yes. :-)<br>
&gt;<br>
&gt; If &quot;the problem&quot; means &quot;blending the scaled image with the destination<br>
&gt; in the case of EXTEND_NONE and cairo_paint()&quot; then that&#39;s not a bug at<br>
&gt; all. It&#39;s the expected behavior that EXTEND_NONE and cairo_paint() will<br>
&gt; give you this blending when you scale up.<br>
&gt;<br>
&gt; So if setting NoAccel to true makes that blending go away, then yes,<br>
&gt; that does sound like a bug in the NoAccel case.<br>
&gt;<br>
&gt; Does that make sense? Or am I still misunderstanding something?<br>
<br>
</div>Although from the description, thank you Mike for being clear and<br>
concise, we have a good idea of exactly what bug we are looking for, we<br>
have been developing a tool that should making this kind of bug report<br>
easier in future. The idea is that the user runs cairo-trace on the<br>
application and captures a trace which will contain sufficient<br>
information to replicate the drawing instructions that exhibit the bug.<br>
And then we can feed this trace through a tool called cairo-test-trace<br>
which can be run against two X servers in parallel and compare the<br>
output after every context. Once it has found a discrepancy, it will<br>
save the images of the differing surfaces and a minimal trace to<br>
reproduce the error. (At the moment this is likely to find a difference<br>
in rendering long before we hit the scaling bug! :(<br>
<br>
One of the goals for the future, is to then run a technique called<br>
delta-debugging, which essentially performs a binary bisection on the<br>
trace, to reduce the trace even further down to the precise minimum<br>
required to reproduce a bug. (The only difficulty here is that to do the<br>
bisection efficiently we need to be able to determine illegal cuts,<br>
faster than simply executing the trace and hitting an error -- that is<br>
to bisect the state rather than the script.)<br>
<br>
Mike, I would appreciate if if you could find the time to download<br>
cairo-trace either from the 1.9.2 snapshot, or from git and capture a<br>
trace from your application:<br>
  # cairo-trace --profile ./how-to-exhibit-bug [args]<br>
Note that the trace will capture everything drawn, so be careful no to<br>
include any confidential information, or anything else you might not<br>
want to distribute.<br>
<br>
That will produce a file called ./how-to-exhibit-bug.$pid.lzma which<br>
will probably be too large to attach here, so upload it or send it to<br>
me, and I can see how well our tools fare. Already I can see that we&#39;re<br>
encouraging people to use --profile more often than not, so it might be<br>
worth making that the default.<br>
<br>
Thanks,<br>
-ickle<br>
<br>
</blockquote></div><br>