[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. x86 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 ARM 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 Søren tar.gz: http://cairographics.org/releases/pixman-0.18.0.tar.gz http://xorg.freedesktop.org/archive/individual/lib/pixman-0.18.0.tar.gz tar.bz2: http://xorg.freedesktop.org/archive/individual/lib/pixman-0.18.0.tar.bz2 Hashes: 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: http://cairographics.org/releases/pixman-0.18.0.tar.gz.sha1.asc (signed by Søren Sandmann Pedersen<s...@redhat.com>) Git: git://git.freedesktop.org/git/pixman tag: pixman-0.18.0 Log: 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 FAST_PATH_NO_NONE_REPEAT flag Add FAST_PATH_SAMPLES_COVER_CLIP and FAST_PATH_16BIT_SAFE 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 Hide PIXMAN_OP_NONE and PIXMAN_N_OPERATORS behind PIXMAN_INTERNAL_API. 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. Add PIXMAN_DEFINE_THREAD_LOCAL() and PIXMAN_GET_THREAD_LOCAL() macros Fix contact address in configure.ac Ensure that only the low 4 bit of 4 bit pixels are stored. Add a FAST_PATH_X_UNIT_POSITIVE flag 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 _______________________________________________ Pixman mailing list Pixman@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pixman