[cairo-announce] [ANNOUNCE] pixman release 0.18.0 now available [fixed formatting]

Søren Sandmann sandmann at daimi.au.dk
Thu Apr 1 03:16:55 PDT 2010

[Apologies for the previous misformatted announce email. Hopefully
  this one will get through correctly].

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 ████████████████████████████████████████ 2.73x
                         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<ssp at redhat.com>)

	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
	      Add new FAST_PATH_SIMPLE_REPEAT flag
	      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