pixman: Branch 'master' - 6 commits

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Apr 8 14:34:51 UTC 2025


 .gitlab-ci.d/01-docker/Dockerfile |   36 +++++++++++++++++++++---------------
 pixman/pixman-glyph.c             |   15 ++++++++-------
 pixman/pixman-rvv.c               |   35 +++++++++++++++++------------------
 pixman/pixman.c                   |    2 +-
 test/matrix-test.c                |    2 ++
 test/pixel-test.c                 |    2 +-
 6 files changed, 50 insertions(+), 42 deletions(-)

New commits:
commit 52de98d9eb588d5ce77a477a74b93f3d2fbf5d16
Author: Marek Pikuła <m.pikula at partner.samsung.com>
Date:   Mon Apr 7 13:23:59 2025 +0200

    docker: Decrease build time for gcovr
    
    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 at partner.samsung.com>

diff --git a/.gitlab-ci.d/01-docker/Dockerfile b/.gitlab-ci.d/01-docker/Dockerfile
index eee2ac3..43d1e2c 100644
--- a/.gitlab-ci.d/01-docker/Dockerfile
+++ b/.gitlab-ci.d/01-docker/Dockerfile
@@ -28,9 +28,7 @@ RUN echo "deb http://deb.debian.org/debian bookworm-backports main" >  /etc/apt/
         python3-userpath \
         python3-venv \
         # gcovr dependencies.
-        libxml2-dev \
-        libxslt-dev \
-        python3-dev \
+        python3-lxml \
     # User bookworm-backports for QEMU, as it has version 7 by default, which
     # has some issues.
     && ${APT_INSTALL} \
@@ -42,7 +40,7 @@ RUN echo "deb http://deb.debian.org/debian bookworm-backports main" >  /etc/apt/
     && pip install pipx --break-system-packages \
     # Install a recent version of meson and gcovr using pipx to have the same
     # version across all variants regardless of base.
-    && pipx install --global \
+    && pipx install --global --system-site-packages \
         gcovr${GCOVR_VERSION} \
         meson${MESON_VERSION} \
     && gcovr --version \
commit 856207fbd6fb9455b85a090e8c58dedad1e6b49b
Author: Marek Pikuła <m.pikula at partner.samsung.com>
Date:   Sat Apr 5 18:42:45 2025 +0200

    docker: Move LLVM archive to a separate thin layer
    
    This improves caching of the image build process.
    
    Signed-off-by: Marek Pikuła <m.pikula at partner.samsung.com>

diff --git a/.gitlab-ci.d/01-docker/Dockerfile b/.gitlab-ci.d/01-docker/Dockerfile
index 58655a4..eee2ac3 100644
--- a/.gitlab-ci.d/01-docker/Dockerfile
+++ b/.gitlab-ci.d/01-docker/Dockerfile
@@ -1,15 +1,16 @@
 ARG BASE_IMAGE=docker.io/debian
 ARG BASE_IMAGE_TAG=bookworm-slim
-FROM ${BASE_IMAGE}:${BASE_IMAGE_TAG} AS base
+FROM ${BASE_IMAGE}:${BASE_IMAGE_TAG} AS base-image
 
-LABEL org.opencontainers.image.title="Pixman build environment for platform coverage" \
-      org.opencontainers.image.authors="Marek Pikuła <m.pikula at partner.samsung.com>"
-
-ARG DEBIAN_FRONTEND=noninteractive
 ENV APT_UPDATE="apt-get update" \
-    APT_INSTALL="apt-get install -y --no-install-recommends" \
+    APT_INSTALL="env DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends" \
     APT_CLEANUP="rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/*"
 
+FROM base-image AS base
+
+LABEL org.opencontainers.image.title="Pixman build environment for platform coverage" \
+      org.opencontainers.image.authors="Marek Pikuła <m.pikula at partner.samsung.com>"
+
 ARG GCOVR_VERSION="~=7.2"
 ARG MESON_VERSION="~=1.7"
 RUN echo "deb http://deb.debian.org/debian bookworm-backports main" >  /etc/apt/sources.list.d/debian-12-backports.list \
@@ -107,17 +108,24 @@ RUN ${APT_UPDATE} \
     && ${APT_CLEANUP}
 
 # Windows base image with a pre-built LLVM MinGW toolchain.
