Søren Sandmann
2010-Apr-01 10:16 UTC
[ANNOUNCE] pixman release 0.18.0 now available [fixed formatting]
[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<ssp at 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