summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2024-02-29Post-release version bump to 0.43.5HEADmasterMatt Turner1-1/+1
2024-02-29Pre-release version bump to 0.43.4pixman-0.43.4Matt Turner1-1/+1
2024-02-29pixman-arm: Use unified syntaxMatt Turner8-105/+74
Allows us to use the same assembly without a bunch of #ifdef __clang__.
2024-02-29pixman-arm: Fix build on clang/arm32Makoto Kato6-1089/+1140
Closes: https://gitlab.freedesktop.org/pixman/pixman/-/issues/74
2024-02-29Revert "Allow to build pixman on clang/arm32"Matt Turner8-1125/+1105
This reverts merge request !78
2024-02-29Allow to build pixman on clang/arm32Heiko Lewin8-1105/+1125
2024-02-25pixman-x86: Move #include "cpuid.h" inside conditionalsMatt Turner1-1/+5
Closes: https://gitlab.freedesktop.org/pixman/pixman/-/issues/93 Closes: https://gitlab.freedesktop.org/pixman/pixman/-/issues/94
2024-02-24pixman-x86: Use cpuid.h headerMatt Turner1-62/+3
2024-02-24Revert the changes to fix the problem in big-endian architecturesGayathri Berli1-4/+0
This reverts commit b4a105d77232a87304b7b621e2f99e699a8eebd3. There is an endianness issue in pixman-fast-path.c. In the function bits_image_fetch_separable_convolution_affine we have this code: #ifdef WORDS_BIGENDIAN buffer[k] = (satot << 0) | (srtot << 8) | (sgtot << 16) | (sbtot << 24); #else buffer[k] = (satot << 24) | (srtot << 16) | (sgtot << 8) | (sbtot << 0); #endif This will write out the pixels as BGRA on big endian systems but obviously that's wrong. Pixel order should be ARGB on big endian systems so we don't need any #ifdef for big endian here at all. Instead, the code should be the same on little and big endian, i.e. it should be just this line instead of the 5 lines above: buffer[k] = (satot << 24) | (srtot << 16) | (sgtot << 8) | (sbtot << 0); Changing the code like this fixes the wrong colors that I get with pixman on my PowerPC/s390x system. Here is what cairo.h has to say (which is rooted in pixman): * @CAIRO_FORMAT_ARGB32: each pixel is a 32-bit quantity, with * alpha in the upper 8 bits, then red, then green, then blue. * The 32-bit quantities are stored native-endian. Pre-multiplied * alpha is used. (That is, 50% transparent red is 0x80800000, * not 0x80ff0000.) (Since 1.0) Closes: https://gitlab.freedesktop.org/pixman/pixman/-/issues/78 Signed-off-by: Gayathri Berli <gayathri.berli@ibm.com>
2024-01-28Post-release version bump to 0.43.3Simon Ser1-1/+1
2024-01-28Pre-release version bump to 0.43.2pixman-0.43.2Simon Ser1-1/+1
2024-01-28Drop contrib/ci.shSimon Ser1-6/+0
This is unused and outdated (Autotools is no longer supported). Signed-off-by: Simon Ser <contact@emersion.fr>
2024-01-28Drop ChangeLogSimon Ser1-0/+0
This file is empty and unused. Signed-off-by: Simon Ser <contact@emersion.fr>
2024-01-27Drop automatic DEBUG defineSimon Ser1-19/+0
We don't use the historical odd stable release numbering scheme anymore. Developers can still enable this debugging code via CFLAGS=-DDEBUG. Signed-off-by: Simon Ser <contact@emersion.fr> Closes: https://gitlab.freedesktop.org/pixman/pixman/-/issues/87
2024-01-04Post-release version bump to 0.43.1Simon Ser1-1/+1
Signed-off-by: Simon Ser <contact@emersion.fr>
2024-01-04Pre-release version bump to 0.43.0pixman-0.43.0Simon Ser1-1/+1
Signed-off-by: Simon Ser <contact@emersion.fr>
2024-01-03test: Use fabsl on float128Matt Turner1-2/+2
2024-01-03pixman-access: Mark __dummy__ variables with MAYBE_UNUSEDMatt Turner1-1/+1
2024-01-03pixman-mmx: Don't redefine _MM_SHUFFLEMatt Turner1-1/+1
2024-01-03pixman-sse2: Remove unused functionsMatt Turner1-18/+0
2023-12-15ci: upgrade to Fedora 39Simon Ser1-4/+3
Fedora 28 is super old. Signed-off-by: Simon Ser <contact@emersion.fr>
2023-12-15Fix alignment problem in pixman-fast-path.cPavel Labath1-3/+3
The variable is accessed through uint32_t pointer, so it needs to be aligned to avoid undefined behavior (crashes on architectures which require aligned accesses). Closes: https://gitlab.freedesktop.org/pixman/pixman/-/issues/84
2023-11-08meson: avoid linking with -pthread if we don't have pthreadsBenjamin Gilbert1-0/+3
Meson always returns -pthread in dependency('threads') on non-MSVC compilers. Fix a link error when building on MinGW without winpthreads.
2023-11-07pixman-bits-image: fix -Walloc-sizeSam James1-1/+1
GCC 14 introduces a new -Walloc-size included in -Wextra which gives (when forced to be an error): ``` ../pixman/pixman-bits-image.c: In function ‘create_bits’: ../pixman/pixman-bits-image.c:1273:16: error: allocation of insufficient size ‘1’ for type ‘uint32_t’ {aka ‘unsigned int’} with size ‘4’ [-Werror=alloc-size] 1273 | return calloc (buf_size, 1); | ^~~~~~~~~~~~~~~~~~~~ ``` The calloc prototype is: ``` void *calloc(size_t nmemb, size_t size); ``` So, just swap the number of members and size arguments to match the prototype, as we're initialising 1 element of size `buf_size`. GCC then sees we're not doing anything wrong. Signed-off-by: Sam James <sam@gentoo.org>
2023-08-30vmx: Reimplement create_mask_32_128 and use it in vmx_fillHavard Eidnes1-13/+2
Based on suggestion from @siamashka. This lets the compiler pick the vector instruction to use which is usually the best idea. Use create_mask_32_128() instead of create_mask_1x32_128() in vmx_fill(), avoiding loading memory beyond the filler argument on the stack. Remove the now-unused create_mask_1x32_128(). This gets rid of some (correct) warnings from the compiler about indexing beyond the variable in question.
2023-08-30vmx: Simplify scaled_nearest_scanline_vmx_8888_8888_OVERHavard Eidnes1-12/+6
Since combine4() does not take vector variables as arguments, there's no need to use a vector variable and casts back and forth to normal scalars for the arguments.
2023-08-30meson: Fix syntaxMatt Turner1-2/+2
2023-08-30Fix const warnings in pixman_image_set_clip_region()Simon Ser2-4/+4
Fixes the following warnings: pixman-image.c: In function 'pixman_image_set_clip_region': pixman-image.c:601:81: warning: passing argument 2 of 'pixman_region32_copy_from_region16' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers] 601 | if ((result = pixman_region32_copy_from_region16 (&common->clip_region, region))) | ^~~~~~ In file included from pixman-image.c:32: pixman-private.h:859:56: note: expected 'pixman_region16_t *' {aka 'struct pixman_region16 *'} but argument is of type 'const pixman_region16_t *' {aka 'const struct pixman_region16 *'} 859 | pixman_region16_t *src); | ~~~~~~~~~~~~~~~~~~~^~~ pixman-utils.c:240:1: error: conflicting types for 'pixman_region16_copy_from_region32'; have 'pixman_bool_t(pixman_region16_t *, pixman_region32_t *)' {aka 'int(struct pixman_region16 *, struct pixman_region32 *)'} 240 | pixman_region16_copy_from_region32 (pixman_region16_t *dst, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from pixman-utils.c:31: pixman-private.h:862:1: note: previous declaration of 'pixman_region16_copy_from_region32' with type 'pixman_bool_t(pixman_region16_t *, const pixman_region32_t *)' {aka 'int(struct pixman_region16 *, const struct pixman_region32 *)'} 862 | pixman_region16_copy_from_region32 (pixman_region16_t *dst, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ pixman-utils.c:270:1: error: conflicting types for 'pixman_region32_copy_from_region16'; have 'pixman_bool_t(pixman_region32_t *, pixman_region16_t *)' {aka 'int(struct pixman_region32 *, struct pixman_region16 *)'} 270 | pixman_region32_copy_from_region16 (pixman_region32_t *dst, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from pixman-utils.c:31: pixman-private.h:858:1: note: previous declaration of 'pixman_region32_copy_from_region16' with type 'pixman_bool_t(pixman_region32_t *, const pixman_region16_t *)' {aka 'int(struct pixman_region32 *, const struct pixman_region16 *)'} 858 | pixman_region32_copy_from_region16 (pixman_region32_t *dst, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Signed-off-by: Simon Ser <contact@emersion.fr>
2023-08-30Use more Markdown-friendly syntaxMatt Turner1-8/+8
2023-08-30Remove generic build system informationMatt Turner1-129/+0
2023-08-30Update build instructions to meson and ninjaGauthier Östervall1-87/+20
2023-08-30delete win32 make filesDylan Baker7-354/+0
meson can handle building for win32 (including using visual studio, and mingw), and does a good deal more than these could. Since we're dropping autotools, we might as well drop these too.
2023-08-30autotools: remove autotoolsDylan Baker11-1625/+2
At this point meson is pretty well tested and seems to pretty much work, so we can consider dropping an extra build system. This doesn't solve the problem that pixman's release scripts are part of the autotools build system (as make targets). One solution might be to use xorg's release.sh instead.
2023-07-19test: Revert to including pixman-private.hMatt Turner1-1/+1
This broke the Visual Studio builds in GTK's CI system.
2023-07-18pixman-arma64: Adjustments to build with llvm integrated assemblerHeiko Lewin6-919/+968
This enables building the aarch64 assembly with clang. Changes: 1. Use `.func` or `.endfunc` only if available 2. Prefix macro arg names with `\` 3. Use `\()` instead of `&` 4. Always use commas to separate macro arguments 5. Prefix asm symbols with an undderscore if necessary
2023-07-09mmx: use xmmintrin.h if building with SSE2Benjamin Gilbert1-1/+1
As of mingw-w64 commit 463f00975, winnt.h includes emmintrin.h when compiling with SSE2, causing redefinition errors for our copied MMX intrinsics. If the build is assuming SSE2 anyway, just use the system header instead.
2023-07-09Constify pixman_image_set_clip_region()Simon Ser2-4/+4
This function copies the region passed in. Signed-off-by: Simon Ser <contact@emersion.fr>
2023-07-09Add pixman_region{,32}_empty()Simon Ser3-2/+16
Inverse of pixman_region32_not_empty(). Most of the time, callers want to check whether a region is empty, not whether a region is not empty. This results in code with double-negatives such as !pixman_region32_not_empty(), which is confusing to read. Signed-off-by: Simon Ser <contact@emersion.fr>
2023-07-08meson: don't dllexport when built as static libraryBenjamin Gilbert1-1/+2
If a static Pixman is linked with a dynamic library, Pixman shouldn't export its own symbols into the latter's ABI.
2023-02-17Fixed missing dependency in libdemoEmanuel Schmidt1-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.
2023-02-14Changed name of the config-header to "pixman-config.h"Emanuel Schmidt44-44/+46
2023-02-08Separate meson build options for demos and testsEmanuel Schmidt18-30/+67
2022-11-03Fix signed-unsigned semantics in reduce_32Heiko Lewin2-21/+34
2022-11-03Post-release version bump to 0.42.3Matt Turner2-2/+2
2022-11-03add r8g8b8 sRGB to test suiteClaude Heiland-Allen3-0/+3
Signed-off-by: Claude Heiland-Allen <claude@mathr.co.uk>
2022-11-03implement r8g8b8 sRGB (without alpha)Claude Heiland-Allen3-0/+158
Signed-off-by: Claude Heiland-Allen <claude@mathr.co.uk>
2022-11-02Pre-release version bump to 0.42.2pixman-0.42.2Matt Turner2-2/+2
2022-11-02Avoid integer overflow leading to out-of-bounds writeMatt Turner1-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
2022-10-27Revert "Fix signed-unsigned semantics in reduce_32"Matt Turner3-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
2022-10-27build: Add a64-neon-test.S to EXTRA_DISTMatt Turner1-0/+1
Fixes: https://gitlab.freedesktop.org/pixman/pixman/-/issues/66