[cairo-announce] [ANNOUNCE] pixman stable release 0.18.0 now available

Søren Sandmann sandmann at daimi.au.dk
Thu Apr 1 02:40:43 PDT 2010

A new major stable release 0.18.0 of the pixman library is now available.

New features:
- Support for creating regions from images [Alexander Larsson]
- Improved support for images larger than 16 bits [Benjamin Otte]

Performance improvements:

Performance was a major theme of this release. Optimizations include:

- Faster rescaling with nearest filter [Alexander Larsson, Siarhei
Siamashka, Søren Sandmann Pedersen]
- Faster rescaling with bilinear filter [André Tupinambá]
- Many new fast paths for ARM NEON [Siarhei Siamashka]
- Faster unantialised text rendering [Siarhei Siamashka]
- Reduced overhead in fast path lookup [Søren]

Results from a number of benchmarks in the cairo performance test
suite on x86 and ARM. A number such as 1.84x means that on that particular
benchmark pixman 0.18.0 runs 1.84 times faster than pixman 0.16.6.

evolution .............. image ███▋ 1.06x
image16 ███████▍ 1.13x
xlib ██▌ 1.04x
firefox-planet-gnome ... image ███████████████████▌ 1.45x
image16 ██████████▌ 1.20x
xlib ██████████████▎ 1.29x
firefox-talos-gfx ...... image ████████████████████████████▊ 1.84x
image16 ███████████████████████████████▋ 2.00x
xlib ████████████████▎ 1.35x
firefox-talos-svg ...... image ████▍ 1.07x
image16 ██▋ 1.04x
xlib ███▊ 1.06x
gnome-system-monitor ... image ███████████████████████████████▌ 2.00x
image16 ███████████████████████████████▌ 2.00x
xlib ▋ 1.01x
gnome-terminal-vim ..... image █████▎ 1.09x
image16 █████████████▊ 1.28x
xlib ███████████▋ 1.23x
poppler ................ image ████████████████████████████████████████ 
image16 ████████████████████████████████████████ 2.73x
xlib ████████████████████████████████▉ 2.09x
gvim ................... image █ 1.02x
image16 ▊ 0.99x
xlib ██▍ 1.04x
swfdec-giant-steps ..... image ██▉ 1.05x
image16 ██████▌ 1.12x
xlib ▎ 1.00x
swfdec-youtube ......... image ████████████████████▌ 1.48x
image16 ██████▉ 1.12x
xlib ███████████████████▋ 1.45x

evolution .............. image ██▎ 1.04x
image16 ██▎ 1.04x
xlib ▒▒▒▏ 0.95x
firefox-planet-gnome ... image █████████████▋ 1.27x
image16 ██▎ 1.04x
xlib ██████████████▋ 1.30x
firefox-talos-gfx ...... image █████████████████▋ 1.39x
image16 ███████▌ 1.13x
xlib ███████ 1.12x
firefox-talos-svg ...... image █████████▋ 1.18x
image16 ████████▌ 1.16x
xlib ███████▉ 1.14x
gnome-system-monitor ... image ███████████████████████████▏ 1.75x
image16 ██████████████████████████▋ 1.73x
xlib ████▊ 1.08x
gnome-terminal-vim ..... image ██████▎ 1.11x
image16 ████▎ 1.07x
xlib ████▍ 1.07x
poppler ................ image ███████████████████████▌ 1.60x
image16 ███████████████████████▋ 1.60x
xlib ███████████████▎ 1.32x
gvim ................... image ▎ 1.00x
image16 ▒▋ 0.97x
xlib ▊ 1.01x
swfdec-giant-steps ..... image █████████▌ 1.18x
image16 ████████████▋ 1.25x
xlib ████████▋ 1.16x
swfdec-youtube ......... image ██████████████████████▌ 1.56x
image16 ███████████▍ 1.22x
xlib ██████████████████████▉ 1.57x

Thanks to everybody who contributed to 0.18.0, including:

Alan Coopersmith, Alexander Larsson, Andrea Canciani,
André Tupinambá, Benjamin Otte, Chris Wilson, Egor Starkov,
Gaetan Nadon, Gerdus van Zyl, Guillem Jover, Jeremy Huddleston,
Jon TURNEY, Loïc Minier, M Joonas Pihlaja, Makoto Kato,
Marvin Schmidt, Pierre-Loup A. Griffais, Siarhei Siamashka,
Søren Sandmann Pedersen




MD5: a4fb870fc325be258089f1683642e976 pixman-0.18.0.tar.gz
MD5: a1b5a0a145cab653f5c1e8cf2f98f945 pixman-0.18.0.tar.bz2
SHA1: 26d204499bd78d82801db50f620bba29c2686cfc pixman-0.18.0.tar.gz
SHA1: 0ff0944b3335f156a94949842b429229e5ae1db4 pixman-0.18.0.tar.bz2

GPG signature:
(signed by Søren Sandmann Pedersen <sandmann at daimi.au.dk>)

tag: pixman-0.18.0

Alan Coopersmith (3):
Update Sun license notices to current X.Org standard form
Make .s target asm flag selection more portable
Add Sun cc to thread-local support checks in pixman-compiler.h

Alexander Larsson (11):
Add extern "C" guards for c++
Add pixman_image_get_destroy_data()
Move SCREEN_SHIFT_LEFT/RIGHT to pixman-private.h
Add pixman_region{32}_init_from_image
Test pixman_region32_init_from_image in region-test
Add CONVERT_0565_TO_8888 macro
Add CONVERT_8888_TO_8888 and CONVERT_0565_TO_0565 macros
Add specialized fast nearest scalers
Use the right format for the OVER_8888_565 fast path

Andrea Canciani (1):
Fix composite on big-endian systems.

André Tupinambá (2):
Speed up bilinear interpolation.
Add fast path scaled, bilinear fetcher.

Benjamin Otte (11):
Fix compile warnings
Add default cases for all switch statements
--enable-maintainer-mode is gone from configure, so remove it
Remove nonexistant function from header
Fix bug that prevented pixman_fill MMX and SSE paths for 16 and 8bpp
Make test program not throw warnings about undefined variables
Fix typo
Make region argument to pixman_region(32)_init_rects() const
Add pixman_image_composite32()
Add pixman_image_fill_boxes() API
Make pixman_image_fill_rectangles() call pixman_image_fill_boxes()

Chris Wilson (6):
build: Suppress verbose compile lines
[test] Add composite test from rendercheck
[sse2] Don't emit prefetch 0 for an absent mask
[build] Add rule to generate asm for inspection.
[test] Exercise repeating patterns for composite.
[Makefile] Set the SIMD specific CFLAGS for inspecting asm.

Egor Starkov (1):
Eliminate trailing comma in enum

Gaetan Nadon (1):
Remove unused generated libcomp.pc #23801

Gerdus van Zyl (1):
Fix build with Visual Studio 2008

Guillem Jover (1):
pixman: Update .gitignore

Jeremy Huddleston (1):
This is not a GNU project, so declare it foreign.

Jon TURNEY (1):
Avoid a potential division-by-zero exeception in window-test

Loïc Minier (1):
ARM: SIMD: Try without any CFLAGS before forcing -mcpu=

M Joonas Pihlaja (4):
Work around differing _mm_prefetch() prototypes on Solaris.
Work around a Sun Studio 12 code generation bug involving _mm_set_epi32()
Default to optimised builds when using a Sun Studio compiler.
Don't prefetch from NULL in the SSE2 fast paths.

Makoto Kato (2):
Add CPU detection for VC++ x64
Compile by USE_SSE2 only without USE_MMX

Marvin Schmidt (1):
Build tests and run non-GTK+ ones on `make check`

Matthias Hopf (2):
Improve PIXREGION_NIL to return true on degenerated regions.
Revert "Improve PIXREGION_NIL to return true on degenerated regions."

Pierre-Loup A. Griffais (1):
Interpret the angle of a conical gradient in degrees.

Siarhei Siamashka (50):
ARM: workaround for gcc bug in vshll_n_u8 intrinsic
ARM: Remove fallback to ARMv6 implementation from NEON delegate chain
Change CFLAGS order for PPC and ARM configure tests
ARM: Removal of unused/broken NEON code
blitters-test updated to also randomly generate mask_x/mask_y
C fast path function for 'add_1000_1000'
C fast path function for 'over_n_1_8888'
ARM: removed old ARM NEON optimizations
ARM: introduction of the new framework for NEON fast path optimizations
ARM: enabled new implementation for pixman_fill_neon
ARM: added 'bindings' for NEON assembly optimized functions
ARM: enabled 'neon_composite_src_0565_0565' fast path
ARM: enabled 'neon_composite_src_8888_0565' fast path
ARM: enabled 'neon_composite_src_0888_0888' fast path
ARM: enabled 'neon_composite_over_n_8_0565' fast path
ARM: enabled 'neon_composite_over_n_8_8888' fast path
ARM: enabled 'neon_composite_over_8888_n_8888' fast path
ARM: enabled 'neon_composite_over_8888_0565' fast path
ARM: enabled 'neon_composite_over_8888_8888' fast path
ARM: enabled 'neon_composite_add_n_8_8' fast path
ARM: enabled 'neon_composite_add_8_8_8' fast path
ARM: enabled 'neon_composite_add_8000_8000' fast path
C fast path function for 'over_n_1_0565'
test: support for testing pixbuf fast path functions in blitters-test
ARM: NEON optimized pixman_blt
ARM: added '.arch armv7a' directive to NEON assembly file
ARM: minor source formatting changes
ARM: added 'neon_composite_over_8888_8888_8888' fast path
ARM: added 'neon_composite_over_8888_8_8888' fast path
ARM: added 'neon_composite_add_8888_8888' fast path
ARM: added 'neon_composite_add_8888_8888_8888' fast path
ARM: added 'neon_composite_src_0565_8888' fast path
ARM: added 'neon_composite_over_n_0565' fast path
ARM: added 'neon_composite_over_n_8888' fast path
ARM: added 'neon_src_0888_8888_rev' fast path
ARM: added 'neon_composite_src_0888_0565_rev' fast path
ARM: added 'neon_composite_src_pixbuf_8888' fast path
Use canonical pixman license notice for recently added ARM NEON assembly
ARM: macro template for single scanline compositing functions
ARM: added 'neon_combine_over_u' function
ARM: added 'neon_combine_add_u' function
ARM: Remove any use of environment variables for cpu features detection
ARM: added 'neon_composite_over_n_8888_8888_ca' fast path
ARM: added 'neon_composite_src_x888_8888' fast path
ARM: added 'neon_composite_over_reverse_n_8888' fast path
ARM: Use '.object_arch' directive in NEON assembly file
ARM: Workaround for a NEON bug in assembler from binutils 2.18
ARM: Helper ARM NEON assembly binding macros moved into a separate header
ARM: SIMD optimizations updated to use common assembly calling convention
ARM: SIMD optimizations moved to a separate .S file

