Here is an update to dav1d 1.5.1.
Changes for 1.5.1 'Sonic':
--------------------------
1.5.1 is a minor release of dav1d, focusing on optimizations and stack
reduction:
- Rewrite of the looprestoration (SGR, wiener) to reduce stack usage
- Rewrite of {put,prep}_scaled functions
Now, the required stack space for dav1d should be: 62 KB on x86_64 and
58KB on arm and aarch64.
- Improvements on the SSSE3 SGR
- Improvements on ARM32/ARM64 looprestoration optimizations
- RISC-V: blend optimizations for high bitdepth
- Power9: blend optimizations for 8bpc
- Port RISC-V to POSIX/non-Linux OS
- AArch64: Add Neon implementation of load_tmvs
- Fix a rare, but possible deadlock, in flush()
Tested on aarch64 and amd64 IBT.
Index: Makefile
===================================================================
RCS file: /cvs/ports/multimedia/dav1d/Makefile,v
retrieving revision 1.41
diff -u -p -u -p -r1.41 Makefile
--- Makefile 1 Jan 2025 15:57:31 -0000 1.41
+++ Makefile 20 Jan 2025 06:23:13 -0000
@@ -4,7 +4,7 @@ COMMENT= small and fast AV1 decoder
# /!\ DO NOT UPDATE WITHOUT RUNNING TESTS ON ARM64 (XONLY) and AMD64 (IBT)
/!\ #
#################################################################################
-VER= 1.5.0
+VER= 1.5.1
DISTNAME= dav1d-${VER}
CATEGORIES= multimedia
SITES= https://downloads.videolan.org/pub/videolan/dav1d/${VER}/
Index: distinfo
===================================================================
RCS file: /cvs/ports/multimedia/dav1d/distinfo,v
retrieving revision 1.19
diff -u -p -u -p -r1.19 distinfo
--- distinfo 10 Dec 2024 12:14:18 -0000 1.19
+++ distinfo 20 Jan 2025 06:23:13 -0000
@@ -1,2 +1,2 @@
-SHA256 (dav1d-1.5.0.tar.xz) = FL1vUVeAjtmu3K++UN9onTBP1IEKwgvm7sGrA3Q2r9Y=
-SIZE (dav1d-1.5.0.tar.xz) = 1017040
+SHA256 (dav1d-1.5.1.tar.xz) = QBgT8fifqP1ClYBapShNmu2bx/wf2+VUr0KS9ky6viE=
+SIZE (dav1d-1.5.1.tar.xz) = 1020760
Index: patches/patch-src_arm_cpu_c
===================================================================
RCS file: patches/patch-src_arm_cpu_c
diff -N patches/patch-src_arm_cpu_c
--- patches/patch-src_arm_cpu_c 10 Dec 2024 12:14:18 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,38 +0,0 @@
-Provide dav1d_getauxval() wrapper for getauxvaul() and elf_aux_info()
-93f12c117a4e1c0cc2b129dcc52e84dbd9b84200
-
-Index: src/arm/cpu.c
---- src/arm/cpu.c.orig
-+++ src/arm/cpu.c
-@@ -43,15 +43,8 @@
- #define HWCAP2_AARCH64_I8MM (1 << 13)
-
- COLD unsigned dav1d_get_cpu_flags_arm(void) {
--#if HAVE_GETAUXVAL
-- unsigned long hw_cap = getauxval(AT_HWCAP);
-- unsigned long hw_cap2 = getauxval(AT_HWCAP2);
--#else
-- unsigned long hw_cap = 0;
-- unsigned long hw_cap2 = 0;
-- elf_aux_info(AT_HWCAP, &hw_cap, sizeof(hw_cap));
-- elf_aux_info(AT_HWCAP2, &hw_cap2, sizeof(hw_cap2));
--#endif
-+ unsigned long hw_cap = dav1d_getauxval(AT_HWCAP);
-+ unsigned long hw_cap2 = dav1d_getauxval(AT_HWCAP2);
-
- unsigned flags = dav1d_get_default_cpu_flags();
- flags |= (hw_cap & HWCAP_AARCH64_ASIMDDP) ? DAV1D_ARM_CPU_FLAG_DOTPROD :
0;
-@@ -69,12 +62,7 @@ COLD unsigned dav1d_get_cpu_flags_arm(void) {
- #define HWCAP_ARM_I8MM (1 << 27)
-
- COLD unsigned dav1d_get_cpu_flags_arm(void) {
--#if HAVE_GETAUXVAL
-- unsigned long hw_cap = getauxval(AT_HWCAP);
--#else
-- unsigned long hw_cap = 0;
-- elf_aux_info(AT_HWCAP, &hw_cap, sizeof(hw_cap));
--#endif
-+ unsigned long hw_cap = dav1d_getauxval(AT_HWCAP);
-
- unsigned flags = dav1d_get_default_cpu_flags();
- flags |= (hw_cap & HWCAP_ARM_NEON) ? DAV1D_ARM_CPU_FLAG_NEON : 0;
Index: patches/patch-src_cpu_c
===================================================================
RCS file: patches/patch-src_cpu_c
diff -N patches/patch-src_cpu_c
--- patches/patch-src_cpu_c 10 Dec 2024 12:14:18 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,37 +0,0 @@
-Provide dav1d_getauxval() wrapper for getauxvaul() and elf_aux_info()
-93f12c117a4e1c0cc2b129dcc52e84dbd9b84200
-
-Index: src/cpu.c
---- src/cpu.c.orig
-+++ src/cpu.c
-@@ -52,6 +52,10 @@
- #endif
- #endif
-
-+#if HAVE_GETAUXVAL || HAVE_ELF_AUX_INFO
-+#include <sys/auxv.h>
-+#endif
-+
- unsigned dav1d_cpu_flags = 0U;
- unsigned dav1d_cpu_flags_mask = ~0U;
-
-@@ -106,4 +110,19 @@ COLD int dav1d_num_logical_processors(Dav1dContext *co
- if (c)
- dav1d_log(c, "Unable to detect thread count, defaulting to
single-threaded mode\n");
- return 1;
-+}
-+
-+COLD unsigned long dav1d_getauxval(unsigned long type) {
-+#if HAVE_GETAUXVAL
-+ return getauxval(type);
-+#elif HAVE_ELF_AUX_INFO
-+ unsigned long aux = 0;
-+ int ret = elf_aux_info(type, &aux, sizeof(aux));
-+ if (ret != 0)
-+ errno = ret;
-+ return aux;
-+#else
-+ errno = ENOSYS;
-+ return 0;
-+#endif
- }
Index: patches/patch-src_cpu_h
===================================================================
RCS file: patches/patch-src_cpu_h
diff -N patches/patch-src_cpu_h
--- patches/patch-src_cpu_h 10 Dec 2024 12:14:18 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,14 +0,0 @@
-Provide dav1d_getauxval() wrapper for getauxvaul() and elf_aux_info()
-93f12c117a4e1c0cc2b129dcc52e84dbd9b84200
-
-Index: src/cpu.h
---- src/cpu.h.orig
-+++ src/cpu.h
-@@ -53,6 +53,7 @@ EXTERN unsigned dav1d_cpu_flags_mask;
- void dav1d_init_cpu(void);
- DAV1D_API void dav1d_set_cpu_flags_mask(unsigned mask);
- int dav1d_num_logical_processors(Dav1dContext *c);
-+unsigned long dav1d_getauxval(unsigned long);
-
- static ALWAYS_INLINE unsigned dav1d_get_default_cpu_flags(void) {
- unsigned flags = 0;
Index: patches/patch-src_loongarch_cpu_c
===================================================================
RCS file: patches/patch-src_loongarch_cpu_c
diff -N patches/patch-src_loongarch_cpu_c
--- patches/patch-src_loongarch_cpu_c 10 Dec 2024 12:14:18 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,15 +0,0 @@
-Provide dav1d_getauxval() wrapper for getauxvaul() and elf_aux_info()
-93f12c117a4e1c0cc2b129dcc52e84dbd9b84200
-
-Index: src/loongarch/cpu.c
---- src/loongarch/cpu.c.orig
-+++ src/loongarch/cpu.c
-@@ -40,7 +40,7 @@
- COLD unsigned dav1d_get_cpu_flags_loongarch(void) {
- unsigned flags = dav1d_get_default_cpu_flags();
- #if HAVE_GETAUXVAL
-- unsigned long hw_cap = getauxval(AT_HWCAP);
-+ unsigned long hw_cap = dav1d_getauxval(AT_HWCAP);
- flags |= (hw_cap & LA_HWCAP_LSX) ? DAV1D_LOONGARCH_CPU_FLAG_LSX : 0;
- flags |= (hw_cap & LA_HWCAP_LASX) ? DAV1D_LOONGARCH_CPU_FLAG_LASX : 0;
- #endif
Index: patches/patch-src_ppc_cpu_c
===================================================================
RCS file: patches/patch-src_ppc_cpu_c
diff -N patches/patch-src_ppc_cpu_c
--- patches/patch-src_ppc_cpu_c 10 Dec 2024 12:14:18 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,25 +0,0 @@
-Provide dav1d_getauxval() wrapper for getauxvaul() and elf_aux_info()
-93f12c117a4e1c0cc2b129dcc52e84dbd9b84200
-
-Index: src/ppc/cpu.c
---- src/ppc/cpu.c.orig
-+++ src/ppc/cpu.c
-@@ -39,16 +39,9 @@
-
- COLD unsigned dav1d_get_cpu_flags_ppc(void) {
- unsigned flags = dav1d_get_default_cpu_flags();
--#if HAVE_GETAUXVAL && ARCH_PPC64LE
-- unsigned long hw_cap = getauxval(AT_HWCAP);
-- unsigned long hw_cap2 = getauxval(AT_HWCAP2);
--#elif HAVE_ELF_AUX_INFO && ARCH_PPC64LE
-- unsigned long hw_cap = 0;
-- unsigned long hw_cap2 = 0;
-- elf_aux_info(AT_HWCAP, &hw_cap, sizeof(hw_cap));
-- elf_aux_info(AT_HWCAP2, &hw_cap2, sizeof(hw_cap2));
--#endif
- #if HAVE_AUX
-+ unsigned long hw_cap = dav1d_getauxval(AT_HWCAP);
-+ unsigned long hw_cap2 = dav1d_getauxval(AT_HWCAP2);
- flags |= (hw_cap & PPC_FEATURE_HAS_VSX) ? DAV1D_PPC_CPU_FLAG_VSX : 0;
- flags |= (hw_cap2 & PPC_FEATURE2_ARCH_3_00) ? DAV1D_PPC_CPU_FLAG_PWR9 : 0;
- #endif
Index: patches/patch-src_riscv_cpu_c
===================================================================
RCS file: patches/patch-src_riscv_cpu_c
diff -N patches/patch-src_riscv_cpu_c
--- patches/patch-src_riscv_cpu_c 10 Dec 2024 12:14:18 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,31 +0,0 @@
-- Provide dav1d_getauxval() wrapper for getauxvaul() and elf_aux_info()
- 93f12c117a4e1c0cc2b129dcc52e84dbd9b84200
-- riscv: Enable FreeBSD / OpenBSD elf_aux_info() support
- f15666b7031fa6b50f0db516d78e966acd18f5ae
-
-Index: src/riscv/cpu.c
---- src/riscv/cpu.c.orig
-+++ src/riscv/cpu.c
-@@ -32,19 +32,17 @@
- #include "src/cpu.h"
- #include "src/riscv/cpu.h"
-
--#if HAVE_GETAUXVAL
-+#if HAVE_GETAUXVAL || HAVE_ELF_AUX_INFO
- #include <sys/auxv.h>
--
- #define HWCAP_RVV (1 << ('v' - 'a'))
--
- #endif
-
- int dav1d_has_compliant_rvv(void);
-
- COLD unsigned dav1d_get_cpu_flags_riscv(void) {
- unsigned flags = dav1d_get_default_cpu_flags();
--#if HAVE_GETAUXVAL
-- unsigned long hw_cap = getauxval(AT_HWCAP);
-+#if HAVE_GETAUXVAL || HAVE_ELF_AUX_INFO
-+ unsigned long hw_cap = dav1d_getauxval(AT_HWCAP);
- flags |= (hw_cap & HWCAP_RVV) && dav1d_has_compliant_rvv() ?
DAV1D_RISCV_CPU_FLAG_V : 0;
- #endif
-