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
- 

Reply via email to