diff options
Diffstat (limited to 'Build/source/libs/pixman/pixman-src')
8 files changed, 91 insertions, 62 deletions
diff --git a/Build/source/libs/pixman/pixman-src/Makefile.am b/Build/source/libs/pixman/pixman-src/Makefile.am index a6806650391..e33b2b9c279 100644 --- a/Build/source/libs/pixman/pixman-src/Makefile.am +++ b/Build/source/libs/pixman/pixman-src/Makefile.am @@ -15,8 +15,8 @@ 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 @@ -26,6 +26,8 @@ EXTRA_DIST = \ Makefile.win32.common \ meson.build \ meson_options.txt \ + neon-test.S \ + arm-simd-test.S \ $(NULL) tar_gz = $(PACKAGE)-$(VERSION).tar.gz diff --git a/Build/source/libs/pixman/pixman-src/Makefile.win32.common b/Build/source/libs/pixman/pixman-src/Makefile.win32.common index 756fc94a6ee..1b2f894873d 100644 --- a/Build/source/libs/pixman/pixman-src/Makefile.win32.common +++ b/Build/source/libs/pixman/pixman-src/Makefile.win32.common @@ -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 diff --git a/Build/source/libs/pixman/pixman-src/arm-simd-test.S b/Build/source/libs/pixman/pixman-src/arm-simd-test.S new file mode 100644 index 00000000000..910c814d6a1 --- /dev/null +++ b/Build/source/libs/pixman/pixman-src/arm-simd-test.S @@ -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 diff --git a/Build/source/libs/pixman/pixman-src/configure.ac b/Build/source/libs/pixman/pixman-src/configure.ac index 6efc6c0f80d..4cbd454a111 100644 --- a/Build/source/libs/pixman/pixman-src/configure.ac +++ b/Build/source/libs/pixman/pixman-src/configure.ac @@ -54,7 +54,7 @@ AC_PREREQ([2.57]) m4_define([pixman_major], 0) m4_define([pixman_minor], 38) -m4_define([pixman_micro], 0) +m4_define([pixman_micro], 4) m4_define([pixman_version],[pixman_major.pixman_minor.pixman_micro]) diff --git a/Build/source/libs/pixman/pixman-src/meson.build b/Build/source/libs/pixman/pixman-src/meson.build index fe77893b8ce..fad22eea910 100644 --- a/Build/source/libs/pixman/pixman-src/meson.build +++ b/Build/source/libs/pixman/pixman-src/meson.build @@ -21,7 +21,7 @@ project( 'pixman', ['c'], - version : '0.38.0', + version : '0.38.4', license : 'MIT', meson_version : '>= 0.47.2', default_options : ['buildtype=debugoptimized'], @@ -50,7 +50,7 @@ endforeach use_loongson_mmi = get_option('loongson-mmi') have_loongson_mmi = false -loongson_mmi_flags = ['-mach=loongson2f'] +loongson_mmi_flags = ['-march=loongson2f'] if not use_loongson_mmi.disabled() if host_machine.cpu_family() == 'mips64' and cc.compiles(''' #ifndef __mips_loongson_vector_rev @@ -70,6 +70,7 @@ if not use_loongson_mmi.disabled() return 0; }''', args : loongson_mmi_flags, + include_directories : include_directories('.'), name : 'Loongson MMI Intrinsic Support') have_loongson_mmi = true endif @@ -223,20 +224,7 @@ use_armv6_simd = get_option('arm-simd') have_armv6_simd = false if not use_armv6_simd.disabled() if host_machine.cpu_family() == 'arm' - if cc.compiles(''' - .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 - ''', - args : ['-x assembler-with-cpp'], - name : 'ARMv6 SIMD Intrinsic Support') + if cc.compiles(files('arm-simd-test.S'), name : 'ARMv6 SIMD Intrinsic Support') have_armv6_simd = true endif endif @@ -252,22 +240,7 @@ use_neon = get_option('neon') have_neon = false if not use_neon.disabled() if host_machine.cpu_family() == 'arm' - if cc.compiles(''' - .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 - ''', - args : ['-x assembler-with-cpp'], - name : 'NEON Intrinsic Support') + if cc.compiles(files('neon-test.S'), name : 'NEON Intrinsic Support') have_neon = true endif endif @@ -317,7 +290,7 @@ endif if have_iwmmxt config.set10('USE_ARM_IWMMXT', true) elif use_iwmmxt.enabled() - error('NEON Support unavailable, but required') + error('IWMMXT Support unavailable, but required') endif use_mips_dspr2 = get_option('mips-dspr2') @@ -376,13 +349,15 @@ if get_option('gnuplot') config.set('PIXMAN_GNUPLOT', 1) endif -use_openmp = get_option('openmp') -dep_openmp = null_dep -if not use_openmp.disabled() - dep_openmp = dependency('openmp', required : get_option('openmp')) - if dep_openmp.found() - config.set10('USE_OPENMP', true) - endif +dep_openmp = dependency('openmp', required : get_option('openmp')) +if dep_openmp.found() + config.set10('USE_OPENMP', true) +elif meson.version().version_compare('<0.51.0') +# In versions of meson before 0.51 the openmp dependency can still +# inject arguments in the the auto case when it is not found, the +# detection does work correctly in that case however, so we just +# replace dep_openmp with null_dep to work around this. + dep_openmp = null_dep endif dep_gtk = dependency('gtk+-2.0', version : '>= 2.16', required : get_option('gtk')) diff --git a/Build/source/libs/pixman/pixman-src/neon-test.S b/Build/source/libs/pixman/pixman-src/neon-test.S new file mode 100644 index 00000000000..c30a3990bfd --- /dev/null +++ b/Build/source/libs/pixman/pixman-src/neon-test.S @@ -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 diff --git a/Build/source/libs/pixman/pixman-src/pixman/meson.build b/Build/source/libs/pixman/pixman-src/pixman/meson.build index 3dabec97cab..6ce87e7addb 100644 --- a/Build/source/libs/pixman/pixman-src/pixman/meson.build +++ b/Build/source/libs/pixman/pixman-src/pixman/meson.build @@ -32,17 +32,25 @@ version_h = configure_file( 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-scaled.S']], + ['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']], - ['loongson-mmi', have_loongson_mmi, loongson_mmi_flags, []] ] foreach simd : simds @@ -56,14 +64,6 @@ foreach simd : simds endif endforeach -if have_iwmmxt - pixman_simd_libs += static_library( - 'pixman-iwmmt', - 'pixman-mmx.c', - c_args : iwmmxt_flags, - ) -endif - pixman_files = files( 'pixman.c', 'pixman-access.c', diff --git a/Build/source/libs/pixman/pixman-src/pixman/pixman-radial-gradient.c b/Build/source/libs/pixman/pixman-src/pixman/pixman-radial-gradient.c index 0367d78424d..e8e99c98b92 100644 --- a/Build/source/libs/pixman/pixman-src/pixman/pixman-radial-gradient.c +++ b/Build/source/libs/pixman/pixman-src/pixman/pixman-radial-gradient.c @@ -111,12 +111,18 @@ radial_write_color (double a, if (repeat == PIXMAN_REPEAT_NONE) { if (0 <= t && t <= pixman_fixed_1) - return write_pixel (walker, t, buffer); + { + write_pixel (walker, t, buffer); + return; + } } else { if (t * dr >= mindr) - return write_pixel (walker, t, buffer); + { + write_pixel (walker, t, buffer); + return; + } } memset (buffer, 0, Bpp); @@ -146,16 +152,28 @@ radial_write_color (double a, if (repeat == PIXMAN_REPEAT_NONE) { if (0 <= t0 && t0 <= pixman_fixed_1) - return write_pixel (walker, t0, buffer); + { + write_pixel (walker, t0, buffer); + return; + } else if (0 <= t1 && t1 <= pixman_fixed_1) - return write_pixel (walker, t1, buffer); + { + write_pixel (walker, t1, buffer); + return; + } } else { if (t0 * dr >= mindr) - return write_pixel (walker, t0, buffer); + { + write_pixel (walker, t0, buffer); + return; + } else if (t1 * dr >= mindr) - return write_pixel (walker, t1, buffer); + { + write_pixel (walker, t1, buffer); + return; + } } } |