pixman: Changes to 'debian-unstable'
CODING_STYLE | 216
COPYING | 39
ChangeLog | 4659 +++++
Makefile.am | 6
README | 2
RELEASING | 9
TODO | 2
configure.ac | 203
debian/README.source | 3
debian/changelog | 37
debian/control | 6
debian/libpixman-1-0.symbols | 14
debian/patches/pixman-arm-don-t-use-env-vars-to-get-hwcap-platform.patch | 52
debian/patches/series | 1
debian/rules | 18
pixman/Makefile.am | 103
pixman/Makefile.win32 | 57
pixman/combine.h.inc | 213
pixman/combine.inc | 1269 -
pixman/combine.pl | 81
pixman/make-combine.pl | 86
pixman/pixman-access.c | 3190 ++--
pixman/pixman-accessor.h | 40
pixman/pixman-arm-detect-win32.asm | 21
pixman/pixman-arm-neon.c | 2781 +++
pixman/pixman-arm-simd.c | 555
pixman/pixman-arm-simd.h | 94
pixman/pixman-bits-image.c | 772
pixman/pixman-combine.c.template | 2436 +++
pixman/pixman-combine.h.template | 226
pixman/pixman-compiler.h | 71
pixman/pixman-compose-accessors.c | 4
pixman/pixman-compose.c | 596
pixman/pixman-compute-region.c | 242
pixman/pixman-conical-gradient.c | 180
pixman/pixman-cpu.c | 585
pixman/pixman-edge-imp.h | 92
pixman/pixman-edge.c | 360
pixman/pixman-fast-path.c | 1440 +
pixman/pixman-general.c | 324
pixman/pixman-gradient-walker.c | 254
pixman/pixman-image.c | 740
pixman/pixman-implementation.c | 268
pixman/pixman-linear-gradient.c | 294
pixman/pixman-matrix.c | 1010 -
pixman/pixman-mmx.c | 3097 ++-
pixman/pixman-mmx.h | 320
pixman/pixman-pict.c | 2400 ---
pixman/pixman-private.h | 1269 -
pixman/pixman-radial-gradient.c | 368
pixman/pixman-region.c | 2521 +--
pixman/pixman-region16.c | 46
pixman/pixman-region32.c | 30
pixman/pixman-solid-fill.c | 91
pixman/pixman-source.c | 709
pixman/pixman-sse2.c | 7819 +++++-----
pixman/pixman-sse2.h | 358
pixman/pixman-timer.c | 20
pixman/pixman-transformed-accessors.c | 3
pixman/pixman-transformed.c | 615
pixman/pixman-trap.c | 416
pixman/pixman-utils.c | 1142 -
pixman/pixman-vmx.c | 1815 +-
pixman/pixman-vmx.h | 308
pixman/pixman-x64-mmx-emulation.h | 263
pixman/pixman.c | 543
pixman/pixman.h | 509
pixman/refactor | 478
pixman/solaris-hwcap.mapfile | 36
test/Makefile.am | 67
test/alpha-test.c | 117
test/blitters-test-bisect.rb | 43
test/blitters-test.c | 655
test/clip-in.c | 50
test/clip-test.c | 70
test/composite-test.c | 212
test/convolution-test.c | 47
test/fetch-test.c | 20
test/gradient-test.c | 102
test/oob-test.c | 101
test/region-test.c | 63
test/scaling-test-bisect.rb | 38
test/scaling-test.c | 474
test/screen-test.c | 44
test/trap-crasher.c | 27
test/trap-test.c | 49
test/utils.c | 113
test/utils.h | 6
test/window-test.c | 173
89 files changed, 33257 insertions(+), 18041 deletions(-)
New commits:
commit 770ccb54e745b078d30394d33f698666b001fdfe
Author: Julien Cristau <jcristau@debian.org>
Date: Mon Sep 28 18:13:08 2009 +0200
Prepare changelog for upload
diff --git a/debian/changelog b/debian/changelog
index 9e1b8a3..dc3c536 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,9 +1,9 @@
-pixman (0.16.2-1) UNRELEASED; urgency=low
+pixman (0.16.2-1) unstable; urgency=low
* New upstream release (closes: #546849).
* Upload to unstable.
- -- Julien Cristau <jcristau@debian.org> Mon, 28 Sep 2009 18:07:07 +0200
+ -- Julien Cristau <jcristau@debian.org> Mon, 28 Sep 2009 18:12:47 +0200
pixman (0.15.20-1) experimental; urgency=low
commit 37ac8c9885ad8be56e2256ecc8c35d1c514a06c1
Author: Julien Cristau <jcristau@debian.org>
Date: Mon Sep 28 18:07:55 2009 +0200
Bump changelogs
diff --git a/ChangeLog b/ChangeLog
index 2ad4769..1b088a9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,237 @@
+commit 601e4dc6fd78984701a231e48fabd1e1e3e23d38
+Author: Søren Sandmann Pedersen <sandmann@redhat.com>
+Date: Mon Sep 28 09:20:13 2009 -0400
+
+ Pre-release version bump
+
+commit b765dcb554e4328c8502433474a28af30c0bb7f3
+Author: Søren Sandmann Pedersen <sandmann@redhat.com>
+Date: Mon Sep 28 08:59:11 2009 -0400
+
+ Update CRC in blitters-test for the changes in 10bpc alpha handling
+
+commit 66f7581ccf8157777c9bfc0116858adb140ee4ca
+Author: Søren Sandmann Pedersen <sandmann@redhat.com>
+Date: Sat Sep 26 13:12:14 2009 -0400
+
+ Fix fetch-test for big-endian systems.
+
+ Data narrower than 32bpp should be stored in the correct
+ endian. Reported by Andrea Canciani.
+
+commit 485c1f54b4abb2e1677627b713e086b45ca63eea
+Author: Søren Sandmann Pedersen <sandmann@redhat.com>
+Date: Fri Sep 18 08:16:56 2009 -0400
+
+ Fix bug in blitters-test with BGRA formats.
+
+ When masking out the x bits, blitter-test would make the incorrect
+ assumption that the they were always in the topmost position. This is
+ not correct for formats of type PIXMAN_TYPE_BGRA.
+
+commit 8f5cca82aca953ee4d87a7d576ff67ddcab85b6a
+Author: Søren Sandmann Pedersen <sandmann@redhat.com>
+Date: Fri Sep 18 09:11:04 2009 -0400
+
+ Fix alpha handling for 10 bpc formats.
+
+ These generally extracted the 2 bits of alpha, then shifted them 62
+ bits and replicated across 16 bits. Then they were shifted another 48
+ bits, making the resulting alpha channel 0.
+
+commit 09a71a0dc0937264f456c246dc98830f942a6479
+Author: Søren Sandmann Pedersen <sandmann@redhat.com>
+Date: Thu Sep 24 05:22:33 2009 -0400
+
+ Return result from pixman_image_set_transform().
+
+ Previously it would always return TRUE, even when malloc() had failed.
+
+commit 8138f908aa10e5581f83ebfb5f53d81ad39437bd
+Author: Søren Sandmann Pedersen <sandmann@redhat.com>
+Date: Tue Sep 15 07:43:23 2009 -0400
+
+ Revert "Enable component alpha on solid masks."
+
+ For consistency we will probably want to allow component alpha to be
+ set on all masks at some point, but not in the stable branch, and this
+ commit only enabled it for solid images anyway.
+
+ This reverts commit 29e22cf38e8abc54b9dddbdeb3909d02866a82a0.
+
+commit 77627554bcc81f4aa3cb81f8158075aa6f20eca1
+Author: Søren Sandmann Pedersen <sandmann@redhat.com>
+Date: Thu Sep 10 21:33:24 2009 -0400
+
+ Fix off-by-one error in source_image_needs_out_of_bounds_workaround()
+
+ If extents->x2/y2 are equal to image->width/height, then the clip is
+ still inside the drawable, so no workaround is necessary.
+
+commit c31cd73a09616cdec9bd91800d9410ba1f8adf09
+Author: Søren Sandmann Pedersen <sandmann@redhat.com>
+Date: Mon Sep 14 18:48:32 2009 -0400
+
+ Remove optimization for 0xffffffff and 0xff the add_n_8888_8888_ca fast path
+
+ This is an ADD operation, not an OVER. Fixes bug 23934, reported by
+ Siarhei Siamashka.
+
+commit 8035df8bcb01c2df42b8adf8b96c7ac796f384cc
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Sun Aug 16 12:16:46 2009 +0100
+
+ Remove duplicated declaration
+
+ The pixman_tranform_pixman_f_transform() declaration is repeated 4 lines
+ down.
+
+commit 29e22cf38e8abc54b9dddbdeb3909d02866a82a0
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Sun Sep 13 16:26:29 2009 +0100
+
+ Enable component alpha on solid masks.
+
+commit 9fe2628702785e8db45593709c0aec54043a50e7
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Sun Sep 13 16:26:52 2009 +0100
+
+ [sse2] Bit-reversing typo: src != dst
+
+commit 2186bc89486f9f11161b0db280a869c6849c867e
+Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date: Fri Sep 4 14:14:00 2009 +0300
+
+ Change CFLAGS order for PPC and ARM configure tests
+
+ CFLAGS are always appended to the end of gcc options when compiling
+ sources in autotools based projects. Configure tests should do the
+ same. Otherwise build fails on PPC when using CFLAGS="-O2 -mno-altivec"
+ for example. Similar problem affects ARM.
+
+commit 15304e3cddd6568ba6d5d1d3030568c3db7b05cc
+Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date: Wed Sep 2 19:46:47 2009 +0300
+
+ ARM: Remove fallback to ARMv6 implementation from NEON delegate chain
+
+ This can help to fix build problems with '-mthumb' gcc option in CFLAGS.
+ ARMv6 optimized code can't be compiled for thumb (because of its inline
+ assembly) and gets automatically disabled in configure. Reference
+ to it from NEON optimized code resulted in linking problems.
+
+ Every ARMv6 optimized fast path function also has a better NEON
+ counterpart, so there is no need to fallback to ARMv6. Shorter
+ delegate chain should additionally result in a bit better performance.
+
+commit 61b616067c3e8b2ff84fbf57f479a90cc9fa5344
+Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi>
+Date: Mon Aug 31 23:02:53 2009 +0100
+
+ Default to optimised builds when using a Sun Studio compiler.
+
+ Autoconf's AC_PROG_CC sets the default CFLAGS to -O2 -g for
+ gcc and -g for every other compiler. This patch defaults
+ CFLAGS to the equivalent -O -g when we're using Sun Studio's cc
+ if the user or site admin hasn't already set CFLAGS.
+
+commit 20acda6fde8441e18aab33980a33b099a16063eb
+Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi>
+Date: Mon Aug 31 20:27:32 2009 +0100
+
+ Work around a Sun Studio 12 code generation bug involving _mm_set_epi32().
+
+ Calling a static function wrapper around _mm_set_epi32() when not
+ using optimisation causes Sun Studio 12's cc to emit a spurious
+ floating point load which confuses the assembler. Using a macro wrapper
+ rather than a function steps around the problem.
+
+commit e30c0037d44bf76a26182080be24c7037d7be5b5
+Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi>
+Date: Mon Aug 31 20:24:04 2009 +0100
+
+ Work around differing _mm_prefetch() prototypes on Solaris.
+
+ Sun Studio 12 expects the address to prefetch to be
+ a const char pointer rather than a __m128i pointer or
+ void pointer.
+
+commit 698b686d58c510e1b8a9183750d00cbd9ed504b2
+Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date: Fri Aug 28 22:34:21 2009 +0300
+
+ ARM: workaround for gcc bug in vshll_n_u8 intrinsic
+
+ Some versions of gcc (cs2009q1, 4.4.1) incorrectly reject
+ shift operand having value >= 8, claiming that it is out of
+ range. So inline assembly is used as a workaround.
+
+commit b02b644d7017f794be2296c6354e44fd119d2477
+Author: Søren Sandmann Pedersen <sandmann@redhat.com>
+Date: Wed Sep 2 16:09:32 2009 -0400
+
+ Set version number to 0.16.1
+
+commit d465f854b3d5f2ffcc122aebfbead2d64cca7169
+Author: Makoto Kato <m_kato@ga2.so-net.ne.jp>
+Date: Tue Sep 1 10:59:05 2009 +0900
+
+ Add CPU detection for VC++ x64
+
+ VC++ x64 has no inline assembler and x64 mode supports SSE2.
+ So, it is unnecessary to call cpuid.
+
+commit 57812465bf975e943e78d59dabbd5e6bb2ad87ef
+Author: Søren Sandmann Pedersen <sandmann@redhat.com>
+Date: Fri Aug 28 07:55:30 2009 -0400
+
+ Pre-release version bump
+
+commit 9e1a34a0d177e8c2381f419b0a04310da8cdde2b
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Fri Aug 28 06:31:06 2009 -0400
+
+ _pixman_run_fast_path: typo
+
+ This is one example of a compiler warning that was lost amit the build
+ noise.
+
+ The error here is that in a list of required conditions we used ';'
+ instead of '&&' with the result of continuing to use the fast-path
+ even if we had a wide mask.
+
+ Another error is that it was testing src, not mask as it should.
+
+commit 83d607cbf1d3852f91b52a427bee30fffc3029e7
+Author: Makoto Kato <m_kato@ga2.so-net.ne.jp>
+Date: Fri Aug 28 04:09:15 2009 -0400
+
+ Remove spurious spaces in pixman-x64-mmx-emulation.h
+
+commit ce966f4d8e8aa9a4465e2ab28666bae891194a72
+Author: Søren Sandmann Pedersen <sandmann@redhat.com>
+Date: Wed Aug 12 14:08:58 2009 -0400
+
+ Check if we have posix_memalign() in configure.ac. [23260, 23261]
+
+ Fall back to malloc() in blitters-test.c if we don't.
+
+commit 29c2ae4a0cf924cb011467687a4c43237fb2316c
+Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date: Wed Aug 12 20:22:24 2009 +0300
+
+ ARM: a fix to pass blitters-test for 'neon_composite_over_n_8_0565'
+
+ Inline assembly for handling <8 pixels width did not pass blitters-test.
+ Fortunately gcc has no problems compiling alternative implementation
+ which is using RVCT style intrinsics, so it can be used instead.
+
+commit ed4598f08a359346d14fe5b2bbb7b74c40332b18
+Author: Søren Sandmann Pedersen <sandmann@redhat.com>
+Date: Tue Aug 11 14:03:24 2009 -0400
+
+ Post-release version bump
+
commit bfdae053eaff528aa869bc05a0520ab22d540a08
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Aug 11 13:56:16 2009 -0400
diff --git a/debian/changelog b/debian/changelog
index 86a7ffb..9e1b8a3 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+pixman (0.16.2-1) UNRELEASED; urgency=low
+
+ * New upstream release (closes: #546849).
+ * Upload to unstable.
+
+ -- Julien Cristau <jcristau@debian.org> Mon, 28 Sep 2009 18:07:07 +0200
+
pixman (0.15.20-1) experimental; urgency=low
* New upstream release candidate.
commit 601e4dc6fd78984701a231e48fabd1e1e3e23d38
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Sep 28 09:20:13 2009 -0400
Pre-release version bump
diff --git a/configure.ac b/configure.ac
index fbc73f6..a1c6949 100644
--- a/configure.ac
+++ b/configure.ac
@@ -54,7 +54,7 @@ AC_PREREQ([2.57])
m4_define([pixman_major], 0)
m4_define([pixman_minor], 16)
-m4_define([pixman_micro], 1)
+m4_define([pixman_micro], 2)
m4_define([pixman_version],[pixman_major.pixman_minor.pixman_micro])
commit b765dcb554e4328c8502433474a28af30c0bb7f3
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Sep 28 08:59:11 2009 -0400
Update CRC in blitters-test for the changes in 10bpc alpha handling
diff --git a/test/blitters-test.c b/test/blitters-test.c
index 6e1c5de..ba9900a 100644
--- a/test/blitters-test.c
+++ b/test/blitters-test.c
@@ -640,7 +640,7 @@ main (int argc, char *argv[])
/* 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 == 0xFE1244BF)
+ if (crc == 0x06D8EDB6)
{
printf ("blitters test passed\n");
}
commit 66f7581ccf8157777c9bfc0116858adb140ee4ca
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Sep 26 13:12:14 2009 -0400
Fix fetch-test for big-endian systems.
Data narrower than 32bpp should be stored in the correct
endian. Reported by Andrea Canciani.
diff --git a/test/fetch-test.c b/test/fetch-test.c
index c41f1a6..6306a4c 100644
--- a/test/fetch-test.c
+++ b/test/fetch-test.c
@@ -2,6 +2,7 @@
#include <stdlib.h>
#include <stdio.h>
#include "pixman.h"
+#include <config.h>
#define SIZE 1024
@@ -34,8 +35,13 @@ testcase_t testcases[] = {
.format = PIXMAN_g1,
.width = 8, .height = 2,
.stride = 4,
+#ifdef WORDS_BIGENDIAN
+ .src = { 0xaa000000,
+ 0x55000000 },
+#else
.src = { 0x00000055,
0x000000aa },
+#endif
.dst = { 0x00ffffff, 0x00000000, 0x00ffffff, 0x00000000, 0x00ffffff, 0x00000000, 0x00ffffff, 0x00000000,
0x00000000, 0x00ffffff, 0x00000000, 0x00ffffff, 0x00000000, 0x00ffffff, 0x00000000, 0x00ffffff },
.indexed = &mono_pallete,
@@ -51,14 +57,24 @@ testcase_t testcases[] = {
0x00898989, 0x00ababab, 0x00cdcdcd, 0x00efefef, },
},
#endif
+ /* FIXME: make this work on big endian */
{
.format = PIXMAN_yv12,
.width = 8, .height = 2,
.stride = 8,
+#ifdef WORDS_BIGENDIAN
+ .src = { 0x00ff00ff, 0x00ff00ff,
+ 0xff00ff00, 0xff00ff00,
+ 0x80ff8000,
+ 0x800080ff
+ },
+#else
.src = { 0xff00ff00, 0xff00ff00,
0x00ff00ff, 0x00ff00ff,
0x0080ff80,
- 0xff800080},
+ 0xff800080
+ },
+#endif
.dst = {
0xff000000, 0xffffffff, 0xffb80000, 0xffffe113,
0xff000000, 0xffffffff, 0xff0023ee, 0xff4affff,
commit 485c1f54b4abb2e1677627b713e086b45ca63eea
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Sep 18 08:16:56 2009 -0400
Fix bug in blitters-test with BGRA formats.
When masking out the x bits, blitter-test would make the incorrect
assumption that the they were always in the topmost position. This is
not correct for formats of type PIXMAN_TYPE_BGRA.
diff --git a/test/blitters-test.c b/test/blitters-test.c
index 23de6c2..6e1c5de 100644
--- a/test/blitters-test.c
+++ b/test/blitters-test.c
@@ -314,6 +314,9 @@ free_random_image (uint32_t initcrc,
uint32_t *data = pixman_image_get_data (img);
uint32_t mask = (1 << PIXMAN_FORMAT_DEPTH (fmt)) - 1;
+ if (PIXMAN_FORMAT_TYPE (fmt) == PIXMAN_TYPE_BGRA)
+ mask <<= (PIXMAN_FORMAT_BPP (fmt) - PIXMAN_FORMAT_DEPTH (fmt));
+
for (i = 0; i < 32; i++)
mask |= mask << (i * PIXMAN_FORMAT_BPP (fmt));
commit 8f5cca82aca953ee4d87a7d576ff67ddcab85b6a
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Sep 18 09:11:04 2009 -0400
Fix alpha handling for 10 bpc formats.
These generally extracted the 2 bits of alpha, then shifted them 62
bits and replicated across 16 bits. Then they were shifted another 48
bits, making the resulting alpha channel 0.
diff --git a/pixman/pixman-access.c b/pixman/pixman-access.c
index 532aa2e..d9fd38c 100644
--- a/pixman/pixman-access.c
+++ b/pixman/pixman-access.c
@@ -230,7 +230,7 @@ fetch_scanline_a2r10g10b10 (pixman_image_t *image,
const uint32_t *pixel = bits + x;
const uint32_t *end = pixel + width;
uint64_t *buffer = (uint64_t *)b;
-
+
while (pixel < end)
{
uint32_t p = READ (image, pixel++);
@@ -238,16 +238,16 @@ fetch_scanline_a2r10g10b10 (pixman_image_t *image,
uint64_t r = (p >> 20) & 0x3ff;
uint64_t g = (p >> 10) & 0x3ff;
uint64_t b = p & 0x3ff;
-
+
r = r << 6 | r >> 4;
g = g << 6 | g >> 4;
b = b << 6 | b >> 4;
-
- a <<= 62;
+
+ a <<= 14;
a |= a >> 2;
a |= a >> 4;
a |= a >> 8;
-
+
*buffer++ = a << 48 | r << 32 | g << 16 | b;
}
}
@@ -309,11 +309,11 @@ fetch_scanline_a2b10g10r10 (pixman_image_t *image,
g = g << 6 | g >> 4;
b = b << 6 | b >> 4;
- a <<= 62;
+ a <<= 14;
a |= a >> 2;
a |= a >> 4;
a |= a >> 8;
-
+
*buffer++ = a << 48 | r << 32 | g << 16 | b;
}
}
@@ -1115,18 +1115,18 @@ fetch_scanline_yv12 (pixman_image_t *image,
{
int16_t y, u, v;
int32_t r, g, b;
-
+
y = y_line[x + i] - 16;
u = u_line[(x + i) >> 1] - 128;
v = v_line[(x + i) >> 1] - 128;
-
+
/* R = 1.164(Y - 16) + 1.596(V - 128) */
r = 0x012b27 * y + 0x019a2e * v;
/* G = 1.164(Y - 16) - 0.813(V - 128) - 0.391(U - 128) */
g = 0x012b27 * y - 0x00d0f2 * v - 0x00647e * u;
/* B = 1.164(Y - 16) + 2.018(U - 128) */
b = 0x012b27 * y + 0x0206a2 * u;
-
+
*buffer++ = 0xff000000 |
(r >= 0 ? r < 0x1000000 ? r & 0xff0000 : 0xff0000 : 0) |
(g >= 0 ? g < 0x1000000 ? (g >> 8) & 0x00ff00 : 0x00ff00 : 0) |
@@ -1148,16 +1148,16 @@ fetch_pixel_a2r10g10b10 (bits_image_t *image,
uint64_t r = (p >> 20) & 0x3ff;
uint64_t g = (p >> 10) & 0x3ff;
uint64_t b = p & 0x3ff;
-
+
r = r << 6 | r >> 4;
g = g << 6 | g >> 4;
b = b << 6 | b >> 4;
-
- a <<= 62;
+
+ a <<= 14;
a |= a >> 2;
a |= a >> 4;
a |= a >> 8;
-
+
return a << 48 | r << 32 | g << 16 | b;
}
@@ -1197,7 +1197,7 @@ fetch_pixel_a2b10g10r10 (bits_image_t *image,
g = g << 6 | g >> 4;
b = b << 6 | b >> 4;
- a <<= 62;
+ a <<= 14;
a |= a >> 2;
a |= a >> 4;
a |= a >> 8;
commit 09a71a0dc0937264f456c246dc98830f942a6479
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Sep 24 05:22:33 2009 -0400
Return result from pixman_image_set_transform().
Previously it would always return TRUE, even when malloc() had failed.
diff --git a/pixman/pixman-image.c b/pixman/pixman-image.c
index 5831953..bba5fd6 100644
--- a/pixman/pixman-image.c
+++ b/pixman/pixman-image.c
@@ -312,7 +312,7 @@ pixman_image_set_transform (pixman_image_t * image,
{
{ { pixman_fixed_1, 0, 0 },
{ 0, pixman_fixed_1, 0 },
- { 0, 0, pixman_fixed_1 }}
+ { 0, 0, pixman_fixed_1 } }
};
image_common_t *common = (image_common_t *)image;
@@ -342,10 +342,12 @@ pixman_image_set_transform (pixman_image_t * image,
memcpy (common->transform, transform, sizeof(pixman_transform_t));
+ result = TRUE;
+
out:
image_property_changed (image);
- return TRUE;
+ return result;
}
PIXMAN_EXPORT void
commit 8138f908aa10e5581f83ebfb5f53d81ad39437bd
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Sep 15 07:43:23 2009 -0400
Revert "Enable component alpha on solid masks."
For consistency we will probably want to allow component alpha to be
set on all masks at some point, but not in the stable branch, and this
commit only enabled it for solid images anyway.
This reverts commit 29e22cf38e8abc54b9dddbdeb3909d02866a82a0.
diff --git a/pixman/pixman-general.c b/pixman/pixman-general.c
index 5c40103..3ead3da 100644
--- a/pixman/pixman-general.c
+++ b/pixman/pixman-general.c
@@ -159,9 +159,9 @@ general_composite_rect (pixman_implementation_t *imp,
fetch_src &&
fetch_mask &&
mask &&
- mask->common.component_alpha &&
- (mask->common.type == SOLID ||
- (mask->common.type == BITS && PIXMAN_FORMAT_RGB (mask->bits.format)));
+ mask->common.type == BITS &&
+ mask->common.component_alpha &&
+ PIXMAN_FORMAT_RGB (mask->bits.format);
if (wide)
{
commit 77627554bcc81f4aa3cb81f8158075aa6f20eca1
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Sep 10 21:33:24 2009 -0400
Fix off-by-one error in source_image_needs_out_of_bounds_workaround()
If extents->x2/y2 are equal to image->width/height, then the clip is
still inside the drawable, so no workaround is necessary.
diff --git a/pixman/pixman-bits-image.c b/pixman/pixman-bits-image.c
index 6b80189..4e78ce1 100644
--- a/pixman/pixman-bits-image.c
+++ b/pixman/pixman-bits-image.c
@@ -612,14 +612,14 @@ source_image_needs_out_of_bounds_workaround (bits_image_t *image)
{
if (!image->common.client_clip)
{
- /* There is no client clip, so the drawable in question
- * is a window if the clip region extends beyond the
- * drawable geometry.
+ /* There is no client clip, so if the clip region extends beyond the
+ * drawable geometry, it must be because the X server generated the
+ * bogus clip region.
*/
const pixman_box32_t *extents = pixman_region32_extents (&image->common.clip_region);
- if (extents->x1 >= 0 && extents->x2 < image->width &&
- extents->y1 >= 0 && extents->y2 < image->height)
+ if (extents->x1 >= 0 && extents->x2 <= image->width &&
+ extents->y1 >= 0 && extents->y2 <= image->height)
{
return FALSE;
}
commit c31cd73a09616cdec9bd91800d9410ba1f8adf09
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Sep 14 18:48:32 2009 -0400
Remove optimization for 0xffffffff and 0xff the add_n_8888_8888_ca fast path
This is an ADD operation, not an OVER. Fixes bug 23934, reported by
Siarhei Siamashka.
diff --git a/pixman/pixman-fast-path.c b/pixman/pixman-fast-path.c
index 7f80578..5ab8d8c 100644
--- a/pixman/pixman-fast-path.c
+++ b/pixman/pixman-fast-path.c
@@ -389,15 +389,11 @@ fast_composite_add_n_8888_8888_ca (pixman_implementation_t *imp,
{
ma = *mask++;
- if (ma == 0xffffffff && srca == 0xff)
- {
- *dst = src;
- }
- else if (ma)
+ if (ma)
{
d = *dst;
s = src;
-
+
UN8x4_MUL_UN8x4_ADD_UN8x4 (s, ma, d);
*dst = s;
commit 8035df8bcb01c2df42b8adf8b96c7ac796f384cc
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Sun Aug 16 12:16:46 2009 +0100
Remove duplicated declaration
The pixman_tranform_pixman_f_transform() declaration is repeated 4 lines
down.
diff --git a/pixman/pixman.h b/pixman/pixman.h
index 969d427..5b90a0c 100644
--- a/pixman/pixman.h
+++ b/pixman/pixman.h
@@ -222,8 +222,6 @@ pixman_bool_t pixman_transform_from_pixman_f_transform (struct pixman_transform
const struct pixman_f_transform *ft);
void pixman_f_transform_from_pixman_transform (struct pixman_f_transform *ft,
const struct pixman_transform *t);
-pixman_bool_t pixman_transform_from_pixman_f_transform (struct pixman_transform *t,
- const struct pixman_f_transform *ft);
pixman_bool_t pixman_f_transform_invert (struct pixman_f_transform *dst,
const struct pixman_f_transform *src);
pixman_bool_t pixman_f_transform_point (const struct pixman_f_transform *t,
commit 29e22cf38e8abc54b9dddbdeb3909d02866a82a0
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Sun Sep 13 16:26:29 2009 +0100
Enable component alpha on solid masks.
diff --git a/pixman/pixman-general.c b/pixman/pixman-general.c
index 3ead3da..5c40103 100644
--- a/pixman/pixman-general.c
+++ b/pixman/pixman-general.c
@@ -159,9 +159,9 @@ general_composite_rect (pixman_implementation_t *imp,
fetch_src &&
fetch_mask &&
mask &&
- mask->common.type == BITS &&
- mask->common.component_alpha &&
- PIXMAN_FORMAT_RGB (mask->bits.format);
+ mask->common.component_alpha &&
+ (mask->common.type == SOLID ||
+ (mask->common.type == BITS && PIXMAN_FORMAT_RGB (mask->bits.format)));
if (wide)
{
commit 9fe2628702785e8db45593709c0aec54043a50e7
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Sun Sep 13 16:26:52 2009 +0100
[sse2] Bit-reversing typo: src != dst
diff --git a/pixman/pixman-sse2.c b/pixman/pixman-sse2.c
index a5fcf21..bb74882 100644
--- a/pixman/pixman-sse2.c
+++ b/pixman/pixman-sse2.c
@@ -5606,7 +5606,7 @@ static const pixman_fast_path_t sse2_fast_paths[] =
{ PIXMAN_OP_OVER, PIXMAN_x8r8g8b8, PIXMAN_a8, PIXMAN_x8r8g8b8, sse2_composite_over_x888_8_8888, 0 },
{ PIXMAN_OP_OVER, PIXMAN_x8r8g8b8, PIXMAN_a8, PIXMAN_a8r8g8b8, sse2_composite_over_x888_8_8888, 0 },
{ PIXMAN_OP_OVER, PIXMAN_x8b8g8r8, PIXMAN_a8, PIXMAN_x8b8g8r8, sse2_composite_over_x888_8_8888, 0 },
- { PIXMAN_OP_OVER, PIXMAN_x8b8g8r8, PIXMAN_a8, PIXMAN_a8r8g8b8, sse2_composite_over_x888_8_8888, 0 },
+ { PIXMAN_OP_OVER, PIXMAN_x8b8g8r8, PIXMAN_a8, PIXMAN_a8b8g8r8, sse2_composite_over_x888_8_8888, 0 },
#endif
{ PIXMAN_OP_OVER, PIXMAN_x8r8g8b8, PIXMAN_a8, PIXMAN_a8r8g8b8, sse2_composite_over_x888_n_8888, NEED_SOLID_MASK },
{ PIXMAN_OP_OVER, PIXMAN_x8r8g8b8, PIXMAN_a8, PIXMAN_x8r8g8b8, sse2_composite_over_x888_n_8888, NEED_SOLID_MASK },
commit 2186bc89486f9f11161b0db280a869c6849c867e
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Fri Sep 4 14:14:00 2009 +0300
Change CFLAGS order for PPC and ARM configure tests
CFLAGS are always appended to the end of gcc options when compiling
sources in autotools based projects. Configure tests should do the
same. Otherwise build fails on PPC when using CFLAGS="-O2 -mno-altivec"
for example. Similar problem affects ARM.
diff --git a/configure.ac b/configure.ac
index 061a380..fbc73f6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -318,7 +318,7 @@ fi
have_vmx_intrinsics=no
AC_MSG_CHECKING(whether to use VMX/Altivec intrinsics)
xserver_save_CFLAGS=$CFLAGS
-CFLAGS="$CFLAGS $VMX_CFLAGS"
+CFLAGS="$VMX_CFLAGS $CFLAGS"
AC_COMPILE_IFELSE([
#if defined(__GNUC__) && (__GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 4))
error "Need GCC >= 3.4 for sane altivec support"
@@ -362,7 +362,7 @@ ARM_SIMD_CFLAGS="-mcpu=arm1136j-s"
have_arm_simd=no
AC_MSG_CHECKING(whether to use ARM SIMD assembler)
xserver_save_CFLAGS=$CFLAGS
-CFLAGS="$CFLAGS $ARM_SIMD_CFLAGS"
+CFLAGS="$ARM_SIMD_CFLAGS $CFLAGS"
AC_COMPILE_IFELSE([
int main () {
asm("uqadd8 r1, r1, r2");
@@ -401,7 +401,7 @@ ARM_NEON_CFLAGS="-mfpu=neon -mcpu=cortex-a8"
have_arm_neon=no
AC_MSG_CHECKING(whether to use ARM NEON)
xserver_save_CFLAGS=$CFLAGS
-CFLAGS="$CFLAGS $ARM_NEON_CFLAGS"
+CFLAGS="$ARM_NEON_CFLAGS $CFLAGS"
AC_COMPILE_IFELSE([
#include <arm_neon.h>
int main () {
commit 15304e3cddd6568ba6d5d1d3030568c3db7b05cc
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Sep 2 19:46:47 2009 +0300
ARM: Remove fallback to ARMv6 implementation from NEON delegate chain
This can help to fix build problems with '-mthumb' gcc option in CFLAGS.
ARMv6 optimized code can't be compiled for thumb (because of its inline
assembly) and gets automatically disabled in configure. Reference
to it from NEON optimized code resulted in linking problems.
Every ARMv6 optimized fast path function also has a better NEON
counterpart, so there is no need to fallback to ARMv6. Shorter
delegate chain should additionally result in a bit better performance.
diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
index 3e7f566..8a2d72e 100644
--- a/pixman/pixman-arm-neon.c
+++ b/pixman/pixman-arm-neon.c
@@ -2767,8 +2767,8 @@ arm_neon_fill (pixman_implementation_t *imp,
pixman_implementation_t *
_pixman_implementation_create_arm_neon (void)
{
- pixman_implementation_t *simd = _pixman_implementation_create_arm_simd ();
- pixman_implementation_t *imp = _pixman_implementation_create (simd);
+ pixman_implementation_t *general = _pixman_implementation_create_fast_path ();
+ pixman_implementation_t *imp = _pixman_implementation_create (general);
imp->composite = arm_neon_composite;
#if 0 /* this code has some bugs */
commit 61b616067c3e8b2ff84fbf57f479a90cc9fa5344
Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi>
Date: Mon Aug 31 23:02:53 2009 +0100
Default to optimised builds when using a Sun Studio compiler.
Autoconf's AC_PROG_CC sets the default CFLAGS to -O2 -g for
gcc and -g for every other compiler. This patch defaults
CFLAGS to the equivalent -O -g when we're using Sun Studio's cc
if the user or site admin hasn't already set CFLAGS.
diff --git a/configure.ac b/configure.ac
index 02f8057..061a380 100644
--- a/configure.ac
+++ b/configure.ac
@@ -65,6 +65,8 @@ AM_CONFIG_HEADER(config.h)
AC_CANONICAL_HOST
+test_CFLAGS=${CFLAGS+set} # We may override autoconf default CFLAGS.
+
AC_PROG_CC
AC_PROG_LIBTOOL
AC_CHECK_FUNCS([getisax])
@@ -75,6 +77,16 @@ AC_C_INLINE
AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"])
AC_CHECK_DECL([__amd64], [AMD64_ABI="yes"], [AMD64_ABI="no"])
+# Default CFLAGS to -O -g rather than just the -g from AC_PROG_CC
+# if we're using Sun Studio and neither the user nor a config.site
+# has set CFLAGS.
+if test $SUNCC = yes && \
+ test "$test_CFLAGS" == "" && \
+ test "$CFLAGS" = "-g"
+then
+ CFLAGS="-O -g"
+fi
+
#
# We ignore pixman_major in the version here because the major version should
# always be encoded in the actual library name. Ie., the soname is:
commit 20acda6fde8441e18aab33980a33b099a16063eb
Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi>
Date: Mon Aug 31 20:27:32 2009 +0100
Work around a Sun Studio 12 code generation bug involving _mm_set_epi32().
Calling a static function wrapper around _mm_set_epi32() when not
using optimisation causes Sun Studio 12's cc to emit a spurious
floating point load which confuses the assembler. Using a macro wrapper
rather than a function steps around the problem.
diff --git a/pixman/pixman-sse2.c b/pixman/pixman-sse2.c
index 1d4f02b..a5fcf21 100644
--- a/pixman/pixman-sse2.c
+++ b/pixman/pixman-sse2.c
@@ -2628,12 +2628,18 @@ create_mask_2x32_64 (uint32_t mask0,
return _mm_set_pi32 (mask0, mask1);
}
+/* Work around a code generation bug in Sun Studio 12. */
+#if defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)
+# define create_mask_2x32_128(mask0, mask1) \
+ (_mm_set_epi32 ((mask0), (mask1), (mask0), (mask1)))
+#else
static force_inline __m128i
create_mask_2x32_128 (uint32_t mask0,
uint32_t mask1)
{
return _mm_set_epi32 (mask0, mask1, mask0, mask1);
}
+#endif
/* SSE2 code patch for fbcompose.c */
commit e30c0037d44bf76a26182080be24c7037d7be5b5
Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi>
Date: Mon Aug 31 20:24:04 2009 +0100
Work around differing _mm_prefetch() prototypes on Solaris.
Sun Studio 12 expects the address to prefetch to be
a const char pointer rather than a __m128i pointer or
void pointer.
diff --git a/pixman/pixman-sse2.c b/pixman/pixman-sse2.c
index 727ad42..1d4f02b 100644
--- a/pixman/pixman-sse2.c
+++ b/pixman/pixman-sse2.c
@@ -359,13 +359,13 @@ in_over_2x128 (__m128i* src_lo,
static force_inline void
cache_prefetch (__m128i* addr)
{
- _mm_prefetch (addr, _MM_HINT_T0);
+ _mm_prefetch ((void const*)addr, _MM_HINT_T0);
}
static force_inline void
cache_prefetch_next (__m128i* addr)
{
- _mm_prefetch (addr + 4, _MM_HINT_T0); /* 64 bytes ahead */
+ _mm_prefetch ((void const *)(addr + 4), _MM_HINT_T0); /* 64 bytes ahead */
}
/* load 4 pixels from a 16-byte boundary aligned address */
commit 698b686d58c510e1b8a9183750d00cbd9ed504b2
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Reply to: