Commit Graph

156 Commits

Author SHA1 Message Date
Søren Sandmann Pedersen
4646c23858 Pre-release version bump 2010-11-16 16:43:26 -05:00
Siarhei Siamashka
fed4a2fde5 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
2010-11-05 16:02:28 +02:00
Siarhei Siamashka
56748ea9a6 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
2010-11-02 01:36:37 +02:00
Søren Sandmann Pedersen
c993cd9614 Version bump 0.21.1.
The previous bump to 0.20.1 was a mistake; it belongs on the 0.20 branch.
2010-10-27 17:21:06 -04:00
Søren Sandmann Pedersen
d890b684f6 Post-release version bump to 0.20.1 2010-10-27 16:58:29 -04:00
Søren Sandmann Pedersen
c5e048d46c Pre-release version bump to 0.20.0 2010-10-27 16:51:40 -04:00
Scott McCreary
6a6d9758af Added check to find pthread on Haiku. 2010-10-27 16:49:02 -04:00
Søren Sandmann Pedersen
1c23142efa Post-release version bump to 0.19.7 2010-10-20 16:31:57 -04:00
Søren Sandmann Pedersen
d105134015 Pre-release version bump to 0.19.6 2010-10-20 16:25:55 -04:00
Søren Sandmann Pedersen
edd1733966 Post-release version bump to 0.19.5 2010-09-21 10:18:44 -04:00
Søren Sandmann Pedersen
e5b3a6e710 Pre-release version bump to 0.19.4 2010-09-21 10:11:34 -04:00
Dmitri Vorobiev
cab3261c0d Add gettime() routine to test utils
Impending benchmark code will need a function to get current time
in seconds, and this patch introduces such routine. We try to use
the POSIX gettimeofday() function when available, and fall back to
clock() when not.
2010-09-21 08:50:17 -04:00
Tor Lillqvist
3411f9399c Support __thread on MINGW 4.5
By the way, it seems that with gcc 4.5.0 from mingw.org, __thread, sse
and mmx work fine.

I added the below to pixman 0.18 and as far as I can see, it works.
make check reports no problems. (Earlier I had to use --disable-mmx
and --disable-sse2.) Also gtk-demo and gimp run fine.

(Also a change to get rid of the warnings about -fvisibility being ignored.)
2010-09-21 08:31:08 -04:00
Søren Sandmann Pedersen
dc9fe269ea Add fence_malloc() and fence_free().
These variants of malloc() and free() try to surround the allocated
memory with protected pages so that out-of-bounds accessess will cause
a segmentation fault.

If mprotect() and getpagesize() are not available, these functions are
simply equivalent to malloc() and free().
2010-09-21 08:28:55 -04:00
Søren Sandmann Pedersen
5b99710042 Be more paranoid about checking for GTK+
From time to time people run into issues where the configure script
detects GTK+ when it is either not installed, or not functional due to
a missing pixman. Most recently:

  https://bugs.freedesktop.org/show_bug.cgi?id=29736

This patch makes the configure script more paranoid by

- always using PKG_CHECK_MODULES and not PKG_CHECK_EXISTS, since it
seems PKG_CHECK_EXISTS will sometimes return true even if a dependency
of GTK+, such as pixman-1, is missing.

- explicitly checking that pixman-1 is installed before enabling GTK+.

