summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Fixed missing dependency in libdemoHEADmasterEmanuel Schmidt2023-02-171-1/+1
| | | | | | | After the latest changes and separation of demo- and test-targets, it was visible that a dependency towards `libtestutils_dep` was missing in one of the demo-dependencies. This change will fix this particular problem.
* Changed name of the config-header to "pixman-config.h"Emanuel Schmidt2023-02-1444-44/+46
|
* Separate meson build options for demos and testsEmanuel Schmidt2023-02-0818-30/+67
|
* Fix signed-unsigned semantics in reduce_32Heiko Lewin2022-11-032-21/+34
|
* Post-release version bump to 0.42.3Matt Turner2022-11-032-2/+2
|
* add r8g8b8 sRGB to test suiteClaude Heiland-Allen2022-11-033-0/+3
| | | | Signed-off-by: Claude Heiland-Allen <claude@mathr.co.uk>
* implement r8g8b8 sRGB (without alpha)Claude Heiland-Allen2022-11-033-0/+158
| | | | Signed-off-by: Claude Heiland-Allen <claude@mathr.co.uk>
* Pre-release version bump to 0.42.2pixman-0.42.2Matt Turner2022-11-022-2/+2
|
* Avoid integer overflow leading to out-of-bounds writeMatt Turner2022-11-021-1/+1
| | | | | | | 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
* Revert "Fix signed-unsigned semantics in reduce_32"Matt Turner2022-10-273-82/+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
* build: Add a64-neon-test.S to EXTRA_DISTMatt Turner2022-10-271-0/+1
| | | | Fixes: https://gitlab.freedesktop.org/pixman/pixman/-/issues/66
* meson: explicitly set C standard to gnu99Simon Ser2022-10-271-1/+1
| | | | | | | 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>
* meson: override pixman-1 dependencySimon Ser2022-10-271-0/+4
| | | | | | This eases usage as a Meson subproject. Signed-off-by: Simon Ser <contact@emersion.fr>
* Makefile.am: increase shell portabilityThomas Klausner2022-10-181-1/+1
| | | | | | Use standard test(1) instead of bash's '[['. Signed-off-by: Thomas Klausner <wiz@gatalith.at>
* configure.ac: avoid unportable test(1) operatorThomas Klausner2022-10-181-1/+1
| | | | | | "==" is only supported by bash, POSIX mandates "=" Signed-off-by: Thomas Klausner <wiz@gatalith.at>
* Post-release version bump to 0.42.1Simon Ser2022-10-182-2/+2
| | | | Signed-off-by: Simon Ser <contact@emersion.fr>
* Pre-release version bump to 0.42.0pixman-0.42.0Simon Ser2022-10-182-3/+3
| | | | Signed-off-by: Simon Ser <contact@emersion.fr>
* meson: Add feature to disable compiler TLS supportBenjamin Gilbert2022-10-182-9/+24
| | | | | | | | | | 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.
* configure.ac: allow x64 libraries on Solaris to run on non-SSSE3 machinesAlan Coopersmith2022-10-131-6/+10
| | | | | | | | | 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>
* Fix inverted colors on big endian systemJocelyn Falempe2022-06-291-0/+4
| | | | | | | bits_image_fetch_separable_convolution_affine() didn't take care of big endian system Signed-off-by: Jocelyn Falempe <jfalempe@redhat.com>
* configure: replace bugzilla URL with gitlab issuesAlan Coopersmith2022-02-191-1/+1
| | | | Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
* meson: Fix usage of pkgconfig.generate()Nirbheek Chauhan2022-01-221-2/+1
| | | | | | | | | | | | | | | | | | 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. ```
* meson: Fix warning about extract_all_objects usageNirbheek Chauhan2022-01-213-10/+3
| | | | | | | | | | | | | | 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.
* demos: port to Gtk3Manuel Stoeckl2022-01-125-44/+36
| | | | | | | | 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>
* added aarch64 bilinear implementations (ver.4.1)Mizuki Asakura2021-09-1712-1/+6399
| | | | | | | | | | | | | | | | 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>
* Constify region APIsSimon Ser2021-09-172-114/+114
| | | | | | | 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>
* tests: Fix undefined symbol build error on macOSNirbheek Chauhan2021-09-171-2/+2
| | | | | | | | | | | | | 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
* Fix -Wincompatible-function-pointer-types warningAlex Richardson2021-09-171-2/+2
| | | | | | | 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)')
* Fix masked pixel fetching with wide formatManuel Stoeckl2021-08-091-2/+6
| | | | | | | | | | | | | | | | 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>
* Fix signed-unsigned semantics in reduce_32Heiko Lewin2021-07-213-32/+82
|
* Fix AltiVec detection on FreeBSD.pkubaj2021-05-071-0/+18
|
* Avoid out-of-bounds read when accessing individual bytes from mask.Jonathan Kew2021-05-071-22/+23
| | | | | | | | | | | | | | | | | | | | | 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.
* meson: update option descriptions.Érico Rolim2020-10-221-3/+3
| | | | | | - gtk is only used in demos - libpng is only used in tests - openmp is only used in tests (in the standard build)
* meson: remove pixman dependencyDylan Baker2020-06-181-2/+0
| | | | | | | | | | | | | 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.
* meson: add option to skip building of tests and demosTim-Philipp Müller2020-06-022-2/+10
| | | | Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
* meson: add cpu-features-path option for AndroidTim-Philipp Müller2020-06-022-1/+20
| | | | | | | | 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>
* Update README a littleTim-Philipp Müller2020-05-301-29/+53
| | | | | | - bugzilla -> gitlab - convert links to https - suggest issues and patches be filed via gitlab
* Add -ftrapping-math to default cflagsTom Stellard2020-05-111-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Prevent empty top-level declarationMichael Forney2020-04-262-4/+4
| | | | | | | | 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>
* Post-release version bump to 0.40.1Matt Turner2020-04-192-2/+2
| | | | Signed-off-by: Matt Turner <mattst88@gmail.com>
* Pre-release version bump to 0.40.0pixman-0.40.0Matt Turner2020-04-192-3/+3
| | | | Signed-off-by: Matt Turner <mattst88@gmail.com>
* Move from MD5/SHA1 to SHA256/SHA512 digestsMatt Turner2020-04-191-25/+25
| | | | Signed-off-by: Matt Turner <mattst88@gmail.com>
* Build xz tarballs instead of bzip2Matt Turner2020-04-192-14/+14
| | | | Signed-off-by: Matt Turner <mattst88@gmail.com>
* Distribute the blue-noise filesMatt Turner2020-04-192-0/+2
| | | | Signed-off-by: Matt Turner <mattst88@gmail.com>
* Enabled armv6 SIMD for 3DS (devkitARM) and arm neon SIMD for PS Vita ↵Ghabry2020-04-141-0/+25
| | | | (vitasdk) and Switch (devkitA64)
* loongson: Avoid C90 mixing-code-and-decls warningMatt Turner2020-04-071-8/+10
|
* configure.ac: use '-mloongson-mmi' for Loongson MMIShiyou Yin2020-04-072-2/+2
| | | | | | It's recommended to use '-mloongson-mmi' for MMI. Reviewed-by: Matt Turner <mattst88@gmail.com>
* fast-path: Fix some sketchy pointer arithmeticAdam Jackson2020-04-021-7/+7
| | | | | | | | | We want a uint8_t * at the end of this math, because that's what the function we're about to pass it to takes. But ->bits is a uint32_t, so if we just do the math in units of that we can avoid the explicit factor of four which would risk an integer overflow. Fixes: pixman/pixman#14
* lowlevel-blt-bench: Remove unused variableMatt Turner2020-03-201-2/+0
| | | | Closes: https://gitlab.freedesktop.org/pixman/pixman/issues/7
* Initialize temporary buffers in general_composite_rect()Federico Mena Quintero2020-03-181-0/+6
| | | | | | | | Otherwise, Valgrind shows things like "conditional jump or move depends on uninitialised values" errors much later in calling code. For example, see https://gitlab.gnome.org/GNOME/librsvg/issues/572 Fixes https://gitlab.freedesktop.org/pixman/pixman/issues/9