svn commit: r486564 - in head/multimedia: aom/files libvpx/files
Jan Beich
jbeich at FreeBSD.org
Tue Dec 4 00:51:32 UTC 2018
Author: jbeich
Date: Tue Dec 4 00:51:30 2018
New Revision: 486564
URL: https://svnweb.freebsd.org/changeset/ports/486564
Log:
multimedia/libvpx: simplify NEON/VSX detection on FreeBSD 12
Modified:
head/multimedia/aom/files/patch-aom__ports_arm__cpudetect.c (contents, props changed)
head/multimedia/aom/files/patch-aom__ports_ppc__cpudetect.c (contents, props changed)
head/multimedia/libvpx/files/patch-vpx__ports_arm__cpudetect.c (contents, props changed)
head/multimedia/libvpx/files/patch-vpx__ports_ppc__cpudetect.c (contents, props changed)
Modified: head/multimedia/aom/files/patch-aom__ports_arm__cpudetect.c
==============================================================================
--- head/multimedia/aom/files/patch-aom__ports_arm__cpudetect.c Tue Dec 4 00:51:15 2018 (r486563)
+++ head/multimedia/aom/files/patch-aom__ports_arm__cpudetect.c Tue Dec 4 00:51:30 2018 (r486564)
@@ -12,16 +12,14 @@
int aom_arm_cpu_caps(void) {
/* This function should actually be a no-op. There is no way to adjust any of
-@@ -143,7 +143,61 @@ int aom_arm_cpu_caps(void) {
+@@ -143,7 +143,57 @@ int aom_arm_cpu_caps(void) {
}
return flags & mask;
}
-#else /* end __linux__ */
+#elif defined(__FreeBSD__)
+
-+#if 0 // __has_include(<sys/auxv.h>)
-+#include <sys/auxv.h>
-+#else
++#if __FreeBSD__ < 12
+#include <sys/param.h>
+#include <sys/sysctl.h>
+#include <elf.h>
@@ -47,31 +45,29 @@
+ }
+ return 0;
+}
++#else
++#include <sys/auxv.h>
+#endif
+
-+#ifndef AT_HWCAP
-+#define AT_HWCAP 25 /* 16 on Linux */
-+#endif
-+
-+#ifndef HWCAP_NEON
-+#define HWCAP_NEON (1 << 12)
-+#endif
-+
+int aom_arm_cpu_caps(void) {
+ int flags;
+ int mask;
-+ unsigned long hwcaps;
++ u_long hwcaps = 0;
+ if (!arm_cpu_env_flags(&flags)) {
+ return flags;
+ }
+ mask = arm_cpu_env_mask();
++#if __FreeBSD__ < 12
+ hwcaps = getauxval(AT_HWCAP);
++#else
++ elf_aux_info(AT_HWCAP, &hwcaps, sizeof(hwcaps));
++#endif
+#if HAVE_NEON
+ if (hwcaps & HWCAP_NEON) flags |= HAS_NEON;
+#endif
+ return flags & mask;
+}
-+#else /* end __FreeBSD__ */
++#else /* end __FreeBSD__ */
#error \
"--enable-runtime-cpu-detect selected, but no CPU detection method " \
"available for your platform. Reconfigure with --disable-runtime-cpu-detect."
Modified: head/multimedia/aom/files/patch-aom__ports_ppc__cpudetect.c
==============================================================================
--- head/multimedia/aom/files/patch-aom__ports_ppc__cpudetect.c Tue Dec 4 00:51:15 2018 (r486563)
+++ head/multimedia/aom/files/patch-aom__ports_ppc__cpudetect.c Tue Dec 4 00:51:30 2018 (r486564)
@@ -29,20 +29,23 @@
int ppc_simd_caps(void) {
int flags;
int mask;
-@@ -75,6 +76,36 @@ out_close:
+@@ -75,6 +76,44 @@ out_close:
close(fd);
return flags & mask;
}
+#elif defined(__FreeBSD__)
++#if __FreeBSD__ < 12
+#include <sys/types.h>
+#include <sys/sysctl.h>
++#else
++#include <sys/auxv.h>
++#endif
+#include <machine/cpu.h>
+
+int ppc_simd_caps(void) {
+ int flags;
+ int mask;
+ u_long cpu_features = 0;
-+ size_t sz = sizeof(cpu_features);
+
+ // If AOM_SIMD_CAPS is set then allow only those capabilities.
+ if (!cpu_env_flags(&flags)) {
@@ -51,7 +54,12 @@
+
+ mask = cpu_env_mask();
+
++#if __FreeBSD__ < 12
++ size_t sz = sizeof(cpu_features);
+ sysctlbyname("hw.cpu_features", &cpu_features, &sz, NULL, 0);
++#else
++ elf_aux_info(AT_HWCAP, &cpu_features, sizeof(cpu_features));
++#endif
+#if HAVE_VSX
+ if (cpu_features & PPC_FEATURE_HAS_VSX) flags |= HAS_VSX;
+#endif
Modified: head/multimedia/libvpx/files/patch-vpx__ports_arm__cpudetect.c
==============================================================================
--- head/multimedia/libvpx/files/patch-vpx__ports_arm__cpudetect.c Tue Dec 4 00:51:15 2018 (r486563)
+++ head/multimedia/libvpx/files/patch-vpx__ports_arm__cpudetect.c Tue Dec 4 00:51:30 2018 (r486564)
@@ -1,14 +1,13 @@
--- vpx_ports/arm_cpudetect.c.orig 2017-01-12 20:27:27 UTC
+++ vpx_ports/arm_cpudetect.c
-@@ -147,6 +147,60 @@ int arm_cpu_caps(void) {
+@@ -147,7 +147,57 @@ int arm_cpu_caps(void) {
}
return flags & mask;
}
+-#else /* end __linux__ */
+#elif defined(__FreeBSD__)
+
-+#if 0 // __has_include(<sys/auxv.h>)
-+#include <sys/auxv.h>
-+#else
++#if __FreeBSD__ < 12
+#include <sys/param.h>
+#include <sys/sysctl.h>
+#include <elf.h>
@@ -34,30 +33,29 @@
+ }
+ return 0;
+}
++#else
++#include <sys/auxv.h>
+#endif
+
-+#ifndef AT_HWCAP
-+#define AT_HWCAP 25 /* 16 on Linux */
-+#endif
-+
-+#ifndef HWCAP_NEON
-+#define HWCAP_NEON (1 << 12)
-+#endif
-+
+int arm_cpu_caps(void) {
+ int flags;
+ int mask;
-+ unsigned long hwcaps;
++ u_long hwcaps = 0;
+ if (!arm_cpu_env_flags(&flags)) {
+ return flags;
+ }
+ mask = arm_cpu_env_mask();
++#if __FreeBSD__ < 12
+ hwcaps = getauxval(AT_HWCAP);
++#else
++ elf_aux_info(AT_HWCAP, &hwcaps, sizeof(hwcaps));
++#endif
+#if HAVE_NEON || HAVE_NEON_ASM
+ if (hwcaps & HWCAP_NEON) flags |= HAS_NEON;
+#endif
+ return flags & mask;
+}
- #else /* end __linux__ */
++#else /* end __FreeBSD__ */
#error \
"--enable-runtime-cpu-detect selected, but no CPU detection method " \
+ "available for your platform. Reconfigure with --disable-runtime-cpu-detect."
Modified: head/multimedia/libvpx/files/patch-vpx__ports_ppc__cpudetect.c
==============================================================================
--- head/multimedia/libvpx/files/patch-vpx__ports_ppc__cpudetect.c Tue Dec 4 00:51:15 2018 (r486563)
+++ head/multimedia/libvpx/files/patch-vpx__ports_ppc__cpudetect.c Tue Dec 4 00:51:30 2018 (r486564)
@@ -27,20 +27,23 @@
int ppc_simd_caps(void) {
int flags;
int mask;
-@@ -73,6 +74,36 @@ out_close:
+@@ -73,6 +74,44 @@ out_close:
close(fd);
return flags & mask;
}
+#elif defined(__FreeBSD__)
++#if __FreeBSD__ < 12
+#include <sys/types.h>
+#include <sys/sysctl.h>
++#else
++#include <sys/auxv.h>
++#endif
+#include <machine/cpu.h>
+
+int ppc_simd_caps(void) {
+ int flags;
+ int mask;
+ u_long cpu_features = 0;
-+ size_t sz = sizeof(cpu_features);
+
+ // If VPX_SIMD_CAPS is set then allow only those capabilities.
+ if (!cpu_env_flags(&flags)) {
@@ -49,7 +52,12 @@
+
+ mask = cpu_env_mask();
+
++#if __FreeBSD__ < 12
++ size_t sz = sizeof(cpu_features);
+ sysctlbyname("hw.cpu_features", &cpu_features, &sz, NULL, 0);
++#else
++ elf_aux_info(AT_HWCAP, &cpu_features, sizeof(cpu_features));
++#endif
+#if HAVE_VSX
+ if (cpu_features & PPC_FEATURE_HAS_VSX) flags |= HAS_VSX;
+#endif
@@ -60,7 +68,7 @@
+#error \
+ "--enable-runtime-cpu-detect selected, but no CPU detection method " \
+"available for your platform. Reconfigure with --disable-runtime-cpu-detect."
-+#endif /* end __linux__ */
++#endif /* end __FreeBSD__ */
#else
// If there is no RTCD the function pointers are not used and can not be
// changed.
More information about the svn-ports-head
mailing list