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:
parent
8c258edcba
commit
08664b26f8
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=487815
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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;
|
42
multimedia/dav1d/files/patch-neon-freebsd11
Normal file
42
multimedia/dav1d/files/patch-neon-freebsd11
Normal 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;
|
Loading…
Reference in New Issue
Block a user