[cairo] [Pixman] pixman: New ARM NEON optimizations
Siarhei Siamashka
siarhei.siamashka at gmail.com
Thu Feb 17 12:32:52 PST 2011
On Thursday 17 February 2011 20:41:28 Bill Spitzak wrote:
> Siarhei Siamashka wrote:
> > On Friday 11 February 2011 12:30:33 Soeren Sandmann wrote:
> >> If I had a time machine, I would go back and make - among others -
> >
> >> these two changes to Render:
> > [...]
> >
> >> (2) The RGB channels of Alpha-only images would be considered to be
> >>
> >> the same as the alpha channel, and not 0 as they are now. For
> >> example, a 0xb9 pixel in an a8 image would be considered
> >> equivalent to 0xb9b9b9b9 and not to 0xb9000000. That is, they
> >> would be considered a translucent white rather than a translucent
> >> black.
> >>
> >> These two changes together would have the effect that (a) the equation
> >> would be much easier to understand visually (composite src and dst,
> >> then clip to the mask and write back), and (b) component alpha would
> >> become completely regular with no need for the "component_alpha" bit
> >> in pictures.
> >
> > Regarding the (b) part, probably as a side effect of current
> > implementation, right now it is possible to do some operations with
> > images having
> >
> > non-premultiplied alpha:
> > src_img = pixman_image_create_bits (
> >
> > PIXMAN_x8b8g8r8, width, height, src, stride);
> >
> > msk_img = pixman_image_create_bits (
> >
> > PIXMAN_a8b8g8r8, width, height, src, stride);
> >
> > dst_img = pixman_image_create_bits (
> >
> > PIXMAN_a8r8g8b8, width, height, dst, stride);
> >
> > pixman_image_composite (PIXMAN_OP_SRC, src_img, msk_img, dst_img,
> >
> > 0, 0, 0, 0, 0, 0, width, height);
>
> That certainly is useful and I thought it was officially supported by
> Cairo (using a 4-channel image as a mask is the same as using the alpha
> channel). However I don't see how changing the interpretation of the
> color of a one-channel image will make any difference to this.
>
> I agree with Soeren that treating one-channel images as though
> r==g==b==a (ie it is a white premultiplied image) is much more useful
> than as a black premultiplied image and should be done.
I was worried about the 'component alpha would become completely regular with
no need for the "component_alpha" bit in pictures' part. It sounded like this
case of 'using a 4-channel image as a mask is the same as using the alpha
channel' was considered to be dropped.
--
Best regards,
Siarhei Siamashka
More information about the cairo
mailing list