-
10a057e2
by Matt Turner at 2020-04-19T15:01:30-07:00
Post-release version bump to 0.40.1
Signed-off-by: Matt Turner <mattst88@gmail.com>
-
3b1fefda
by Michael Forney at 2020-04-26T13:46:43-07:00
Prevent empty top-level declaration
The expansion of PIXMAN_DEFINE_THREAD_LOCAL(...) may end in a
function definition, so the following semicolon is considered an
empty top-level declaration, which is not allowed in ISO C.
Reviewed-by: Matt Turner <mattst88@gmail.com>
-
c2fe1568
by Tom Stellard at 2020-05-11T22:33:49+00:00
Add -ftrapping-math to default cflags
This should resolve https://gitlab.freedesktop.org/pixman/pixman/-/issues/22
and make the tests pass with clang.
-ftrapping-math is already the default[1] for gcc, so this should not change
behavior when compiling with gcc. However, clang defaults[2] to -fno-trapping-math,
so -ftrapping-math is needed to avoid floating-point expceptions when running the
combiner and stress tests.
The root causes of this issue is that that pixman-combine-float.c guards floating-point
division operations with a FLOAT_IS_ZERO check e.g.
if (FLOAT_IS_ZERO (sa))
f = 1.0f;
else
f = CLAMP (da / sa);
With -fno-trapping-math, the compiler assumes that division will never trap, so it may
re-order the division and the guard and execute the division first. In most cases,
this would not be an issue, because floating-point exceptions are ignored. However,
these tests call enable_divbyzero_exceptions() which causes the SIGFPE signal to
be sent to the program when a divide by zero exception is raised.
[1] https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
[2] https://clang.llvm.org/docs/UsersManual.html#controlling-floating-point-behavior
-
0ba6cbe1
by Tim-Philipp Müller at 2020-05-30T11:34:26+01:00
Update README a little
- bugzilla -> gitlab
- convert links to https
- suggest issues and patches be filed via gitlab
-
15e06686
by Tim-Philipp Müller at 2020-06-02T01:15:33+01:00
meson: add cpu-features-path option for Android
Add option to include cpu-features.[ch] from a given path
into the build for platforms that don't provide this out
of the box. This is needed on Android.
Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
-
606f5c15
by Tim-Philipp Müller at 2020-06-02T02:30:39+00:00
meson: add option to skip building of tests and demos
Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
-
9b49f4e0
by Dylan Baker at 2020-06-18T14:21:09-07:00
meson: remove pixman dependency
AFAICT from the git history, what happened is that the gtk demos rely on
gtk being built with pixman support. pkg-config isn't really expressive
enough to have that information, so the solution that was come up with
was to search for pixman as well as gtk+ and hope that pixman being
installed was.
This isn't actually used anywhere in the meson build anyway, and it's
causing problems for projects that want to use pixman as a supproject
(there's a port of cairo underway that's hitting this), because it
confuses meson.
-
d93ec571
by Érico Rolim at 2020-10-22T20:43:26-03:00
meson: update option descriptions.
- gtk is only used in demos
- libpng is only used in tests
- openmp is only used in tests (in the standard build)
-
e93eaff5
by Jonathan Kew at 2021-05-07T09:37:28-04:00
Avoid out-of-bounds read when accessing individual bytes from mask.
The important changes here are a handful of places where we replace
memcpy(&m, mask++, sizeof(uint32_t));
or similar code with
uint8_t m = *mask++;
because we're only supposed to be reading a single byte from *mask,
and accessing a 32-bit value may read out of bounds (besides that
it reads values we don't actually want; whether this matters would
depend exactly how the value in m is subsequently used).
I've also changed a bunch of other places to use this same pattern
(a local 8-bit variable) when reading individual bytes from the mask;
the code was inconsistent about this, sometimes casting the byte to
a uint32_t instead. This makes no actual difference, it just seemed
better to use a consistent pattern throughout the file.
-
4251202d
by pkubaj at 2021-05-07T15:58:56+00:00
Fix AltiVec detection on FreeBSD.
-
aaf59b03
by Heiko Lewin at 2021-07-21T14:50:52+00:00
Fix signed-unsigned semantics in reduce_32
-
5f5e752f
by Manuel Stoeckl at 2021-08-09T21:43:58-04:00
Fix masked pixel fetching with wide format
In __bits_image_fetch_affine_no_alpha and __bits_image_fetch_general,
when `wide` is true, the mask is actually an array of argb_t instead
of the array of uint32_t it was cast to, and the access to `mask[i]`
does not correctly detect when the pixel is nontrivial. The code now
uses a check appropriate for argb_t when `wide` is true.
One caveat: this new check only skips entries when the mask pixel data
is binary all zero; this misses cases like `-0.f` which would be caught
by the FLOAT_IS_ZERO macro. As the mask check only appears to be a
performance optimization to avoid loading inconsequential pixels, it
erring on the side of loading more pixels is safe.
Signed-off-by: Manuel Stoeckl <code@mstoeckl.com>
-
e0d4403e
by Alex Richardson at 2021-09-17T16:03:48+00:00
Fix -Wincompatible-function-pointer-types warning
Adding const to the return type does nothing and means that the function
pointer types do not match exactly:
error: incompatible function pointer types passing 'const float (int, int)' to parameter of type 'dither_factor_t' (aka 'float (*)(int, int)')
-
bd4e7a9b
by Nirbheek Chauhan at 2021-09-17T16:08:04+00:00
tests: Fix undefined symbol build error on macOS
prng_state and prng_state_data are getting classified as a "Common
symbol" by the compiler due to the convoluted way in which it is
`#include`-ed in various test sources, and that's not read as a valid
symbol by the linker later.
Initializing the symbol clarifies it to the compiler that this
specific declaration is the canonical location for this variable, and
that it's not a "Common symbol".
Fixes https://gitlab.freedesktop.org/pixman/pixman/-/issues/42
-
36001032
by Simon Ser at 2021-09-17T16:22:51+00:00
Constify region APIs
This allows callers to pass around const Pixman region in their
APIs, improving type safety and documentation.
Signed-off-by: Simon Ser <contact@emersion.fr>
-
eadb8286
by Mizuki Asakura at 2021-09-17T17:03:02+00:00
added aarch64 bilinear implementations (ver.4.1)
Since aarch64 has different neon syntax from aarch32 and has no
support for (older) arm-simd,
there are no SIMD accelerations for pixman on aarch64.
We need new implementations.
This patch also contains Ben Avions's series of patches for aarch32
and now the benchmark results are fine to aarch64.
Please find the result at the below ticket.
Added: https://bugs.freedesktop.org/show_bug.cgi?id=94758
Signed-off-by: Mizuki Asakura <ed6e117f@gmail.com>
-
c6e1af99
by Manuel Stoeckl at 2022-01-12T23:19:39-05:00
demos: port to Gtk3
GTK2 has reached end of life, and GTK3 has been available for a
almost a decade.
Signed-off-by: Manuel Stoeckl <code@mstoeckl.com>
Reviewed-by: Simon Ser <contact@emersion.fr>
-
3563dfe4
by Nirbheek Chauhan at 2022-01-21T09:07:53+00:00
meson: Fix warning about extract_all_objects usage
We use this because of a meson bug that was fixed in 0.52:
https://mesonbuild.com/Release-notes-for-0-52-0.html#improved-support-for-static-libraries
Bump the requirement and remove the extract_all_objects workaround.
This gets rid of a meson warning:
WARNING: extract_all_objects called without setting recursive
keyword argument. Meson currently defaults to
non-recursive to maintain backward compatibility but
the default will be changed in the future.
-
adc07d46
by Nirbheek Chauhan at 2022-01-22T13:25:57+05:30
meson: Fix usage of pkgconfig.generate()
The library that the pkgconfig file is for should be the first
positional argument. The `libraries:` kwarg is for libraries that the
user must also link against, and which meson does not know about (and
hence cannot automatically add to the `Libs:` or `Requires:` section
in the .pc file).
Fixes:
```
subprojects/pixman/meson.build:564: DEPRECATION: Library pixman-1 was
passed to the "libraries" keyword argument of a previous call to
generate() method instead of first positional argument. Adding
pixman-1 to "Requires" field, but this is a deprecated behaviour that
will change in a future version of Meson. Please report the issue if
this warning cannot be avoided in your case.
```
-
285b9a90
by Alan Coopersmith at 2022-02-19T13:37:54-08:00
configure: replace bugzilla URL with gitlab issues
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
-
b4a105d7
by Jocelyn Falempe at 2022-06-29T11:00:04+02:00
Fix inverted colors on big endian system
bits_image_fetch_separable_convolution_affine() didn't take care
of big endian system
Signed-off-by: Jocelyn Falempe <jfalempe@redhat.com>
-
79894839
by Alan Coopersmith at 2022-10-13T20:58:57+00:00
configure.ac: allow x64 libraries on Solaris to run on non-SSSE3 machines
Override the x64 hardware capability autodetection by Solaris Studio
compilers for x64 libraries the same way we do for x86 libraries.
Also fix configure test for this override to work in out-of-tree builds.
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
-
421fc252
by Benjamin Gilbert at 2022-10-18T01:02:43+00:00
meson: Add feature to disable compiler TLS support
When compiling with MinGW, use of the __thread attribute causes pixman
to gain a dependency on the winpthread DLL. With Autotools, this could
be avoided by configuring with ac_cv_tls=none, causing pixman to fall
back to TlsSetValue() instead.
Add a Meson 'tls' option that can be 'disabled' to skip support for TLS
compiler attributes, or 'enabled' to require a working TLS attribute.
-
8d6d7f44
by Simon Ser at 2022-10-18T09:44:04+02:00
Pre-release version bump to 0.42.0
Signed-off-by: Simon Ser <contact@emersion.fr>
-
7df9e162
by Simon Ser at 2022-10-18T11:01:24+02:00
Post-release version bump to 0.42.1
Signed-off-by: Simon Ser <contact@emersion.fr>
-
b5b32437
by Thomas Klausner at 2022-10-18T17:48:24+02:00
configure.ac: avoid unportable test(1) operator
"==" is only supported by bash, POSIX mandates "="
Signed-off-by: Thomas Klausner <wiz@gatalith.at>
-
4ee322c4
by Thomas Klausner at 2022-10-18T17:48:49+02:00
Makefile.am: increase shell portability
Use standard test(1) instead of bash's '[['.
Signed-off-by: Thomas Klausner <wiz@gatalith.at>
-
0cf92877
by Simon Ser at 2022-10-27T18:17:26+00:00
meson: override pixman-1 dependency
This eases usage as a Meson subproject.
Signed-off-by: Simon Ser <contact@emersion.fr>
-
1a0d50ce
by Simon Ser at 2022-10-27T18:21:37+00:00
meson: explicitly set C standard to gnu99
This explicitly indicates that GNU extensions (like asm) are used.
This fixes build errors when Pixman is used as a Meson subproject.
Signed-off-by: Simon Ser <contact@emersion.fr>
-
ca7bb889
by Matt Turner at 2022-10-27T14:36:54-04:00
build: Add a64-neon-test.S to EXTRA_DIST
Fixes: https://gitlab.freedesktop.org/pixman/pixman/-/issues/66
-
c3bbb94b
by Matt Turner at 2022-10-27T15:10:30-04:00
Revert "Fix signed-unsigned semantics in reduce_32"
This reverts commit aaf59b0338fbd4b9142794254261f8d0a018b60c.
This commit regressed the scaling-test unit test, by apparently allowing
the compiler to emit fused multiply-add instructions in cases they
wouldn't have been allowed before. While using gcc's -ffp-contract=...
flag avoids the issue on amd64, it does not on at least aarch64 and
ppc64.
This is unfortunate, because the commit being reverted resolved
https://gitlab.freedesktop.org/pixman/pixman/-/issues/43 so we will
reintroduce this failure, but after more than a year without a fix for
the unit test, I think it's time to bite the bullet.
Fixes: https://gitlab.freedesktop.org/pixman/pixman/-/issues/49
-
a1f88e84
by Matt Turner at 2022-11-02T13:25:48-04:00
Avoid integer overflow leading to out-of-bounds write
Thanks to Maddie Stone and Google's Project Zero for discovering this
issue, providing a proof-of-concept, and a great analysis.
Closes: https://gitlab.freedesktop.org/pixman/pixman/-/issues/63
-
37216a32
by Matt Turner at 2022-11-02T13:25:48-04:00
Pre-release version bump to 0.42.2