[Pixman] [PATCH 2/2] ARM: added 'neon_composite_src_8888_8_0565' fast path

Siarhei Siamashka siarhei.siamashka at gmail.com
Mon Aug 30 04:35:23 PDT 2010


On Thursday 26 August 2010 15:09:32 Soeren Sandmann wrote:
> Siarhei Siamashka <siarhei.siamashka at gmail.com> writes:
> > +.macro pixman_composite_src_n_8_0565_process_pixblock_head
> > +    /* in */
> > +    vmull.u8    q15, d24, d2
> > +    vmull.u8    q3,  d24, d1
> > +    vmull.u8    q2,  d24, d0
> > +    vrshr.u16   q12, q15, #8
> > +    vrshr.u16   q11, q3,  #8
> > +    vrshr.u16   q10, q2,  #8
> > +    vraddhn.u16 d16, q15, q12
> > +    vraddhn.u16 d19, q3,  q11
> > +    vraddhn.u16 d18, q2,  q10
> > +.endm
> > +
> > +.macro pixman_composite_src_n_8_0565_process_pixblock_tail
> > +    /* convert to r5g6b5 */
> > +    vshll.u8    q14, d16, #8
> > +    vshll.u8    q8,  d19, #8
> > +    vshll.u8    q9,  d18, #8
> > +    vsri.u16    q14, q8,  #5
> > +    vsri.u16    q14, q9,  #11
> > +.endm
> 
> It's remarkable how much NEON can do with so few instructions.

ARM NEON is indeed very nice to work with, it's probably one of the best SIMD
extensions around.

> >  static const pixman_fast_path_t arm_neon_fast_paths[] =
> >  {
> > 
> > +    PIXMAN_STD_FAST_PATH (SRC,  a8r8g8b8, a8,       r5g6b5,  
> > neon_composite_src_8888_8_0565), +    PIXMAN_STD_FAST_PATH (SRC, 
> > a8b8g8r8, a8,       b5g6r5,   neon_composite_src_8888_8_0565),
> 
> It seems like this fast path will work as src_x888_8_0565 as well
> since the alpha channel is completely ignored.

Right. That's a good catch.

-- 
Best regards,
Siarhei Siamashka
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.freedesktop.org/archives/pixman/attachments/20100830/1e804415/attachment.pgp>


More information about the Pixman mailing list