Date: Wed, 12 May 2021 14:49:27 GMT From: Jan Beich <jbeich@FreeBSD.org> To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-branches@FreeBSD.org, dev-commits-ports-main@FreeBSD.org Subject: git: 28ca735cd593 - main - multimedia/svt-av1: switch to upstream cpuinfo fix Message-ID: <202105121449.14CEnRhl043306@gitrepo.freebsd.org>
next in thread | raw e-mail | index | archive | help
The branch main has been updated by jbeich: URL: https://cgit.FreeBSD.org/ports/commit/?id=28ca735cd59348c8550457e25bd659d9cbed1771 commit 28ca735cd59348c8550457e25bd659d9cbed1771 Author: Jan Beich <jbeich@FreeBSD.org> AuthorDate: 2021-05-11 21:06:02 +0000 Commit: Jan Beich <jbeich@FreeBSD.org> CommitDate: 2021-05-12 14:43:25 +0000 multimedia/svt-av1: switch to upstream cpuinfo fix --- multimedia/svt-av1/Makefile | 4 + multimedia/svt-av1/distinfo | 2 + multimedia/svt-av1/files/patch-revert | 231 ---------------------------------- 3 files changed, 6 insertions(+), 231 deletions(-) diff --git a/multimedia/svt-av1/Makefile b/multimedia/svt-av1/Makefile index 58d942dbf437..d5d7badc1cd7 100644 --- a/multimedia/svt-av1/Makefile +++ b/multimedia/svt-av1/Makefile @@ -1,8 +1,12 @@ PORTNAME= svt-av1 DISTVERSIONPREFIX= v DISTVERSION= 0.8.7 +PORTREVISION= 1 CATEGORIES= multimedia +PATCH_SITES= ${GL_SITE}/${GL_ACCOUNT}/${GL_PROJECT}/commit/ +PATCHFILES+= 284ef885f85f.patch:-p1 # https://gitlab.com/AOMediaCodec/SVT-AV1/-/merge_requests/1704 + MAINTAINER= jbeich@FreeBSD.org COMMENT= Scalable AV1 encoder diff --git a/multimedia/svt-av1/distinfo b/multimedia/svt-av1/distinfo index 5b0ba5eac19d..2887f5b2edd1 100644 --- a/multimedia/svt-av1/distinfo +++ b/multimedia/svt-av1/distinfo @@ -1,3 +1,5 @@ TIMESTAMP = 1620464700 SHA256 (AOMediaCodec-SVT-AV1-3971c982311d49f9355dc8dccdcf8d21b70fa624_GL0.tar.gz) = 5bb4e655e40beda6556897caa8f22e3be478a361e5000ffa0f015e1c32778893 SIZE (AOMediaCodec-SVT-AV1-3971c982311d49f9355dc8dccdcf8d21b70fa624_GL0.tar.gz) = 6401397 +SHA256 (284ef885f85f.patch) = 00887b7716210570c65efd168198c0371b962ed25725414f8fefa7f336577794 +SIZE (284ef885f85f.patch) = 5534 diff --git a/multimedia/svt-av1/files/patch-revert b/multimedia/svt-av1/files/patch-revert deleted file mode 100644 index a12b5df35443..000000000000 --- a/multimedia/svt-av1/files/patch-revert +++ /dev/null @@ -1,231 +0,0 @@ -Revert https://gitlab.com/AOMediaCodec/SVT-AV1/-/commit/fedc119668a4 -due to https://gitlab.com/AOMediaCodec/SVT-AV1/-/issues/1613 - ---- CMakeLists.txt.orig 2021-05-08 09:05:00 UTC -+++ CMakeLists.txt -@@ -389,8 +389,4 @@ endif() - - add_subdirectory(third_party/fastfeat) - --if(NOT COMPILE_C_ONLY AND HAVE_X86_PLATFORM) -- add_subdirectory(third_party/cpuinfo) --endif() -- - install(DIRECTORY ${PROJECT_SOURCE_DIR}/Source/API/ DESTINATION "${CMAKE_INSTALL_FULL_INCLUDEDIR}/svt-av1" FILES_MATCHING PATTERN "*.h") ---- Source/Lib/Common/Codec/CMakeLists.txt.orig 2020-11-29 07:10:56 UTC -+++ Source/Lib/Common/Codec/CMakeLists.txt -@@ -32,16 +32,14 @@ include_directories(${PROJECT_SOURCE_DIR}/Source/API/ - ${PROJECT_SOURCE_DIR}/Source/Lib/Common/ASM_AVX2/ - ${PROJECT_SOURCE_DIR}/Source/Lib/Common/ASM_AVX512/ - ${PROJECT_SOURCE_DIR}/Source/Lib/Encoder/Codec/ -- ${PROJECT_SOURCE_DIR}/third_party/fastfeat/ -- ${PROJECT_SOURCE_DIR}/third_party/cpuinfo/include/) -+ ${PROJECT_SOURCE_DIR}/third_party/fastfeat/) - else () - # Include Encoder Subdirectories - include_directories(${PROJECT_SOURCE_DIR}/Source/API/ - ${PROJECT_SOURCE_DIR}/Source/Lib/Common/Codec/ - ${PROJECT_SOURCE_DIR}/Source/Lib/Common/C_DEFAULT/ - ${PROJECT_SOURCE_DIR}/Source/Lib/Encoder/Codec/ -- ${PROJECT_SOURCE_DIR}/third_party/fastfeat/ -- ${PROJECT_SOURCE_DIR}/third_party/cpuinfo/include/) -+ ${PROJECT_SOURCE_DIR}/third_party/fastfeat/) - endif () - file(GLOB all_files - "*.h" ---- Source/Lib/Common/Codec/common_dsp_rtcd.c.orig 2021-05-08 09:05:00 UTC -+++ Source/Lib/Common/Codec/common_dsp_rtcd.c -@@ -17,11 +17,6 @@ - #include "EbPackUnPack_C.h" - #include "EbAvcStyleMcp.h" - --#ifdef ARCH_X86_64 --// for get_cpu_flags --#include "cpuinfo.h" --#endif -- - /* - * DSP deprecated flags - */ -@@ -72,30 +67,120 @@ int64_t svt_av1_block_error_c(const TranLow *coeff, co - * Instruction Set Support - **************************************/ - #ifdef ARCH_X86_64 -+// Helper Functions -+static INLINE void run_cpuid(int eax, int ecx, int* abcd) { -+#ifdef _WIN32 -+ __cpuidex(abcd, eax, ecx); -+#else -+ int ebx = 0, edx = 0; -+#if defined(__i386__) && defined(__PIC__) -+ /* in case of PIC under 32-bit EBX cannot be clobbered */ -+ __asm__("movl %%ebx, %%edi \n\t cpuid \n\t xchgl %%ebx, %%edi" -+ : "=D"(ebx), -+#else -+ __asm__("cpuid" -+ : "+b"(ebx), -+#endif -+ "+a"(eax), -+ "+c"(ecx), -+ "=d"(edx)); -+ abcd[0] = eax; -+ abcd[1] = ebx; -+ abcd[2] = ecx; -+ abcd[3] = edx; -+#endif -+} -+ -+static INLINE int32_t check_xcr0_ymm() { -+ uint32_t xcr0; -+#ifdef _WIN32 -+ xcr0 = (uint32_t)_xgetbv(0); /* min VS2010 SP1 compiler is required */ -+#else -+ __asm__("xgetbv" : "=a"(xcr0) : "c"(0) : "%edx"); -+#endif -+ return ((xcr0 & 6) == 6); /* checking if xmm and ymm state are enabled in XCR0 */ -+} -+ -+static int32_t check_4thgen_intel_core_features() { -+ int abcd[4]; -+ const int fma_movbe_osxsave_mask = ((1 << 12) | (1 << 22) | (1 << 27)); -+ const int avx2_bmi12_mask = (1 << 5) | (1 << 3) | (1 << 8); -+ -+ /* CPUID.(EAX=01H, ECX=0H):ECX.FMA[bit 12]==1 && -+ CPUID.(EAX=01H, ECX=0H):ECX.MOVBE[bit 22]==1 && -+ CPUID.(EAX=01H, ECX=0H):ECX.OSXSAVE[bit 27]==1 */ -+ run_cpuid(1, 0, abcd); -+ if ((abcd[2] & fma_movbe_osxsave_mask) != fma_movbe_osxsave_mask) return 0; -+ -+ if (!check_xcr0_ymm()) return 0; -+ -+ /* CPUID.(EAX=07H, ECX=0H):EBX.AVX2[bit 5]==1 && -+ CPUID.(EAX=07H, ECX=0H):EBX.BMI1[bit 3]==1 && -+ CPUID.(EAX=07H, ECX=0H):EBX.BMI2[bit 8]==1 */ -+ run_cpuid(7, 0, abcd); -+ if ((abcd[1] & avx2_bmi12_mask) != avx2_bmi12_mask) return 0; -+ /* CPUID.(EAX=80000001H):ECX.LZCNT[bit 5]==1 */ -+ run_cpuid(0x80000001, 0, abcd); -+ if ((abcd[2] & (1 << 5)) == 0) return 0; -+ return 1; -+} -+ -+static INLINE int check_xcr0_zmm() { -+ uint32_t xcr0; -+ uint32_t zmm_ymm_xmm = (7 << 5) | (1 << 2) | (1 << 1); -+#ifdef _WIN32 -+ xcr0 = (uint32_t)_xgetbv(0); /* min VS2010 SP1 compiler is required */ -+#else -+ __asm__("xgetbv" : "=a"(xcr0) : "c"(0) : "%edx"); -+#endif -+ return ((xcr0 & zmm_ymm_xmm) == -+ zmm_ymm_xmm); /* check if xmm, ymm and zmm state are enabled in XCR0 */ -+} -+ -+static int32_t can_use_intel_avx512() { -+ int abcd[4]; -+ -+ /* CPUID.(EAX=07H, ECX=0):EBX[bit 16]==1 AVX512F -+ CPUID.(EAX=07H, ECX=0):EBX[bit 17] AVX512DQ -+ CPUID.(EAX=07H, ECX=0):EBX[bit 28] AVX512CD -+ CPUID.(EAX=07H, ECX=0):EBX[bit 30] AVX512BW -+ CPUID.(EAX=07H, ECX=0):EBX[bit 31] AVX512VL */ -+ -+ const int avx512_ebx_mask = (1u << 16) // AVX-512F -+ | (1u << 17) // AVX-512DQ -+ | (1u << 28) // AVX-512CD -+ | (1u << 30) // AVX-512BW -+ | (1u << 31); // AVX-512VL -+ -+ if (!check_4thgen_intel_core_features()) return 0; -+ -+ // ensure OS supports ZMM registers (and YMM, and XMM) -+ if (!check_xcr0_zmm()) return 0; -+ -+ run_cpuid(7, 0, abcd); -+ if ((abcd[1] & avx512_ebx_mask) != avx512_ebx_mask) return 0; -+ -+ return 1; -+} -+ - CPU_FLAGS get_cpu_flags() { - CPU_FLAGS flags = 0; - -- // safe to call multiple times, and threadsafe -- // also correctly checks whether the OS saves AVX(2|512) registers -- cpuinfo_initialize(); -+ /* To detail tests CPU features, requires more accurate implementation. -+ Documentation help: -+ https://docs.microsoft.com/en-us/cpp/intrinsics/cpuid-cpuidex?redirectedfrom=MSDN&view=vs-2019 -+ */ - -- flags |= cpuinfo_has_x86_mmx() ? CPU_FLAGS_MMX : 0; -- flags |= cpuinfo_has_x86_sse() ? CPU_FLAGS_SSE : 0; -- flags |= cpuinfo_has_x86_sse2() ? CPU_FLAGS_SSE2 : 0; -- flags |= cpuinfo_has_x86_sse3() ? CPU_FLAGS_SSE3 : 0; -- flags |= cpuinfo_has_x86_ssse3() ? CPU_FLAGS_SSSE3 : 0; -- flags |= cpuinfo_has_x86_sse4_1() ? CPU_FLAGS_SSE4_1 : 0; -- flags |= cpuinfo_has_x86_sse4_2() ? CPU_FLAGS_SSE4_2 : 0; -+ if (check_4thgen_intel_core_features()) { -+ flags |= CPU_FLAGS_MMX | CPU_FLAGS_SSE | CPU_FLAGS_SSE2 | CPU_FLAGS_SSE3 | CPU_FLAGS_SSSE3 | -+ CPU_FLAGS_SSE4_1 | CPU_FLAGS_SSE4_2 | CPU_FLAGS_AVX | CPU_FLAGS_AVX2; -+ } - -- flags |= cpuinfo_has_x86_avx() ? CPU_FLAGS_AVX : 0; -- flags |= cpuinfo_has_x86_avx2() ? CPU_FLAGS_AVX2 : 0; -+ if (can_use_intel_avx512()) { -+ flags |= CPU_FLAGS_AVX512F | CPU_FLAGS_AVX512DQ | CPU_FLAGS_AVX512CD | CPU_FLAGS_AVX512BW | -+ CPU_FLAGS_AVX512VL; -+ } - -- flags |= cpuinfo_has_x86_avx512f() ? CPU_FLAGS_AVX512F : 0; -- flags |= cpuinfo_has_x86_avx512dq() ? CPU_FLAGS_AVX512DQ : 0; -- flags |= cpuinfo_has_x86_avx512cd() ? CPU_FLAGS_AVX512CD : 0; -- flags |= cpuinfo_has_x86_avx512bw() ? CPU_FLAGS_AVX512BW : 0; -- flags |= cpuinfo_has_x86_avx512vl() ? CPU_FLAGS_AVX512VL : 0; -- - return flags; - } - -@@ -107,7 +192,7 @@ CPU_FLAGS get_cpu_flags_to_use() { - #endif - return flags; - } --#endif /*ARCH_X86_64*/ -+#endif - - #ifdef ARCH_X86_64 - #if EN_AVX512_SUPPORT ---- Source/Lib/Decoder/CMakeLists.txt.orig 2021-05-08 09:05:00 UTC -+++ Source/Lib/Decoder/CMakeLists.txt -@@ -100,9 +100,6 @@ set_target_properties(SvtAv1Dec PROPERTIES SOVERSION $ - set_target_properties(SvtAv1Dec PROPERTIES C_VISIBILITY_PRESET hidden) - add_dependencies(SvtAv1Dec EbVersionHeaderGen) - target_link_libraries(SvtAv1Dec PUBLIC ${PLATFORM_LIBS}) --if(NOT COMPILE_C_ONLY AND HAVE_X86_PLATFORM) -- target_link_libraries(SvtAv1Dec PRIVATE cpuinfo_public) --endif() - - set(DEC_PKG_CONFIG_EXTRA_CFLAGS "") - if (BUILD_SHARED_LIBS) ---- Source/Lib/Encoder/CMakeLists.txt.orig 2021-05-08 09:05:00 UTC -+++ Source/Lib/Encoder/CMakeLists.txt -@@ -131,9 +131,6 @@ set_target_properties(SvtAv1Enc PROPERTIES VERSION ${E - set_target_properties(SvtAv1Enc PROPERTIES SOVERSION ${ENC_VERSION_MAJOR}) - set_target_properties(SvtAv1Enc PROPERTIES C_VISIBILITY_PRESET hidden) - target_link_libraries(SvtAv1Enc PUBLIC ${PLATFORM_LIBS}) --if(NOT COMPILE_C_ONLY AND HAVE_X86_PLATFORM) -- target_link_libraries(SvtAv1Enc PRIVATE cpuinfo_public) --endif() - - set(ENC_PKG_CONFIG_EXTRA_CFLAGS "") - if (BUILD_SHARED_LIBS) ---- test/CMakeLists.txt.orig 2020-11-29 07:10:56 UTC -+++ test/CMakeLists.txt -@@ -86,7 +86,6 @@ set(lib_list - $<TARGET_OBJECTS:ENCODER_ASM_AVX2> - $<TARGET_OBJECTS:ENCODER_ASM_AVX512> - $<TARGET_OBJECTS:ENCODER_GLOBALS> -- cpuinfo_public - gtest_all) - if(UNIX) - # App Source Files
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202105121449.14CEnRhl043306>