first, performance is increased a little. (Tesed by cairo test tool. +7% about)
old: 0.18.4-origin new: 0.18.4-disable-cache-prefetch Speedups ======== image-rgba gnome-terminal-vim-0 25068.39 (25095.11 0.06%) -> 23302.54 (23317.50 0.56%): 1.08x speedup ▏ image-rgba ocitysmap-0 8984.46 (8988.04 8.44%) -> 8416.64 (8489.40 6.91%): 1.07x speedup ▏ image-rgba firefox-talos-gfx-0 58330.34 (58361.84 0.23%) -> 54657.10 (55473.39 1.72%): 1.07x speedup ▏ image-rgba poppler-0 17265.62 (17437.80 0.84%) -> 16257.05 (16341.86 0.75%): 1.06x speedup image-rgba firefox-planet-gnome-0 104102.19 (104150.67 0.12%) -> 98324.84 (98402.02 0.32%): 1.06x speedup Second, no need to update from 0.18.2 to 0.18.4 for tuning performance. If could, I can recreate the patch based on 0.18.2 and resubmit it. Regards, Liu Xinyun On Tue, Sep 21, 2010 at 02:46:54PM +0800, Zhu, Peter J wrote: > Hi > > -----Original Message----- > > From: [email protected] > > [mailto:[email protected]] On Behalf Of Liu Xinyun > > Sent: Tuesday, September 21, 2010 2:30 PM > > To: [email protected] > > Subject: [meego-commits] 7643: Changes to Trunk:Testing/pixman > > > > Hi, > > I have made the following changes to pixman in project Trunk:Testing. Please > > review and accept ASAP. > > > > Thank You, > > Liu Xinyun > > > > [This message was auto-generated] > > > > --- > > > > Request #7643: > > > > submit: home:xyl:branches:Trunk:Testing/pixman(r3)(cleanup) -> > > Trunk:Testing/pixman > > > > > > Message: > > Add disable-cache-prefetch.patch and enable it for MeeGo. Fix BMC #2250 > > > > State: new 2010-09-20T23:29:32 xyl > > Comment: None > > > > > > > > changes files: > > -------------- > > --- pixman.changes > > +++ pixman.changes > > @@ -0,0 +1,7 @@ > > +* Tue Sep 21 2010 Liu Xinyun <[email protected]> - 0.18.4 > > +- Add disable-cache-prefetch.patch and enable it for MeeGo > > +- Fix BMC #2250 > > + > I see we just get 2% improvements. Any side effect to disable this cache > prefetch? > > > +* Thu Sep 09 2010 Liu Xinyun <[email protected]> - 0.18.4 > > +- Update to 0.18.4. It's required by cairo-1.9.12 > > + > Why? Cairo 1.9.12 has been Trunk for a long time. > > > > > old: > > ---- > > pixman-0.18.2.tar.bz2 > > > > new: > > ---- > > disable-cache-prefetch.patch > > pixman-0.18.4.tar.bz2 > > > > spec files: > > ----------- > > --- pixman.spec > > +++ pixman.spec > > @@ -1,19 +1,20 @@ > > # > > -# Do not Edit! Generated by: > > -# spectacle version 0.18 > > +# Do NOT Edit the Auto-generated Part! > > +# Generated by: spectacle version 0.19 > > # > > # >> macros > > # << macros > > > > Name: pixman > > Summary: Pixel manipulation library > > -Version: 0.18.2 > > +Version: 0.18.4 > > Release: 1 > > Group: System/Libraries > > License: MIT > > URL: http://www.x.org/ > > Source0: > > http://xorg.freedesktop.org/archive/individual/lib/%{name}-%{version}.tar.bz2 > > Source100: pixman.yaml > > +Patch0: disable-cache-prefetch.patch > > Requires(post): /sbin/ldconfig > > Requires(postun): /sbin/ldconfig > > > > @@ -34,6 +35,8 @@ > > %prep > > %setup -q -n %{name}-%{version} > > > > +# disable-cache-prefetch.patch > > +%patch0 -p1 > > # >> setup > > # << setup > > > > @@ -41,7 +44,9 @@ > > # >> build pre > > # << build pre > > > > -%configure --disable-static > > +%configure --disable-static \ > > + --enable-cache-prefetch=no > > + > > make %{?jobs:-j%jobs} > > > > # >> build post > > > > other changes: > > -------------- > > > > ++++++ disable-cache-prefetch.patch (new) > > --- disable-cache-prefetch.patch > > +++ disable-cache-prefetch.patch > > +From 4338c93f9ba317735a1ecc7319303b48b77aedcb Mon Sep 17 00:00:00 > > 2001 > > +From: Liu Xinyun <[email protected]> > > +Date: Tue, 21 Sep 2010 13:24:08 +0800 > > +Subject: [PATCH] Add disable cache prefetch. > > + > > +Disable cache prefetch for ATOM, the performance increased a little. > > + > > +old: 0.18.4 > > +new: 0.18.4-disable-cache-prefetch > > +Speedups > > +======== > > +image-rgba poppler-0 17590.75 (17597.01 1.30%) > > -> 15414.85 (16345.44 2.89%): 1.14x speedup > > +image-rgba xfce4-terminal-a1-0 18429.77 (18471.36 1.03%) -> > > 16648.99 (16725.68 1.18%): 1.11x speedup > > +image-rgba gnome-terminal-vim-0 25272.76 (25366.13 0.18%) > > -> 22993.57 (23060.22 0.52%): 1.10x speedup > > +image-rgba ocitysmap-0 9079.30 (9128.50 6.54%) -> > > 8410.53 (8452.60 8.02%): 1.08x speedup > > +image-rgba swfdec-giant-steps-0 12436.80 (12473.41 0.39%) -> > > 11701.41 (11760.38 0.90%): 1.06x speedup > > +image-rgba firefox-planet-gnome-0 103749.15 (103983.13 0.19%) > > -> 98310.02 (98522.71 0.35%): 1.06x speedup > > + > > +Signed-off-by: Liu Xinyun <[email protected]> > > +Signed-off-by: Chen Miaobo <[email protected]> > > +--- > > + configure.ac | 13 +++++++++++++ > > + pixman/pixman-sse2.c | 7 +++++++ > > + 2 files changed, 20 insertions(+), 0 deletions(-) > > + > > +diff --git a/configure.ac b/configure.ac > > +index c9269f4..a531cb7 100644 > > +--- a/configure.ac > > ++++ b/configure.ac > > +@@ -280,6 +280,19 @@ fi > > + AM_CONDITIONAL(USE_SSE2, test $have_sse2_intrinsics = yes) > > + > > + dnl > > ================================================================ > > =========== > > ++dnl cache prefetch > > ++AC_ARG_ENABLE(cache-prefetch, > > ++ [AC_HELP_STRING([--enable-cache-prefetch], > > ++ [disable DISABLE_CACHE_PREFETCH macros [default=yes]])], > > ++ [enable_cache_prefetch=$enableval], [enable_cache_prefetch=yes]) > > ++#AC_CHECK_DECL(enable_cache_prefetch) > > ++if test $enable_cache_prefetch = no ; then > > ++ AC_DEFINE(DISABLE_CACHE_PREFETCH, 1, [enable > > DISABLE_CACHE_PREFETCH macros]) > > ++fi > > ++AC_CHECK_DECL(DISABLE_CACHE_PREFETCH) > > ++AC_SUBST(DISABLE_CACHE_PREFETCH) > > ++ > > ++dnl > > ================================================================ > > =========== > > + dnl Other special flags needed when building code using MMX or SSE > > instructions > > + case $host_os in > > + solaris*) > > +diff --git a/pixman/pixman-sse2.c b/pixman/pixman-sse2.c > > +index 946e7ba..708838a 100644 > > +--- a/pixman/pixman-sse2.c > > ++++ b/pixman/pixman-sse2.c > > +@@ -384,6 +384,13 @@ maybe_prefetch_next (__m128i* addr) > > + cache_prefetch_next (addr); > > + } > > + > > ++#ifdef DISABLE_CACHE_PREFETCH > > ++#define cache_prefetch(addr) do {} while (0); > > ++#define cache_prefetch_next(addr) do {} while (0); > > ++#define maybe_prefetch(addr) do {} while (0); > > ++#define maybe_prefetch_next(addr) do {} while (0); > > ++#endif > > ++ > > + /* load 4 pixels from a 16-byte boundary aligned address */ > > + static force_inline __m128i > > + load_128_aligned (__m128i* src) > > +-- > > +1.7.0.4 > > + > > > > ++++++ pixman-0.18.2.tar.bz2 -> pixman-0.18.4.tar.bz2 > > --- configure > > +++ configure > > @@ -1,6 +1,6 @@ > > #! /bin/sh > > # Guess values for system-dependent variables and create Makefiles. > > -# Generated by GNU Autoconf 2.65 for pixman 0.18.2. > > +# Generated by GNU Autoconf 2.65 for pixman 0.18.4. > > # > > # Report bugs to <"[email protected]">. > > # > > @@ -701,8 +701,8 @@ > > # Identity of this package. > > PACKAGE_NAME='pixman' > > PACKAGE_TARNAME='pixman' > > -PACKAGE_VERSION='0.18.2' > > -PACKAGE_STRING='pixman 0.18.2' > > +PACKAGE_VERSION='0.18.4' > > +PACKAGE_STRING='pixman 0.18.4' > > PACKAGE_BUGREPORT='"[email protected]"' > > PACKAGE_URL='' > > > > @@ -1466,7 +1466,7 @@ > > # Omit some internal or obsolete options to make the list less imposing. > > # This message is too long to be a string in the A/UX 3.1 sh. > > cat <<_ACEOF > > -\`configure' configures pixman 0.18.2 to adapt to many kinds of systems. > > +\`configure' configures pixman 0.18.4 to adapt to many kinds of systems. > > > > Usage: $0 [OPTION]... [VAR=VALUE]... > > > > @@ -1536,7 +1536,7 @@ > > > > if test -n "$ac_init_help"; then > > case $ac_init_help in > > - short | recursive ) echo "Configuration of pixman 0.18.2:";; > > + short | recursive ) echo "Configuration of pixman 0.18.4:";; > > esac > > cat <<\_ACEOF > > > > @@ -1651,7 +1651,7 @@ > > test -n "$ac_init_help" && exit $ac_status > > if $ac_init_version; then > > cat <<\_ACEOF > > -pixman configure 0.18.2 > > +pixman configure 0.18.4 > > generated by GNU Autoconf 2.65 > > > > Copyright (C) 2009 Free Software Foundation, Inc. > > @@ -2146,7 +2146,7 @@ > > This file contains any messages produced by compilers while > > running configure, to aid debugging if configure makes a mistake. > > > > -It was created by pixman $as_me 0.18.2, which was > > +It was created by pixman $as_me 0.18.4, which was > > generated by GNU Autoconf 2.65. Invocation command line was > > > > $ $0 $@ > > @@ -2954,7 +2954,7 @@ > > > > # Define the identity of the package. > > PACKAGE='pixman' > > - VERSION='0.18.2' > > + VERSION='0.18.4' > > > > > > cat >>confdefs.h <<_ACEOF > > @@ -11086,13 +11086,13 @@ > > > > > > > > -LT_VERSION_INFO="18:2:18" > > +LT_VERSION_INFO="18:4:18" > > > > PIXMAN_VERSION_MAJOR=0 > > > > PIXMAN_VERSION_MINOR=18 > > > > -PIXMAN_VERSION_MICRO=2 > > +PIXMAN_VERSION_MICRO=4 > > > > > > > > @@ -12561,7 +12561,7 @@ > > # report actual input values of CONFIG_FILES etc. instead of their > > # values after options handling. > > ac_log=" > > -This file was extended by pixman $as_me 0.18.2, which was > > +This file was extended by pixman $as_me 0.18.4, which was > > generated by GNU Autoconf 2.65. Invocation command line was > > > > CONFIG_FILES = $CONFIG_FILES > > @@ -12627,7 +12627,7 @@ > > cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 > > ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; > > s/[\\""\`\$]/\\\\&/g'`" > > ac_cs_version="\\ > > -pixman config.status 0.18.2 > > +pixman config.status 0.18.4 > > configured by $0, generated by GNU Autoconf 2.65, > > with options \\"\$ac_cs_config\\" > > > > --- configure.ac > > +++ configure.ac > > @@ -54,7 +54,7 @@ > > > > m4_define([pixman_major], 0) > > m4_define([pixman_minor], 18) > > -m4_define([pixman_micro], 2) > > +m4_define([pixman_micro], 4) > > > > m4_define([pixman_version],[pixman_major.pixman_minor.pixman_micro]) > > > > --- pixman/pixman-access.c > > +++ pixman/pixman-access.c > > @@ -2640,7 +2640,7 @@ > > #else > > mask = 1 << ((i + x) & 0x1f); > > #endif > > - v = RGB24_TO_ENTRY_Y (indexed, values[i]) ? mask : 0; > > + v = RGB24_TO_ENTRY_Y (indexed, values[i]) & 0x1 ? mask : 0; > > > > WRITE (image, pixel, (READ (image, pixel) & ~mask) | v); > > } > > --- pixman/pixman-bits-image.c > > +++ pixman/pixman-bits-image.c > > @@ -914,6 +914,7 @@ > > bits->common.transform->matrix[2][2] == pixman_fixed_1 && > > bits->common.transform->matrix[0][0] > 0 && > > bits->common.transform->matrix[1][0] == 0 && > > + !bits->read_func && > > (bits->common.filter == PIXMAN_FILTER_BILINEAR || > > bits->common.filter == PIXMAN_FILTER_GOOD || > > bits->common.filter == PIXMAN_FILTER_BEST) && > > --- pixman/pixman-compiler.h > > +++ pixman/pixman-compiler.h > > @@ -158,9 +158,16 @@ > > static pthread_key_t tls_ ## name ## _key; > > \ > > \ > > static void > > \ > > + tls_ ## name ## _destroy_value (void *value) \ > > + { > > \ > > + free (value); \ > > + } > > \ > > + \ > > + static void > > \ > > tls_ ## name ## _make_key (void) > > \ > > { > > \ > > - pthread_key_create (&tls_ ## name ## _key, NULL); \ > > + pthread_key_create (&tls_ ## name ## _key, \ > > + tls_ ## name ## _destroy_value); \ > > } > > \ > > \ > > static type * \ > > --- pixman/pixman-version.h > > +++ pixman/pixman-version.h > > @@ -33,9 +33,9 @@ > > > > #define PIXMAN_VERSION_MAJOR 0 > > #define PIXMAN_VERSION_MINOR 18 > > -#define PIXMAN_VERSION_MICRO 2 > > +#define PIXMAN_VERSION_MICRO 4 > > > > -#define PIXMAN_VERSION_STRING "0.18.2" > > +#define PIXMAN_VERSION_STRING "0.18.4" > > > > #define PIXMAN_VERSION_ENCODE(major, minor, micro) ( \ > > ((major) * 10000) \ > > --- pixman/pixman.c > > +++ pixman/pixman.c > > @@ -634,7 +634,7 @@ > > ®ion, src, mask, dest, > > src_x, src_y, mask_x, mask_y, dest_x, dest_y, width, height)) > > { > > - return; > > + goto out; > > } > > > > extents = pixman_region32_extents (®ion); > > @@ -651,7 +651,7 @@ > > */ > > op = optimize_operator (op, src_flags, mask_flags, dest_flags); > > if (op == PIXMAN_OP_DST) > > - return; > > + goto out; > > > > /* Check cache for fast paths */ > > cache = PIXMAN_GET_THREAD_LOCAL (fast_path_cache); > > --- test/blitters-test.c > > +++ test/blitters-test.c > > @@ -482,7 +482,7 @@ > > /* Predefined value for running with all the fastpath functions > > disabled. It needs to be updated every time when changes are > > introduced to this program or behavior of pixman changes! */ > > - if (crc == 0x8F9F7DC1) > > + if (crc == 0xBBACC28D) > > { > > printf ("blitters test passed\n"); > > } > > > > ++++++ pixman.yaml > > --- pixman.yaml > > +++ pixman.yaml > > @@ -1,14 +1,17 @@ > > Name: pixman > > Summary: Pixel manipulation library > > -Version: 0.18.2 > > +Version: 0.18.4 > > Release: 1 > > Group: System/Libraries > > License: MIT > > URL: http://www.x.org/ > > Sources: > > - > > http://xorg.freedesktop.org/archive/individual/lib/%{name}-%{version}.tar.bz2 > > - > > +Patches: > > + - disable-cache-prefetch.patch > > Configure: configure > > +ConfigOptions: > > + - --enable-cache-prefetch=no > > SubPackages: > > - Name: devel > > Summary: Development components for the pixman library > > > > _______________________________________________ > > Meego-commits mailing list > > [email protected] > > http://lists.meego.com/listinfo/meego-commits _______________________________________________ MeeGo-packaging mailing list [email protected] http://lists.meego.com/listinfo/meego-packaging
