Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/extra/embree
diff options
context:
space:
mode:
Diffstat (limited to 'extra/embree')
-rw-r--r--extra/embree/PKGBUILD27
-rw-r--r--extra/embree/embree-3.2.0-intrinsic.patch12
2 files changed, 39 insertions, 0 deletions
diff --git a/extra/embree/PKGBUILD b/extra/embree/PKGBUILD
new file mode 100644
index 00000000..522a3482
--- /dev/null
+++ b/extra/embree/PKGBUILD
@@ -0,0 +1,27 @@
+# avoid breakage in newer CPU ISAs, supporting SSE2 should be enough for
+# 32-bit platforms
+# for special use cases (like running Archlinux32 on 64-bit hardware)
+# we can support up to SSE4.2 (everything above is too hard to fix).
+# As Embree chooses the ISA at runtime, this is no problem for machines
+# not having SSE4.2
+eval "$(
+ declare -f build | \
+ sed '
+ /cmake/s/-DEMBREE_MAX_ISA="AVX512SKX"/-DEMBREE_MAX_ISA="SSE4.2"/
+ '
+)"
+
+# some 32-bit fixes around intrinsics where applied to WIN32 only,
+# applying a counter-patch here
+source+=('embree-3.2.0-intrinsic.patch')
+sha256sums+=('7d5e44a034b02e14d7d37cd038d8c279d13d66b54a449c09e0687458f117723f')
+eval "$(
+ {
+ declare -f prepare || \
+ printf 'prepare() {\n}\n'
+ } \
+ | sed '
+ $i cd "$srcdir/$pkgname-$pkgver" \
+ patch -Np1 -i "$srcdir/embree-3.2.0-intrinsic.patch"
+ '
+)"
diff --git a/extra/embree/embree-3.2.0-intrinsic.patch b/extra/embree/embree-3.2.0-intrinsic.patch
new file mode 100644
index 00000000..afb49357
--- /dev/null
+++ b/extra/embree/embree-3.2.0-intrinsic.patch
@@ -0,0 +1,12 @@
+diff -rauN embree-3.2.0/common/simd/vint4_sse2.h embree-3.2.0-intrinsic-patch/common/simd/vint4_sse2.h
+--- embree-3.2.0/common/simd/vint4_sse2.h 2018-05-15 08:02:58.000000000 +0200
++++ embree-3.2.0-intrinsic-patch/common/simd/vint4_sse2.h 2018-06-20 20:44:57.322042285 +0200
+@@ -455,7 +455,7 @@
+ __forceinline int toScalar(const vint4& v) { return _mm_cvtsi128_si32(v); }
+
+ __forceinline size_t toSizeT(const vint4& v) {
+-#if defined(__WIN32__) && !defined(__X86_64__) // win32 workaround
++#if !defined(__X86_64__) // win32 workaround
+ return toScalar(v);
+ #else
+ return _mm_cvtsi128_si64(v);