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 @@
> >         &region, src, mask, dest,
> >         src_x, src_y, mask_x, mask_y, dest_x, dest_y, width, height))
> >      {
> > -   return;
> > +   goto out;
> >      }
> > 
> >      extents = pixman_region32_extents (&region);
> > @@ -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

Reply via email to