From 074b2a031ec88eb6eb1ce32e1e3166e7047e6441 Mon Sep 17 00:00:00 2001 From: Peter Bui Date: Fri, 9 Oct 2020 15:23:29 -0400 Subject: [PATCH] chromium: update to 86.0.4240.111 Additional testing and patching by @q66. - Built for i686, x86_64, x86_64-musl, ppc64le-musl. - Tested on x86_64, ppc64le-musl. - Hardware accelerated video decoding now needs --enable-accelerated-video-decode command-line flag or "Hardware-accelerated video decode" setting enabled. --- .../files/musl-patches/resolver.patch | 34 +++-- .../musl-patches/xxx-ppc64le-support.patch | 11 ++ .../patches/chromium-86-nearby-include.patch | 24 +++ .../patches/chromium-fix-vaapi-on-intel.patch | 40 ----- ...remove-unsupported-compiler-warnings.patch | 22 ++- .../patches/sandbox-sched_getparam.patch | 4 +- ...rbyShareEncryptedMetadataKey-include.patch | 25 ---- ...le-accelerated-video-decode-on-Linux.patch | 43 ++++++ ...-end-iterator-usage-in-CookieMonster.patch | 78 ++++++++++ ...k-to-the-i965-driver-if-we-re-on-iHD.patch | 139 ++++++++++++++++++ ...move-dead-reloc-in-nonalloc-LD-flags.patch | 37 +++++ .../patches/upstream-sim_hash-include.patch | 25 ---- .../patches/xxx-ppc64le-support.patch | 4 +- srcpkgs/chromium/template | 5 +- 14 files changed, 376 insertions(+), 115 deletions(-) create mode 100644 srcpkgs/chromium/patches/chromium-86-nearby-include.patch delete mode 100644 srcpkgs/chromium/patches/chromium-fix-vaapi-on-intel.patch delete mode 100644 srcpkgs/chromium/patches/upstream-NearbyShareEncryptedMetadataKey-include.patch create mode 100644 srcpkgs/chromium/patches/upstream-check-for-enable-accelerated-video-decode-on-Linux.patch create mode 100644 srcpkgs/chromium/patches/upstream-fix-invalid-end-iterator-usage-in-CookieMonster.patch create mode 100644 srcpkgs/chromium/patches/upstream-only-fall-back-to-the-i965-driver-if-we-re-on-iHD.patch create mode 100644 srcpkgs/chromium/patches/upstream-remove-dead-reloc-in-nonalloc-LD-flags.patch delete mode 100644 srcpkgs/chromium/patches/upstream-sim_hash-include.patch diff --git a/srcpkgs/chromium/files/musl-patches/resolver.patch b/srcpkgs/chromium/files/musl-patches/resolver.patch index da1edb3e472..29fe2d2f1f3 100644 --- a/srcpkgs/chromium/files/musl-patches/resolver.patch +++ b/srcpkgs/chromium/files/musl-patches/resolver.patch @@ -1,36 +1,38 @@ ---- net/dns/host_resolver_manager.cc.orig 2019-10-24 11:20:16.353541895 -0400 -+++ net/dns/host_resolver_manager.cc 2019-10-24 11:22:37.799381010 -0400 -@@ -2386,8 +2386,7 @@ +--- net/dns/host_resolver_manager.cc.orig 2020-10-09 16:39:12.064069835 -0400 ++++ net/dns/host_resolver_manager.cc 2020-10-09 16:42:49.738302772 -0400 +@@ -2779,8 +2779,7 @@ NetworkChangeNotifier::AddConnectionTypeObserver(this); if (system_dns_config_notifier_) system_dns_config_notifier_->AddObserver(this); --#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_OPENBSD) && \ +-#if defined(OS_POSIX) && !defined(OS_APPLE) && !defined(OS_OPENBSD) && \ - !defined(OS_ANDROID) +#if defined(__GLIBC__) EnsureDnsReloaderInit(); #endif ---- ./net/dns/dns_reloader.cc.orig -+++ ./net/dns/dns_reloader.cc -@@ -4,8 +4,7 @@ +--- net/dns/dns_reloader.cc.orig 2020-10-09 16:39:12.064069835 -0400 ++++ net/dns/dns_reloader.cc 2020-10-09 16:44:30.442419823 -0400 +@@ -4,9 +4,8 @@ #include "net/dns/dns_reloader.h" --#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_OPENBSD) && \ +-#if defined(OS_POSIX) && !defined(OS_APPLE) && !defined(OS_OPENBSD) && \ - !defined(OS_ANDROID) && !defined(OS_FUCHSIA) +- +#if defined(__GLIBC__) - ++ #include ---- ./net/dns/host_resolver_proc.cc.orig -+++ ./net/dns/host_resolver_proc.cc -@@ -190,8 +190,7 @@ - // Restrict result set to only this socket type to avoid duplicates. - hints.ai_socktype = SOCK_STREAM; + #include "base/lazy_instance.h" +--- net/dns/host_resolver_proc.cc.orig 2020-10-09 16:39:12.065069836 -0400 ++++ net/dns/host_resolver_proc.cc 2020-10-09 16:45:09.641466644 -0400 +@@ -159,8 +159,7 @@ + base::ScopedBlockingCall scoped_blocking_call(FROM_HERE, + base::BlockingType::WILL_BLOCK); --#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_OPENBSD) && \ +-#if defined(OS_POSIX) && !defined(OS_APPLE) && !defined(OS_OPENBSD) && \ - !defined(OS_ANDROID) && !defined(OS_FUCHSIA) +#if defined(__GLIBC__) DnsReloaderMaybeReload(); #endif - int err = getaddrinfo(host.c_str(), NULL, &hints, &ai); + base::Optional ai; diff --git a/srcpkgs/chromium/files/musl-patches/xxx-ppc64le-support.patch b/srcpkgs/chromium/files/musl-patches/xxx-ppc64le-support.patch index d2dd424dffa..9001a2a854d 100644 --- a/srcpkgs/chromium/files/musl-patches/xxx-ppc64le-support.patch +++ b/srcpkgs/chromium/files/musl-patches/xxx-ppc64le-support.patch @@ -54,6 +54,17 @@ index cdce9bf8..73d77dda 100644 defined(_M_IX86) || defined(_M_X64) #define ABSL_HAVE_UNSCALED_CYCLECLOCK_IMPLEMENTATION 1 #else +--- third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h ++++ third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +@@ -64,7 +64,7 @@ + #elif defined(__i386__) || defined(__x86_64__) + #define ABSL_STACKTRACE_INL_HEADER \ + "absl/debugging/internal/stacktrace_x86-inl.inc" +-#elif defined(__ppc__) || defined(__PPC__) ++#elif (defined(__ppc__) || defined(__PPC__)) && defined(__GLIBC__) + #define ABSL_STACKTRACE_INL_HEADER \ + "absl/debugging/internal/stacktrace_powerpc-inl.inc" + #elif defined(__aarch64__) diff --git third_party/breakpad/BUILD.gn third_party/breakpad/BUILD.gn index f9a60e37..25f3a0b7 100644 --- third_party/breakpad/BUILD.gn diff --git a/srcpkgs/chromium/patches/chromium-86-nearby-include.patch b/srcpkgs/chromium/patches/chromium-86-nearby-include.patch new file mode 100644 index 00000000000..b200a7ebd96 --- /dev/null +++ b/srcpkgs/chromium/patches/chromium-86-nearby-include.patch @@ -0,0 +1,24 @@ +From a5b2ee9dd7dfb186e26ec6c0c06c2ae1a9d27195 Mon Sep 17 00:00:00 2001 +From: Stephan Hartmann +Date: Sat, 18 Jul 2020 14:15:50 +0000 +Subject: [PATCH] IWYU: memcpy is defined in cstring + +--- + third_party/nearby/src/cpp/platform_v2/base/byte_array.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/third_party/nearby/src/cpp/platform_v2/base/byte_array.h b/third_party/nearby/src/cpp/platform_v2/base/byte_array.h +index ee5d0eb..4b1d79b 100644 +--- third_party/nearby/src/cpp/platform_v2/base/byte_array.h ++++ third_party/nearby/src/cpp/platform_v2/base/byte_array.h +@@ -17,6 +17,7 @@ + + #include + #include ++#include + #include + #include + #include +-- +2.26.2 + diff --git a/srcpkgs/chromium/patches/chromium-fix-vaapi-on-intel.patch b/srcpkgs/chromium/patches/chromium-fix-vaapi-on-intel.patch deleted file mode 100644 index e01a6a97ef0..00000000000 --- a/srcpkgs/chromium/patches/chromium-fix-vaapi-on-intel.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 9ff06536caf7ea51aad9fd2bb649c858eaf7ee84 Mon Sep 17 00:00:00 2001 -From: Akarshan Biswas -Date: Sat, 26 Oct 2019 10:06:30 +0530 -Subject: [PATCH] Move offending function to chromeos only - ---- media/gpu/vaapi/vaapi_video_decode_accelerator.cc -+++ media/gpu/vaapi/vaapi_video_decode_accelerator.cc -@@ -66,6 +66,7 @@ void ReportToUMA(VAVDADecoderFailure fai - VAVDA_DECODER_FAILURES_MAX + 1); - } - -+#if defined(OS_ANDROID) || defined(OS_CHROMEOS) - // Returns true if the CPU is an Intel Gemini Lake or later (including Kaby - // Lake) Cpu platform id's are referenced from the following file in kernel - // source arch/x86/include/asm/intel-family.h -@@ -78,6 +79,7 @@ bool IsGeminiLakeOrLater() { - cpuid.model() >= kGeminiLakeModelId; - return is_geminilake_or_later; - } -+#endif - - } // namespace - -@@ -1155,6 +1157,8 @@ VaapiVideoDecodeAccelerator::DecideBuffe - if (output_mode_ == VideoDecodeAccelerator::Config::OutputMode::IMPORT) - return BufferAllocationMode::kNormal; - -+#if defined(OS_ANDROID) || defined(OS_CHROMEOS) -+ // Move this to chromeOs only as it is causing problem in some intel linux drivers - // On Gemini Lake, Kaby Lake and later we can pass to libva the client's - // PictureBuffers to decode onto, which skips the use of the Vpp unit and its - // associated format reconciliation copy, avoiding all internal buffer -@@ -1171,6 +1175,7 @@ VaapiVideoDecodeAccelerator::DecideBuffe - num_extra_pics_ = 3; - return BufferAllocationMode::kNone; - } -+#endif - - // If we're here, we have to use the Vpp unit and allocate buffers for - // |decoder_|; usually we'd have to allocate the |decoder_|s diff --git a/srcpkgs/chromium/patches/llvm-remove-unsupported-compiler-warnings.patch b/srcpkgs/chromium/patches/llvm-remove-unsupported-compiler-warnings.patch index 5268a087189..86a6e2d8fd7 100644 --- a/srcpkgs/chromium/patches/llvm-remove-unsupported-compiler-warnings.patch +++ b/srcpkgs/chromium/patches/llvm-remove-unsupported-compiler-warnings.patch @@ -1,12 +1,28 @@ ---- build/config/compiler/BUILD.gn.orig 2020-08-24 17:40:22.000000000 -0400 -+++ build/config/compiler/BUILD.gn 2020-08-30 13:37:51.834404370 -0400 -@@ -1512,22 +1512,12 @@ +--- build/config/compiler/BUILD.gn.orig 2020-10-09 11:20:12.892910174 -0400 ++++ build/config/compiler/BUILD.gn 2020-10-09 11:59:20.403349122 -0400 +@@ -1518,12 +1518,6 @@ + # Flags NaCl (Clang 3.7) and Xcode 9.2 (Clang clang-900.0.39.2) do not + # recognize. + cflags += [ +- # An ABI compat warning we don't care about, https://crbug.com/1102157 +- # TODO(thakis): Push this to the (few) targets that need it, +- # instead of having a global flag. +- "-Wno-psabi", +- +- # Ignore warnings about MSVC optimization pragmas. + # TODO(thakis): Only for no_chromium_code? http://crbug.com/912662 + "-Wno-ignored-pragma-optimize", + +@@ -1538,25 +1532,12 @@ # TODO(https://crbug.com/1028110): Evaluate and possible enable. "-Wno-deprecated-copy", - - # TODO(https://crbug.com/1050281): Clean up, enable. - "-Wno-non-c-typedef-for-linkage", +- +- # TODO(https://crbug.com/1114873): Clean up, enable. +- "-Wno-string-concatenation", ] cflags_c += [ diff --git a/srcpkgs/chromium/patches/sandbox-sched_getparam.patch b/srcpkgs/chromium/patches/sandbox-sched_getparam.patch index aa2d9aa1846..ba8af49c5f8 100644 --- a/srcpkgs/chromium/patches/sandbox-sched_getparam.patch +++ b/srcpkgs/chromium/patches/sandbox-sched_getparam.patch @@ -3,8 +3,8 @@ musl uses them for pthread_getschedparam() source: https://git.alpinelinux.org/aports/commit/community/chromium?id=54af9f8ac24f52d382c5758e2445bf0206eff40e ---- services/service_manager/sandbox/linux/bpf_renderer_policy_linux.cc.orig 2019-10-08 21:03:18.253080425 +0200 -+++ services/service_manager/sandbox/linux/bpf_renderer_policy_linux.cc 2019-10-08 21:04:19.648549718 +0200 +--- sandbox/policy/linux/bpf_renderer_policy_linux.cc.orig 2019-10-08 21:03:18.253080425 +0200 ++++ sandbox/policy/linux/bpf_renderer_policy_linux.cc 2019-10-08 21:04:19.648549718 +0200 @@ -88,10 +88,10 @@ case __NR_sysinfo: case __NR_times: diff --git a/srcpkgs/chromium/patches/upstream-NearbyShareEncryptedMetadataKey-include.patch b/srcpkgs/chromium/patches/upstream-NearbyShareEncryptedMetadataKey-include.patch deleted file mode 100644 index f706f3c6b1e..00000000000 --- a/srcpkgs/chromium/patches/upstream-NearbyShareEncryptedMetadataKey-include.patch +++ /dev/null @@ -1,25 +0,0 @@ -From ad1493ec8f5287c5cd10dcb50b741359f7858349 Mon Sep 17 00:00:00 2001 -From: Jose Dapena Paz -Date: Tue, 07 Jul 2020 14:43:40 +0000 -Subject: [PATCH] IWYU: int8_t used in nearby share encrypted metadata key requires cstdint - -Bug: 819294 -Change-Id: I90f88cf35e85a8a0ab1811e5533347d329365b21 -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2283508 -Reviewed-by: Alex Chau -Commit-Queue: José Dapena Paz -Cr-Commit-Position: refs/heads/master@{#785727} ---- - -diff --git a/chrome/browser/nearby_sharing/certificates/nearby_share_encrypted_metadata_key.h b/chrome/browser/nearby_sharing/certificates/nearby_share_encrypted_metadata_key.h -index 2893bde..8e1758f 100644 ---- chrome/browser/nearby_sharing/certificates/nearby_share_encrypted_metadata_key.h -+++ chrome/browser/nearby_sharing/certificates/nearby_share_encrypted_metadata_key.h -@@ -5,6 +5,7 @@ - #ifndef CHROME_BROWSER_NEARBY_SHARING_CERTIFICATES_NEARBY_SHARE_ENCRYPTED_METADATA_KEY_H_ - #define CHROME_BROWSER_NEARBY_SHARING_CERTIFICATES_NEARBY_SHARE_ENCRYPTED_METADATA_KEY_H_ - -+#include - #include - - // Holds the encrypted symmetric key--the key used to encrypt user/device diff --git a/srcpkgs/chromium/patches/upstream-check-for-enable-accelerated-video-decode-on-Linux.patch b/srcpkgs/chromium/patches/upstream-check-for-enable-accelerated-video-decode-on-Linux.patch new file mode 100644 index 00000000000..e7d05e84b04 --- /dev/null +++ b/srcpkgs/chromium/patches/upstream-check-for-enable-accelerated-video-decode-on-Linux.patch @@ -0,0 +1,43 @@ +From 54deb9811ca9bd2327def5c05ba6987b8c7a0897 Mon Sep 17 00:00:00 2001 +From: Evangelos Foutras +Date: Tue, 29 Sep 2020 01:02:22 +0000 +Subject: [PATCH] Check for enable-accelerated-video-decode on Linux + +Video decoding was being accelerated on Linux even though the newly +added "enable-accelerated-video-decode" flag was not specified. The +chrome://gpu page was misleadingly showing this feature as disabled: + + > Video Decode: Software only. Hardware acceleration disabled + +This change adds a check for --enable-accelerated-video-decode when +considering if video decoding should be activated. (Only on Linux.) + +Extra context: https://crbug.com/1097029#c18 (and also comment 20). + +Bug: 1066176, 1097029 +Change-Id: I534115f5f6ceed0ee3511fcf5c2d0f1dd04b9b7e +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2431434 +Reviewed-by: John Abd-El-Malek +Reviewed-by: Dale Curtis +Commit-Queue: Ted Meyer +Cr-Commit-Position: refs/heads/master@{#811480} +--- + content/renderer/render_thread_impl.cc | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc +index f13c94ddab7..0352f127171 100644 +--- content/renderer/render_thread_impl.cc ++++ content/renderer/render_thread_impl.cc +@@ -1121,7 +1121,11 @@ media::GpuVideoAcceleratorFactories* RenderThreadImpl::GetGpuFactories() { + kGpuStreamPriorityMedia); + + const bool enable_video_accelerator = ++#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++ cmd_line->HasSwitch(switches::kEnableAcceleratedVideoDecode) && ++#else + !cmd_line->HasSwitch(switches::kDisableAcceleratedVideoDecode) && ++#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS) + (gpu_channel_host->gpu_feature_info() + .status_values[gpu::GPU_FEATURE_TYPE_ACCELERATED_VIDEO_DECODE] == + gpu::kGpuFeatureStatusEnabled); diff --git a/srcpkgs/chromium/patches/upstream-fix-invalid-end-iterator-usage-in-CookieMonster.patch b/srcpkgs/chromium/patches/upstream-fix-invalid-end-iterator-usage-in-CookieMonster.patch new file mode 100644 index 00000000000..7494dc9b7c3 --- /dev/null +++ b/srcpkgs/chromium/patches/upstream-fix-invalid-end-iterator-usage-in-CookieMonster.patch @@ -0,0 +1,78 @@ +From 53478caee862624fc6d73516f8d64253854b146f Mon Sep 17 00:00:00 2001 +From: Piotr Tworek +Date: Mon, 31 Aug 2020 21:03:58 +0000 +Subject: [PATCH] Fix invalid "end" iterator usage in CookieMonster. + +Commit 229623d76e8baf714c8569c9f4efc5de266cef8b has introduced the following +code in cookie_monster.cc. + +// If this is the first cookie in |cookies_| with this key, increment the +// |num_keys_| counter. +bool different_prev = + inserted == cookies_.begin() || std::prev(inserted)->first != key; +bool different_next = + inserted == cookies_.end() || std::next(inserted)->first != key; +if (different_prev && different_next) + ++num_keys_; + +The "inserted" iterator is something that has been returned from +std::multimap::insert. At first glance it looks reasonable. The code +tries to determine if there are already similar elements with the same +key in the map. Unfortunately the expression calculating the value of +different_next can potentially use the end iterator to the map. The +"inserted == cookies_.end()" part of the expression will always evaluate +to false since the newly inserted element has to be in the map and +cookies_.end() points to the first element outside the map. If the +inserted happens to be the last element in the map the second part of +the expression will grab the end iterator by calling std::next(inserted) +and then will try to use it leading to invalid memory access. + +Given the fact that cookies_ is a std::multimap we should not even need +to calculate the value of different_next. It should always be true. + + "If the container has elements with equivalent key, inserts at the + upper bound of that range.(since C++11)" + +See: https://en.cppreference.com/w/cpp/container/multimap/insert + +Bug: 1120240 +Change-Id: I8928c294ac4daf72349a2331b31b017c1d015da0 +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2368872 +Reviewed-by: Maksim Orlovich +Commit-Queue: Piotr Tworek +Cr-Commit-Position: refs/heads/master@{#803260} +--- + net/cookies/cookie_monster.cc | 13 +++++++++---- + 1 file changed, 9 insertions(+), 4 deletions(-) + +diff --git a/net/cookies/cookie_monster.cc b/net/cookies/cookie_monster.cc +index 265deed0e52..140b61a81dc 100644 +--- net/cookies/cookie_monster.cc ++++ net/cookies/cookie_monster.cc +@@ -1151,9 +1151,14 @@ CookieMonster::CookieMap::iterator CookieMonster::InternalInsertCookie( + // |num_keys_| counter. + bool different_prev = + inserted == cookies_.begin() || std::prev(inserted)->first != key; +- bool different_next = +- inserted == cookies_.end() || std::next(inserted)->first != key; +- if (different_prev && different_next) ++ // According to std::multiqueue documentation: ++ // "If the container has elements with equivalent key, inserts at the upper ++ // bound of that range. (since C++11)" ++ // This means that "inserted" iterator either points to the last element in ++ // the map, or the element succeeding it has to have different key. ++ DCHECK(std::next(inserted) == cookies_.end() || ++ std::next(inserted)->first != key); ++ if (different_prev) + ++num_keys_; + + return inserted; +@@ -1381,7 +1386,7 @@ void CookieMonster::InternalDeleteCookie(CookieMap::iterator it, + bool different_prev = + it == cookies_.begin() || std::prev(it)->first != it->first; + bool different_next = +- it == cookies_.end() || std::next(it)->first != it->first; ++ std::next(it) == cookies_.end() || std::next(it)->first != it->first; + if (different_prev && different_next) + --num_keys_; + diff --git a/srcpkgs/chromium/patches/upstream-only-fall-back-to-the-i965-driver-if-we-re-on-iHD.patch b/srcpkgs/chromium/patches/upstream-only-fall-back-to-the-i965-driver-if-we-re-on-iHD.patch new file mode 100644 index 00000000000..5c517e4a8eb --- /dev/null +++ b/srcpkgs/chromium/patches/upstream-only-fall-back-to-the-i965-driver-if-we-re-on-iHD.patch @@ -0,0 +1,139 @@ +From fbd756ab55f9351165f923b0411c31dd71319c78 Mon Sep 17 00:00:00 2001 +From: Ted Meyer +Date: Wed, 16 Sep 2020 17:42:03 +0000 +Subject: [PATCH] Only fall back to the i965 driver if we're on iHD + +I got my hands on an old AMD laptop, and the gallium driver worked very +well and was saving power even at 720p, so there's no reason to block +that for now. + +Bug: 1116703 +Change-Id: Ib15bc2b93f33e99adad7569dd825e167b503a0ea +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2409967 +Commit-Queue: Ted Meyer +Reviewed-by: Andres Calderon Jaramillo +Cr-Commit-Position: refs/heads/master@{#807550} +--- + media/gpu/vaapi/vaapi_wrapper.cc | 73 ++++++++++++++++++++------------ + 1 file changed, 47 insertions(+), 26 deletions(-) + +diff --git a/media/gpu/vaapi/vaapi_wrapper.cc b/media/gpu/vaapi/vaapi_wrapper.cc +index 2ad0b997e56..e30d1dfb73b 100644 +--- media/gpu/vaapi/vaapi_wrapper.cc ++++ media/gpu/vaapi/vaapi_wrapper.cc +@@ -409,6 +409,8 @@ class VADisplayState { + + // Implementation of Initialize() called only once. + bool InitializeOnce() EXCLUSIVE_LOCKS_REQUIRED(va_lock_); ++ bool InitializeVaDisplay_Locked() EXCLUSIVE_LOCKS_REQUIRED(va_lock_); ++ bool InitializeVaDriver_Locked() EXCLUSIVE_LOCKS_REQUIRED(va_lock_); + + int refcount_ GUARDED_BY(va_lock_); + +@@ -472,11 +474,7 @@ bool VADisplayState::Initialize() { + return success; + } + +-bool VADisplayState::InitializeOnce() { +- static_assert( +- VA_MAJOR_VERSION >= 2 || (VA_MAJOR_VERSION == 1 && VA_MINOR_VERSION >= 1), +- "Requires VA-API >= 1.1.0"); +- ++bool VADisplayState::InitializeVaDisplay_Locked() { + switch (gl::GetGLImplementation()) { + case gl::kGLImplementationEGLGLES2: + va_display_ = vaGetDisplayDRM(drm_fd_.get()); +@@ -519,25 +517,10 @@ bool VADisplayState::InitializeOnce() { + return false; + } + +- // Set VA logging level and driver name, unless already set. +- constexpr char libva_log_level_env[] = "LIBVA_MESSAGING_LEVEL"; +- std::unique_ptr env(base::Environment::Create()); +- if (!env->HasVar(libva_log_level_env)) +- env->SetVar(libva_log_level_env, "1"); +- +-#if defined(USE_X11) +- if (gl::GetGLImplementation() == gl::kGLImplementationEGLANGLE) { +- DCHECK(!features::IsUsingOzonePlatform()); +- constexpr char libva_driver_impl_env[] = "LIBVA_DRIVER_NAME"; +- // TODO(crbug/1116703) The libva intel-media driver has a known segfault in +- // vaPutSurface, so until this is fixed, fall back to the i965 driver. There +- // is discussion of the issue here: +- // https://github.com/intel/media-driver/issues/818 +- if (!env->HasVar(libva_driver_impl_env)) +- env->SetVar(libva_driver_impl_env, "i965"); +- } +-#endif // USE_X11 ++ return true; ++} + ++bool VADisplayState::InitializeVaDriver_Locked() { + // The VAAPI version. + int major_version, minor_version; + VAStatus va_res = vaInitialize(va_display_, &major_version, &minor_version); +@@ -545,9 +528,6 @@ bool VADisplayState::InitializeOnce() { + LOG(ERROR) << "vaInitialize failed: " << vaErrorStr(va_res); + return false; + } +- +- va_initialized_ = true; +- + const std::string va_vendor_string = vaQueryVendorString(va_display_); + DLOG_IF(WARNING, va_vendor_string.empty()) + << "Vendor string empty or error reading."; +@@ -555,6 +535,8 @@ bool VADisplayState::InitializeOnce() { + << va_vendor_string; + implementation_type_ = VendorStringToImplementationType(va_vendor_string); + ++ va_initialized_ = true; ++ + // The VAAPI version is determined from what is loaded on the system by + // calling vaInitialize(). Since the libva is now ABI-compatible, relax the + // version check which helps in upgrading the libva, without breaking any +@@ -571,6 +553,45 @@ bool VADisplayState::InitializeOnce() { + return true; + } + ++bool VADisplayState::InitializeOnce() { ++ static_assert( ++ VA_MAJOR_VERSION >= 2 || (VA_MAJOR_VERSION == 1 && VA_MINOR_VERSION >= 1), ++ "Requires VA-API >= 1.1.0"); ++ ++ // Set VA logging level, unless already set. ++ constexpr char libva_log_level_env[] = "LIBVA_MESSAGING_LEVEL"; ++ std::unique_ptr env(base::Environment::Create()); ++ if (!env->HasVar(libva_log_level_env)) ++ env->SetVar(libva_log_level_env, "1"); ++ ++ if (!InitializeVaDisplay_Locked() || !InitializeVaDriver_Locked()) ++ return false; ++ ++#if defined(USE_X11) ++ if (gl::GetGLImplementation() == gl::kGLImplementationEGLANGLE && ++ implementation_type_ == VAImplementation::kIntelIHD) { ++ DCHECK(!features::IsUsingOzonePlatform()); ++ constexpr char libva_driver_impl_env[] = "LIBVA_DRIVER_NAME"; ++ // TODO(crbug/1116703) The libva intel-media driver has a known segfault in ++ // vaPutSurface, so until this is fixed, fall back to the i965 driver. There ++ // is discussion of the issue here: ++ // https://github.com/intel/media-driver/issues/818 ++ if (!env->HasVar(libva_driver_impl_env)) ++ env->SetVar(libva_driver_impl_env, "i965"); ++ ++ // Re-initialize with the new driver. ++ va_display_ = nullptr; ++ va_initialized_ = false; ++ implementation_type_ = VAImplementation::kInvalid; ++ ++ if (!InitializeVaDisplay_Locked() || !InitializeVaDriver_Locked()) ++ return false; ++ } ++#endif // USE_X11 ++ ++ return true; ++} ++ + VAStatus VADisplayState::Deinitialize() { + base::AutoLock auto_lock(va_lock_); + VAStatus va_res = VA_STATUS_SUCCESS; diff --git a/srcpkgs/chromium/patches/upstream-remove-dead-reloc-in-nonalloc-LD-flags.patch b/srcpkgs/chromium/patches/upstream-remove-dead-reloc-in-nonalloc-LD-flags.patch new file mode 100644 index 00000000000..4ad4f6e23bb --- /dev/null +++ b/srcpkgs/chromium/patches/upstream-remove-dead-reloc-in-nonalloc-LD-flags.patch @@ -0,0 +1,37 @@ +From 74b0cb5b86f7d7f8f7c1172d85b09096bef147b7 Mon Sep 17 00:00:00 2001 +From: Daniel Nicoara +Date: Thu, 24 Sep 2020 02:34:24 +0000 +Subject: [PATCH] Remove dead-reloc-in-nonalloc LD flags + +Breakpad change landed. Revert workaround. + +Bug: 1105559 +Test: components/crash/content/tools/generate_breakpad_symbols.py --build-dir=out/andrd --binary=out/andrd/lib.unstripped/libcontent_shell_content_view.so --symbols-dir=/tmp/foo --platform=android +Change-Id: I519534002898a97b15a57b9b87ac78ef3f216dee +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2427349 +Commit-Queue: Nico Weber +Reviewed-by: Nico Weber +Cr-Commit-Position: refs/heads/master@{#810066} +--- + build/config/compiler/BUILD.gn | 8 -------- + 1 file changed, 8 deletions(-) + +diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn +index aa9eca20bd2..42839cfba3f 100644 +--- build/config/compiler/BUILD.gn ++++ build/config/compiler/BUILD.gn +@@ -396,14 +396,6 @@ config("compiler") { + "-Wl,--as-needed", + ] + } +- if (use_lld && !is_chromeos_device) { +- # TODO(thakis): Fix dump_syms to not need this and then remove it, +- # https://crbug.com/1105559 +- ldflags += [ +- "-Wl,-z,dead-reloc-in-nonalloc=*=0", +- "-Wl,-z,dead-reloc-in-nonalloc=.debug_ranges=1", +- ] +- } + } + + # Linux-specific compiler flags setup. diff --git a/srcpkgs/chromium/patches/upstream-sim_hash-include.patch b/srcpkgs/chromium/patches/upstream-sim_hash-include.patch deleted file mode 100644 index 277a2020a38..00000000000 --- a/srcpkgs/chromium/patches/upstream-sim_hash-include.patch +++ /dev/null @@ -1,25 +0,0 @@ -From c0934033a97b61f3177238ff9f842c5a0f5d8faa Mon Sep 17 00:00:00 2001 -From: Stephan Hartmann -Date: Sun, 28 Jun 2020 18:48:11 +0000 -Subject: [PATCH] IWYU: add includes for uint64_t and std::string - ---- - components/federated_learning/sim_hash.h | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/components/federated_learning/sim_hash.h b/components/federated_learning/sim_hash.h -index 55030d9..a51dd64 100644 ---- components/federated_learning/sim_hash.h -+++ components/federated_learning/sim_hash.h -@@ -5,6 +5,8 @@ - #ifndef COMPONENTS_FEDERATED_LEARNING_SIM_HASH_H_ - #define COMPONENTS_FEDERATED_LEARNING_SIM_HASH_H_ - -+#include -+#include - #include - #include - --- -2.26.2 - diff --git a/srcpkgs/chromium/patches/xxx-ppc64le-support.patch b/srcpkgs/chromium/patches/xxx-ppc64le-support.patch index dcf4f6b4750..1f5fca76ea3 100644 --- a/srcpkgs/chromium/patches/xxx-ppc64le-support.patch +++ b/srcpkgs/chromium/patches/xxx-ppc64le-support.patch @@ -1056,8 +1056,8 @@ index 000000000..07728e087 +#endif // SANDBOX_LINUX_SYSTEM_HEADERS_PPC64_LINUX_UCONTEXT_H_ diff --git services/service_manager/sandbox/linux/bpf_renderer_policy_linux.cc services/service_manager/sandbox/linux/bpf_renderer_policy_linux.cc index fb89b3356..1e984731e 100644 ---- services/service_manager/sandbox/linux/bpf_renderer_policy_linux.cc -+++ services/service_manager/sandbox/linux/bpf_renderer_policy_linux.cc +--- sandbox/policy/linux/bpf_renderer_policy_linux.cc ++++ sandbox/policy/linux/bpf_renderer_policy_linux.cc @@ -15,6 +15,11 @@ #include "sandbox/linux/system_headers/linux_syscalls.h" #include "services/service_manager/sandbox/linux/sandbox_linux.h" diff --git a/srcpkgs/chromium/template b/srcpkgs/chromium/template index c0b579e9bbe..980b0d72843 100644 --- a/srcpkgs/chromium/template +++ b/srcpkgs/chromium/template @@ -1,7 +1,7 @@ # Template file for 'chromium' pkgname=chromium # See http://www.chromium.org/developers/calendar for the latest version -version=85.0.4183.121 +version=86.0.4240.111 revision=1 archs="i686* x86_64* aarch64* armv7l* ppc64le*" short_desc="Google's attempt at creating a safer, faster, and more stable browser" @@ -9,7 +9,7 @@ maintainer="Enno Boland " license="BSD-3-Clause" homepage="https://www.chromium.org/" distfiles="https://commondatastorage.googleapis.com/chromium-browser-official/${pkgname}-${version}.tar.xz" -checksum=e018547e54566410fb365d9f3dae10037c30fca5debe6ba8baceef3ad3b03d28 +checksum=f27bdb02ebf3c48abe054c73f1ae57e22a22535ea34f5edf8693ab8432a7c717 nocross=yes lib32disabled=yes @@ -122,6 +122,7 @@ do_configure() { ffmpeg flac fontconfig + freetype harfbuzz-ng libdrm libevent