Cc: my.somewhat.lengthy.loginname@gmail.com
2010-08-24 08:12:20 -04:00
Søren Sandmann Pedersen
5ff359b8a0 Post-release version bump to 0.19.3 2010-08-21 06:39:44 -04:00
Søren Sandmann Pedersen
39308ed3b0 Pre-release version bump to 0.19.2 2010-08-21 06:33:19 -04:00
Søren Sandmann Pedersen
9fe7d32c4b Add alpha-loop test program
This tests what happens if you attempt to make an image with an alpha
map that has the image as its alpha map. This results in an infinite
loop in _pixman_image_validate(), so the test sets up a SIGALRM to
exit if it runs for more than five seconds.
2010-08-15 21:57:18 -04:00
M Joonas Pihlaja
9399b1a5af Fix thinko in configure.ac's macro to test linking.
Copy-paste carnage.  Renames save_{cflags,libs,ldflags} to
save_{CFLAGS,LIBS,LDFLAGS}.
2010-07-21 23:52:23 +03:00
M Joonas Pihlaja
1d9c6fa623 Check for specific flags by actually trying to compile and link.
Instead of relying on preprocessor version checks to see if a
some compiler flags are supported, actually try to compile and
link a test program with the flags.
2010-07-21 23:52:23 +03:00
M Joonas Pihlaja
d95ae70604 Check that the OpenMP pragmas don't cause link errors.
This patch adds extra guards around our use of
OpenMP pragmas and checks that the pragmas won't
cause link errors.  This fixes the build on
Tru64 and Solaris with the native compilers and clang.
2010-07-21 23:52:23 +03:00
M Joonas Pihlaja
eb247ac377 Don't trust OpenBSD's gcc to produce working code for __thread.
The gcc on OpenBSD 4.5 to 4.7 at least produces bad code for __thread,
without as much as a warning.

See PR #6410 "Using __thread TLS variables compiles ok but segfault at runtime."

http://cvs.openbsd.org/cgi-bin/query-pr-wrapper?full=yes&numbers=6410
2010-07-21 23:52:22 +03:00
M Joonas Pihlaja
dbf35f1f27 Try harder to find suitable flags for pthreads.
The flags -D_REENTRANT -lpthread work on more systems than
does -pthread unfortunately, so give that a go too.
2010-07-21 23:52:22 +03:00
Siarhei Siamashka
cfc4e38852 test: added OpenMP support for better utilization of multiple CPU cores
Some of the tests are quite heavy CPU users and may benefit from
using multiple CPU cores, so the programs from 'test' directory
are now built with OpenMP support. OpenMP is easy to use, portable
and also takes care of making a decision about how many threads
to spawn.
2010-05-13 21:04:55 +03:00
Søren Sandmann Pedersen
582fa58bba Don't use __thread on MinGW.
It is apparently broken. See this:

http://mingw-users.1079350.n2.nabble.com/gcc-4-4-multi-threaded-exception-handling-thread-specifier-not-working-td3440749.html

We'll need to support thread local storage on MinGW32 some other way.

Cc: tml@iki.fi
2010-05-03 11:12:24 +03:00
Søren Sandmann Pedersen
0345c343e5 Post-release version bump to 0.19.1 2010-04-01 06:21:21 -04:00
Søren Sandmann Pedersen
e9dc568d6f Pre-release version bump to 0.18.0 2010-04-01 05:23:31 -04:00
Søren Sandmann Pedersen
c0f8d417b5 Post-release version bump to 0.17.15 2010-03-23 17:25:54 -04:00
Søren Sandmann Pedersen
b35f0b0158 Pre-release version bump to 0.17.14 2010-03-23 16:52:02 -04:00
Siarhei Siamashka
3ef203331f ARM: SIMD optimizations moved to a separate .S file
This should be the last step in providing full armv4t compatibility
with CPU features runtime autodetection in pixman.
2010-03-22 21:56:17 +02:00
Siarhei Siamashka
68d8d83223 ARM: Use '.object_arch' directive in NEON assembly file
This can be used to override the architecture recorded in the EABI object
attribute section. We set a minimum arch to 'armv4'. Binutils documentation
recommends to use this directive with the code performing runtime detection
of CPU features.

Additionally NEON/VFP EABI attributes are suppressed. And the instruction
set to use is explicitly set to '.arm'.

Configure test for NEON support is also updated to include a bunch of
these new directives (if any of these is unsupported by the assembler,
it is better to fail configure test than to fail library build).

