aboutsummaryrefslogtreecommitdiff
path: root/pixman
diff options
context:
space:
mode:
Diffstat (limited to 'pixman')
-rw-r--r--pixman/configure70
-rw-r--r--pixman/configure.ac20
-rw-r--r--pixman/pixman/pixman-access.c30
-rw-r--r--pixman/pixman/pixman-arm-neon.c10
-rw-r--r--pixman/pixman/pixman-bits-image.c10
-rw-r--r--pixman/pixman/pixman-cpu.c2
-rw-r--r--pixman/pixman/pixman-fast-path.c8
-rw-r--r--pixman/pixman/pixman-image.c6
-rw-r--r--pixman/pixman/pixman-sse2.c12
-rw-r--r--pixman/pixman/pixman-version.h4
-rw-r--r--pixman/pixman/pixman.h2
-rw-r--r--pixman/test/blitters-test.c5
-rw-r--r--pixman/test/fetch-test.c18
13 files changed, 124 insertions, 73 deletions
diff --git a/pixman/configure b/pixman/configure
index df72bda48..10d8afece 100644
--- a/pixman/configure
+++ b/pixman/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.63 for pixman 0.16.0.
+# Generated by GNU Autoconf 2.63 for pixman 0.16.2.
#
# Report bugs to <"sandmann@daimi.au.dk">.
#
@@ -745,8 +745,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package.
PACKAGE_NAME='pixman'
PACKAGE_TARNAME='pixman'
-PACKAGE_VERSION='0.16.0'
-PACKAGE_STRING='pixman 0.16.0'
+PACKAGE_VERSION='0.16.2'
+PACKAGE_STRING='pixman 0.16.2'
PACKAGE_BUGREPORT='"sandmann@daimi.au.dk"'
# Factoring default headers for most tests.
@@ -1506,7 +1506,7 @@ if test "$ac_init_help" = "long"; then
# 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.16.0 to adapt to many kinds of systems.
+\`configure' configures pixman 0.16.2 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1576,7 +1576,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of pixman 0.16.0:";;
+ short | recursive ) echo "Configuration of pixman 0.16.2:";;
esac
cat <<\_ACEOF
@@ -1687,7 +1687,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-pixman configure 0.16.0
+pixman configure 0.16.2
generated by GNU Autoconf 2.63
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1701,7 +1701,7 @@ cat >config.log <<_ACEOF
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.16.0, which was
+It was created by pixman $as_me 0.16.2, which was
generated by GNU Autoconf 2.63. Invocation command line was
$ $0 $@
@@ -2417,7 +2417,7 @@ fi
# Define the identity of the package.
PACKAGE='pixman'
- VERSION='0.16.0'
+ VERSION='0.16.2'
cat >>confdefs.h <<_ACEOF
@@ -2647,6 +2647,8 @@ case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+test_CFLAGS=${CFLAGS+set} # We may override autoconf default CFLAGS.
+
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -4369,13 +4371,13 @@ if test "${lt_cv_nm_interface+set}" = set; then
else
lt_cv_nm_interface="BSD nm"
echo "int some_variable = 0;" > conftest.$ac_ext
- (eval echo "\"\$as_me:4372: $ac_compile\"" >&5)
+ (eval echo "\"\$as_me:4374: $ac_compile\"" >&5)
(eval "$ac_compile" 2>conftest.err)
cat conftest.err >&5
- (eval echo "\"\$as_me:4375: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+ (eval echo "\"\$as_me:4377: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
(eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
cat conftest.err >&5
- (eval echo "\"\$as_me:4378: output\"" >&5)
+ (eval echo "\"\$as_me:4380: output\"" >&5)
cat conftest.out >&5
if $GREP 'External.*some_variable' conftest.out > /dev/null; then
lt_cv_nm_interface="MS dumpbin"
@@ -5581,7 +5583,7 @@ ia64-*-hpux*)
;;
*-*-irix6*)
# Find out which ABI we are using.
- echo '#line 5584 "configure"' > conftest.$ac_ext
+ echo '#line 5586 "configure"' > conftest.$ac_ext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
@@ -7434,11 +7436,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:7437: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:7439: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:7441: \$? = $ac_status" >&5
+ echo "$as_me:7443: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -7773,11 +7775,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:7776: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:7778: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:7780: \$? = $ac_status" >&5
+ echo "$as_me:7782: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -7878,11 +7880,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:7881: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:7883: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:7885: \$? = $ac_status" >&5
+ echo "$as_me:7887: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -7933,11 +7935,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:7936: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:7938: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:7940: \$? = $ac_status" >&5
+ echo "$as_me:7942: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -10736,7 +10738,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 10739 "configure"
+#line 10741 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -10832,7 +10834,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 10835 "configure"
+#line 10837 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -11757,6 +11759,16 @@ else
fi
+# 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:
@@ -11767,13 +11779,13 @@ fi
-LT_VERSION_INFO="16:0:16"
+LT_VERSION_INFO="16:2:16"
PIXMAN_VERSION_MAJOR=0
PIXMAN_VERSION_MINOR=16
-PIXMAN_VERSION_MICRO=0
+PIXMAN_VERSION_MICRO=2
@@ -12209,7 +12221,7 @@ have_vmx_intrinsics=no
{ $as_echo "$as_me:$LINENO: checking whether to use VMX/Altivec intrinsics" >&5
$as_echo_n "checking whether to use VMX/Altivec intrinsics... " >&6; }
xserver_save_CFLAGS=$CFLAGS
-CFLAGS="$CFLAGS $VMX_CFLAGS"
+CFLAGS="$VMX_CFLAGS $CFLAGS"
cat >conftest.$ac_ext <<_ACEOF
#if defined(__GNUC__) && (__GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 4))
@@ -12298,7 +12310,7 @@ have_arm_simd=no
{ $as_echo "$as_me:$LINENO: checking whether to use ARM SIMD assembler" >&5
$as_echo_n "checking whether to use ARM SIMD assembler... " >&6; }
xserver_save_CFLAGS=$CFLAGS
-CFLAGS="$CFLAGS $ARM_SIMD_CFLAGS"
+CFLAGS="$ARM_SIMD_CFLAGS $CFLAGS"
cat >conftest.$ac_ext <<_ACEOF
int main () {
@@ -12382,7 +12394,7 @@ have_arm_neon=no
{ $as_echo "$as_me:$LINENO: checking whether to use ARM NEON" >&5
$as_echo_n "checking whether to use ARM NEON... " >&6; }
xserver_save_CFLAGS=$CFLAGS
-CFLAGS="$CFLAGS $ARM_NEON_CFLAGS"
+CFLAGS="$ARM_NEON_CFLAGS $CFLAGS"
cat >conftest.$ac_ext <<_ACEOF
#include <arm_neon.h>
@@ -13404,7 +13416,7 @@ exec 6>&1
# 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.16.0, which was
+This file was extended by pixman $as_me 0.16.2, which was
generated by GNU Autoconf 2.63. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -13467,7 +13479,7 @@ Report bugs to <bug-autoconf@gnu.org>."
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_version="\\
-pixman config.status 0.16.0
+pixman config.status 0.16.2
configured by $0, generated by GNU Autoconf 2.63,
with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
diff --git a/pixman/configure.ac b/pixman/configure.ac
index 937fae787..a1c6949e9 100644
--- a/pixman/configure.ac
+++ b/pixman/configure.ac
@@ -54,7 +54,7 @@ AC_PREREQ([2.57])
m4_define([pixman_major], 0)
m4_define([pixman_minor], 16)
-m4_define([pixman_micro], 0)
+m4_define([pixman_micro], 2)
m4_define([pixman_version],[pixman_major.pixman_minor.pixman_micro])
@@ -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:
@@ -306,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"
@@ -350,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");
@@ -389,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 () {
diff --git a/pixman/pixman/pixman-access.c b/pixman/pixman/pixman-access.c
index 532aa2ef7..d9fd38c15 100644
--- a/pixman/pixman/pixman-access.c
+++ b/pixman/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;
diff --git a/pixman/pixman/pixman-arm-neon.c b/pixman/pixman/pixman-arm-neon.c
index 4125d1b0c..8a2d72ea3 100644
--- a/pixman/pixman/pixman-arm-neon.c
+++ b/pixman/pixman/pixman-arm-neon.c
@@ -64,6 +64,12 @@ unpack0565 (uint16x8_t rgb)
return res;
}
+#ifdef USE_GCC_INLINE_ASM
+/* Some versions of gcc have problems with vshll_n_u8 intrinsic (Bug 23576) */
+#define vshll_n_u8(a, n) ({ uint16x8_t r; \
+ asm ("vshll.u8 %q0, %P1, %2\n" : "=w" (r) : "w" (a), "i" (n)); r; })
+#endif
+
static force_inline uint16x8_t
pack0565 (uint8x8x4_t s)
{
@@ -2761,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 */
diff --git a/pixman/pixman/pixman-bits-image.c b/pixman/pixman/pixman-bits-image.c
index 6b8018985..4e78ce107 100644
--- a/pixman/pixman/pixman-bits-image.c
+++ b/pixman/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;
}
diff --git a/pixman/pixman/pixman-cpu.c b/pixman/pixman/pixman-cpu.c
index a2a7b8a1a..5d5469bb8 100644
--- a/pixman/pixman/pixman-cpu.c
+++ b/pixman/pixman/pixman-cpu.c
@@ -325,7 +325,7 @@ pixman_have_arm_neon (void)
* that would lead to SIGILL instructions on old CPUs that don't have
* it.
*/
-#if !defined(__amd64__) && !defined(__x86_64__)
+#if !defined(__amd64__) && !defined(__x86_64__) && !defined(_M_AMD64)
#ifdef HAVE_GETISAX
#include <sys/auxv.h>
diff --git a/pixman/pixman/pixman-fast-path.c b/pixman/pixman/pixman-fast-path.c
index 7f805780f..5ab8d8c99 100644
--- a/pixman/pixman/pixman-fast-path.c
+++ b/pixman/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;
diff --git a/pixman/pixman/pixman-image.c b/pixman/pixman/pixman-image.c
index 583195377..bba5fd68c 100644
--- a/pixman/pixman/pixman-image.c
+++ b/pixman/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
diff --git a/pixman/pixman/pixman-sse2.c b/pixman/pixman/pixman-sse2.c
index 727ad42ec..bb74882b2 100644
--- a/pixman/pixman/pixman-sse2.c
+++ b/pixman/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 */
@@ -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 */
@@ -5600,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 },
diff --git a/pixman/pixman/pixman-version.h b/pixman/pixman/pixman-version.h
index 65df97052..79d74fed4 100644
--- a/pixman/pixman/pixman-version.h
+++ b/pixman/pixman/pixman-version.h
@@ -33,9 +33,9 @@
#define PIXMAN_VERSION_MAJOR 0
#define PIXMAN_VERSION_MINOR 16
-#define PIXMAN_VERSION_MICRO 0
+#define PIXMAN_VERSION_MICRO 2
-#define PIXMAN_VERSION_STRING "0.16.0"
+#define PIXMAN_VERSION_STRING "0.16.2"
#define PIXMAN_VERSION_ENCODE(major, minor, micro) ( \
((major) * 10000) \
diff --git a/pixman/pixman/pixman.h b/pixman/pixman/pixman.h
index 969d42702..5b90a0c8d 100644
--- a/pixman/pixman/pixman.h
+++ b/pixman/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,
diff --git a/pixman/test/blitters-test.c b/pixman/test/blitters-test.c
index 23de6c2f5..ba9900a79 100644
--- a/pixman/test/blitters-test.c
+++ b/pixman/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));
@@ -637,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");
}
diff --git a/pixman/test/fetch-test.c b/pixman/test/fetch-test.c
index c41f1a63e..6306a4c42 100644
--- a/pixman/test/fetch-test.c
+++ b/pixman/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,