summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2025-06-09Post-release version bump to 0.46.3HEADmasterMatt Turner1-1/+1
2025-06-09Pre-release version bump to 0.46.2pixman-0.46.2Matt Turner1-1/+1
2025-06-09release.sh: Sign the git tagMatt Turner1-1/+1
2025-05-30region: add contains_pointf function for fractional regionsLoukas Agorgianitis2-0/+50
Signed-off-by: Loukas Agorgianitis <loukas@agorgianitis.com>
2025-05-30region: add translatef function for fractional regionsLoukas Agorgianitis2-0/+113
Signed-off-by: Loukas Agorgianitis <loukas@agorgianitis.com>
2025-05-05Revert "ci: Allow failures in windows-amd64 jobs"Marek Pikuła1-1/+0
After disabling OpenMP, the Windows runs shouldn't fail. This reverts commit dd0750341d3d669df31ebf98d5c1ceb453005779.
2025-05-05ci: Disable OpenMP for Windows targetsMarek Pikuła3-0/+9
Fixes #122 by disabling OpenMP for Windows targets. It was already done before for i686 variant (in !125), but it seems that 64-bit version is buggy as well. It looks like it doesn't increase job execution time significantly. Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2025-04-29Post-release version bump to 0.46.1Matt Turner1-1/+1
2025-04-29Pre-release version bump to 0.46.0pixman-0.46.0Matt Turner1-1/+1
2025-04-29RISC-V: Only enable RVV on linux if hwcap headers are availableCharlie Jenkins1-0/+4
Linux 6.5 introduced COMPAT_HWCAP_ISA_V. When trying to compile pixman against linux headers older than this, pixman will fail to compile because it assumes COMPAT_HWCAP_ISA_V exists. During meson configuration, do not enable have_rvv if the platform is Linux and COMPAT_HWCAP_ISA_V doesn't exist. Signed-off-by: Charlie Jenkins <charlie@rivosinc.com> Fixes: 0e424031bda2 ("RISC-V floating point operations")
2025-04-29ci: Allow failures in windows-amd64 jobsMatt Turner1-0/+1
Bug: https://gitlab.freedesktop.org/pixman/pixman/-/issues/122
2025-04-24test/region: add fractional region testsLoukas Agorgianitis2-0/+126
Signed-off-by: Loukas Agorgianitis <loukas@agorgianitis.com>
2025-04-24region: add image clip and composite functions for fractional regionsLoukas Agorgianitis3-0/+60
Signed-off-by: Loukas Agorgianitis <loukas@agorgianitis.com>
2025-04-24region: add pixman_region32_copy_from_region64f utility functionLoukas Agorgianitis2-0/+41
Signed-off-by: Loukas Agorgianitis <loukas@agorgianitis.com>
2025-04-24region: add rectf convenience functionsLoukas Agorgianitis2-0/+91
Signed-off-by: Loukas Agorgianitis <loukas@agorgianitis.com>
2025-04-24region: add fractional implementation based on 64bit floating point numbersLoukas Agorgianitis3-0/+195
Signed-off-by: Loukas Agorgianitis <loukas@agorgianitis.com>
2025-04-24region: make print specifier parametricLoukas Agorgianitis3-2/+13
Signed-off-by: Loukas Agorgianitis <loukas@agorgianitis.com>
2025-04-24region: add parametric primitive type to generalize implementation detailsLoukas Agorgianitis3-28/+30
Signed-off-by: Loukas Agorgianitis <loukas@agorgianitis.com>
2025-04-24test/stress-test: add a16b16g16r16Manuel Stoeckl1-0/+1
Signed-off-by: Manuel Stoeckl <code@mstoeckl.com>
2025-04-24Add a16b16g16r16 formatManuel Stoeckl3-0/+88
This format is necessary for Pixman to be able to use, without a conversion step, high bit depth images from other libraries. On little endian systems, notable equivalent formats are PNG's 16 bit RGBA output (assuming png_set_swap), DRM_FORMAT_ABGR16161616, GL_RGBA16, and QImage::Format_RGBA64_Premultiplied. Signed-off-by: Manuel Stoeckl <code@mstoeckl.com>
2025-04-18Fix arm64 advanced prefetcherJoel May2-70/+46
https://gitlab.freedesktop.org/pixman/pixman/-/issues/119 When the advanced preloader reached the end of a scanline, it advanced the `PF_SRC`, `PF_DST`, and `PF_MASK` addresses by 1 instead of advancing to the next scanline. Most of the time, this means the prefetcher is simply prefetching the wrong place in the image. But when the stride is negative, this can result in a segfault when trying to read memory beyond the end of the image buffer. I have fixed this by combining the bitshift and add instructions to directly update the address register by the correct amount before prefetching. My fix results in the same behavior as the code in `pixman/pixman-arm-neon-asm.h`: ``` PF ldrbge, DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]! ``` This instruction means that `PF_SRC` is updated with the offset of `SRC_STRIDE << #src_bpp_shift` and then the byte at updated `PF_SRC` is read into `DUMMY`. (The `ge` condition has been replaced with a separate branch instruction in aarch64.) I also cleaned up a couple other cases where instructions were redundant.
2025-04-18Test case for compositing with a negative strideJoel May2-0/+106
The aarch64 advanced prefetcher has a bug where it can read past the end of the image buffers. Typically this causes no ill effects (beyond making the attempted prefetch useless), because it's simply prefetching junk data and discarding it. Where this causes problems (i.e. segfault) is when it tries to read memory that not readable, such as a memory map with no read permission. To expose this specific bug, we need a test case with a negative stride and enough height such that `last_scanline_ptr + height` runs past the end of the image buffer (this equation is approximate and omits some small variables). Using `fence_malloc`, we can catch the problem with a segfault when the prefetch attempts to read memory beyond the end of the image buffer.
2025-04-17ci: Increase number of retries for Windows targetsMarek Pikuła1-0/+2
In case there are intermittent errors which can be "fixed" by running the job again. Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2025-04-17ci: Use untagged runners if possibleMarek Pikuła10-62/+122
Since the migration to the new FDO infrastructure (freedesktop/freedesktop#2076), there is an option to use fleeting runners for jobs not requiring KVM. In our case there are multiple instances where it is not needed, so it's possible to use untagged (fleeting) runners, which spin up only in case when the job queue load is high, possibly helping with #112. Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2025-04-17ci: Build Wine for windows-amd64 from sourceMarek Pikuła1-11/+6
Building the recent version from sources seems to help a little with the intermittent CI fails for windows-amd64 target. Wine 10.0 from Debian Trixie repos didn't do the job. Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2025-04-11rvv: Add integer operationsMarek Pikuła1-0/+2284
This commit introduces the implementation of most fast paths outlined in `pixman-fast-path.c`, along with a complete implementation of combine functions for integer operations. Co-Authored-By: Bernard Gingold <b.gingold@samsung.com> Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2025-04-11rvv: Add float suffix to float implementationMarek Pikuła1-74/+75
To prevent name clashes with the upcoming integer implementation, the float-specific functions are renamed to include a `_float` suffix. Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2025-04-11test: Add lowlevel-blt-bench result comparison scriptMarek Pikuła1-0/+177
The script parses and compares results from the `lowlevel-blt-bench`. For example, it can be used to compare different backends when running the benchmark with different `PIXMAN_DISABLE`. Additional features: - save the results in a CSV file (both single result and comparison), - print the results as a table with colors, allowing for easy identification of the best and worst results. Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2025-04-07docker: Decrease build time for gcovrMarek Pikuła1-4/+2
For some platforms there is no pre-built lxml wheel. In order to decrease build time of gcovr venv, it's possibe to pull python3-lxml from the system package manager instead of building it from source. Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2025-04-07docker: Move LLVM archive to a separate thin layerMarek Pikuła1-8/+16
This improves caching of the image build process. Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2025-04-07docker: Update Meson to 1.7Marek Pikuła1-1/+1
No significant changes, just a version bump to see if it builds without issues. Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2025-04-07docker: Update Wine to 10.5 and update LLVM-MinGWMarek Pikuła1-2/+2
Wine 10.5 is the latest stable release of Wine, which includes fixes for Windows on ARM, improving the overall stability of CI. Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2025-04-07rvv: Pass through clang-formatMarek Pikuła1-18/+17
There are some minor style differences with the clang-format style. Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2025-04-07Fix some build warningMarek Pikuła4-9/+12
- `unused-but-set-variable` for platforms without float128 in `test/matrix-test.c` - `unused-but-set-variable` for `test/pixel-test.c` - `maybe-uninitialized` for `pixman_image_fill_rectangles` - enable `__force_align_arg_pointer__` only for x86 Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2025-01-22ci: Enable LLVM testing on linux-arm-v7Matt Turner2-2/+0
Fixes: https://gitlab.freedesktop.org/pixman/pixman/-/issues/113
2025-01-22arm: Move the .fpu neon directive aroundMike Hommey3-3/+3
clang's integrated assembler doesn't handle .fpu coming before .arch like GNU as does. With .fpu after .arch, neon support can be detected and used properly. Fixes: https://gitlab.freedesktop.org/pixman/pixman/-/issues/113
2025-01-10ci: Fix runner tag variable expansionMarek Pikuła7-35/+24
It seems that GitLab doesn't allow expansion of variables provided with template "inputs" if they are not defined as CI variable on project level. This makes the default values saves in global `variable` section unusable. That means that if a projects doesn't have the CI variables defined, the CI won't run – this includes forks. In order to prevent problematic setup for forks, the default runner tags are hard-coded. Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2024-12-17ci: Use regular Debian as base Windows for ARMMarek Pikuła6-23/+52
It turns out it's relatively easy to provide support for Windows on ARM. Unfortunately, it requires building Wine from source, as the version distributed by Debian (both Bookworm and Sid) is buggy for some tests. However, building it isn't overly complicated, and can be replaced with pre-built package once a fixed version lands in Debian Trixie. Besides that, I also fixed the dynamic linking issue and enabled OpenMP as for x86 targets. It has the following advantages: - It greatly decreases the image size, and improves maintainability of the package, as we don't rely on third-party image (from Linaro). - We can build a native image and run it on ARM GitLab runner spreading the load between different runners, and significantly improving the speed of execution (over 12 min down to under a minute). Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2024-12-17ci: Improve Windows imagesMarek Pikuła5-46/+34
- Update LLVM-MinGW. - Separate out win32 and win64 images. In some scenarios there are dependency clashes, thus it's easier to simply separate these two images. - Fix dynamic library loading. This means we can link dynamically everything and enable OpenMP for LLVM builds (meaning faster running tests) Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2024-12-17ci: Use native ARM runners for Linux ARM targetsMarek Pikuła8-9/+46
- build Docker images - execute build and test stages - enable OpenMP for ARMv6 target to improve pipeline speed. This means that coverage report cannot be generated for this target (no support for -fprofile-update=atomic). Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2024-12-17ci: Move Docker build to a CI templateMarek Pikuła4-61/+98
This enables reuse of the Docker build with different runner tags. Will be used for running native image builds on ARM64 runners. Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2024-12-17ci: Add option to change the default runner tagMarek Pikuła3-4/+18
Enables specifying GitLab runner tag on per-job basis. It requires setting the `RUNNER_TAG_DEFAULT` variable as GitLab CI variable in order to properly expand it when referenced in templates. Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2024-12-17ci: Clean up after disabling failing targetsMarek Pikuła2-67/+7
Remove disabled, failing targets to unclutter the pipeline description. Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2024-12-17ci: Enable cross PPC testsMarek Pikuła2-10/+6
Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2024-12-17test: Increase timeout for alpha-loop testMarek Pikuła1-1/+1
Required to successfully run cross-compiled PPC targets. Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2024-12-17ci: Use newer version of QEMU for BookwormMarek Pikuła1-2/+7
Bookworm uses QEMU 7, which is buggy in some contexts (e.g., when running on aarch64 host). This change updates QEMU to version 9 from bookworm-backports. It doesn't affect sid images (which have upstream version 9). Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2024-12-17ci: Improve coverage and artifact handlingMarek Pikuła3-7/+14
- Upload all coverage artifacts in the summary stage. Having all source coverage reports makes it easier to debug the summary stage behavior without the need to download each artifact separately. - Fail if coverage report cannot be generated to prevent silent coverage report failure, which was possible since coverage report was in the `after_script` block. - Always save artifacts, so that it's easier to debug what's happened if the job failed. Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2024-12-13vmx: Run clang-formatMatt Turner1-512/+492
2024-12-13vmx: Disable clang-format around some data structure declarationsMatt Turner1-0/+4
2024-12-13vmx: Declare iterator variable in for loopMatt Turner1-96/+65
Reduces churn when running clang-format.