summaryrefslogtreecommitdiff
path: root/Build/source/libs/pixman/pixman-src
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/libs/pixman/pixman-src')
-rw-r--r--Build/source/libs/pixman/pixman-src/Makefile.am6
-rw-r--r--Build/source/libs/pixman/pixman-src/Makefile.win32.common18
-rw-r--r--Build/source/libs/pixman/pixman-src/arm-simd-test.S10
-rw-r--r--Build/source/libs/pixman/pixman-src/configure.ac2
-rw-r--r--Build/source/libs/pixman/pixman-src/meson.build55
-rw-r--r--Build/source/libs/pixman/pixman-src/neon-test.S12
-rw-r--r--Build/source/libs/pixman/pixman-src/pixman/meson.build20
-rw-r--r--Build/source/libs/pixman/pixman-src/pixman/pixman-radial-gradient.c30
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;
+ }
}
}