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'm developing for work, so I'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"><<a href="mailto:chris@chris-wilson.co.uk">chris@chris-wilson.co.uk</a>></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>
> On Thu, 2009-07-30 at 16:57 -0400, Mike Gualtieri wrote:<br>
</div><div class="im">> > Setting NoAccel to true fixes the issue. When it is set to false (the<br>
> > default) the problem occurs.<br>
><br>
> Yes. :-)<br>
><br>
> If "the problem" means "blending the scaled image with the destination<br>
> in the case of EXTEND_NONE and cairo_paint()" then that's not a bug at<br>
> all. It's the expected behavior that EXTEND_NONE and cairo_paint() will<br>
> give you this blending when you scale up.<br>
><br>
> So if setting NoAccel to true makes that blending go away, then yes,<br>
> that does sound like a bug in the NoAccel case.<br>
><br>
> 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'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>