Søren Sandmann Pedersen (132):
Post-release version bump
Change names of add_8888_8_8 fast paths to add_n_8_8
Enable the x888_8_8888 sse2 fast path.
Fix off-by-one error in source_image_needs_out_of_bounds_workaround()
Reformat test/composite.c to follow the standard coding style.
Remove optimization for 0xffffffff and 0xff the add_n_8888_8888_ca fast p
Revert "Enable component alpha on solid masks."
Return result from pixman_image_set_transform().
Fix alpha handling for 10 bpc formats.
Add a few notes about testing to TODO
Fix four bit formats.
Fix shift bug in fetch_scanline/pixel_a2b2g2r2()
Fix bugs in a1b2g1r1.
Fix bugs in fetch_*_b2g3r3().
Fix bug in blitters-test with BGRA formats.
Update CRC value in blitters-test for the new bug fixes
In the compositing test, Don't try to use component alpha with solid fill
Add missing break in composite.c
Fix fetch-test for big-endian systems.
Fix double semicolon; pointed out by Travis Griggs
Remove BOUNDS() macro.
Remove unused color_table and color_table_size fields
Change prototype of _pixman_walk_composite_region from int16_t to int32_t
Make pixman_compute_composite_region32() use 32 bit dimensions
Make walk_region_internal() use 32 bit dimensions
Extend scaling-test to also test bilinear filtering.
Include <inttypes.h> when compiled with HP's C compiler.
Define PIXMAN_USE_INTERNAL_API in pixman-private.h
sse2: Add a fast path for OVER 8888 x 8 x 8888
test: Rename utils.[ch] to gtk-utils.[ch]
test: Move CRC32 code from blitters-test to new files utils.[ch]
test: In scaling-test use the crc32 from utils.c
test: Move random number generator from blitters/scaling-test to utils.[c
test: Move image_endian_swap() from blitters-test.c to utils.[ch]
Use the destination buffer directly in more cases instead of fetching.
Eliminate the NEED_SOLID_MASK flag
Eliminate the NEED_COMPONENT_ALPHA flag.
Compute src_format outside the fast path loop.
Eliminate NEED_PIXBUF flag.
Delete the flags field from fast_path_info_t
Fix slightly skewed sampling grid for antialiased traps
Fix rounding of top and bottom coordinates.
Round horizontal sampling points towards northwest.
Remove stray semicolon from blitters-test.c
Pre-release version bump
Post-release version bump
Reorder tests so that they fastest ones run first.
Add 'check' to release-check make target
mmx: Eliminate trailing whitespace.
arm-simd: Whitespace fixes
Some minor formatting fixes.
region: Enable or disable fatal errors and selfchecks based on version nu
fetch-test: Various formatting fixes
fetch-test: Fix spelling error (pallete -> palette)
test: Add new alphamap test program.
When fetching from an alpha map, use the alpha map's fetch function.
pixman_image_validate() needs to also validate the alpha map.
When fetching from an alpha map, replace the alpha channel of the image
bits: Print an error if someone tries to create an image with bpp < depth
Pre-release version bump
Post-release version bump
Fix some warnings
Implement get_scanline_64() correctly for solid fill images.
Turn some uint16_t variables to int32_t in the fast paths.
Move the sanity checks for src, mask and destination into get_fast_path()
Move pixbuf checks after src_format and mask_format have been computed.
Consolidate the source and mask sanity checks in a function
Fold get_fast_path() into _pixman_run_fast_path()
Move calls to source_is_fastpathable() into get_source_format()
Add src_, mask_, and dest_flags fields to fast path arrays
Compute src, mask, dest flags and base fast path decisions on them.
Move checks for src/mask repeat right before walking the region.
Turn off asserts in development snapshots (bug 26314).
Makefile.am: Remove 'check' from release-check
Generalize and optimize fast_composite_src_scaled_nearest()
Once unrolled version of fast_path_composite_nearest_scaled()
Pre-release version bump
Post-release version bump
Make general_composite_rect() just another fast path.
Make fast_composite_scaled_nearest() another fast path.
Store a pointer to the array of fast paths in the implementation struct.
Delete unused sources_cover() function
Don't call _pixman_implementation_composite() anymore.
Delete unused _pixman_walk_composite_region() function
Eliminate all the composite methods.
Optimize for the common case wrt. the workaround.
Move compositing to its own function, do_composite()
Move compositing functionality from pixman-utils.c into pixman.c
Manually inline _pixman_run_fast_path()
Move get_image_info() out of the loop in do_composite
Move region computation out of the loop in do_composite()
Move more things out of the inner loop in do_composite().
Add a fast path for non-repeating sources in walk_region_internal().
Move NULL check out of get_image_info()
Move all code to do debugging spew into pixman-private.
Hide the C++ extern "C" declarations behind macros.
Add a1-trap-test
Pre-release version bump
Post-release version bump
RELEASING: Update the release instructions.
Compute the image flags at validation time instead of composite time
Move computation of extended format code to validate.
Eliminate _pixman_image_is_solid()
Eliminate _pixman_image_is_opaque() in favor of a new FAST_PATH_IS_OPAQUE
Turn need_workaround into another flag.
Move workaround code to pixman-image.c
Restructure the flags computation in compute_image_info().
test: Remove obsolete comment
Move __force_align_arg_pointer workaround before composite32()
Pre-release version bump to 0.17.10
Post-release version bump to 0.17.11
Add a fast path cache
Make the operator strength reduction constant time.
Store the operator table more compactly.
Strength reduce certain conjoint/disjoint to their normal counterparts.
Change operator table to be an array of arrays of four bytes.
pixman.h: Only define stdint types when PIXMAN_DONT_DEFINE_STDINT is unde
test: Add support for indexed formats to blitters-test
Fix typo: WORDS_BIG_ENDIAN => WORDS_BIGENDIAN in pixman-edge.c
Add checks for various types of thread local storage.
Fix contact address in configure.ac
Ensure that only the low 4 bit of 4 bit pixels are stored.
Specialize the fast_composite_scaled_nearest_* scalers to positive x unit
Pre-release version bump to 0.17.12
Post-release version bump to 0.17.13
Pre-release version bump to 0.17.14
Post-release version bump to 0.17.15
Pre-release version bump to 0.18.0

More information about the cairo-announce mailing list