All these changes are required to fix SIGILL problem on armv4t, reported in
http://lists.freedesktop.org/archives/pixman/2010-March/000123.html
2010-03-22 12:12:03 +02:00
Søren Sandmann Pedersen
50713d9d0d Post-release version bump to 0.17.13 2010-03-17 15:12:06 -04:00
Søren Sandmann Pedersen
fb68d6c14d Pre-release version bump to 0.17.12 2010-03-17 13:46:44 -04:00
Søren Sandmann Pedersen
6532f8488a Fix contact address in configure.ac 2010-03-16 14:58:18 -04:00
Søren Sandmann Pedersen
6b9c548200 Add checks for various types of thread local storage.
OS X does not support __thread, so we have to check for it before
using it.  It does however support pthread_get/setspecific(), so if we
don't have __thread, check if those are available.
2010-03-16 12:01:51 -04:00
Loïc Minier
18f0de452d ARM: SIMD: Try without any CFLAGS before forcing -mcpu=
http://bugs.launchpad.net/bugs/535183
2010-03-14 13:15:34 +02:00
Søren Sandmann Pedersen
84b009ae9f Post-release version bump to 0.17.11 2010-03-05 20:40:41 -05:00
Søren Sandmann Pedersen
14fd287efb Pre-release version bump to 0.17.10 2010-03-05 20:06:08 -05:00
Søren Sandmann Pedersen
7392a350f2 Post-release version bump 2010-02-24 22:02:13 -05:00
Søren Sandmann Pedersen
4d1c216af3 Pre-release version bump 2010-02-24 21:52:30 -05:00
Søren Sandmann Pedersen
d7e281e0a1 Post-release version bump 2010-02-13 18:23:34 -05:00
Søren Sandmann Pedersen
9bcadc3408 Pre-release version bump 2010-02-13 18:12:32 -05:00
Søren Sandmann Pedersen
8fce7b18f3 Post-release version bump 2010-01-17 19:34:27 -05:00
Søren Sandmann Pedersen
23e1ba3c06 Pre-release version bump 2010-01-17 18:56:11 -05:00
Benjamin Otte
3fba7dc6fa Make test program not throw warnings about undefined variables 2009-12-04 15:04:24 +01:00
Søren Sandmann Pedersen
c97b1e803f Post-release version bump 2009-11-20 12:02:50 +01:00
Søren Sandmann Pedersen
5a7597f818 Pre-release version bump 2009-11-20 11:55:40 +01:00
Siarhei Siamashka
bcb4bc7932 ARM: introduction of the new framework for NEON fast path optimizations
GNU assembler and its macro preprocessor is now used to generate
NEON optimized functions from a common template. This automatically
takes care of nuisances like ensuring optimal alignment, dealing with
leading/trailing pixels, doing prefetch, etc.

Implementations for a lot of compositing functions are also added,
but not enabled.
2009-11-11 18:12:56 +02:00
Søren Sandmann Pedersen
b8898d77d0 Define PIXMAN_USE_INTERNAL_API in pixman-private.h
Instead of mucking around with CFLAGS in configure.ac, preventing
users from setting their own CFLAGS, just define the
PIXMAN_USE_INTERNAL_API and PIXMAN_DISABLE_DEPRECATED in
pixman-private.h
2009-11-07 14:47:22 -05:00
André Tupinambá
88323c5abe Speed up bilinear interpolation.
Speed up bilinear interpolation by processing more than one component
at a time on 64 bit architectures, and by precomputing the dist{ixiy}
products on 32 bit architectures.

Previously bilinear interpolation for one pixel would take 24
multiplications. With this improvement it takes 12 on 64 bit, and 20
on 32 bit.

This is a small but consistent speedup on the swfdec-youtube
benchmark:

[ # ]  backend                         test   min(s) median(s) stddev. count
Before:
[  0]    image               swfdec-youtube   18.010   18.020   0.09%    4/5

After:
[  0]    image               swfdec-youtube   17.488   17.584   0.22%    5/6

Signed-off-by: Søren Sandmann Pedersen <sandmann@redhat.com>
2009-10-26 13:04:21 -04:00