[cairo] Operator optimization based on source or dest opacity
cairo at antoineazar.com
Wed Feb 27 13:37:16 PST 2008
thanks for the good code review.
>- pixman_image_is_opaque() needs to handle alpha-maps.
I'm not sure I understand what you mean. How do you check if an alpha
map is opaque without checking every pixel of it?
>- In general, it looks to me like the code in pixman-pict.c that
>checks whether the optimization is applicable, is really checking
>whether the image is opaque. If so, it should be moved into
Yes and no. I originally didn't include the other checks in the
function because I wanted to keep it generic enough for other uses.
It basically just checks if a source contains alpha information or
not which I guess could be useful at other places. The other checks
take into account *how* the source is being used and if this
introduces any transparency. So I can see a valid point either way,
let me know if you would still rather have the checks included in
>- The remaining code in pixman-pict.c that deals with the
>optimization should be moved to its own function, like this:
> op = optimize_operator (op, src, mask, dst);
> The pixman_optimize_operator() from your patch can then be
> integrated into this.
>- Coding style:
>+ case BITS:
>+ isSourceOpaque = FALSE;
> I'm not very draconian about coding style, but please eliminate
> those braces. Also, when such braces are necessary, please align
> them with the 'case' keyword.
>- I'd like to see the unrelated changes to the fast path search
>dropped. We can look at them later if they do make a performance difference.
I'll separate them to illustrate the strange performance differences
in that section of the code. I'll send back 2 patches.
>I like this; in fact, I'd like to see even the inlined functions
>moved into the C file instead of the header file.
More information about the cairo