[cairo] Bug with paint_with_alpha and perf issues when compositing with SOURCE
otaylor at redhat.com
Tue May 27 09:28:13 PDT 2008
On Tue, 2008-05-27 at 11:52 -0400, Antoine Azar wrote:
> > Maybe the phrasing of "the effect is similar to"
> > just needs to be "the effect (with the default OVER operator)
> > is similar to" in order to be accurate?
> Well that's not really an "accurate" description of what the function does
> either :-)
> If the current result is really what Cairo users want, then the obvious
> optimization is to replace the SOURCE operator by OVER for this function. We
> get an instant 10X speedup in pixman and 5X speedup in Quartz for free. In
> any case, I don't really understand why we're substituting SOURCE and CLEAR
> by a complicated string of operators.
If you read through my various posts to the cairo-list in August 2005,
you should be able to get a good idea of why the cairo operator
semantics had to be different from the RENDER/pixman semantics and why
those "strings of complicated operators" are used.
> If the goal is to use
> backend-accelerated functions instead of going the pixman route, we should
> maybe revisit that decision as I'm pretty sure Pixman can do it faster
> natively (which was maybe not the case at the time this decision was
Extending pixman to handle SOURCE the cairo way is certainly possible,
but the pain of adding stuff in pixman that:
A) Does not match RENDER (as used by the xlib/xcb backends)
B) Does not match what can easily be done with 3D hardware (glitz
backend, future Direct3D backend)
Is considerable... right now, the cairo-surface-fallback.c code is used
for all raster backends in basically the same way.
You'd have to have some pretty convincing examples where:
A) You need to use masks with SOURCE
B) The current code is too slow and can't be made faster in obvious
ways without extending pixman.
More information about the cairo