extra/chromium to 86.0.4240.75-1

This commit is contained in:
Kevin Mihelich 2020-10-08 00:24:04 +00:00
parent 26544e31c7
commit 6c8b454999
7 changed files with 315 additions and 98 deletions

View file

@ -15,10 +15,10 @@ buildarch=12
highmem=1
pkgname=chromium
pkgver=85.0.4183.121
pkgver=86.0.4240.75
pkgrel=1
_launcher_ver=6
_gcc_patchset=2
_gcc_patchset=6
pkgdesc="A web browser built for speed, simplicity, and security"
arch=('x86_64')
url="https://www.chromium.org/Home"
@ -38,16 +38,20 @@ install=chromium.install
source=(https://commondatastorage.googleapis.com/chromium-browser-official/$pkgname-$pkgver.tar.xz
chromium-launcher-$_launcher_ver.tar.gz::https://github.com/foutrelis/chromium-launcher/archive/v$_launcher_ver.tar.gz
https://github.com/stha09/chromium-patches/releases/download/chromium-${pkgver%%.*}-patchset-$_gcc_patchset/chromium-${pkgver%%.*}-patchset-$_gcc_patchset.tar.xz
media-Set-allocation-limit-compatible-with-FFmpeg-4.3.patch
chromium-fix-vaapi-on-intel.patch
fix-invalid-end-iterator-usage-in-CookieMonster.patch
only-fall-back-to-the-i965-driver-if-we-re-on-iHD.patch
remove-dead-reloc-in-nonalloc-LD-flags.patch
check-for-enable-accelerated-video-decode-on-Linux.patch
chromium-skia-harmony.patch
0001-crashpad-include-limits.patch
chromium-81.0.4044.122-Fix-sandbox-Aw-snap-for-syscalls-403-and-407.patch)
sha256sums=('e018547e54566410fb365d9f3dae10037c30fca5debe6ba8baceef3ad3b03d28'
sha256sums=('dd7a41eda5f984e44474d7e6fb25b5df88c1c924a1a3966189f037f7d325bcb5'
'04917e3cd4307d8e31bfb0027a5dce6d086edb10ff8a716024fbb8bb0c7dccf1'
'2194fe22b9e5ccdc4a86da4e3572214f670c561486671f57c90636fd3cbfa43e'
'0f041d655335cd2a4773ae7ca5e301a0ff12c6c53f57b7cf6651c268e0420a1c'
'e495f2477091557b15bff2c99831e0a3db64ea2ebde7dcb22857a6469c944b9a'
'6f9ab35fa2c9e6e34ec454b829b7b87adaebc10cacecd1ac1daa67035ee44aba'
'69d8b7a439db1af4713245ddf5f44ca647283ba833a8733e848033ebdaf03cdc'
'7514c6c81a64a5457b66494a366fbb39005563eecc48d1a39033dd06aec4e300'
'7cace84d7494190e7882d3e637820646ec8d64808f0a2128c515bd44991a3790'
'03d03a39b2afa40083eb8ccb9616a51619f71da92348effc8ee289cbda10128b'
'771292942c0901092a402cc60ee883877a99fb804cb54d568c8c6c94565a48e1'
'df99f49ad58b70c9a3e1827d7e80b62e4363419334ed83373cf55b79c17b6f10'
'4837f797a910795bf3161805a3302d5f3701573ca90da8af32b2f4aa62510d20')
@ -109,15 +113,14 @@ prepare() {
third_party/blink/renderer/core/xml/parser/xml_document_parser.cc \
third_party/libxml/chromium/*.cc
# https://crbug.com/1095962
patch -Np1 -i ../media-Set-allocation-limit-compatible-with-FFmpeg-4.3.patch
# Upstream fixes
patch -Np1 -i ../fix-invalid-end-iterator-usage-in-CookieMonster.patch
patch -Np1 -i ../only-fall-back-to-the-i965-driver-if-we-re-on-iHD.patch
patch -Np1 -i ../remove-dead-reloc-in-nonalloc-LD-flags.patch
patch -Np1 -i ../check-for-enable-accelerated-video-decode-on-Linux.patch
# Fixes for building with libstdc++ instead of libc++
patch -Np1 -i ../patches/chromium-85-NearbyShareEncryptedMetadataKey-include.patch
patch -Np1 -i ../patches/chromium-85-sim_hash-include.patch
# Patch from rpmfusion: chromium-freeworld
patch -Np1 -i ../chromium-fix-vaapi-on-intel.patch
patch -Np1 -i ../patches/chromium-86-nearby-include.patch
# https://crbug.com/skia/6663#c10
patch -Np0 -i ../chromium-skia-harmony.patch

View file

@ -0,0 +1,43 @@
From 54deb9811ca9bd2327def5c05ba6987b8c7a0897 Mon Sep 17 00:00:00 2001
From: Evangelos Foutras <evangelos@foutrelis.com>
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 <jam@chromium.org>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Ted Meyer <tmathmeyer@chromium.org>
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
--- a/content/renderer/render_thread_impl.cc
+++ b/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);

View file

@ -1,40 +0,0 @@
From 9ff06536caf7ea51aad9fd2bb649c858eaf7ee84 Mon Sep 17 00:00:00 2001
From: Akarshan Biswas <akarshanbiswas@fedoraproject.org>
Date: Sat, 26 Oct 2019 10:06:30 +0530
Subject: [PATCH] Move offending function to chromeos only
--- a/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
+++ b/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

View file

@ -0,0 +1,78 @@
From 53478caee862624fc6d73516f8d64253854b146f Mon Sep 17 00:00:00 2001
From: Piotr Tworek <ptworek@vewd.com>
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 <morlovich@chromium.org>
Commit-Queue: Piotr Tworek <ptworek@vewd.com>
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
--- a/net/cookies/cookie_monster.cc
+++ b/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_;

View file

@ -1,43 +0,0 @@
From 7f4c7ff6b0f0e74338c885b0d5e5ef80fed597c3 Mon Sep 17 00:00:00 2001
From: Dan Sanders <sandersd@chromium.org>
Date: Tue, 11 Aug 2020 20:38:03 +0000
Subject: [PATCH] [media] Set allocation limit compatible with FFmpeg 4.3
Previously we set the limit to zero, meaning no limit, but FFmpeg 4.3
will not allocate at all with that setting.
Changed to std::numeric_limits<size_t>::max().
Bug: 1095962
Change-Id: I96820c21f794f2814e955ee75ff22dfd31804c29
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2349405
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Dan Sanders <sandersd@chromium.org>
Cr-Commit-Position: refs/heads/master@{#796966}
---
media/base/media.cc | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/media/base/media.cc b/media/base/media.cc
index c282ee49a03..11e99c238ba 100644
--- a/media/base/media.cc
+++ b/media/base/media.cc
@@ -4,6 +4,9 @@
#include "media/base/media.h"
+#include <stdint.h>
+#include <limits>
+
#include "base/allocator/buildflags.h"
#include "base/command_line.h"
#include "base/macros.h"
@@ -41,7 +44,7 @@ class MediaInitializer {
#if BUILDFLAG(USE_ALLOCATOR_SHIM)
// Remove allocation limit from ffmpeg, so calls go down to shim layer.
- av_max_alloc(0);
+ av_max_alloc(std::numeric_limits<size_t>::max());
#endif // BUILDFLAG(USE_ALLOCATOR_SHIM)
#endif // BUILDFLAG(ENABLE_FFMPEG)

View file

@ -0,0 +1,139 @@
From fbd756ab55f9351165f923b0411c31dd71319c78 Mon Sep 17 00:00:00 2001
From: Ted Meyer <tmathmeyer@chromium.org>
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 <tmathmeyer@chromium.org>
Reviewed-by: Andres Calderon Jaramillo <andrescj@chromium.org>
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
--- a/media/gpu/vaapi/vaapi_wrapper.cc
+++ b/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<base::Environment> 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<base::Environment> 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;

View file

@ -0,0 +1,37 @@
From 74b0cb5b86f7d7f8f7c1172d85b09096bef147b7 Mon Sep 17 00:00:00 2001
From: Daniel Nicoara <dnicoara@chromium.org>
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 <thakis@chromium.org>
Reviewed-by: Nico Weber <thakis@chromium.org>
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
--- a/build/config/compiler/BUILD.gn
+++ b/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.