-FROM base AS windows-llvm-base
+FROM base-image AS windows-llvm-base-build
 ARG LLVM_MINGW_RELEASE=20250402
 ARG LLVM_MINGW_VARIANT=llvm-mingw-${LLVM_MINGW_RELEASE}-ucrt-ubuntu-20.04
 RUN ${APT_UPDATE} \
     && ${APT_INSTALL} \
-        procps \
+        ca-certificates \
         wget \
+        xz-utils \
     && ${APT_CLEANUP} \
     && wget https://github.com/mstorsjo/llvm-mingw/releases/download/${LLVM_MINGW_RELEASE}/${LLVM_MINGW_VARIANT}-`uname -m`.tar.xz \
         -O - | tar -xJ -C /opt \
     && mv /opt/llvm* /opt/llvm
+
+FROM base AS windows-llvm-base
+RUN ${APT_UPDATE} \
+    && ${APT_INSTALL} procps \
+    && ${APT_CLEANUP}
+COPY --from=windows-llvm-base-build /opt/llvm /opt/llvm
 ENV PATH=/opt/llvm/bin:${PATH} \
     # Inspired by https://code.videolan.org/videolan/docker-images
     WINE_BOOT='wine wineboot --init \
commit 6a4227dfd89f13812cd06f710fe27c6111f6faf1
Author: Marek Pikuła <m.pikula at partner.samsung.com>
Date:   Sat Apr 5 08:00:56 2025 +0200

    docker: Update Meson to 1.7
    
    No significant changes, just a version bump to see if it builds without
    issues.
    
    Signed-off-by: Marek Pikuła <m.pikula at partner.samsung.com>

diff --git a/.gitlab-ci.d/01-docker/Dockerfile b/.gitlab-ci.d/01-docker/Dockerfile
index 33854b7..58655a4 100644
--- a/.gitlab-ci.d/01-docker/Dockerfile
+++ b/.gitlab-ci.d/01-docker/Dockerfile
@@ -11,7 +11,7 @@ ENV APT_UPDATE="apt-get update" \
     APT_CLEANUP="rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/*"
 
 ARG GCOVR_VERSION="~=7.2"
-ARG MESON_VERSION="~=1.6"
+ARG MESON_VERSION="~=1.7"
 RUN echo "deb http://deb.debian.org/debian bookworm-backports main" >  /etc/apt/sources.list.d/debian-12-backports.list \
     && ${APT_UPDATE} \
     && ${APT_INSTALL} \
commit 6c91250df6bef1515ec4effd7822405fb968f474
Author: Marek Pikuła <m.pikula at partner.samsung.com>
Date:   Sat Apr 5 07:57:18 2025 +0200

    docker: Update Wine to 10.5 and update LLVM-MinGW
    
    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 at partner.samsung.com>

diff --git a/.gitlab-ci.d/01-docker/Dockerfile b/.gitlab-ci.d/01-docker/Dockerfile
index ed29da5..33854b7 100644
--- a/.gitlab-ci.d/01-docker/Dockerfile
+++ b/.gitlab-ci.d/01-docker/Dockerfile
@@ -108,7 +108,7 @@ RUN ${APT_UPDATE} \
 
 # Windows base image with a pre-built LLVM MinGW toolchain.
 FROM base AS windows-llvm-base
-ARG LLVM_MINGW_RELEASE=20241203
+ARG LLVM_MINGW_RELEASE=20250402
 ARG LLVM_MINGW_VARIANT=llvm-mingw-${LLVM_MINGW_RELEASE}-ucrt-ubuntu-20.04
 RUN ${APT_UPDATE} \
     && ${APT_INSTALL} \
@@ -179,7 +179,7 @@ RUN ${APT_UPDATE} \
         lld \
         llvm \
     && ${APT_CLEANUP}
-ARG WINE_VERSION=9.22
+ARG WINE_VERSION=10.5
 RUN git clone https://gitlab.winehq.org/wine/wine.git \
         -b wine-${WINE_VERSION} \
         --depth 1
commit aa7415234375a932c023815e535fe451621a1bd3
Author: Marek Pikuła <m.pikula at partner.samsung.com>
Date:   Sat Apr 5 07:37:51 2025 +0200

    rvv: Pass through clang-format
    
    There are some minor style differences with the clang-format style.
    
    Signed-off-by: Marek Pikuła <m.pikula at partner.samsung.com>

diff --git a/pixman/pixman-rvv.c b/pixman/pixman-rvv.c
index 6808f50..2a9d344 100644
--- a/pixman/pixman-rvv.c
+++ b/pixman/pixman-rvv.c
@@ -112,7 +112,7 @@ rvv_blend_overlay (const vfloat32m1_t sa,
 		   size_t             vl)
 {
     vfloat32m1_t t0, t1, t2, t3, t4, f0, f1, f2;
-    vbool32_t             vb;
+    vbool32_t    vb;
     t0 = __riscv_vfadd_vv_f32m1 (d, d, vl);
     t1 = __riscv_vfmul_vv_f32m1 (__riscv_vfadd_vv_f32m1 (s, s, vl), d, vl);
     vb = __riscv_vmflt_vv_f32m1_b32 (t0, da, vl);
@@ -141,7 +141,7 @@ rvv_blend_darken (const vfloat32m1_t sa,
 		  size_t             vl)
 {
     vfloat32m1_t ss, dd;
-    vbool32_t             vb;
+    vbool32_t    vb;
     ss = __riscv_vfmul_vv_f32m1 (da, s, vl);
     dd = __riscv_vfmul_vv_f32m1 (sa, d, vl);
     vb = __riscv_vmfgt_vv_f32m1_b32 (ss, dd, vl);
@@ -164,7 +164,7 @@ rvv_blend_lighten (const vfloat32m1_t sa,
 		   size_t             vl)
 {
     vfloat32m1_t ss, dd;
-    vbool32_t             vb;
+    vbool32_t    vb;
     ss = __riscv_vfmul_vv_f32m1 (s, da, vl);
     dd = __riscv_vfmul_vv_f32m1 (d, sa, vl);
     vb = __riscv_vmfgt_vv_f32m1_b32 (ss, dd, vl);
@@ -198,7 +198,7 @@ rvv_blend_color_dodge (const vfloat32m1_t sa,
 		       size_t             vl)
 {
     vfloat32m1_t t0, t1, t2, t3, t4;
-    vbool32_t             is_d_zero, vb, is_t0_non_zero;
+    vbool32_t    is_d_zero, vb, is_t0_non_zero;
 
     is_d_zero = __riscv_vmfeq_vf_f32m1_b32 (d, 0.0f, vl);
 
@@ -296,7 +296,7 @@ rvv_blend_hard_light (const vfloat32m1_t sa,
 		      size_t             vl)
 {
     vfloat32m1_t t0, t1, t2, t3, t4;
-    vbool32_t             vb;
+    vbool32_t    vb;
     t0 = __riscv_vfadd_vv_f32m1 (s, s, vl);
     t1 = __riscv_vfmul_vv_f32m1 (__riscv_vfadd_vv_f32m1 (s, s, vl), d, vl);
     vb = __riscv_vmfgt_vv_f32m1_b32 (t0, sa, vl);
@@ -334,9 +334,8 @@ rvv_blend_soft_light (const vfloat32m1_t sa,
 		      const vfloat32m1_t d,
 		      size_t             vl)
 {
-    vfloat32m1_t t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12,
-	t13;
-    vbool32_t is_sa_lt_2s, is_da_ls_4d, is_da_non_zero;
+    vfloat32m1_t t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13;
+    vbool32_t    is_sa_lt_2s, is_da_ls_4d, is_da_non_zero;
     is_da_non_zero = __riscv_vmfne_vf_f32m1_b32 (da, 0.0f, vl);
     t0             = __riscv_vfadd_vv_f32m1 (s, s, vl); // 2 * s
     is_sa_lt_2s    = __riscv_vmflt_vv_f32m1_b32 (sa, t0, vl);
@@ -358,8 +357,8 @@ rvv_blend_soft_light (const vfloat32m1_t sa,
 					  __riscv_vfadd_vv_f32m1 (d, d, vl), vl);
     is_da_ls_4d = __riscv_vmflt_vv_f32m1_b32 (da, t6, vl);
     t10         = __riscv_vfsub_vv_f32m1 (
-		__riscv_vfsqrt_v_f32m1 (__riscv_vfmul_vv_f32m1 (d, da, vl), vl), d,
-		vl); // sqrtf (d * da) - d
+        __riscv_vfsqrt_v_f32m1 (__riscv_vfmul_vv_f32m1 (d, da, vl), vl), d,
+        vl); // sqrtf (d * da) - d
     t11 = __riscv_vfmul_vv_f32m1 (t2, t10,
 				  vl); // (sqrtf (d * da) - d) * (sa - 2 * s)
     t12 = __riscv_vfsub_vv_f32m1 (
@@ -404,7 +403,7 @@ rvv_blend_difference (const vfloat32m1_t sa,
 		      size_t             vl)
 {
     vfloat32m1_t dsa, sda;
-    vbool32_t             vb;
+    vbool32_t    vb;
     dsa = __riscv_vfmul_vv_f32m1 (d, sa, vl);
     sda = __riscv_vfmul_vv_f32m1 (s, da, vl);
     vb  = __riscv_vmflt_vv_f32m1_b32 (sda, dsa, vl);
@@ -759,8 +758,8 @@ rvv_get_factor (combine_factor_t factor,
 	const vfloat32m1_t fa = rvv_get_factor (a, sa, da, vl);                \
 	const vfloat32m1_t fb = rvv_get_factor (b, sa, da, vl);                \
 	vfloat32m1_t       t0 = __riscv_vfadd_vv_f32m1 (                       \
-		  __riscv_vfmul_vv_f32m1 (s, fa, vl),                          \
-		  __riscv_vfmul_vv_f32m1 (d, fb, vl), vl);                     \
+            __riscv_vfmul_vv_f32m1 (s, fa, vl),                          \
+            __riscv_vfmul_vv_f32m1 (d, fb, vl), vl);                     \
 	return __riscv_vfmin_vv_f32m1 (__riscv_vfmv_v_f_f32m1 (1.0f, vl), t0,  \
 				       vl);                                    \
     }                                                                          \
@@ -856,12 +855,13 @@ static const pixman_fast_path_t rvv_fast_paths[] = {
     {PIXMAN_OP_NONE},
 };
 
-// clang-format off
 pixman_implementation_t *
 _pixman_implementation_create_rvv (pixman_implementation_t *fallback)
 {
-    pixman_implementation_t *imp = _pixman_implementation_create (fallback, rvv_fast_paths);
+    pixman_implementation_t *imp = _pixman_implementation_create (
+	fallback, rvv_fast_paths);
 
+    // clang-format off
     imp->combine_float[PIXMAN_OP_CLEAR] = rvv_combine_clear_u_float;
     imp->combine_float[PIXMAN_OP_SRC] = rvv_combine_src_u_float;
     imp->combine_float[PIXMAN_OP_DST] = rvv_combine_dst_u_float;
@@ -955,7 +955,7 @@ _pixman_implementation_create_rvv (pixman_implementation_t *fallback)
     imp->combine_float_ca[PIXMAN_OP_CONJOINT_OVER] = rvv_combine_conjoint_over_ca_float;
     imp->combine_float_ca[PIXMAN_OP_CONJOINT_OVER_REVERSE] = rvv_combine_conjoint_over_reverse_ca_float;
     imp->combine_float_ca[PIXMAN_OP_CONJOINT_IN] = rvv_combine_conjoint_in_ca_float;
-    imp->combine_float_ca[PIXMAN_OP_CONJOINT_IN_REVERSE] =rvv_combine_conjoint_in_reverse_ca_float;
+    imp->combine_float_ca[PIXMAN_OP_CONJOINT_IN_REVERSE] = rvv_combine_conjoint_in_reverse_ca_float;
     imp->combine_float_ca[PIXMAN_OP_CONJOINT_OUT] = rvv_combine_conjoint_out_ca_float;
     imp->combine_float_ca[PIXMAN_OP_CONJOINT_OUT_REVERSE] = rvv_combine_conjoint_out_reverse_ca_float;
     imp->combine_float_ca[PIXMAN_OP_CONJOINT_ATOP] = rvv_combine_conjoint_atop_ca_float;
@@ -983,5 +983,4 @@ _pixman_implementation_create_rvv (pixman_implementation_t *fallback)
 
     return imp;
 }
-
-// clang-format on
\ No newline at end of file
+// clang-format on
commit b61453104f0d63e23e2696f149ce6ab28f1e4270
Author: Marek Pikuła <m.pikula at partner.samsung.com>
Date:   Mon Apr 7 10:52:25 2025 +0200

    Fix some build warning
    
    - `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 at partner.samsung.com>

diff --git a/pixman/pixman-glyph.c b/pixman/pixman-glyph.c
index dc90411..346d789 100644
--- a/pixman/pixman-glyph.c
+++ b/pixman/pixman-glyph.c
@@ -391,7 +391,8 @@ box32_intersect (pixman_box32_t *dest,
     return dest->x2 > dest->x1 && dest->y2 > dest->y1;
 }
 
-#if defined(__GNUC__) && !defined(__x86_64__) && !defined(__amd64__)
+#if defined(__GNUC__) && defined(__i386__) && !defined(__x86_64__) &&          \
+    !defined(__amd64__)
 __attribute__((__force_align_arg_pointer__))
 #endif
 PIXMAN_EXPORT void
@@ -418,10 +419,10 @@ pixman_composite_glyphs_no_mask (pixman_op_t            op,
 
     _pixman_image_validate (src);
     _pixman_image_validate (dest);
-    
+
     dest_format = dest->common.extended_format_code;
     dest_flags = dest->common.flags;
-    
+
     pixman_region32_init (&region);
     if (!_pixman_compute_composite_region32 (
 	    &region,
@@ -452,9 +453,9 @@ pixman_composite_glyphs_no_mask (pixman_op_t            op,
 	glyph_box.y1 = dest_y + glyphs[i].y - glyph->origin_y;
 	glyph_box.x2 = glyph_box.x1 + glyph->image->bits.width;
 	glyph_box.y2 = glyph_box.y1 + glyph->image->bits.height;
-	
+
 	pbox = pixman_region32_rectangles (&region, &n);
-	
+
 	info.mask_image = glyph_img;
 
 	while (n--)
@@ -588,7 +589,7 @@ add_glyphs (pixman_glyph_cache_t *cache,
 	glyph_box.y1 = glyphs[i].y - glyph->origin_y + off_y;
 	glyph_box.x2 = glyph_box.x1 + glyph->image->bits.width;
 	glyph_box.y2 = glyph_box.y1 + glyph->image->bits.height;
-	
+
 	if (box32_intersect (&composite_box, &glyph_box, &dest_box))
 	{
 	    int src_x = composite_box.x1 - glyph_box.x1;
@@ -623,7 +624,7 @@ out:
  *
  * Then (mask_x, mask_y) in the infinite mask and (src_x, src_y) in the source
  * image are both aligned with (dest_x, dest_y) in the destination image. Then
- * these three images are composited within the 
+ * these three images are composited within the
  *
  *       (dest_x, dest_y, dst_x + width, dst_y + height)
  *
diff --git a/pixman/pixman.c b/pixman/pixman.c
index 26e5008..2b408c6 100644
--- a/pixman/pixman.c
+++ b/pixman/pixman.c
@@ -854,7 +854,7 @@ pixman_image_fill_rectangles (pixman_op_t                 op,
                               int                         n_rects,
                               const pixman_rectangle16_t *rects)
 {
-    pixman_box32_t stack_boxes[6];
+    pixman_box32_t stack_boxes[6] = {0};
     pixman_box32_t *boxes;
     pixman_bool_t result;
     int i;
diff --git a/test/matrix-test.c b/test/matrix-test.c
index cd8820c..e93e878 100644
--- a/test/matrix-test.c
+++ b/test/matrix-test.c
@@ -219,6 +219,8 @@ test_matrix (int testnum, int verbose)
                 }
             }
         }
+#else
+        (void)transform_ok;
 #endif
         byteswap_vector_48_16 (&result_i);
         crc32 = compute_crc32 (crc32, &result_i, sizeof (result_i));
diff --git a/test/pixel-test.c b/test/pixel-test.c
index be24113..9051bae 100644
--- a/test/pixel-test.c
+++ b/test/pixel-test.c
@@ -2974,7 +2974,7 @@ done:
     pixman_image_unref (src);
     pixman_image_unref (dest);
 
-    if (have_mask)
+    if (have_mask && mask != NULL)
         pixman_image_unref (mask);
 
     return result;


More information about the xorg-commit mailing list