[Pixman] [PATCH 0/5] Simple repeat
Taekyun Kim
podain77 at gmail.com
Tue Aug 30 05:48:36 PDT 2011
From: Taekyun Kim <tkq.kim at samsung.com>
Hi,
I modified previous simple repeat patches for ARM backend to cover other
backends. Soren suggested a good point of handling different backends
at common place. We can look up COVER_CLIP composite functions and
stitch source scanlines to support PIXMAN_REPEAT_NORMAL.
One thing that I concern is that if we get general_composite_rect() from
lookup, is it beneficial to do stitching? general_composite_rect() itself
can handle normal repeat. So we might get regressions. And if we write
good fetchers for normal repeat, it might be good to bypass repeat
handling to general_composite_rect(). We can also bypass repeat handling
if the composite function can handle the repeat.
I added the fast path entry in the C fast path entry table like this.
{ PIXMAN_OP_any,
PIXMAN_any,
(FAST_PATH_STANDARD_FLAGS | FAST_PATH_ID_TRANSFORM |
FAST_PATH_BITS_IMAGE | FAST_PATH_NORMAL_REPEAT),
PIXMAN_any, 0,
PIXMAN_any, FAST_PATH_STD_DEST_FLAGS,
fast_composite_tiled_repeat
},
Would it be good to explicitly specify dedicated entry for each path?
Or just bypassing general_composite_rect() would be sufficient?
If we are to somehow bypass repeat handling, we need to know fast path
flags of the function returned by lookup.
_pixman_lookup_composite_function() may have to return such flags too.
Comments welcome!!
And here're the performance numbers.
- sse2: Intel E5200 @ 2.5GHz-
/////////////////////////////////////////////////////////////
// op=SRC, src=a8r8g8b8, mask=None, dst=a8r8g8b8
//////////////////////////////////////////////////////////////
<< Reference Compositing Performance 2000x2000 to 2000x2000 >>
Non-scaled : 371.58 Mpix/s
<< src = 1 x 512 dst = 512 x 512 >>
before : 55.49 Mpix/s
after : 537.09 Mpix/s
<< src = 15 x 15 dst = 512 x 512 >>
before : 385.69 Mpix/s
after : 706.71 Mpix/s
<< src = 63 x 63 dst = 512 x 512 >>
before : 835.54 Mpix/s
after : 843.42 Mpix/s
/////////////////////////////////////////////////////////////
// op=SRC, src=r5g6b5, mask=None, dst=r5g6b5
//////////////////////////////////////////////////////////////
<< Reference Compositing Performance 2000x2000 to 2000x2000 >>
Non-scaled : 738.28 Mpix/s
<< src = 1 x 512 dst = 512 x 512 >>
before : 41.01 Mpix/s
after : 682.52 Mpix/s
<< src = 15 x 15 dst = 512 x 512 >>
before : 102.71 Mpix/s
after : 864.06 Mpix/s
<< src = 63 x 63 dst = 512 x 512 >>
before : 113.10 Mpix/s
after : 1078.24 Mpix/s
- NEON: ARM cortex-a9 @ 1.2GHz -
/////////////////////////////////////////////////////////////
// op=SRC, src=a8r8g8b8, mask=None, dst=a8r8g8b8
//////////////////////////////////////////////////////////////
<< Reference Compositing Performance 2000x2000 to 2000x2000 >>
Non-scaled : 176.92 Mpix/s
<< src = 1 x 512 dst = 512 x 512 >>
before : 19.40 Mpix/s
after : 237.73 Mpix/s
<< src = 15 x 15 dst = 512 x 512 >>
before : 161.03 Mpix/s
after : 270.45 Mpix/s
<< src = 63 x 63 dst = 512 x 512 >>
before : 293.81 Mpix/s
after : 343.30 Mpix/s
/////////////////////////////////////////////////////////////
// op=SRC, src=r5g6b5, mask=None, dst=r5g6b5
//////////////////////////////////////////////////////////////
<< Reference Compositing Performance 2000x2000 to 2000x2000 >>
Non-scaled : 350.06 Mpix/s
<< src = 1 x 512 dst = 512 x 512 >>
before : 19.55 Mpix/s
after : 299.50 Mpix/s
<< src = 15 x 15 dst = 512 x 512 >>
before : 44.91 Mpix/s
after : 330.83 Mpix/s
<< src = 63 x 63 dst = 512 x 512 >>
before : 43.35 Mpix/s
after : 462.82 Mpix/s
--
Best Regards,
Taekyun Kim
Søren Sandmann Pedersen (2):
Add src, mask, and dest flags to the composite args struct.
Move _pixman_lookup_composite_function() to pixman-utils.c
Taekyun Kim (3):
Add new fast path flag FAST_PATH_BITS_IMAGE
Simple repeat fast path
Simple repeat: Extend too short source scanlines into temporary
buffer
pixman/pixman-fast-path.c | 177 +++++++++++++++++++++++++++++++++++++++++++++
pixman/pixman-image.c | 1 +
pixman/pixman-private.h | 17 ++++-
pixman/pixman-utils.c | 112 ++++++++++++++++++++++++++++
pixman/pixman.c | 123 ++-----------------------------
5 files changed, 313 insertions(+), 117 deletions(-)
More information about the Pixman
mailing list