diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_skia_src_core_SkCpu.cpp b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_skia_src_core_SkCpu.cpp index d36141b5240f..85318d909ea7 100644 --- a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_skia_src_core_SkCpu.cpp +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_skia_src_core_SkCpu.cpp @@ -1,45 +1,69 @@ ---- src/3rdparty/chromium/third_party/skia/src/core/SkCpu.cpp.orig 2022-04-21 18:48:31 UTC +--- src/3rdparty/chromium/third_party/skia/src/core/SkCpu.cpp.orig 2023-11-20 16:08:07 UTC +++ src/3rdparty/chromium/third_party/skia/src/core/SkCpu.cpp @@ -73,6 +73,42 @@ return features; } +#elif defined(SK_CPU_ARM64) && defined(__OpenBSD__) + #include + #include + #include + + static uint32_t read_cpu_features() { + int isar0_mib[] = { CTL_MACHDEP, CPU_ID_AA64ISAR0 }; + size_t len = sizeof(uint64_t); + uint64_t cpu_id = 0; + uint32_t features = 0; + + if (sysctl(isar0_mib, 2, &cpu_id, &len, NULL, 0) == 0) { + if (ID_AA64ISAR0_CRC32(cpu_id) >= ID_AA64ISAR0_CRC32_BASE) + features |= SkCpu::CRC32; + } + + return features; + } + +#elif defined(SK_CPU_ARM64) && defined(__FreeBSD__) + #include + #ifndef ID_AA64ISAR0_CRC32_VAL + #define ID_AA64ISAR0_CRC32_VAL ID_AA64ISAR0_CRC32 + #endif + + static uint32_t read_cpu_features() { + uint32_t features = 0; + uint64_t id_aa64isar0; + + id_aa64isar0 = READ_SPECIALREG(id_aa64isar0_el1); + if (ID_AA64ISAR0_CRC32_VAL(id_aa64isar0) == ID_AA64ISAR0_CRC32_BASE) { + features |= SkCpu::CRC32; + } + return features; + } + #elif defined(SK_CPU_ARM64) && __has_include() #include +@@ -110,6 +146,23 @@ + if (std::size(buf) != midr_el1.read(buf, std::size(buf)) + || 0 == memcmp(kMongoose3, buf, std::size(buf))) { + features &= ~(SkCpu::ASIMDHP); ++ } ++ } ++ return features; ++ } ++ ++#elif defined(SK_CPU_ARM32) && defined(__FreeBSD__) ++ #include ++ ++ static uint32_t read_cpu_features() { ++ unsigned long hwcaps = 0; ++ uint32_t features = 0; ++ ++ elf_aux_info(AT_HWCAP, (void *)&hwcaps, sizeof hwcaps); ++ if (hwcaps & HWCAP_NEON) { ++ features |= SkCpu::NEON; ++ if (hwcaps & HWCAP_VFPv4) { ++ features |= SkCpu::NEON_FMA|SkCpu::VFP_FP16; + } + } + return features; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_v8_src_base_platform_platform-freebsd.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_v8_src_base_platform_platform-freebsd.cc index 3c3165a63310..e03d9e35b45c 100644 --- a/www/qt6-webengine/files/patch-src_3rdparty_chromium_v8_src_base_platform_platform-freebsd.cc +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_v8_src_base_platform_platform-freebsd.cc @@ -1,32 +1,32 @@ ---- src/3rdparty/chromium/v8/src/base/platform/platform-freebsd.cc.orig 2022-02-07 13:39:41 UTC +--- src/3rdparty/chromium/v8/src/base/platform/platform-freebsd.cc.orig 2023-11-20 16:08:07 UTC +++ src/3rdparty/chromium/v8/src/base/platform/platform-freebsd.cc @@ -43,14 +43,10 @@ TimezoneCache* OS::CreateTimezoneCache() { return new PosixDefaultTimezoneCache(); } -static unsigned StringToLong(char* buffer) { - return static_cast(strtol(buffer, nullptr, 16)); -} - std::vector OS::GetSharedLibraryAddresses() { std::vector result; int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_VMMAP, getpid()}; - size_t miblen = sizeof(mib) / sizeof(mib[0]); + unsigned int miblen = sizeof(mib) / sizeof(mib[0]); size_t buffer_size; if (sysctl(mib, miblen, nullptr, &buffer_size, nullptr, 0) == 0) { // Overallocate the buffer by 1/3 to account for concurrent @@ -82,8 +78,13 @@ std::vector OS::GetSharedLib lib_name = std::string(path); } result.push_back(SharedLibraryAddress( -+#if defined(__i386__) || defined(OS_FREEBSD) ++#if defined(__i386__) || defined(__arm__) || defined(OS_FREEBSD) + lib_name, static_cast(map->kve_start), + static_cast(map->kve_end))); +#else lib_name, reinterpret_cast(map->kve_start), reinterpret_cast(map->kve_end))); +#endif } start += ssize;