The package rpms/xscreensaver.git has added or updated architecture specific content in its spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s): https://src.fedoraproject.org/cgit/rpms/xscreensaver.git/commit/?id=01752590....
Change: -%ifarch aarch64
Thanks.
Full change: ============
commit 0175259029736247e7c25508a81d7190c9df7cdf Author: Mamoru TASAKA mtasaka@fedoraproject.org Date: Thu Nov 4 23:20:04 2021 +0900
marbling: fix signedness for x86_64 and aarch64 on vectorization
build marbling on aarch64 again
diff --git a/xscreensaver-6.02-0003-marbling-fix-signedness-for-x86_64-and-aarch64-on-ve.patch b/xscreensaver-6.02-0003-marbling-fix-signedness-for-x86_64-and-aarch64-on-ve.patch new file mode 100644 index 0000000..cc09f1d --- /dev/null +++ b/xscreensaver-6.02-0003-marbling-fix-signedness-for-x86_64-and-aarch64-on-ve.patch @@ -0,0 +1,150 @@ +From d68bca70579d141b1457f84ce5e6d022a4e458b9 Mon Sep 17 00:00:00 2001 +From: Mamoru TASAKA mtasaka@fedoraproject.org +Date: Thu, 4 Nov 2021 22:38:26 +0900 +Subject: [PATCH] marbling: fix signedness for x86_64 and aarch64 on + vectorization + +--- + hacks/marbling.c | 57 ++++++++++++++++++++++++++++-------------------- + 1 file changed, 33 insertions(+), 24 deletions(-) + +diff --git a/hacks/marbling.c b/hacks/marbling.c +index 0896aa5..bb00431 100644 +--- a/hacks/marbling.c ++++ b/hacks/marbling.c +@@ -44,6 +44,13 @@ + #include "thread_util.h" + #include "xshm.h" + ++#if defined __GNUC__ || defined __clang__ || \ ++ defined __STDC_VERSION__ && __STDC_VERSION__ > 199901L ++# define INLINE inline ++#else ++# define INLINE ++#endif ++ + /* Use GCC/Clang's vector SIMD extensions, when possible. + https://gcc.gnu.org/onlinedocs/gcc/Vector-Extensions.html + */ +@@ -59,17 +66,21 @@ + */ + # if defined __AVX2__ + # define VSIZE 16 +-# define IMUL_HI __builtin_ia32_pmulhw256 +-# define MUL_HI __builtin_ia32_pmulhuw256 ++# define IMUL_HI_OP __builtin_ia32_pmulhw256 ++# define MUL_HI_OP __builtin_ia32_pmulhuw256 + # elif defined __SSE2__ + # define VSIZE 8 +-# define IMUL_HI __builtin_ia32_pmulhw128 +-# define MUL_HI __builtin_ia32_pmulhuw128 ++# define IMUL_HI_OP __builtin_ia32_pmulhw128 ++# define MUL_HI_OP __builtin_ia32_pmulhuw128 + # endif + + # ifdef VSIZE +-typedef int16_t v_uhi __attribute__((vector_size(VSIZE * 2))); ++typedef uint16_t v_uhi __attribute__((vector_size(VSIZE * 2))); + typedef int16_t v_hi __attribute__((vector_size(VSIZE * 2))); ++ ++static INLINE v_hi IMUL_HI(v_hi a, v_hi b) { return IMUL_HI_OP(a, b); } ++static INLINE v_uhi MUL_HI(v_uhi a, v_uhi b) { return (v_uhi)MUL_HI_OP((v_hi)a, (v_hi)b); } ++ + # endif + # endif + +@@ -114,13 +125,6 @@ typedef int16_t v_hi; + # define VEC_INDEX(v, i) ((v)[i]) + #endif + +-#if defined __GNUC__ || defined __clang__ || \ +- defined __STDC_VERSION__ && __STDC_VERSION__ > 199901L +-# define INLINE inline +-#else +-# define INLINE +-#endif +- + struct state { + Display *dpy; + Window window; +@@ -159,15 +163,16 @@ const unsigned lerp_loss = 2; /* Min: 2 */ + const unsigned noise_out_bits = noise_work_bits - 3 * lerp_loss + 1; + const unsigned noise_in_bits = 8; + +-static INLINE v_hi ++static INLINE v_uhi + broadcast (int16_t x) + { + #if VSIZE == 1 +- return x; ++ v_hi r = x; + #else + v_hi r = {0}; +- return r + x; ++ r = r + x; + #endif ++ return (v_uhi)r; + } + + static INLINE v_uhi +@@ -176,10 +181,13 @@ fade (v_uhi t) + const uint16_t F = 256; + + #if __ARM_NEON +- v_uhi t2 = (t * t) >> 1; +- return +- vqdmulhq_s16(t2, 10 * t - vqdmulhq_s16(t2, (uint16_t)(15 * F) - t * 6)) << ++ v_uhi ut2 = (t * t) >> 1; ++ v_hi it2 = (v_hi)ut2; ++ v_hi it = (v_hi)t; ++ v_hi iret = ++ vqdmulhq_s16(it2, 10 * it - vqdmulhq_s16(it2, (int16_t)(15 * F) - it * 6)) << + (noise_work_bits - noise_in_bits + 1); ++ return (v_uhi)iret; + #else + v_uhi t2 = t * t; + return +@@ -239,7 +247,7 @@ noise (v_uhi x, v_uhi y, v_uhi z) + { + const v_uhi one = broadcast(1 << noise_work_bits); + v_uhi X, Y, Z, A, B, AA, AB, BA, BB; +- v_uhi u, v, w; ++ v_hi u, v, w; + v_hi c0, c1, c2, c3, c4, c5, c6, c7; + X = x >> noise_in_bits; /* FIND UNIT CUBE THAT */ + Y = y >> noise_in_bits; /* CONTAINS POINT. */ +@@ -247,9 +255,9 @@ noise (v_uhi x, v_uhi y, v_uhi z) + x &= (uint16_t)((1 << noise_in_bits) - 1); /* FIND RELATIVE X,Y,Z */ + y &= (uint16_t)((1 << noise_in_bits) - 1); /* OF POINT IN CUBE. */ + z &= (uint16_t)((1 << noise_in_bits) - 1); +- u = fade(x); /* COMPUTE FADE CURVES */ +- v = fade(y); /* FOR EACH OF X,Y,Z. */ +- w = fade(z); ++ u = (v_hi)fade(x); /* COMPUTE FADE CURVES */ ++ v = (v_hi)fade(y); /* FOR EACH OF X,Y,Z. */ ++ w = (v_hi)fade(z); + + A = noise_rand(X)+Y, AA = P(A)+Z, AB = P(A+1)+Z; /* HASH COORDINATES OF */ + B = P(X+1)+Y, BA = P(B)+Z, BB = P(B+1)+Z; /* THE 8 CUBE CORNERS, */ +@@ -265,7 +273,8 @@ noise (v_uhi x, v_uhi y, v_uhi z) + c6 = grad(P(AB+1), x, y-one, z-one ); + c7 = grad(P(BB+1), x-one, y-one, z-one ); + +- return SCALE(LERP(w, LERP(v, LERP(u, c0, c1), /* AND ADD BLENDED */ ++ return ++ (v_uhi)SCALE(LERP(w, LERP(v, LERP(u, c0, c1), /* AND ADD BLENDED */ + LERP(u, c2, c3)), /* RESULTS FROM 8 */ + LERP(v, LERP(u, c4, c5), /* CORNERS OF CUBE */ + LERP(u, c6, c7)))); +@@ -292,7 +301,7 @@ fbm (v_uhi x, v_uhi y, v_uhi z) + for (i = 0; i < octaves; i++) + { + #if __ARM_NEON +- t += vqdmulhq_n_s16(noise (f*x, f*y, f*z), a); ++ t += (v_uhi)vqdmulhq_n_s16((v_hi)noise (f*x, f*y, f*z), a); + a = ((uint32_t)a * iG) >> 16; + #else + t += MUL_HI(noise (f*x, f*y, f*z), a); +-- +2.33.1 + diff --git a/xscreensaver.spec b/xscreensaver.spec index f8149c7..4bb19fa 100644 --- a/xscreensaver.spec +++ b/xscreensaver.spec @@ -11,7 +11,7 @@ %define split_getimage 1 %endif
-%define fedora_rel 3 +%define fedora_rel 4
%global use_clang_as_cc 0 %global use_clang_analyze 0 @@ -98,6 +98,8 @@ Patch3607: xscreensaver-5.36-0007-misc-kill-gcc-warn_unused_result-warning Patch5201: xscreensaver-6.02-0001-xscreensaver_systemd_loop-avoid-use-after-free-on-fo.patch # get_egl_config: reset loop counter with prefersGLSL option each loop Patch5202: xscreensaver-6.02-0002-get_egl_config-reset-loop-counter-with-prefersGLSL-o.patch +# marbling: fix signedness for x86_64 and aarch64 on vectorization +Patch5203: xscreensaver-6.02-0003-marbling-fix-signedness-for-x86_64-and-aarch64-on-ve.patch # Fedora specific # window_init: search parenthesis first for searching year Patch10001: xscreensaver-6.00-0001-screensaver_id-search-parenthesis-first-for-searchin.patch @@ -380,6 +382,7 @@ find . -name *.c -exec chmod ugo-x {} ; #%%__cat %PATCH3607 | %__git am %__cat %PATCH5201 | %__git am %__cat %PATCH5202 | %__git am +%__cat %PATCH5203 | %__git am %__cat %PATCH10001 | %__git am %__cat %PATCH10003 | %__git am %__cat %PATCH10005 | %__git am @@ -536,14 +539,6 @@ sed -i.delay -e 's|60 * 15|20|' driver/test-grab.c sed -i 's|-Wunknown-warning-option|-Wfoo-bar-baz|' ax_pthread.m4 %__git commit -m "Really use unknowing warning option" -a
-# aarch64: don't build marbling for now, does not build -%ifarch aarch64 -sed -i hacks/Makefile.in \ - -e 's@marbling binaryhorizon@binaryhorizon@' -%__git commit -m "don't build marbling for now" -a -%endif - - aclocal autoconf autoheader @@ -1129,6 +1124,10 @@ exit 0 %endif
%changelog +* Thu Nov 4 2021 Mamoru TASAKA mtasaka@fedoraproject.org - 1:6.02-4 +- marbling: fix signedness for x86_64 and aarch64 on vectorization +- build marbling on aarch64 again + * Mon Nov 1 2021 Mamoru TASAKA mtasaka@fedoraproject.org - 1:6.02-3 - get_egl_config: reset loop counter with prefersGLSL option each loop (ref: bug 1983483)
arch-excludes@lists.fedoraproject.org