1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-10-20 20:09:11 +00:00

multimedia/dav1d: convert to upstreamable patches

This commit is contained in:
Jan Beich 2018-12-19 20:57:09 +00:00
parent 8c258edcba
commit 08664b26f8
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=487815
4 changed files with 50 additions and 75 deletions

View File

@ -4,6 +4,10 @@ PORTNAME= dav1d
DISTVERSION= 0.1.0
CATEGORIES= multimedia
PATCH_SITES= ${GL_SITE}/jbeich/${GL_PROJECT}/commit/
PATCHFILES+= d3a03bd9939d.patch:-p1
PATCHFILES+= 7f01c6166519.patch:-p1
MAINTAINER= jbeich@FreeBSD.org
COMMENT= Small and fast AV1 decoder

View File

@ -3,3 +3,7 @@ SHA256 (videolan-dav1d-a6b903fb6d78f1515b2c50ba17ae50ead8cf5b72_GL0.tar.gz) = 28
SIZE (videolan-dav1d-a6b903fb6d78f1515b2c50ba17ae50ead8cf5b72_GL0.tar.gz) = 443816
SHA256 (videolan-dav1d-test-data-0028f7f3d9cdcd0e95643e16d49d5a691807cb77_GL0.tar.gz) = f7172cb7d4f57e54d0caad8ab60fd43235983a2673a5e955c62fc3565a711eb9
SIZE (videolan-dav1d-test-data-0028f7f3d9cdcd0e95643e16d49d5a691807cb77_GL0.tar.gz) = 31033900
SHA256 (d3a03bd9939d.patch) = 38b32e9e7c44eccba0ae328afc79ac9c41e15b06a977da9a0606f5c16d6f0bc2
SIZE (d3a03bd9939d.patch) = 950
SHA256 (7f01c6166519.patch) = 6e7407f6db3a423b6c0f801c6607b0609daa948fcd5252f9ba73e7ebc42ae9ff
SIZE (7f01c6166519.patch) = 1895

View File

@ -1,75 +0,0 @@
- Assume NEON on FreeBSD armv7
- Implement NEON runtime detection on FreeBSD armv6
--- meson.build.orig 2018-12-11 14:14:56 UTC
+++ meson.build
@@ -147,6 +147,9 @@ if (host_machine.cpu_family() == 'aarch64' or
if cc.has_function('getauxval', prefix : '#include <sys/auxv.h>', args : test_args)
cdata.set('HAVE_GETAUXVAL', 1)
endif
+ if cc.has_function('elf_aux_info', prefix : '#include <sys/auxv.h>', args : test_args)
+ cdata.set('HAVE_ELF_AUX_INFO', 1)
+ endif
endif
# Compiler flag tests
--- src/arm/cpu.c.orig 2018-12-11 14:14:56 UTC
+++ src/arm/cpu.c
@@ -29,7 +29,7 @@
#include "src/arm/cpu.h"
-#if defined(HAVE_GETAUXVAL) && ARCH_ARM
+#if (defined(HAVE_GETAUXVAL) || defined(HAVE_ELF_AUX_INFO)) && ARCH_ARM
#include <sys/auxv.h>
#ifndef HWCAP_ARM_NEON
@@ -68,12 +68,48 @@ static unsigned parse_proc_cpuinfo(const char *flag) {
}
#endif
+#if defined(__FreeBSD__) && __FreeBSD__ < 12
+#include <sys/param.h>
+#include <sys/sysctl.h>
+#include <elf.h>
+#include <errno.h>
+#include <unistd.h>
+
+#define HAVE_GETAUXVAL
+#define NEON_HWCAP HWCAP_NEON
+static unsigned long getauxval(unsigned long type) {
+ Elf_Auxinfo auxv[AT_COUNT];
+ size_t len = sizeof(auxv);
+ int mib[] = {
+ CTL_KERN,
+ KERN_PROC,
+ KERN_PROC_AUXV,
+ getpid(),
+ };
+
+ if (sysctl(mib, nitems(mib), auxv, &len, NULL, 0) != -1) {
+ for (size_t i = 0; i < nitems(auxv); i++)
+ if ((unsigned long)auxv[i].a_type == type)
+ return auxv[i].a_un.a_val;
+
+ errno = ENOENT;
+ }
+ return 0;
+}
+#endif
+
unsigned dav1d_get_cpu_flags_arm(void) {
unsigned flags = 0;
#if ARCH_AARCH64
flags |= DAV1D_ARM_CPU_FLAG_NEON;
+#elif defined(__ARM_NEON)
+ flags |= DAV1D_ARM_CPU_FLAG_NEON;
#elif defined(HAVE_GETAUXVAL) && ARCH_ARM
unsigned long hw_cap = getauxval(AT_HWCAP);
+ flags |= (hw_cap & NEON_HWCAP) ? DAV1D_ARM_CPU_FLAG_NEON : 0;
+#elif defined(HAVE_ELF_AUX_INFO) && ARCH_ARM
+ unsigned long hw_cap;
+ elf_aux_info(AT_HWCAP, &hw_cap, sizeof(hw_cap));
flags |= (hw_cap & NEON_HWCAP) ? DAV1D_ARM_CPU_FLAG_NEON : 0;
#elif defined(__ANDROID__)
flags |= parse_proc_cpuinfo("neon") ? DAV1D_ARM_CPU_FLAG_NEON : 0;

View File

@ -0,0 +1,42 @@
- Implement NEON runtime detection on FreeBSD 11.* armv6
--- src/arm/cpu.c.orig 2018-12-11 14:14:56 UTC
+++ src/arm/cpu.c
@@ -68,7 +68,37 @@ static unsigned parse_proc_cpuinfo(const char *flag) {
}
#endif
+#if defined(__FreeBSD__) && __FreeBSD__ < 12
+#include <sys/param.h>
+#include <sys/sysctl.h>
+#include <elf.h>
+#include <errno.h>
+#include <unistd.h>
+
+#define HAVE_GETAUXVAL
+#define NEON_HWCAP HWCAP_NEON
+static unsigned long getauxval(unsigned long type) {
+ Elf_Auxinfo auxv[AT_COUNT];
+ size_t len = sizeof(auxv);
+ int mib[] = {
+ CTL_KERN,
+ KERN_PROC,
+ KERN_PROC_AUXV,
+ getpid(),
+ };
+
+ if (sysctl(mib, nitems(mib), auxv, &len, NULL, 0) != -1) {
+ for (size_t i = 0; i < nitems(auxv); i++)
+ if ((unsigned long)auxv[i].a_type == type)
+ return auxv[i].a_un.a_val;
+
+ errno = ENOENT;
+ }
+ return 0;
+}
+#endif
+
unsigned dav1d_get_cpu_flags_arm(void) {
unsigned flags = 0;
#if ARCH_AARCH64
flags |= DAV1D_ARM_CPU_FLAG_NEON;