[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

pixman: Changes to 'debian-experimental'



 COPYING                          |   79 ++++-----
 ChangeLog                        |  323 +++++++++++++++++++++++++++++++++++++++
 configure.ac                     |   34 +++-
 debian/changelog                 |    7 
 debian/copyright                 |  150 ++++--------------
 pixman/pixman-arm-common.h       |   40 ++++
 pixman/pixman-arm-neon-asm.S     |  100 ++++++++----
 pixman/pixman-arm-neon-asm.h     |  216 ++++++++++++++++++++++++--
 pixman/pixman-arm-neon.c         |   30 +++
 pixman/pixman-arm-simd-asm.S     |   70 ++++++++
 pixman/pixman-arm-simd.c         |    7 
 pixman/pixman-bits-image.c       |  177 +++++++++++++++++----
 pixman/pixman-conical-gradient.c |   17 --
 pixman/pixman-image.c            |   75 +++------
 pixman/pixman-linear-gradient.c  |   30 +--
 pixman/pixman-mmx.c              |    4 
 pixman/pixman-private.h          |   15 -
 pixman/pixman-radial-gradient.c  |   19 +-
 pixman/pixman.c                  |   90 +---------
 pixman/pixman.h                  |   22 +-
 test/Makefile.am                 |    2 
 test/window-test.c               |  173 --------------------
 22 files changed, 1099 insertions(+), 581 deletions(-)

New commits:
commit 149ed6b1f0da30d2e072bc174fbf4057d1cca3f3
Author: Cyril Brulebois <kibi@debian.org>
Date:   Wed Nov 17 15:56:52 2010 +0100

    Upload to experimental.

diff --git a/debian/changelog b/debian/changelog
index b5dc7c5..ad2bfaa 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,9 +1,9 @@
-pixman (0.21.2-1) UNRELEASED; urgency=low
+pixman (0.21.2-1) experimental; urgency=low
 
   * New upstream release.
   * Update debian/copyright from upstream's COPYING.
 
- -- Cyril Brulebois <kibi@debian.org>  Wed, 17 Nov 2010 15:27:01 +0100
+ -- Cyril Brulebois <kibi@debian.org>  Wed, 17 Nov 2010 15:56:46 +0100
 
 pixman (0.20.0-1) experimental; urgency=low
 

commit 865e06cab00872d444d0756ae98988b094fa1f63
Author: Cyril Brulebois <kibi@debian.org>
Date:   Wed Nov 17 15:28:15 2010 +0100

    Update debian/copyright from upstream's COPYING.

diff --git a/debian/changelog b/debian/changelog
index 38c7f71..b5dc7c5 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,6 +1,7 @@
 pixman (0.21.2-1) UNRELEASED; urgency=low
 
   * New upstream release.
+  * Update debian/copyright from upstream's COPYING.
 
  -- Cyril Brulebois <kibi@debian.org>  Wed, 17 Nov 2010 15:27:01 +0100
 
diff --git a/debian/copyright b/debian/copyright
index 93ed0b7..75b5df5 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -3,112 +3,44 @@ http://xorg.freedesktop.org/releases/individual/lib/
 
 Debian packaging by Julien Cristau <jcristau@debian.org>, 18 May 2007.
 
-The following is the 'standard copyright' agreed upon by most contributors,
-and is currently the canonical license, though a modification is currently
-under discussion.  Copyright holders of new code should use this license
-statement where possible, and append their name to this list.  
-
-Copyright 1987, 1988, 1989, 1998  The Open Group
-Copyright 1987, 1988, 1989 Digital Equipment Corporation
-Copyright 1999, 2004, 2008 Keith Packard
-Copyright 2000 SuSE, Inc.
-Copyright 2000 Keith Packard, member of The XFree86 Project, Inc.
-Copyright 2004, 2005, 2007, 2008 Red Hat, Inc.
-Copyright 2004 Nicholas Miell
-Copyright 2005 Lars Knoll & Zack Rusin, Trolltech
-Copyright 2005 Trolltech AS
-Copyright 2007 Luca Barbato
-Copyright 2008 Aaron Plattner, NVIDIA Corporation
-Copyright 2008 Rodrigo Kumpera
-Copyright 2008 André Tupinambá
-Copyright 2008 Mozilla Corporation
-Copyright 2008 Frederic Plourde
-
-Permission is hereby granted, free of charge, to any person obtaining a
-copy of this software and associated documentation files (the "Software"),
-to deal in the Software without restriction, including without limitation
-the rights to use, copy, modify, merge, publish, distribute, sublicense,
-and/or sell copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice (including the next
-paragraph) shall be included in all copies or substantial portions of the
-Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
-THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
-
-Other licenses:
-
-Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc.
-            2005 Lars Knoll & Zack Rusin, Trolltech
-Copyright © 2000 SuSE, Inc.
-Copyright © 2007 Red Hat, Inc.
-Copyright © 1998 Keith Packard
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation, and that the name of the copyright holders not be used in
-advertising or publicity pertaining to distribution of the software without
-specific, written prior permission.  The copyright holders make no
-representations about the suitability of this software for any purpose.  It
-is provided "as is" without express or implied warranty.
-
-THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
-SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
-AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
-OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-Copyright 1987, 1988, 1989, 1998  The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-Copyright 1987, 1988, 1989 by
-Digital Equipment Corporation, Maynard, Massachusetts.
-
-                        All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
+The following is the MIT license, agreed upon by most contributors.
+Copyright holders of new code should use this license statement where
+possible. They may also add themselves to the list below.
+
+/*
+ * Copyright 1987, 1988, 1989, 1998  The Open Group
+ * Copyright 1987, 1988, 1989 Digital Equipment Corporation
+ * Copyright 1999, 2004, 2008 Keith Packard
+ * Copyright 2000 SuSE, Inc.
+ * Copyright 2000 Keith Packard, member of The XFree86 Project, Inc.
+ * Copyright 2004, 2005, 2007, 2008, 2009, 2010 Red Hat, Inc.
+ * Copyright 2004 Nicholas Miell
+ * Copyright 2005 Lars Knoll & Zack Rusin, Trolltech
+ * Copyright 2005 Trolltech AS
+ * Copyright 2007 Luca Barbato
+ * Copyright 2008 Aaron Plattner, NVIDIA Corporation
+ * Copyright 2008 Rodrigo Kumpera
+ * Copyright 2008 André Tupinambá
+ * Copyright 2008 Mozilla Corporation
+ * Copyright 2008 Frederic Plourde
+ * Copyright 2009 Sun Microsystems, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */

commit 868ed1e2a01342cba491499b3eb8983a36492582
Author: Cyril Brulebois <kibi@debian.org>
Date:   Wed Nov 17 15:27:13 2010 +0100

    Update changelogs.

diff --git a/ChangeLog b/ChangeLog
index 2a9c233..64fdf9c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,326 @@
+commit 4646c238589986499834b28ed903c366b5ba15ed
+Author: Søren Sandmann Pedersen <ssp@redhat.com>
+Date:   Tue Nov 16 16:43:26 2010 -0500
+
+    Pre-release version bump
+
+commit 536cf4dd3bd144ad1c65fc05f4883a31247a0f5d
+Author: Søren Sandmann Pedersen <ssp@redhat.com>
+Date:   Tue Nov 2 23:38:10 2010 -0400
+
+    Generate {a,x}8r8g8b8, a8, 565 fetchers for nearest/affine images
+    
+    There are versions for all combinations of x8r8g8b8/a8r8g8b8 and
+    pad/repeat/none/normal repeat modes. The bulk of each function is an
+    inline function that takes a format and a repeat mode as parameters.
+
+commit da0176e8534e5b027818f6b695343d3e04130a93
+Author: Andrea Canciani <ranma42@gmail.com>
+Date:   Tue Nov 2 17:04:35 2010 +0100
+
+    Improve conical gradients opacity check
+    
+    Conical gradients are completely opaque if all of their stops are
+    opaque and the repeat mode is not 'none'.
+
+commit 151f2554fc9c098ff86b0fdc0d785aa3ff496328
+Author: Andrea Canciani <ranma42@gmail.com>
+Date:   Tue Nov 2 17:02:01 2010 +0100
+
+    Fix opacity check
+    
+    Radial gradients are "conical", thus they can have some non-opaque
+    parts even if all of their stops are completely opaque.
+    
+    To guarantee that a radial gradient is actually opaque, it needs to
+    also have one of the two circles containing the other one. In this
+    case when extrapolating, the whole plane is completely covered (as
+    explained in the comment in pixman-radial-gradient.c).
+
+commit 19ed415b74521ad5dcc7b6e3ed4bb644711c7bef
+Author: Andrea Canciani <ranma42@gmail.com>
+Date:   Sun Oct 31 16:59:45 2010 +0100
+
+    Remove unused stop_range field
+
+commit d8fe87a6262ee661af8fb0d46bab223e4ab3d88e
+Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date:   Mon Oct 4 01:56:59 2010 +0300
+
+    ARM: optimization for scaled src_0565_0565 with nearest filter
+    
+    The performance improvement is only in the ballpark of 5% when
+    compared against C code built with a reasonably good compiler
+    (gcc 4.5.1). But gcc 4.4 produces approximately 30% slower code
+    here, so assembly optimization makes sense to avoid dependency
+    on the compiler quality and/or optimization options.
+    
+    Benchmark from ARM11:
+        == before ==
+        op=1, src_fmt=10020565, dst_fmt=10020565, speed=34.86 MPix/s
+    
+        == after ==
+        op=1, src_fmt=10020565, dst_fmt=10020565, speed=36.62 MPix/s
+    
+    Benchmark from ARM Cortex-A8:
+        == before ==
+        op=1, src_fmt=10020565, dst_fmt=10020565, speed=89.55 MPix/s
+    
+        == after ==
+        op=1, src_fmt=10020565, dst_fmt=10020565, speed=94.91 MPix/s
+
+commit b8007d042354fd9bd15711d9921e6f1ebb1c3c22
+Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date:   Tue Nov 2 16:12:42 2010 +0200
+
+    ARM: NEON optimization for scaled src_0565_8888 with nearest filter
+    
+    Benchmark from ARM Cortex-A8 @720MHz:
+        == before ==
+        op=1, src_fmt=10020565, dst_fmt=20028888, speed=8.99 MPix/s
+    
+        == after ==
+        op=1, src_fmt=10020565, dst_fmt=20028888, speed=76.98 MPix/s
+    
+        == unscaled ==
+        op=1, src_fmt=10020565, dst_fmt=20028888, speed=137.78 MPix/s
+
+commit 2e855a2b4a2bb7b3d2ed1826cb4426d14080ca67
+Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date:   Tue Nov 2 15:25:51 2010 +0200
+
+    ARM: NEON optimization for scaled src_8888_0565 with nearest filter
+    
+    Benchmark from ARM Cortex-A8 @720MHz:
+        == before ==
+        op=1, src_fmt=20028888, dst_fmt=10020565, speed=42.51 MPix/s
+    
+        == after ==
+        op=1, src_fmt=20028888, dst_fmt=10020565, speed=55.61 MPix/s
+    
+        == unscaled ==
+        op=1, src_fmt=20028888, dst_fmt=10020565, speed=117.99 MPix/s
+
+commit 4a09e472b8fbfae3e67d05a26ecc9c8a17225053
+Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date:   Tue Nov 2 14:39:02 2010 +0200
+
+    ARM: NEON optimization for scaled over_8888_0565 with nearest filter
+    
+    Benchmark from ARM Cortex-A8 @720MHz:
+        == before ==
+        op=3, src_fmt=20028888, dst_fmt=10020565, speed=10.29 MPix/s
+    
+        == after ==
+        op=3, src_fmt=20028888, dst_fmt=10020565, speed=36.36 MPix/s
+    
+        == unscaled ==
+        op=3, src_fmt=20028888, dst_fmt=10020565, speed=79.40 MPix/s
+
+commit 67a4991f3341d38bc3477c8f99f2ef581cd609e3
+Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date:   Tue Nov 2 14:29:57 2010 +0200
+
+    ARM: NEON optimization for scaled over_8888_8888 with nearest filter
+    
+    Benchmark from ARM Cortex-A8 @720MHz:
+        == before ==
+        op=3, src_fmt=20028888, dst_fmt=20028888, speed=12.73 MPix/s
+    
+        == after ==
+        op=3, src_fmt=20028888, dst_fmt=20028888, speed=28.75 MPix/s
+    
+        == unscaled ==
+        op=3, src_fmt=20028888, dst_fmt=20028888, speed=53.03 MPix/s
+
+commit 0b56244ac81f2bb2402629f8720c7e22893a24df
+Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date:   Tue Nov 2 19:16:46 2010 +0200
+
+    ARM: performance tuning of NEON nearest scaled pixel fetcher
+    
+    Interleaving the use of NEON registers helps to avoid some stalls
+    in NEON pipeline and provides a small performance improvement.
+
+commit 6e76af0d4b60ab74b309994926f28c532c5af155
+Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date:   Tue Nov 2 14:26:13 2010 +0200
+
+    ARM: macro template in C code to simplify using scaled fast paths
+    
+    This template can be used to instantiate scaled fast path functions
+    by providing main loop code and calling NEON assembly optimized
+    scanline processing functions from it. Another macro can be used
+    to simplify adding entries to fast path tables.
+
+commit 88014a0e6ffaa22b3ac363c2c73b72530cdba0cc
+Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date:   Mon Nov 1 10:03:59 2010 +0200
+
+    ARM: nearest scaling support for NEON scanline compositing functions
+    
+    Now it is possible to generate scanline processing functions
+    for the case when the source image is scaled with NEAREST filter.
+    
+    Only 16bpp and 32bpp pixel formats are supported for now. But the
+    others can be also added later when needed. All the existing NEON
+    fast path functions should be quite easy to reuse for implementing
+    fast paths which can work with scaled source images.
+
+commit 324712e48cf04df3cfcfc463fb221fcdf96e020a
+Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date:   Mon Nov 1 05:10:34 2010 +0200
+
+    ARM: NEON: source image pixel fetcher can be overrided now
+    
+    Added a special macro 'pixld_src' which is now responsible for fetching
+    pixels from the source image. Right now it just passes all its arguments
+    directly to 'pixld' macro, but it can be used in the future to provide
+    a special pixel fetcher for implementing nearest scaling.
+    
+    The 'pixld_src' has a lot of arguments which define its behavior. But
+    for each particular fast path implementation, we already know NEON
+    registers allocation and how many pixels are processed in a single block.
+    That's why a higher level macro 'fetch_src_pixblock' is also introduced
+    (it's easier to use because it has no arguments) and used everywhere
+    in 'pixman-arm-neon-asm.S' instead of VLD instructions.
+    
+    This patch does not introduce any functional changes and the resulting code
+    in the compiled object file is exactly the same.
+
+commit cb3f1830257a56f56abf7d50a8b34e215c616aec
+Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date:   Tue Nov 2 22:53:55 2010 +0200
+
+    ARM: fix 'vld1.8'->'vld1.32' typo in add_8888_8888 NEON fast path
+    
+    This was mostly harmless and had no effect on little endian systems.
+    But wrong vector element size is at least inconsistent and also
+    can theoretically cause problems on big endian ARM systems.
+
+commit fed4a2fde540916fc182917762b85b38052c04de
+Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date:   Fri Sep 24 16:36:16 2010 +0300
+
+    Do CPU features detection from 'constructor' function when compiled with gcc
+    
+    There is attribute 'constructor' supported since gcc 2.7 which allows
+    to have a constructor function for library initialization. This eliminates
+    an extra branch for each composite operation and also helps to avoid
+    complains from race condition detection tools like helgrind.
+    
+    The other compilers may or may not support this attribute properly.
+    Ideally, the compilers should fail to compile the code with unknown
+    attribute, so the configure check should do the right job. But in
+    reality the problems are surely possible. Fortunately such problems
+    should be quite easy to find because NULL pointer dereference should
+    happen almost immediately if the constructor fails to run.
+    
+    clang 2.7:
+      supports __attribute__((constructor)) properly and pretends to be gcc
+    
+    tcc 0.9.25:
+      ignores __attribute__((constructor)), but does not pretend to be gcc
+
+commit 99699771cd82e108fbace655bf44013bdccde3bf
+Author: Søren Sandmann Pedersen <ssp@redhat.com>
+Date:   Sun Oct 31 01:40:57 2010 -0400
+
+    Delete the source_image_t struct.
+    
+    It serves no purpose anymore now that the source_class_t field is gone.
+
+commit f405b4079872ecc312f9514fdadc5287e8f20b08
+Author: Søren Sandmann Pedersen <ssp@redhat.com>
+Date:   Sat Oct 30 17:20:22 2010 -0400
+
+    [mmx] Mark some of the output variables as early-clobber.
+    
+    GCC assumes that input variables in inline assembly are fully consumed
+    before any output variable is written. This means it may allocate the
+    variables in the same register unless the output variables are marked
+    as early-clobber.
+    
+    From Jeremy Huddleston:
+    
+        I noticed a problem building pixman with clang and reported it to
+        the clang developers.  They responded back with a comment about
+        the inline asm in pixman-mmx.c and suggested a fix:
+    
+        """
+        Incidentally, Jeremy, in the asm that reads
+        __asm__ (
+        "movq %7, %0\n"
+        "movq %7, %1\n"
+        "movq %7, %2\n"
+        "movq %7, %3\n"
+        "movq %7, %4\n"
+        "movq %7, %5\n"
+        "movq %7, %6\n"
+        : "=y" (v1), "=y" (v2), "=y" (v3),
+          "=y" (v4), "=y" (v5), "=y" (v6), "=y" (v7)
+        : "y" (vfill));
+    
+        all the output operands except the last one should be marked as
+        earlyclobber ("=&y"). This is working by accident with gcc.
+        """
+    
+    Cc: jeremyhu@apple.com
+    Reviewed-by: Matt Turner <mattst88@gmail.com>
+
+commit 9c19a85b0037d48fdd180a2c59ef05bdc4f46680
+Author: Søren Sandmann Pedersen <ssp@redhat.com>
+Date:   Thu Oct 28 20:14:03 2010 -0400
+
+    Remove workaround for a bug in the 1.6 X server.
+    
+    There used to be a bug in the X server where it would rely on
+    out-of-bounds accesses when it was asked to composite with a
+    window as the source. It would create a pixman image pointing
+    to some bogus position in memory, but then set a clip region
+    to the position where the actual bits were.
+    
+    Due to a bug in old versions of pixman, where it would not clip
+    against the image bounds when a clip region was set, this would
+    actually work. So when the pixman bug was fixed, a workaround was
+    added to allow certain out-of-bound accesses.
+    
+    However, the 1.6 X server is so old now that we can remove this
+    workaround. This does mean that if you update pixman to 0.22 or later,
+    you will need to use a 1.7 X server or later.
+
+commit 56748ea9a698daec8f445d2bebbbaed5515380af
+Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date:   Sat Oct 30 15:51:30 2010 +0300
+
+    Fixed broken configure check for __thread support
+    
+    Somehow the patch from [1] was not applied correctly, fixing that.
+    
+    1. http://lists.cairographics.org/archives/cairo/2010-September/020826.html
+
+commit ecc3612995d5d699a3dd49016a7e9ed40f0a4564
+Author: Søren Sandmann Pedersen <ssp@redhat.com>
+Date:   Mon Nov 1 17:52:29 2010 -0400
+
+    COPYING: Stop saying that a modification is currently under discussion.
+    
+    Also put the copyright text into a C comment for easier cut and paste.
+
+commit c993cd9614a47657228e3125bdcedc0bd0e34164
+Author: Søren Sandmann Pedersen <ssp@redhat.com>
+Date:   Wed Oct 27 17:21:06 2010 -0400
+
+    Version bump 0.21.1.
+    
+    The previous bump to 0.20.1 was a mistake; it belongs on the 0.20 branch.
+
+commit d890b684f68905ea5e242360f20e2a70251c89fd
+Author: Søren Sandmann Pedersen <ssp@redhat.com>
+Date:   Wed Oct 27 16:58:29 2010 -0400
+
+    Post-release version bump to 0.20.1
+
 commit c5e048d46c32c43172fb8d1c067e82587f916953
 Author: Søren Sandmann Pedersen <ssp@redhat.com>
 Date:   Wed Oct 27 16:51:40 2010 -0400
diff --git a/debian/changelog b/debian/changelog
index 3270af3..38c7f71 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+pixman (0.21.2-1) UNRELEASED; urgency=low
+
+  * New upstream release.
+
+ -- Cyril Brulebois <kibi@debian.org>  Wed, 17 Nov 2010 15:27:01 +0100
+
 pixman (0.20.0-1) experimental; urgency=low
 
   * New upstream release.

commit 4646c238589986499834b28ed903c366b5ba15ed
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date:   Tue Nov 16 16:43:26 2010 -0500

    Pre-release version bump

diff --git a/configure.ac b/configure.ac
index 050e4b0..77cd3f8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -54,7 +54,7 @@ AC_PREREQ([2.57])
 
 m4_define([pixman_major], 0)
 m4_define([pixman_minor], 21)
-m4_define([pixman_micro], 1)
+m4_define([pixman_micro], 2)
 
 m4_define([pixman_version],[pixman_major.pixman_minor.pixman_micro])
 

commit 536cf4dd3bd144ad1c65fc05f4883a31247a0f5d
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date:   Tue Nov 2 23:38:10 2010 -0400

    Generate {a,x}8r8g8b8, a8, 565 fetchers for nearest/affine images
    
    There are versions for all combinations of x8r8g8b8/a8r8g8b8 and
    pad/repeat/none/normal repeat modes. The bulk of each function is an
    inline function that takes a format and a repeat mode as parameters.

diff --git a/pixman/pixman-bits-image.c b/pixman/pixman-bits-image.c
index 2e83c82..ff2dde3 100644
--- a/pixman/pixman-bits-image.c
+++ b/pixman/pixman-bits-image.c
@@ -907,6 +907,77 @@ bits_image_fetch_bilinear_affine (pixman_image_t * image,
     }
 }
 
+static force_inline void
+bits_image_fetch_nearest_affine (pixman_image_t * image,
+				 int              offset,
+				 int              line,
+				 int              width,
+				 uint32_t *       buffer,
+				 const uint32_t * mask,
+				 
+				 convert_pixel_t	convert_pixel,
+				 pixman_format_code_t	format,
+				 pixman_repeat_t	repeat_mode)
+{
+    pixman_fixed_t x, y;
+    pixman_fixed_t ux, uy;
+    pixman_vector_t v;
+    bits_image_t *bits = &image->bits;
+    int i;
+
+    /* reference point is the center of the pixel */
+    v.vector[0] = pixman_int_to_fixed (offset) + pixman_fixed_1 / 2;
+    v.vector[1] = pixman_int_to_fixed (line) + pixman_fixed_1 / 2;
+    v.vector[2] = pixman_fixed_1;
+
+    if (!pixman_transform_point_3d (image->common.transform, &v))
+	return;
+
+    ux = image->common.transform->matrix[0][0];
+    uy = image->common.transform->matrix[1][0];
+
+    x = v.vector[0];
+    y = v.vector[1];
+
+    for (i = 0; i < width; ++i)
+    {
+	int width, height, x0, y0;
+	const uint8_t *row;
+
+	if (mask && !mask[i])
+	    goto next;
+	
+	width = image->bits.width;
+	height = image->bits.height;
+	x0 = pixman_fixed_to_int (x - pixman_fixed_e);
+	y0 = pixman_fixed_to_int (y - pixman_fixed_e);
+
+	if (repeat_mode == PIXMAN_REPEAT_NONE &&
+	    (y0 < 0 || y0 >= height || x0 < 0 || x0 >= width))
+	{
+	    buffer[i] = 0;
+	}
+	else
+	{
+	    uint32_t mask = PIXMAN_FORMAT_A (format)? 0 : 0xff000000;
+
+	    if (repeat_mode != PIXMAN_REPEAT_NONE)
+	    {
+		repeat (repeat_mode, width, &x0);
+		repeat (repeat_mode, height, &y0);
+	    }
+
+	    row = (uint8_t *)bits->bits + bits->rowstride * 4 * y0;
+
+	    buffer[i] = convert_pixel (row, x0) | mask;
+	}
+
+    next:
+	x += ux;
+	y += uy;
+    }
+}
+
 static force_inline uint32_t
 convert_a8r8g8b8 (const uint8_t *row, int x)
 {
@@ -940,29 +1011,51 @@ convert_r5g6b5 (const uint8_t *row, int x)
 					       uint32_t *       buffer,	\
 					       const uint32_t * mask)	\
     {									\
-	bits_image_fetch_bilinear_affine (image, offset, line, width, buffer, mask, \
+	bits_image_fetch_bilinear_affine (image, offset, line,		\
+					  width, buffer, mask,		\
 					  convert_ ## format,		\
 					  PIXMAN_ ## format,		\
 					  repeat_mode);			\
     }									\
     extern int no_such_variable
 
-MAKE_BILINEAR_FETCHER (pad_a8r8g8b8,     a8r8g8b8, PIXMAN_REPEAT_PAD);
-MAKE_BILINEAR_FETCHER (none_a8r8g8b8,    a8r8g8b8, PIXMAN_REPEAT_NONE);
-MAKE_BILINEAR_FETCHER (reflect_a8r8g8b8, a8r8g8b8, PIXMAN_REPEAT_REFLECT);
-MAKE_BILINEAR_FETCHER (normal_a8r8g8b8,  a8r8g8b8, PIXMAN_REPEAT_NORMAL);
-MAKE_BILINEAR_FETCHER (pad_x8r8g8b8,     x8r8g8b8, PIXMAN_REPEAT_PAD);
-MAKE_BILINEAR_FETCHER (none_x8r8g8b8,    x8r8g8b8, PIXMAN_REPEAT_NONE);
-MAKE_BILINEAR_FETCHER (reflect_x8r8g8b8, x8r8g8b8, PIXMAN_REPEAT_REFLECT);
-MAKE_BILINEAR_FETCHER (normal_x8r8g8b8,  x8r8g8b8, PIXMAN_REPEAT_NORMAL);
-MAKE_BILINEAR_FETCHER (pad_a8,           a8,       PIXMAN_REPEAT_PAD);
-MAKE_BILINEAR_FETCHER (none_a8,          a8,       PIXMAN_REPEAT_NONE);
-MAKE_BILINEAR_FETCHER (reflect_a8,	 a8,       PIXMAN_REPEAT_REFLECT);
-MAKE_BILINEAR_FETCHER (normal_a8,	 a8,       PIXMAN_REPEAT_NORMAL);
-MAKE_BILINEAR_FETCHER (pad_r5g6b5,       r5g6b5,   PIXMAN_REPEAT_PAD);
-MAKE_BILINEAR_FETCHER (none_r5g6b5,      r5g6b5,   PIXMAN_REPEAT_NONE);
-MAKE_BILINEAR_FETCHER (reflect_r5g6b5,   r5g6b5,   PIXMAN_REPEAT_REFLECT);
-MAKE_BILINEAR_FETCHER (normal_r5g6b5,    r5g6b5,   PIXMAN_REPEAT_NORMAL);
+#define MAKE_NEAREST_FETCHER(name, format, repeat_mode)			\
+    static void								\
+    bits_image_fetch_nearest_affine_ ## name (pixman_image_t *image,	\
+					      int              offset,	\
+					      int              line,	\
+					      int              width,	\
+					      uint32_t *       buffer,	\
+					      const uint32_t * mask)	\
+    {									\
+	bits_image_fetch_nearest_affine (image, offset, line,		\
+					 width, buffer, mask,		\
+					 convert_ ## format,		\
+					 PIXMAN_ ## format,		\
+					 repeat_mode);			\
+    }									\
+    extern int no_such_variable
+
+#define MAKE_FETCHERS(name, format, repeat_mode)			\
+    MAKE_NEAREST_FETCHER (name, format, repeat_mode);			\
+    MAKE_BILINEAR_FETCHER (name, format, repeat_mode);
+
+MAKE_FETCHERS (pad_a8r8g8b8,     a8r8g8b8, PIXMAN_REPEAT_PAD);
+MAKE_FETCHERS (none_a8r8g8b8,    a8r8g8b8, PIXMAN_REPEAT_NONE);
+MAKE_FETCHERS (reflect_a8r8g8b8, a8r8g8b8, PIXMAN_REPEAT_REFLECT);
+MAKE_FETCHERS (normal_a8r8g8b8,  a8r8g8b8, PIXMAN_REPEAT_NORMAL);
+MAKE_FETCHERS (pad_x8r8g8b8,     x8r8g8b8, PIXMAN_REPEAT_PAD);
+MAKE_FETCHERS (none_x8r8g8b8,    x8r8g8b8, PIXMAN_REPEAT_NONE);
+MAKE_FETCHERS (reflect_x8r8g8b8, x8r8g8b8, PIXMAN_REPEAT_REFLECT);
+MAKE_FETCHERS (normal_x8r8g8b8,  x8r8g8b8, PIXMAN_REPEAT_NORMAL);
+MAKE_FETCHERS (pad_a8,           a8,       PIXMAN_REPEAT_PAD);
+MAKE_FETCHERS (none_a8,          a8,       PIXMAN_REPEAT_NONE);
+MAKE_FETCHERS (reflect_a8,	 a8,       PIXMAN_REPEAT_REFLECT);
+MAKE_FETCHERS (normal_a8,	 a8,       PIXMAN_REPEAT_NORMAL);
+MAKE_FETCHERS (pad_r5g6b5,       r5g6b5,   PIXMAN_REPEAT_PAD);
+MAKE_FETCHERS (none_r5g6b5,      r5g6b5,   PIXMAN_REPEAT_NONE);
+MAKE_FETCHERS (reflect_r5g6b5,   r5g6b5,   PIXMAN_REPEAT_REFLECT);
+MAKE_FETCHERS (normal_r5g6b5,    r5g6b5,   PIXMAN_REPEAT_NORMAL);
 
 static void
 bits_image_fetch_solid_32 (pixman_image_t * image,
@@ -1176,6 +1269,13 @@ static const fetcher_info_t fetcher_info[] =
      FAST_PATH_AFFINE_TRANSFORM		|				\
      FAST_PATH_BILINEAR_FILTER)
 
+#define GENERAL_NEAREST_FLAGS						\
+    (FAST_PATH_NO_ALPHA_MAP		|				\
+     FAST_PATH_NO_ACCESSORS		|				\
+     FAST_PATH_HAS_TRANSFORM		|				\
+     FAST_PATH_AFFINE_TRANSFORM		|				\
+     FAST_PATH_NEAREST_FILTER)
+
 #define BILINEAR_AFFINE_FAST_PATH(name, format, repeat)			\
     { PIXMAN_ ## format,						\
       GENERAL_BILINEAR_FLAGS | FAST_PATH_ ## repeat ## _REPEAT,		\
@@ -1183,22 +1283,33 @@ static const fetcher_info_t fetcher_info[] =
       _pixman_image_get_scanline_generic_64				\
     },
 
-    BILINEAR_AFFINE_FAST_PATH (pad_a8r8g8b8, a8r8g8b8, PAD)
-    BILINEAR_AFFINE_FAST_PATH (none_a8r8g8b8, a8r8g8b8, NONE)
-    BILINEAR_AFFINE_FAST_PATH (reflect_a8r8g8b8, a8r8g8b8, REFLECT)
-    BILINEAR_AFFINE_FAST_PATH (normal_a8r8g8b8, a8r8g8b8, NORMAL)
-    BILINEAR_AFFINE_FAST_PATH (pad_x8r8g8b8, x8r8g8b8, PAD)
-    BILINEAR_AFFINE_FAST_PATH (none_x8r8g8b8, x8r8g8b8, NONE)
-    BILINEAR_AFFINE_FAST_PATH (reflect_x8r8g8b8, x8r8g8b8, REFLECT)
-    BILINEAR_AFFINE_FAST_PATH (normal_x8r8g8b8, x8r8g8b8, NORMAL)
-    BILINEAR_AFFINE_FAST_PATH (pad_a8, a8, PAD)
-    BILINEAR_AFFINE_FAST_PATH (none_a8, a8, NONE)
-    BILINEAR_AFFINE_FAST_PATH (reflect_a8, a8, REFLECT)
-    BILINEAR_AFFINE_FAST_PATH (normal_a8, a8, NORMAL)
-    BILINEAR_AFFINE_FAST_PATH (pad_r5g6b5, r5g6b5, PAD)
-    BILINEAR_AFFINE_FAST_PATH (none_r5g6b5, r5g6b5, NONE)
-    BILINEAR_AFFINE_FAST_PATH (reflect_r5g6b5, r5g6b5, REFLECT)
-    BILINEAR_AFFINE_FAST_PATH (normal_r5g6b5, r5g6b5, NORMAL)
+#define NEAREST_AFFINE_FAST_PATH(name, format, repeat)			\
+    { PIXMAN_ ## format,						\
+      GENERAL_NEAREST_FLAGS | FAST_PATH_ ## repeat ## _REPEAT,		\
+      bits_image_fetch_nearest_affine_ ## name,			\
+      _pixman_image_get_scanline_generic_64				\
+    },
+
+#define AFFINE_FAST_PATHS(name, format, repeat)				\
+    BILINEAR_AFFINE_FAST_PATH(name, format, repeat)			\
+    NEAREST_AFFINE_FAST_PATH(name, format, repeat)
+    
+    AFFINE_FAST_PATHS (pad_a8r8g8b8, a8r8g8b8, PAD)
+    AFFINE_FAST_PATHS (none_a8r8g8b8, a8r8g8b8, NONE)
+    AFFINE_FAST_PATHS (reflect_a8r8g8b8, a8r8g8b8, REFLECT)
+    AFFINE_FAST_PATHS (normal_a8r8g8b8, a8r8g8b8, NORMAL)
+    AFFINE_FAST_PATHS (pad_x8r8g8b8, x8r8g8b8, PAD)
+    AFFINE_FAST_PATHS (none_x8r8g8b8, x8r8g8b8, NONE)
+    AFFINE_FAST_PATHS (reflect_x8r8g8b8, x8r8g8b8, REFLECT)
+    AFFINE_FAST_PATHS (normal_x8r8g8b8, x8r8g8b8, NORMAL)
+    AFFINE_FAST_PATHS (pad_a8, a8, PAD)
+    AFFINE_FAST_PATHS (none_a8, a8, NONE)
+    AFFINE_FAST_PATHS (reflect_a8, a8, REFLECT)
+    AFFINE_FAST_PATHS (normal_a8, a8, NORMAL)
+    AFFINE_FAST_PATHS (pad_r5g6b5, r5g6b5, PAD)
+    AFFINE_FAST_PATHS (none_r5g6b5, r5g6b5, NONE)
+    AFFINE_FAST_PATHS (reflect_r5g6b5, r5g6b5, REFLECT)
+    AFFINE_FAST_PATHS (normal_r5g6b5, r5g6b5, NORMAL)
 
     /* Affine, no alpha */
     { PIXMAN_any,

commit da0176e8534e5b027818f6b695343d3e04130a93
Author: Andrea Canciani <ranma42@gmail.com>
Date:   Tue Nov 2 17:04:35 2010 +0100

    Improve conical gradients opacity check
    
    Conical gradients are completely opaque if all of their stops are
    opaque and the repeat mode is not 'none'.

diff --git a/pixman/pixman-image.c b/pixman/pixman-image.c
index e78b139..28dc066 100644
--- a/pixman/pixman-image.c
+++ b/pixman/pixman-image.c
@@ -413,6 +413,7 @@ compute_image_info (pixman_image_t *image)
 
 	/* Fall through */
 
+    case CONICAL:
     case LINEAR:
 	code = PIXMAN_unknown;
 

commit 151f2554fc9c098ff86b0fdc0d785aa3ff496328
Author: Andrea Canciani <ranma42@gmail.com>
Date:   Tue Nov 2 17:02:01 2010 +0100

    Fix opacity check
    
    Radial gradients are "conical", thus they can have some non-opaque
    parts even if all of their stops are completely opaque.
    
    To guarantee that a radial gradient is actually opaque, it needs to
    also have one of the two circles containing the other one. In this
    case when extrapolating, the whole plane is completely covered (as
    explained in the comment in pixman-radial-gradient.c).

diff --git a/pixman/pixman-image.c b/pixman/pixman-image.c
index c9420c3..e78b139 100644
--- a/pixman/pixman-image.c
+++ b/pixman/pixman-image.c
@@ -398,10 +398,24 @@ compute_image_info (pixman_image_t *image)
 	    flags &= ~FAST_PATH_NARROW_FORMAT;
 	break;
 
-    case LINEAR:
     case RADIAL:
 	code = PIXMAN_unknown;
 
+	/*
+	 * As explained in pixman-radial-gradient.c, every point of
+	 * the plane has a valid associated radius (and thus will be
+	 * colored) if and only if a is negative (i.e. one of the two
+	 * circles contains the other one).
+	 */
+
+        if (image->radial.a >= 0)
+	    break;
+
+	/* Fall through */
+
+    case LINEAR:
+	code = PIXMAN_unknown;
+
 	if (image->common.repeat != PIXMAN_REPEAT_NONE)
 	{
 	    int i;

commit 19ed415b74521ad5dcc7b6e3ed4bb644711c7bef
Author: Andrea Canciani <ranma42@gmail.com>
Date:   Sun Oct 31 16:59:45 2010 +0100

    Remove unused stop_range field

diff --git a/pixman/pixman-image.c b/pixman/pixman-image.c
index 636c076..c9420c3 100644
--- a/pixman/pixman-image.c
+++ b/pixman/pixman-image.c
@@ -47,8 +47,6 @@ _pixman_init_gradient (gradient_t *                  gradient,
 
     gradient->n_stops = n_stops;
 
-    gradient->stop_range = 0xffff;
-
     return TRUE;
 }
 
diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h
index b37d9c8..383748a 100644
--- a/pixman/pixman-private.h
+++ b/pixman/pixman-private.h
@@ -121,7 +121,6 @@ struct gradient
     image_common_t	    common;
     int                     n_stops;
     pixman_gradient_stop_t *stops;
-    int                     stop_range;
 };
 
 struct linear_gradient

commit d8fe87a6262ee661af8fb0d46bab223e4ab3d88e
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date:   Mon Oct 4 01:56:59 2010 +0300

    ARM: optimization for scaled src_0565_0565 with nearest filter
    
    The performance improvement is only in the ballpark of 5% when
    compared against C code built with a reasonably good compiler
    (gcc 4.5.1). But gcc 4.4 produces approximately 30% slower code
    here, so assembly optimization makes sense to avoid dependency
    on the compiler quality and/or optimization options.
    
    Benchmark from ARM11:
        == before ==
        op=1, src_fmt=10020565, dst_fmt=10020565, speed=34.86 MPix/s
    
        == after ==
        op=1, src_fmt=10020565, dst_fmt=10020565, speed=36.62 MPix/s
    
    Benchmark from ARM Cortex-A8:
        == before ==
        op=1, src_fmt=10020565, dst_fmt=10020565, speed=89.55 MPix/s
    
        == after ==
        op=1, src_fmt=10020565, dst_fmt=10020565, speed=94.91 MPix/s

diff --git a/pixman/pixman-arm-simd-asm.S b/pixman/pixman-arm-simd-asm.S
index a3d2d40..7567700 100644
--- a/pixman/pixman-arm-simd-asm.S
+++ b/pixman/pixman-arm-simd-asm.S
@@ -1,5 +1,6 @@
 /*
  * Copyright © 2008 Mozilla Corporation
+ * Copyright © 2010 Nokia Corporation
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -328,3 +329,72 @@ pixman_asm_function pixman_composite_over_n_8_8888_asm_armv6
 	pop	{r4, r5, r6, r7, r8, r9, r10, r11}
 	bx	lr
 .endfunc
+
+/*
+ * Note: This function is only using armv4t instructions (not even armv6),
+ *       but is scheduled for ARM Cortex-A8 pipeline. So it might need to
+ *       be split into a few variants, tuned for each microarchitecture.
+ *
+ * TODO: In order to get good performance on ARM9/ARM11 cores (which don't
+ * have efficient write combining), it needs to be changed to use 16-byte
+ * aligned writes using STM instruction.
+ */
+pixman_asm_function pixman_scaled_nearest_scanline_0565_0565_SRC_asm_armv6
+	W	.req	r0
+	DST	.req	r1
+	SRC	.req	r2
+	VX	.req	r3
+	UNIT_X	.req	ip
+	TMP1	.req	r4
+	TMP2	.req	r5
+	VXMASK	.req	r6
+
+	ldr	UNIT_X, [sp]
+	push	{r4, r5, r6, r7}
+	mvn	VXMASK, #1
+
+	/* define helper macro */
+	.macro	scale_2_pixels
+		ldrh	TMP1, [SRC, TMP1]
+		and	TMP2, VXMASK, VX, lsr #15
+		add	VX, VX, UNIT_X
+		strh	TMP1, [DST], #2
+
+		ldrh	TMP2, [SRC, TMP2]
+		and	TMP1, VXMASK, VX, lsr #15
+		add	VX, VX, UNIT_X
+		strh	TMP2, [DST], #2
+	.endm
+


Reply to: