Debian

Available patches from Ubuntu

To see Ubuntu differences wrt. to Debian, write down a grep-dctrl query identifying the packages you're interested in:
grep-dctrl -n -sPackage Sources.Debian
(e.g. -FPackage linux-ntfs or linux-ntfs)

Modified packages are listed below:

Debian ( Changelog | PTS | Bugs ) Ubuntu ( Changelog | txt | LP | Bugs ) | Diff from Ubuntu

Source: pixman

pixman (0.38.4-0ubuntu1) eoan; urgency=medium * New upstream version -- Sebastien Bacher <seb128@ubuntu.com> Thu, 29 Aug 2019 17:01:09 +0200

Modifications :
  1. Download patch ltmain.sh
  2. Download patch pixman/pixman-conical-gradient.c

    --- 0.36.0-1/pixman/pixman-conical-gradient.c 2018-04-11 12:07:58.000000000 +0000 +++ 0.38.4-0ubuntu1/pixman/pixman-conical-gradient.c 2019-03-30 21:49:22.000000000 +0000 @@ -51,7 +51,10 @@ coordinates_to_parameter (double x, doub } static uint32_t * -conical_get_scanline_narrow (pixman_iter_t *iter, const uint32_t *mask) +conical_get_scanline (pixman_iter_t *iter, + const uint32_t *mask, + int Bpp, + pixman_gradient_walker_write_t write_pixel) { pixman_image_t *image = iter->image; int x = iter->x; @@ -61,7 +64,7 @@ conical_get_scanline_narrow (pixman_iter gradient_t *gradient = (gradient_t *)image; conical_gradient_t *conical = (conical_gradient_t *)image; - uint32_t *end = buffer + width; + uint32_t *end = buffer + width * (Bpp / 4); pixman_gradient_walker_t walker; pixman_bool_t affine = TRUE; double cx = 1.; @@ -109,11 +112,12 @@ conical_get_scanline_narrow (pixman_iter { double t = coordinates_to_parameter (rx, ry, conical->angle); - *buffer = _pixman_gradient_walker_pixel ( - &walker, (pixman_fixed_48_16_t)pixman_double_to_fixed (t)); + write_pixel (&walker, + (pixman_fixed_48_16_t)pixman_double_to_fixed (t), + buffer); } - ++buffer; + buffer += (Bpp / 4); rx += cx; ry += cy; @@ -144,11 +148,12 @@ conical_get_scanline_narrow (pixman_iter t = coordinates_to_parameter (x, y, conical->angle); - *buffer = _pixman_gradient_walker_pixel ( - &walker, (pixman_fixed_48_16_t)pixman_double_to_fixed (t)); + write_pixel (&walker, + (pixman_fixed_48_16_t)pixman_double_to_fixed (t), + buffer); } - ++buffer; + buffer += (Bpp / 4); rx += cx; ry += cy; @@ -161,14 +166,17 @@ conical_get_scanline_narrow (pixman_iter } static uint32_t * -conical_get_scanline_wide (pixman_iter_t *iter, const uint32_t *mask) +conical_get_scanline_narrow (pixman_iter_t *iter, const uint32_t *mask) { - uint32_t *buffer = conical_get_scanline_narrow (iter, NULL); - - pixman_expand_to_float ( - (argb_t *)buffer, buffer, PIXMAN_a8r8g8b8, iter->width); + return conical_get_scanline (iter, mask, 4, + _pixman_gradient_walker_write_narrow); +} - return buffer; +static uint32_t * +conical_get_scanline_wide (pixman_iter_t *iter, const uint32_t *mask) +{ + return conical_get_scanline (iter, NULL, 16, + _pixman_gradient_walker_write_wide); } void
  3. Download patch meson.build
  4. Download patch config.sub
  5. Download patch config.guess
  6. Download patch test/Makefile.am

    --- 0.36.0-1/test/Makefile.am 2018-04-11 12:07:58.000000000 +0000 +++ 0.38.4-0ubuntu1/test/Makefile.am 2019-03-30 21:49:22.000000000 +0000 @@ -11,3 +11,7 @@ noinst_LTLIBRARIES = libutils.la noinst_PROGRAMS = $(TESTPROGRAMS) $(OTHERPROGRAMS) TESTS = $(TESTPROGRAMS) + +EXTRA_DIST = \ + meson.build \ + $(NULL)
  7. Download patch pixman/pixman-inlines.h

    --- 0.36.0-1/pixman/pixman-inlines.h 2018-04-11 12:07:58.000000000 +0000 +++ 0.38.4-0ubuntu1/pixman/pixman-inlines.h 2019-03-30 21:49:22.000000000 +0000 @@ -222,6 +222,31 @@ bilinear_interpolation (uint32_t tl, uin #endif #endif // BILINEAR_INTERPOLATION_BITS <= 4 +static force_inline argb_t +bilinear_interpolation_float (argb_t tl, argb_t tr, + argb_t bl, argb_t br, + float distx, float disty) +{ + float distxy, distxiy, distixy, distixiy; + argb_t r; + + distxy = distx * disty; + distxiy = distx - (1.f - distxy); + distixy = (1.f - distx) * disty; + distixiy = (1.f - distx) * (1.f - disty); + + r.a = tl.a * distixiy + tr.a * distxiy + + bl.a * distixy + br.a * distxy; + r.r = tl.r * distixiy + tr.r * distxiy + + bl.r * distixy + br.r * distxy; + r.g = tl.g * distixiy + tr.g * distxiy + + bl.g * distixy + br.g * distxy; + r.b = tl.b * distixiy + tr.b * distxiy + + bl.b * distixy + br.b * distxy; + + return r; +} + /* * For each scanline fetched from source image with PAD repeat: * - calculate how many pixels need to be padded on the left side
  8. Download patch test/meson.build

    --- 0.36.0-1/test/meson.build 1970-01-01 00:00:00.000000000 +0000 +++ 0.38.4-0ubuntu1/test/meson.build 2019-03-30 21:49:22.000000000 +0000 @@ -0,0 +1,92 @@ +# Copyright © 2018 Intel Corporation + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +tests = [ + 'oob-test', + 'infinite-loop', + 'trap-crasher', + 'fence-image-self-test', + 'region-translate-test', + 'fetch-test', + 'a1-trap-test', + 'prng-test', + 'radial-invalid', + 'pdf-op-test', + 'region-test', + 'combiner-test', + 'scaling-crash-test', + 'alpha-loop', + 'scaling-helpers-test', + 'thread-test', + 'rotate-test', + 'alphamap', + 'gradient-crash-test', + 'pixel-test', + 'matrix-test', + 'filter-reduction-test', + 'composite-traps-test', + 'region-contains-test', + 'glyph-test', + 'solid-test', + 'stress-test', + 'cover-test', + 'blitters-test', + 'affine-test', + 'scaling-test', + 'composite', + 'tolerance-test', +] + +progs = [ + 'lowlevel-blt-bench', + 'radial-perf-test', + 'check-formats', + 'scaling-bench', + 'affine-bench', +] + +libtestutils = static_library( + 'testutils', + ['utils.c', 'utils-prng.c', config_h], + dependencies : [dep_openmp, dep_m, dep_png, idep_pixman], +) + +foreach t : tests + test( + t, + executable( + t, + [t + '.c', config_h], + link_with : libtestutils, + dependencies : [dep_threads, dep_openmp, idep_pixman], + ), + timeout : 120, + is_parallel : true, + ) +endforeach + +foreach p : progs + executable( + p, + p + '.c', + link_with : libtestutils, + dependencies : [dep_openmp, idep_pixman], + ) +endforeach
  9. Download patch demos/Makefile.am

    --- 0.36.0-1/demos/Makefile.am 2018-04-11 12:07:58.000000000 +0000 +++ 0.38.4-0ubuntu1/demos/Makefile.am 2019-03-30 21:49:21.000000000 +0000 @@ -1,4 +1,9 @@ -EXTRA_DIST = parrot.c parrot.jpg scale.ui +EXTRA_DIST = \ + parrot.c \ + parrot.jpg \ + scale.ui \ + meson.build \ + $(NULL) if HAVE_GTK
  10. Download patch debian/control

    --- 0.36.0-1/debian/control 2019-08-30 01:36:11.000000000 +0000 +++ 0.38.4-0ubuntu1/debian/control 2019-08-30 01:36:11.000000000 +0000 @@ -1,7 +1,8 @@ Source: pixman Section: devel Priority: optional -Maintainer: Debian X Strike Force <debian-x@lists.debian.org> +Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> +XSBC-Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org> Uploaders: Andreas Boll <aboll@debian.org> Build-Depends: debhelper (>= 11),
  11. Download patch pixman/Makefile.am

    --- 0.36.0-1/pixman/Makefile.am 2018-04-11 12:07:58.000000000 +0000 +++ 0.38.4-0ubuntu1/pixman/Makefile.am 2019-04-07 19:31:33.000000000 +0000 @@ -14,6 +14,7 @@ EXTRA_DIST = \ Makefile.win32 \ pixman-region.c \ solaris-hwcap.mapfile \ + meson.build \ $(NULL) # mmx code
  12. Download patch neon-test.S

    --- 0.36.0-1/neon-test.S 1970-01-01 00:00:00.000000000 +0000 +++ 0.38.4-0ubuntu1/neon-test.S 2019-03-30 21:49:21.000000000 +0000 @@ -0,0 +1,12 @@ +.text +.fpu neon +.arch armv7a +.object_arch armv4 +.eabi_attribute 10, 0 +.arm +.altmacro +#ifndef __ARM_EABI__ +#error EABI is required (to be sure that calling conventions are compatible) +#endif +pld [r0] +vmovn.u16 d0, q0
  13. Download patch test/Makefile.in

    --- 0.36.0-1/test/Makefile.in 2018-11-21 11:41:10.000000000 +0000 +++ 0.38.4-0ubuntu1/test/Makefile.in 2019-04-10 17:19:27.000000000 +0000 @@ -812,7 +812,6 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ -runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -887,6 +886,10 @@ LDADD = libutils.la $(top_builddir)/pixm AM_CPPFLAGS = -I$(top_srcdir)/pixman -I$(top_builddir)/pixman $(PNG_CFLAGS) libutils_la_SOURCES = $(libutils_sources) $(libutils_headers) noinst_LTLIBRARIES = libutils.la +EXTRA_DIST = \ + meson.build \ + $(NULL) + all: all-am .SUFFIXES:
  14. Download patch configure.ac

    --- 0.36.0-1/configure.ac 2018-11-14 09:15:59.000000000 +0000 +++ 0.38.4-0ubuntu1/configure.ac 2019-04-10 17:17:44.000000000 +0000 @@ -53,8 +53,8 @@ AC_PREREQ([2.57]) # m4_define([pixman_major], 0) -m4_define([pixman_minor], 36) -m4_define([pixman_micro], 0) +m4_define([pixman_minor], 38) +m4_define([pixman_micro], 4) m4_define([pixman_version],[pixman_major.pixman_minor.pixman_micro])
  15. Download patch demos/Makefile.in

    --- 0.36.0-1/demos/Makefile.in 2018-11-21 11:41:10.000000000 +0000 +++ 0.38.4-0ubuntu1/demos/Makefile.in 2019-04-10 17:19:27.000000000 +0000 @@ -511,7 +511,6 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ -runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -520,7 +519,13 @@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -EXTRA_DIST = parrot.c parrot.jpg scale.ui +EXTRA_DIST = \ + parrot.c \ + parrot.jpg \ + scale.ui \ + meson.build \ + $(NULL) + @HAVE_GTK_TRUE@AM_CFLAGS = $(OPENMP_CFLAGS) @HAVE_GTK_TRUE@AM_LDFLAGS = $(OPENMP_CFLAGS) @HAVE_GTK_TRUE@LDADD = $(top_builddir)/pixman/libpixman-1.la -lm $(GTK_LIBS) $(PNG_LIBS)
  16. Download patch pixman/Makefile.in

    --- 0.36.0-1/pixman/Makefile.in 2018-11-21 11:41:10.000000000 +0000 +++ 0.38.4-0ubuntu1/pixman/Makefile.in 2019-04-10 17:19:27.000000000 +0000 @@ -548,7 +548,6 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ -runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -618,6 +617,7 @@ EXTRA_DIST = \ Makefile.win32 \ pixman-region.c \ solaris-hwcap.mapfile \ + meson.build \ $(NULL) @USE_X86_MMX_TRUE@libpixman_mmx_la_SOURCES = \
  17. Download patch pixman/pixman-radial-gradient.c
  18. Download patch pixman/pixman-private.h

    --- 0.36.0-1/pixman/pixman-private.h 2018-05-30 08:17:42.000000000 +0000 +++ 0.38.4-0ubuntu1/pixman/pixman-private.h 2019-04-07 19:31:33.000000000 +0000 @@ -363,9 +363,38 @@ void _pixman_gradient_walker_reset (pixman_gradient_walker_t *walker, pixman_fixed_48_16_t pos); -uint32_t -_pixman_gradient_walker_pixel (pixman_gradient_walker_t *walker, - pixman_fixed_48_16_t x); +typedef void (*pixman_gradient_walker_write_t) ( + pixman_gradient_walker_t *walker, + pixman_fixed_48_16_t x, + uint32_t *buffer); + +void +_pixman_gradient_walker_write_narrow(pixman_gradient_walker_t *walker, + pixman_fixed_48_16_t x, + uint32_t *buffer); + +void +_pixman_gradient_walker_write_wide(pixman_gradient_walker_t *walker, + pixman_fixed_48_16_t x, + uint32_t *buffer); + +typedef void (*pixman_gradient_walker_fill_t) ( + pixman_gradient_walker_t *walker, + pixman_fixed_48_16_t x, + uint32_t *buffer, + uint32_t *end); + +void +_pixman_gradient_walker_fill_narrow(pixman_gradient_walker_t *walker, + pixman_fixed_48_16_t x, + uint32_t *buffer, + uint32_t *end); + +void +_pixman_gradient_walker_fill_wide(pixman_gradient_walker_t *walker, + pixman_fixed_48_16_t x, + uint32_t *buffer, + uint32_t *end); /* * Edges
  19. Download patch configure
  20. Download patch arm-simd-test.S

    --- 0.36.0-1/arm-simd-test.S 1970-01-01 00:00:00.000000000 +0000 +++ 0.38.4-0ubuntu1/arm-simd-test.S 2019-03-30 21:49:21.000000000 +0000 @@ -0,0 +1,10 @@ +.text +.arch armv6 +.object_arch armv4 +.arm +.altmacro +#ifndef __ARM_EABI__ +#error EABI is required (to be sure that calling conventions are compatible) +#endif +pld [r0] +uqadd8 r0, r0, r0
  21. Download patch pixman/pixman-gradient-walker.c

    --- 0.36.0-1/pixman/pixman-gradient-walker.c 2018-04-11 12:07:58.000000000 +0000 +++ 0.38.4-0ubuntu1/pixman/pixman-gradient-walker.c 2019-03-30 21:49:22.000000000 +0000 @@ -122,10 +122,9 @@ gradient_walker_reset (pixman_gradient_w left_c = right_c; } - /* The alpha channel is scaled to be in the [0, 255] interval, - * and the red/green/blue channels are scaled to be in [0, 1]. + /* The alpha/red/green/blue channels are scaled to be in [0, 1]. * This ensures that after premultiplication all channels will - * be in the [0, 255] interval. + * be in the [0, 1] interval. */ la = (left_c->alpha * (1.0f/257.0f)); lr = (left_c->red * (1.0f/257.0f)); @@ -143,7 +142,7 @@ gradient_walker_reset (pixman_gradient_w if (FLOAT_IS_ZERO (rx - lx) || left_x == INT32_MIN || right_x == INT32_MAX) { walker->a_s = walker->r_s = walker->g_s = walker->b_s = 0.0f; - walker->a_b = (la + ra) / 2.0f; + walker->a_b = (la + ra) / 510.0f; walker->r_b = (lr + rr) / 510.0f; walker->g_b = (lg + rg) / 510.0f; walker->b_b = (lb + rb) / 510.0f; @@ -152,12 +151,12 @@ gradient_walker_reset (pixman_gradient_w { float w_rec = 1.0f / (rx - lx); - walker->a_b = (la * rx - ra * lx) * w_rec; + walker->a_b = (la * rx - ra * lx) * w_rec * (1.0f/255.0f); walker->r_b = (lr * rx - rr * lx) * w_rec * (1.0f/255.0f); walker->g_b = (lg * rx - rg * lx) * w_rec * (1.0f/255.0f); walker->b_b = (lb * rx - rb * lx) * w_rec * (1.0f/255.0f); - walker->a_s = (ra - la) * w_rec; + walker->a_s = (ra - la) * w_rec * (1.0f/255.0f); walker->r_s = (rr - lr) * w_rec * (1.0f/255.0f); walker->g_s = (rg - lg) * w_rec * (1.0f/255.0f); walker->b_s = (rb - lb) * w_rec * (1.0f/255.0f); @@ -169,34 +168,97 @@ gradient_walker_reset (pixman_gradient_w walker->need_reset = FALSE; } -uint32_t -_pixman_gradient_walker_pixel (pixman_gradient_walker_t *walker, - pixman_fixed_48_16_t x) -{ - float a, r, g, b; - uint8_t a8, r8, g8, b8; - uint32_t v; +static argb_t +pixman_gradient_walker_pixel_float (pixman_gradient_walker_t *walker, + pixman_fixed_48_16_t x) +{ + argb_t f; + float y; + + if (walker->need_reset || x < walker->left_x || x >= walker->right_x) + gradient_walker_reset (walker, x); + + y = x * (1.0f / 65536.0f); + + f.a = walker->a_s * y + walker->a_b; + f.r = f.a * (walker->r_s * y + walker->r_b); + f.g = f.a * (walker->g_s * y + walker->g_b); + f.b = f.a * (walker->b_s * y + walker->b_b); + + return f; +} + +static uint32_t +pixman_gradient_walker_pixel_32 (pixman_gradient_walker_t *walker, + pixman_fixed_48_16_t x) +{ + argb_t f; float y; if (walker->need_reset || x < walker->left_x || x >= walker->right_x) - gradient_walker_reset (walker, x); + gradient_walker_reset (walker, x); y = x * (1.0f / 65536.0f); - a = walker->a_s * y + walker->a_b; - r = a * (walker->r_s * y + walker->r_b); - g = a * (walker->g_s * y + walker->g_b); - b = a * (walker->b_s * y + walker->b_b); - - a8 = a + 0.5f; - r8 = r + 0.5f; - g8 = g + 0.5f; - b8 = b + 0.5f; - - v = ((a8 << 24) & 0xff000000) | - ((r8 << 16) & 0x00ff0000) | - ((g8 << 8) & 0x0000ff00) | - ((b8 >> 0) & 0x000000ff); + /* Instead of [0...1] for ARGB, we want [0...255], + * multiply alpha with 255 and the color channels + * also get multiplied by the alpha multiplier. + * + * We don't use pixman_contract_from_float because it causes a 2x + * slowdown to do so, and the values are already normalized, + * so we don't have to worry about values < 0.f or > 1.f + */ + f.a = 255.f * (walker->a_s * y + walker->a_b); + f.r = f.a * (walker->r_s * y + walker->r_b); + f.g = f.a * (walker->g_s * y + walker->g_b); + f.b = f.a * (walker->b_s * y + walker->b_b); + + return (((uint8_t)(f.a + .5f) << 24) & 0xff000000) | + (((uint8_t)(f.r + .5f) << 16) & 0x00ff0000) | + (((uint8_t)(f.g + .5f) << 8) & 0x0000ff00) | + (((uint8_t)(f.b + .5f) >> 0) & 0x000000ff); +} + +void +_pixman_gradient_walker_write_narrow (pixman_gradient_walker_t *walker, + pixman_fixed_48_16_t x, + uint32_t *buffer) +{ + *buffer = pixman_gradient_walker_pixel_32 (walker, x); +} + +void +_pixman_gradient_walker_write_wide (pixman_gradient_walker_t *walker, + pixman_fixed_48_16_t x, + uint32_t *buffer) +{ + *(argb_t *)buffer = pixman_gradient_walker_pixel_float (walker, x); +} + +void +_pixman_gradient_walker_fill_narrow (pixman_gradient_walker_t *walker, + pixman_fixed_48_16_t x, + uint32_t *buffer, + uint32_t *end) +{ + register uint32_t color; + + color = pixman_gradient_walker_pixel_32 (walker, x); + while (buffer < end) + *buffer++ = color; +} - return v; +void +_pixman_gradient_walker_fill_wide (pixman_gradient_walker_t *walker, + pixman_fixed_48_16_t x, + uint32_t *buffer, + uint32_t *end) +{ + register argb_t color; + argb_t *buffer_wide = (argb_t *)buffer; + argb_t *end_wide = (argb_t *)end; + + color = pixman_gradient_walker_pixel_float (walker, x); + while (buffer_wide < end_wide) + *buffer_wide++ = color; }
  22. Download patch demos/meson.build

    --- 0.36.0-1/demos/meson.build 1970-01-01 00:00:00.000000000 +0000 +++ 0.38.4-0ubuntu1/demos/meson.build 2019-03-30 21:49:21.000000000 +0000 @@ -0,0 +1,59 @@ +# Copyright © 2018 Intel Corporation + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +demos = [ + 'gradient-test', + 'alpha-test', + 'composite-test', + 'clip-test', + 'trap-test', + 'screen-test', + 'convolution-test', + 'radial-test', + 'linear-gradient', + 'conical-test', + 'tri-test', + 'checkerboard', + 'srgb-test', + 'srgb-trap-test', + 'scale', +] + +if dep_gtk.found() + + libdemo = static_library( + 'demo', + ['gtk-utils.c', config_h, version_h], + dependencies : [dep_gtk, dep_glib, dep_png, dep_m, dep_openmp], + include_directories : inc_pixman, + ) + + if dep_gtk.found() + foreach d : demos + executable( + d, + [d + '.c', config_h, version_h], + link_with : [libdemo, libtestutils], + dependencies : [dep_glib, dep_gtk, dep_openmp, idep_pixman], + ) + endforeach + endif + +endif
  23. Download patch Makefile.win32.common

    --- 0.36.0-1/Makefile.win32.common 2018-04-11 12:07:58.000000000 +0000 +++ 0.38.4-0ubuntu1/Makefile.win32.common 2019-03-30 21:49:21.000000000 +0000 @@ -1,5 +1,17 @@ LIBRARY = pixman-1 +ifeq ($(shell echo ""),) +# POSIX style shell +mkdir_p = mkdir -p $1 +rm = $(RM) $1 +echo = echo "$1" +else +# DOS/Windows style shell +mkdir_p = if not exist $(subst /,\,$1) md $(subst /,\,$1) +echo = echo $1 +rm = del $(subst /,\,$1) +endif + CC = cl LD = link AR = lib @@ -50,12 +62,12 @@ endif endif $(CFG_VAR): - @mkdir $@ + @$(call mkdir_p,$@) $(CFG_VAR)/%.obj: %.c $(libpixman_headers) | $(CFG_VAR) - @$(CC) -c $(PIXMAN_CFLAGS) -Fo"$@" $< + $(CC) -c $(PIXMAN_CFLAGS) -Fo"$@" $< clean: inform $(CFG_VAR) - @cd $(CFG_VAR) && echo > silence_error.exe && $(RM) *.exe *.ilk *.lib *.obj *.pdb + -$(call rm,$(CFG_VAR)/*.exe $(CFG_VAR)/*.ilk $(CFG_VAR)/*.lib $(CFG_VAR)/*.obj $(CFG_VAR)/*.pdb) .PHONY: inform clean
  24. Download patch pixman/meson.build

    --- 0.36.0-1/pixman/meson.build 1970-01-01 00:00:00.000000000 +0000 +++ 0.38.4-0ubuntu1/pixman/meson.build 2019-03-30 21:49:21.000000000 +0000 @@ -0,0 +1,116 @@ +# Copyright © 2018 Intel Corporation + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +config_h = configure_file( + configuration : config, + output : 'config.h' +) + +version_h = configure_file( + configuration : version_conf, + input : 'pixman-version.h.in', + output : 'pixman-version.h', + install_dir : join_paths(get_option('prefix'), get_option('includedir'), 'pixman-1') +) + +pixman_simd_libs = [] +simds = [ + # the mmx library can be compiled with mmx on x86/x86_64, iwmmxt on + # some arm cores, or loongson mmi on loongson mips systems. The + # libraries will all have the same name, "pixman-mmx", but there is + # no chance of more than one version being built in the same build + # because no system could have mmx, iwmmxt, and mmi, and it + # simplifies the build logic to give them the same name. + ['mmx', have_mmx, mmx_flags, []], + ['mmx', have_loongson_mmi, loongson_mmi_flags, []], + ['mmx', have_iwmmxt, iwmmxt_flags, []], + + ['sse2', have_sse2, sse2_flags, []], + ['ssse3', have_ssse3, ssse3_flags, []], + ['vmx', have_vmx, vmx_flags, []], + ['arm-simd', have_armv6_simd, [], + ['pixman-arm-simd-asm.S', 'pixman-arm-simd-asm-scaled.S']], + ['arm-neon', have_neon, [], + ['pixman-arm-neon-asm.S', 'pixman-arm-neon-asm-bilinear.S']], + ['mips-dspr2', have_mips_dspr2, mips_dspr2_flags, + ['pixman-mips-dspr2-asm.S', 'pixman-mips-memcpy-asm.S']], +] + +foreach simd : simds + if simd[1] + name = 'pixman-' + simd[0] + pixman_simd_libs += static_library( + name, + [name + '.c', config_h, version_h, simd[3]], + c_args : simd[2] + ) + endif +endforeach + +pixman_files = files( + 'pixman.c', + 'pixman-access.c', + 'pixman-access-accessors.c', + 'pixman-bits-image.c', + 'pixman-combine32.c', + 'pixman-combine-float.c', + 'pixman-conical-gradient.c', + 'pixman-filter.c', + 'pixman-x86.c', + 'pixman-mips.c', + 'pixman-arm.c', + 'pixman-ppc.c', + 'pixman-edge.c', + 'pixman-edge-accessors.c', + 'pixman-fast-path.c', + 'pixman-glyph.c', + 'pixman-general.c', + 'pixman-gradient-walker.c', + 'pixman-image.c', + 'pixman-implementation.c', + 'pixman-linear-gradient.c', + 'pixman-matrix.c', + 'pixman-noop.c', + 'pixman-radial-gradient.c', + 'pixman-region16.c', + 'pixman-region32.c', + 'pixman-solid-fill.c', + 'pixman-timer.c', + 'pixman-trap.c', + 'pixman-utils.c', +) + +libpixman = shared_library( + 'pixman-1', + [pixman_files, config_h, version_h], + link_with : [pixman_simd_libs], + dependencies : [dep_m, dep_threads], + version : meson.project_version(), + install : true, +) + +inc_pixman = include_directories('.') + +idep_pixman = declare_dependency( + link_with: libpixman, + include_directories : inc_pixman, +) + +install_headers('pixman.h', subdir : 'pixman-1')
  25. Download patch pixman/pixman-linear-gradient.c

    --- 0.36.0-1/pixman/pixman-linear-gradient.c 2018-04-11 12:07:58.000000000 +0000 +++ 0.38.4-0ubuntu1/pixman/pixman-linear-gradient.c 2019-03-30 21:49:22.000000000 +0000 @@ -89,8 +89,11 @@ linear_gradient_is_horizontal (pixman_im } static uint32_t * -linear_get_scanline_narrow (pixman_iter_t *iter, - const uint32_t *mask) +linear_get_scanline (pixman_iter_t *iter, + const uint32_t *mask, + int Bpp, + pixman_gradient_walker_write_t write_pixel, + pixman_gradient_walker_fill_t fill_pixel) { pixman_image_t *image = iter->image; int x = iter->x; @@ -103,7 +106,7 @@ linear_get_scanline_narrow (pixman_iter_ pixman_fixed_48_16_t dx, dy; gradient_t *gradient = (gradient_t *)image; linear_gradient_t *linear = (linear_gradient_t *)image; - uint32_t *end = buffer + width; + uint32_t *end = buffer + width * (Bpp / 4); pixman_gradient_walker_t walker; _pixman_gradient_walker_init (&walker, gradient, image->common.repeat); @@ -137,7 +140,7 @@ linear_get_scanline_narrow (pixman_iter_ if (l == 0 || unit.vector[2] == 0) { /* affine transformation only */ - pixman_fixed_32_32_t t, next_inc; + pixman_fixed_32_32_t t, next_inc; double inc; if (l == 0 || v.vector[2] == 0) @@ -152,7 +155,7 @@ linear_get_scanline_narrow (pixman_iter_ invden = pixman_fixed_1 * (double) pixman_fixed_1 / (l * (double) v.vector[2]); v2 = v.vector[2] * (1. / pixman_fixed_1); - t = ((dx * v.vector[0] + dy * v.vector[1]) - + t = ((dx * v.vector[0] + dy * v.vector[1]) - (dx * linear->p1.x + dy * linear->p1.y) * v2) * invden; inc = (dx * unit.vector[0] + dy * unit.vector[1]) * invden; } @@ -160,11 +163,7 @@ linear_get_scanline_narrow (pixman_iter_ if (((pixman_fixed_32_32_t )(inc * width)) == 0) { - register uint32_t color; - - color = _pixman_gradient_walker_pixel (&walker, t); - while (buffer < end) - *buffer++ = color; + fill_pixel (&walker, t, buffer, end); } else { @@ -175,12 +174,11 @@ linear_get_scanline_narrow (pixman_iter_ { if (!mask || *mask++) { - *buffer = _pixman_gradient_walker_pixel (&walker, - t + next_inc); + write_pixel (&walker, t + next_inc, buffer); } i++; next_inc = inc * i; - buffer++; + buffer += (Bpp / 4); } } } @@ -202,14 +200,14 @@ linear_get_scanline_narrow (pixman_iter_ invden = pixman_fixed_1 * (double) pixman_fixed_1 / (l * (double) v.vector[2]); v2 = v.vector[2] * (1. / pixman_fixed_1); - t = ((dx * v.vector[0] + dy * v.vector[1]) - + t = ((dx * v.vector[0] + dy * v.vector[1]) - (dx * linear->p1.x + dy * linear->p1.y) * v2) * invden; } - *buffer = _pixman_gradient_walker_pixel (&walker, t); + write_pixel (&walker, t, buffer); } - ++buffer; + buffer += (Bpp / 4); v.vector[0] += unit.vector[0]; v.vector[1] += unit.vector[1]; @@ -223,14 +221,21 @@ linear_get_scanline_narrow (pixman_iter_ } static uint32_t * -linear_get_scanline_wide (pixman_iter_t *iter, const uint32_t *mask) +linear_get_scanline_narrow (pixman_iter_t *iter, + const uint32_t *mask) { - uint32_t *buffer = linear_get_scanline_narrow (iter, NULL); + return linear_get_scanline (iter, mask, 4, + _pixman_gradient_walker_write_narrow, + _pixman_gradient_walker_fill_narrow); +} - pixman_expand_to_float ( - (argb_t *)buffer, buffer, PIXMAN_a8r8g8b8, iter->width); - return buffer; +static uint32_t * +linear_get_scanline_wide (pixman_iter_t *iter, const uint32_t *mask) +{ + return linear_get_scanline (iter, NULL, 16, + _pixman_gradient_walker_write_wide, + _pixman_gradient_walker_fill_wide); } void
  26. Download patch aclocal.m4
  27. Download patch Makefile.am

    --- 0.36.0-1/Makefile.am 2018-11-14 09:48:34.000000000 +0000 +++ 0.38.4-0ubuntu1/Makefile.am 2019-04-10 17:10:25.000000000 +0000 @@ -15,15 +15,20 @@ USERNAME=$$USER RELEASE_OR_SNAPSHOT = $$(if test "x$(PIXMAN_VERSION_MINOR)" = "x$$(echo "$(PIXMAN_VERSION_MINOR)/2*2" | bc)" ; then echo release; else echo snapshot; fi) RELEASE_CAIRO_HOST = $(USERNAME)@cairographics.org RELEASE_CAIRO_DIR = /srv/cairo.freedesktop.org/www/$(RELEASE_OR_SNAPSHOT)s -RELEASE_CAIRO_URL = http://cairographics.org/$(RELEASE_OR_SNAPSHOT)s -RELEASE_XORG_URL = http://xorg.freedesktop.org/archive/individual/lib +RELEASE_CAIRO_URL = https://cairographics.org/$(RELEASE_OR_SNAPSHOT)s +RELEASE_XORG_URL = https://www.x.org/releases/individual/lib RELEASE_XORG_HOST = $(USERNAME)@xorg.freedesktop.org RELEASE_XORG_DIR = /srv/xorg.freedesktop.org/archive/individual/lib RELEASE_ANNOUNCE_LIST = cairo-announce@cairographics.org, xorg-announce@lists.freedesktop.org, pixman@lists.freedesktop.org EXTRA_DIST = \ Makefile.win32 \ - Makefile.win32.common + Makefile.win32.common \ + meson.build \ + meson_options.txt \ + neon-test.S \ + arm-simd-test.S \ + $(NULL) tar_gz = $(PACKAGE)-$(VERSION).tar.gz tar_bz2 = $(PACKAGE)-$(VERSION).tar.bz2
  28. Download patch meson_options.txt

    --- 0.36.0-1/meson_options.txt 1970-01-01 00:00:00.000000000 +0000 +++ 0.38.4-0ubuntu1/meson_options.txt 2019-03-30 21:49:21.000000000 +0000 @@ -0,0 +1,103 @@ +# Copyright © 2018 Intel Corporation + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +option( + 'loongson-mmi', + type : 'feature', + description : 'Use Loongson MMI intrinsic optimized paths', +) +option( + 'mmx', + type : 'feature', + description : 'Use X86 MMX intrinsic optimized paths', +) +option( + 'sse2', + type : 'feature', + description : 'Use X86 SSE2 intrinsic optimized paths', +) +option( + 'ssse3', + type : 'feature', + description : 'Use X86 SSSE3 intrinsic optimized paths', +) +option( + 'vmx', + type : 'feature', + description : 'Use PPC VMX/Altivec intrinsic optimized paths', +) +option( + 'arm-simd', + type : 'feature', + description : 'Use ARMv6 SIMD intrinsic optimized paths', +) +option( + 'neon', + type : 'feature', + description : 'Use ARM NEON intrinsic optimized paths', +) +option( + 'iwmmxt', + type : 'feature', + description : 'Use ARM IWMMXT intrinsic optimized paths', +) +option( + 'iwmmxt2', + type : 'boolean', + value : true, + description : 'Use ARM IWMMXT2 intrinsic instead of IWMMXT', +) +option( + 'mips-dspr2', + type : 'feature', + description : 'Use MIPS32 DSPr2 intrinsic optimized paths', +) +option( + 'gnu-inline-asm', + type : 'feature', + description : 'Use GNU style inline assembler', +) +option( + 'openmp', + type : 'feature', + description : 'Enable openmp support', +) +option( + 'timers', + type : 'boolean', + value : false, + description : 'Enable TIMER_* macros', +) +option( + 'gnuplot', + type : 'boolean', + value : false, + description : 'Enable output of filters that can be piped to gnuplot', +) +option( + 'gtk', + type : 'feature', + description : 'Enable tests using GTK', +) +option( + 'libpng', + type : 'feature', + description : 'Use libpng' +)
  29. Download patch pixman/pixman-version.h

    --- 0.36.0-1/pixman/pixman-version.h 2018-11-21 11:41:41.000000000 +0000 +++ 0.38.4-0ubuntu1/pixman/pixman-version.h 2019-04-10 17:19:31.000000000 +0000 @@ -32,10 +32,10 @@ #endif #define PIXMAN_VERSION_MAJOR 0 -#define PIXMAN_VERSION_MINOR 36 -#define PIXMAN_VERSION_MICRO 0 +#define PIXMAN_VERSION_MINOR 38 +#define PIXMAN_VERSION_MICRO 4 -#define PIXMAN_VERSION_STRING "0.36.0" +#define PIXMAN_VERSION_STRING "0.38.4" #define PIXMAN_VERSION_ENCODE(major, minor, micro) ( \ ((major) * 10000) \
  30. Download patch Makefile.in

    --- 0.36.0-1/Makefile.in 2018-11-21 11:41:10.000000000 +0000 +++ 0.38.4-0ubuntu1/Makefile.in 2019-04-10 17:19:26.000000000 +0000 @@ -373,7 +373,6 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ -runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -390,14 +389,19 @@ USERNAME = $$USER RELEASE_OR_SNAPSHOT = $$(if test "x$(PIXMAN_VERSION_MINOR)" = "x$$(echo "$(PIXMAN_VERSION_MINOR)/2*2" | bc)" ; then echo release; else echo snapshot; fi) RELEASE_CAIRO_HOST = $(USERNAME)@cairographics.org RELEASE_CAIRO_DIR = /srv/cairo.freedesktop.org/www/$(RELEASE_OR_SNAPSHOT)s -RELEASE_CAIRO_URL = http://cairographics.org/$(RELEASE_OR_SNAPSHOT)s -RELEASE_XORG_URL = http://xorg.freedesktop.org/archive/individual/lib +RELEASE_CAIRO_URL = https://cairographics.org/$(RELEASE_OR_SNAPSHOT)s +RELEASE_XORG_URL = https://www.x.org/releases/individual/lib RELEASE_XORG_HOST = $(USERNAME)@xorg.freedesktop.org RELEASE_XORG_DIR = /srv/xorg.freedesktop.org/archive/individual/lib RELEASE_ANNOUNCE_LIST = cairo-announce@cairographics.org, xorg-announce@lists.freedesktop.org, pixman@lists.freedesktop.org EXTRA_DIST = \ Makefile.win32 \ - Makefile.win32.common + Makefile.win32.common \ + meson.build \ + meson_options.txt \ + neon-test.S \ + arm-simd-test.S \ + $(NULL) tar_gz = $(PACKAGE)-$(VERSION).tar.gz tar_bz2 = $(PACKAGE)-$(VERSION).tar.bz2
  31. Download patch pixman/pixman-bits-image.c
  1. pixman