summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephan Hartmann <sultan@gentoo.org>2020-09-24 18:36:33 +0200
committerStephan Hartmann <sultan@gentoo.org>2020-09-24 18:37:39 +0200
commitadd1b12dc5e74f23686f3652c251ef1f3f991722 (patch)
treef0ea4327f9245d20e89c69bfa6aaadd01255c459 /www-client
parentapp-emulation/docker-compose: 1.27.4 (diff)
downloadgentoo-add1b12dc5e74f23686f3652c251ef1f3f991722.tar.gz
gentoo-add1b12dc5e74f23686f3652c251ef1f3f991722.tar.bz2
gentoo-add1b12dc5e74f23686f3652c251ef1f3f991722.zip
www-client/chromium: dev channel bump to 87.0.4270.0
- Add experimental vaapi support - drop USE=system-libvpx, because vaapi uses internal libvpx API Bug: https://bugs.gentoo.org/633332 Package-Manager: Portage-3.0.4, Repoman-3.0.1 Signed-off-by: Stephan Hartmann <sultan@gentoo.org>
Diffstat (limited to 'www-client')
-rw-r--r--www-client/chromium/Manifest4
-rw-r--r--www-client/chromium/chromium-87.0.4270.0.ebuild (renamed from www-client/chromium/chromium-87.0.4263.3.ebuild)43
-rw-r--r--www-client/chromium/files/chromium-86-fix-vaapi-on-intel.patch40
-rw-r--r--www-client/chromium/files/chromium-87-fix-vaapi-build.patch177
-rw-r--r--www-client/chromium/files/chromium-87-ozone-deps.patch15
5 files changed, 258 insertions, 21 deletions
diff --git a/www-client/chromium/Manifest b/www-client/chromium/Manifest
index f6af94710286..ae5531a42932 100644
--- a/www-client/chromium/Manifest
+++ b/www-client/chromium/Manifest
@@ -2,6 +2,6 @@ DIST chromium-85-patchset-2.tar.xz 9724 BLAKE2B 929d6abe3a66db395a9cedc63510a6a0
DIST chromium-85.0.4183.121.tar.xz 833194480 BLAKE2B d91302792fc34730795815a39ba91878f1d6d33c7bb810a10efcea2e117c069a6493b3acb1e3d8a04b19d599335b60d70523f47c65c42080cbe0d3981255c264 SHA512 9d61a0782c012fe36467a10f008962d45f4eaa065f6812276d847f7563056124c9fd21d8376dda8ab64e4c3b793da0593bac9d39988bbd60221828084b534945
DIST chromium-86-patchset-6.tar.xz 7152 BLAKE2B 494b412caec2b3e3fd6c838ba4b61d499433f5a6043e4763efc424c811e405ed11461d8df2afe0aa22d898329ef82df0c43c47ae30f7c4a1c0c3f6e5b314e283 SHA512 68833c9dea6a7183ff42a2d432cf811b360c1237c36feed6b4f9163b61d7f98854ce73b33c58851cb800cf72311a638adeedb4555caf15f80b4bd6aca5039aef
DIST chromium-86.0.4240.42.tar.xz 825375252 BLAKE2B 9b2abf8c9158630cf89cb35106db7259cf99b6e9753446fd2fc5ce47ceb4f5bc37e68b92e26b80a9e3ab0bf972309b5fdf6326eb9a890d187959f5f95b2309e0 SHA512 8b0edac6b924d6f599c3051e06309824367951389cb18920e7d401ac56f65305b4d39b702cad92babe38c8ae3833f24accf5f436bb9aa5a525f52fcf6fa0603b
-DIST chromium-87-patchset-3.tar.xz 8884 BLAKE2B 9f06f3e4afd53d633a01a5df197799ac54760b5608f202be0216fca80bba57cfbee78b0ea67290f12bccbf1bc150802f007914563f04903727ac15b92a3a68f9 SHA512 1fde82d4cc238a949b6aad7e5c2b7213c06dac49965873b7dcc270312a581421687f7726dbf6c28220c0e69379a5ccdadfc2a99fcdfe6c9f011f482266c177ef
-DIST chromium-87.0.4263.3.tar.xz 830924908 BLAKE2B 8388732772ae84671a3cf90a04663a1f71d4ee51310bf494a9bcbb60867648ac30920ab5eca83b236784cb6f3bb44ecde94b5d74f92e22f5bddd456bc01308fe SHA512 071cc9f88ad7229619b101911202f9c0fa094c99238a20ade793a9e013e2bb497033fb1a1c4458218003f1892e4a3018ac103ea0bf28a44ea689cb4b4cb4c17d
+DIST chromium-87-patchset-4.tar.xz 8100 BLAKE2B cf052203bb9ced993f051ebac51270da1482e59999d87aff24fa81d25cc0de228a92a00abb56e0caa91c3f045bdd9df7524d77b375b77f1a0c7c198cb05c7649 SHA512 bc7cb6ad99c7d45999d45e5c9df05d43c80c25212dafe3750146d2cb5b38a7239e32ac1e9bf245331ba7055c0a36e551131eab92ecea907e51878259416b59a9
+DIST chromium-87.0.4270.0.tar.xz 831037464 BLAKE2B f9b19b704e252b96c5a6861719828d3b08eee9128d753a8c264b21b0bd26cbc1e7a3d29909d4300e59246ac9c56b88e205f83efd024897915a8b77085fe5f160 SHA512 76cbf88b1390c2e64d6615e29763f00493b94beff5836c240833840b1b50fa782c137ebc66a81a6940f35052895bdc0098fefca5e6cc46f56dbc2b8b2184ca6f
DIST setuptools-44.1.0.zip 858569 BLAKE2B f59f154e121502a731e51294ccd293d60ffccadacf51e23b53bf7ceba38858948b86783238061136c827ac3373ea7ea8e6253d4bb53f3f1dd69284568ec65a68 SHA512 4dfb0f42d334b835758e865a26ecd1e725711fa2b9c38ddc273b8b3849fba04527bc97436d11ba1e98f1a42922aa0f0b9032e32998273c705fac6e10735eacbf
diff --git a/www-client/chromium/chromium-87.0.4263.3.ebuild b/www-client/chromium/chromium-87.0.4270.0.ebuild
index 35a5f4c1ced5..008abd293ee8 100644
--- a/www-client/chromium/chromium-87.0.4263.3.ebuild
+++ b/www-client/chromium/chromium-87.0.4270.0.ebuild
@@ -12,7 +12,7 @@ inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-util
DESCRIPTION="Open-source version of Google Chrome web browser"
HOMEPAGE="https://chromium.org/"
-PATCHSET="3"
+PATCHSET="4"
PATCHSET_NAME="chromium-$(ver_cut 1)-patchset-${PATCHSET}"
SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz
https://files.pythonhosted.org/packages/ed/7b/bbf89ca71e722b7f9464ebffe4b5ee20a9e5c9a555a56e2d3914bb9119a6/setuptools-44.1.0.zip
@@ -21,7 +21,7 @@ SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}
LICENSE="BSD"
SLOT="0"
KEYWORDS="~amd64 ~arm64 ~x86"
-IUSE="component-build cups cpu_flags_arm_neon +hangouts headless +js-type-check kerberos official pic +proprietary-codecs pulseaudio selinux +suid +system-ffmpeg +system-icu +system-libvpx +tcmalloc wayland widevine"
+IUSE="component-build cups cpu_flags_arm_neon +hangouts headless +js-type-check kerberos official pic +proprietary-codecs pulseaudio selinux +suid +system-ffmpeg +system-icu +tcmalloc vaapi wayland widevine"
RESTRICT="!system-ffmpeg? ( proprietary-codecs? ( bindist ) )"
REQUIRED_USE="
component-build? ( !suid )
@@ -41,6 +41,7 @@ COMMON_X_DEPEND="
x11-libs/libXtst:=
x11-libs/libXScrnSaver:=
x11-libs/libxcb:=
+ vaapi? ( >=x11-libs/libva-2.7:=[X,drm] )
"
COMMON_DEPEND="
@@ -57,7 +58,6 @@ COMMON_DEPEND="
>=media-libs/harfbuzz-2.4.0:0=[icu(-)]
media-libs/libjpeg-turbo:=
media-libs/libpng:=
- system-libvpx? ( >=media-libs/libvpx-1.8.2:=[postproc] )
pulseaudio? ( media-sound/pulseaudio:= )
system-ffmpeg? (
>=media-video/ffmpeg-4.3:=
@@ -175,6 +175,10 @@ them in Chromium, then add --password-store=basic to CHROMIUM_FLAGS
in /etc/chromium/default.
"
+PATCHES=(
+ "${FILESDIR}/chromium-87-ozone-deps.patch"
+)
+
pre_build_checks() {
if [[ ${MERGE_TYPE} != binary ]]; then
local -x CPP="$(tc-getCXX) -E"
@@ -227,6 +231,10 @@ src_prepare() {
python_setup
eapply "${WORKDIR}/patches"
+ if use vaapi; then
+ eapply "${FILESDIR}/chromium-86-fix-vaapi-on-intel.patch"
+ eapply "${FILESDIR}/chromium-87-fix-vaapi-build.patch"
+ fi
default
@@ -304,6 +312,7 @@ src_prepare() {
third_party/devscripts
third_party/devtools-frontend
third_party/devtools-frontend/src/front_end/third_party/acorn
+ third_party/devtools-frontend/src/front_end/third_party/axe-core
third_party/devtools-frontend/src/front_end/third_party/chromium
third_party/devtools-frontend/src/front_end/third_party/codemirror
third_party/devtools-frontend/src/front_end/third_party/fabricjs
@@ -347,6 +356,8 @@ src_prepare() {
third_party/libsrtp
third_party/libsync
third_party/libudev
+ third_party/libvpx
+ third_party/libvpx/source/libvpx/third_party/x86inc
third_party/libwebm
third_party/libxml/chromium
third_party/libyuv
@@ -451,19 +462,6 @@ src_prepare() {
if ! use system-icu; then
keeplibs+=( third_party/icu )
fi
- if ! use system-libvpx; then
- keeplibs+=( third_party/libvpx )
- keeplibs+=( third_party/libvpx/source/libvpx/third_party/x86inc )
-
- # we need to generate ppc64 stuff because upstream does not ship it yet
- # it has to be done before unbundling.
- if use ppc64; then
- pushd third_party/libvpx >/dev/null || die
- mkdir -p source/config/linux/ppc64 || die
- ./generate_gni.sh || die
- popd >/dev/null || die
- fi
- fi
if use tcmalloc; then
keeplibs+=( third_party/tcmalloc )
fi
@@ -483,6 +481,15 @@ src_prepare() {
if use arm64 || use ppc64 ; then
keeplibs+=( third_party/swiftshader/third_party/llvm-10.0 )
fi
+ # we need to generate ppc64 stuff because upstream does not ship it yet
+ # it has to be done before unbundling.
+ if use ppc64; then
+ pushd third_party/libvpx >/dev/null || die
+ mkdir -p source/config/linux/ppc64 || die
+ ./generate_gni.sh || die
+ popd >/dev/null || die
+ fi
+
# Remove most bundled libraries. Some are still needed.
build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die
}
@@ -562,9 +569,6 @@ src_configure() {
if use system-icu; then
gn_system_libraries+=( icu )
fi
- if use system-libvpx; then
- gn_system_libraries+=( libvpx )
- fi
if [[ ${CHROMIUM_FORCE_LIBCXX} != yes ]]; then
# unbundle only without libc++, because libc++ is not fully ABI compatible with libstdc++
gn_system_libraries+=( libxml )
@@ -588,6 +592,7 @@ src_configure() {
myconf_gn+=" use_cups=$(usex cups true false)"
myconf_gn+=" use_kerberos=$(usex kerberos true false)"
myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)"
+ myconf_gn+=" use_vaapi=$(usex vaapi true false)"
# TODO: link_pulseaudio=true for GN.
diff --git a/www-client/chromium/files/chromium-86-fix-vaapi-on-intel.patch b/www-client/chromium/files/chromium-86-fix-vaapi-on-intel.patch
new file mode 100644
index 000000000000..2e3f9a6fdc5d
--- /dev/null
+++ b/www-client/chromium/files/chromium-86-fix-vaapi-on-intel.patch
@@ -0,0 +1,40 @@
+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
+@@ -58,6 +58,7 @@ unsigned int GetVaFormatForVideoCodecProfile(VideoCodecProfile profile) {
+ return VA_RT_FORMAT_YUV420;
+ }
+
++#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
+@@ -70,6 +71,7 @@ bool IsGeminiLakeOrLater() {
+ cpuid.model() >= kGeminiLakeModelId;
+ return is_geminilake_or_later;
+ }
++#endif
+
+ } // namespace
+
+@@ -1213,6 +1215,8 @@ VaapiVideoDecodeAccelerator::DecideBufferAllocationMode() {
+ 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
+@@ -1228,6 +1232,7 @@ VaapiVideoDecodeAccelerator::DecideBufferAllocationMode() {
+ num_extra_pics_ = 3;
+ return BufferAllocationMode::kNone;
+ }
++#endif
+
+ // For H.264 on older devices, another +1 is experimentally needed for
+ // high-to-high resolution changes.
diff --git a/www-client/chromium/files/chromium-87-fix-vaapi-build.patch b/www-client/chromium/files/chromium-87-fix-vaapi-build.patch
new file mode 100644
index 000000000000..e230510fde7f
--- /dev/null
+++ b/www-client/chromium/files/chromium-87-fix-vaapi-build.patch
@@ -0,0 +1,177 @@
+From 90c4cfb5355a36de6660df4ed0a1c405a830ca0e Mon Sep 17 00:00:00 2001
+From: Tom Anderson <thomasanderson@chromium.org>
+Date: Tue, 15 Sep 2020 12:02:17 -0700
+Subject: [PATCH] [XProto] Fix VAAPI build
+
+Fixes the build after [1] broke it.
+
+[1] https://chromium-review.googlesource.com/c/chromium/src/+/2392140
+
+Bug: 1066670, 1127532
+Change-Id: I340f91a1d4ba7214ea47fa4b1bb4a368fe5597f5
+R=mcasas
+CC=tmathmeyer
+---
+
+diff --git a/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc b/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc
+index 843cf22..91eb184 100644
+--- a/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc
++++ b/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc
+@@ -7,6 +7,8 @@
+ #include "media/gpu/vaapi/va_surface.h"
+ #include "media/gpu/vaapi/vaapi_wrapper.h"
+ #include "ui/base/ui_base_features.h"
++#include "ui/gfx/x/connection.h"
++#include "ui/gfx/x/xproto.h"
+ #include "ui/gl/gl_bindings.h"
+ #include "ui/gl/gl_image_egl_pixmap.h"
+ #include "ui/gl/scoped_binders.h"
+@@ -16,24 +18,27 @@
+ namespace {
+
+ inline Pixmap CreatePixmap(const gfx::Size& size) {
+- auto* display = gfx::GetXDisplay();
++ auto* connection = x11::Connection::Get();
++ auto* display = connection->display();
+ if (!display)
+ return 0;
+
+- int screen = DefaultScreen(display);
+- auto root = XRootWindow(display, screen);
+- if (root == BadValue)
+- return 0;
++ auto root = connection->default_root();
+
+- XWindowAttributes win_attr = {};
+- // returns 0 on failure, see:
+- // https://tronche.com/gui/x/xlib/introduction/errors.html#Status
+- if (!XGetWindowAttributes(display, root, &win_attr))
++ uint8_t depth = 0;
++ if (auto reply = connection->GetGeometry({root}).Sync())
++ depth = reply->depth;
++ else
+ return 0;
+
+ // TODO(tmathmeyer) should we use the depth from libva instead of root window?
+- return XCreatePixmap(display, root, size.width(), size.height(),
+- win_attr.depth);
++ auto pixmap = connection->GenerateId<x11::Pixmap>();
++ auto req = connection->CreatePixmap(
++ {depth, pixmap, root, base::checked_cast<uint16_t>(size.width()),
++ base::checked_cast<uint16_t>(size.height())});
++ if (req.Sync().error)
++ pixmap = x11::Pixmap::None;
++ return base::strict_cast<::Pixmap>(pixmap);
+ }
+
+ } // namespace
+@@ -71,11 +76,8 @@
+ DCHECK_EQ(glGetError(), static_cast<GLenum>(GL_NO_ERROR));
+ }
+
+- if (x_pixmap_) {
+- if (auto* display = gfx::GetXDisplay()) {
+- XFreePixmap(display, x_pixmap_);
+- }
+- }
++ if (x_pixmap_)
++ x11::Connection::Get()->FreePixmap({static_cast<x11::Pixmap>(x_pixmap_)});
+ }
+
+ Status VaapiPictureNativePixmapAngle::Allocate(gfx::BufferFormat format) {
+diff --git a/media/gpu/vaapi/vaapi_picture_tfp.cc b/media/gpu/vaapi/vaapi_picture_tfp.cc
+index 9ff0372..1c917a1 100644
+--- a/media/gpu/vaapi/vaapi_picture_tfp.cc
++++ b/media/gpu/vaapi/vaapi_picture_tfp.cc
+@@ -7,6 +7,7 @@
+ #include "media/gpu/vaapi/va_surface.h"
+ #include "media/gpu/vaapi/vaapi_wrapper.h"
+ #include "ui/base/ui_base_features.h"
++#include "ui/gfx/x/connection.h"
+ #include "ui/gfx/x/x11_types.h"
+ #include "ui/gl/gl_bindings.h"
+ #include "ui/gl/gl_image_glx.h"
+@@ -33,7 +34,8 @@
+ texture_id,
+ client_texture_id,
+ texture_target),
+- x_display_(gfx::GetXDisplay()),
++ connection_(x11::Connection::Get()),
++ x_display_(connection_->display()),
+ x_pixmap_(0) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ DCHECK(!features::IsUsingOzonePlatform());
+@@ -49,7 +51,7 @@
+ }
+
+ if (x_pixmap_)
+- XFreePixmap(x_display_, x_pixmap_);
++ connection_->FreePixmap({static_cast<x11::Pixmap>(x_pixmap_)});
+ }
+
+ Status VaapiTFPPicture::Initialize() {
+@@ -85,15 +87,20 @@
+ }
+
+ XWindowAttributes win_attr;
+- int screen = DefaultScreen(x_display_);
+- XGetWindowAttributes(x_display_, XRootWindow(x_display_, screen), &win_attr);
++ auto root = connection_->default_root();
++ XGetWindowAttributes(x_display_, static_cast<::Window>(root), &win_attr);
+ // TODO(posciak): pass the depth required by libva, not the RootWindow's
+ // depth
+- x_pixmap_ = XCreatePixmap(x_display_, XRootWindow(x_display_, screen),
+- size_.width(), size_.height(), win_attr.depth);
+- if (!x_pixmap_) {
++ auto pixmap = connection_->GenerateId<x11::Pixmap>();
++ if (connection_
++ ->CreatePixmap(
++ {win_attr.depth, pixmap, root, size_.width(), size_.height()})
++ .Sync()
++ .error) {
+ DLOG(ERROR) << "Failed creating an X Pixmap for TFP";
+ return StatusCode::kVaapiNoPixmap;
++ } else {
++ x_pixmap_ = static_cast<::Pixmap>(pixmap);
+ }
+
+ return Initialize();
+diff --git a/media/gpu/vaapi/vaapi_picture_tfp.h b/media/gpu/vaapi/vaapi_picture_tfp.h
+index c4eb2c1..a32955e 100644
+--- a/media/gpu/vaapi/vaapi_picture_tfp.h
++++ b/media/gpu/vaapi/vaapi_picture_tfp.h
+@@ -11,6 +11,7 @@
+ #include "base/memory/ref_counted.h"
+ #include "media/gpu/vaapi/vaapi_picture.h"
+ #include "ui/gfx/geometry/size.h"
++#include "ui/gfx/x/connection.h"
+ #include "ui/gl/gl_bindings.h"
+
+ namespace gl {
+@@ -47,6 +48,7 @@
+ private:
+ Status Initialize();
+
++ x11::Connection* const connection_;
+ Display* x_display_;
+
+ Pixmap x_pixmap_;
+diff --git a/media/gpu/vaapi/vaapi_wrapper.cc b/media/gpu/vaapi/vaapi_wrapper.cc
+index 2ad0b997..a988233 100644
+--- a/media/gpu/vaapi/vaapi_wrapper.cc
++++ b/media/gpu/vaapi/vaapi_wrapper.cc
+@@ -57,8 +57,13 @@
+ #include "ui/gl/gl_implementation.h"
+
+ #if defined(USE_X11)
+-#include <va/va_x11.h>
+ #include "ui/gfx/x/x11_types.h" // nogncheck
++
++typedef XID Drawable;
++
++extern "C" {
++#include "media/gpu/vaapi/va_x11.sigs"
++}
+ #endif
+
+ #if defined(USE_OZONE)
diff --git a/www-client/chromium/files/chromium-87-ozone-deps.patch b/www-client/chromium/files/chromium-87-ozone-deps.patch
new file mode 100644
index 000000000000..ceb693cea8b0
--- /dev/null
+++ b/www-client/chromium/files/chromium-87-ozone-deps.patch
@@ -0,0 +1,15 @@
+diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
+index 3f89c70..0df6490 100644
+--- a/chrome/browser/BUILD.gn
++++ b/chrome/browser/BUILD.gn
+@@ -5056,7 +5056,9 @@ static_library("browser") {
+ "chrome_browser_main_extra_parts_ozone.cc",
+ "chrome_browser_main_extra_parts_ozone.h",
+ ]
+- deps += [ "//ui/ozone" ]
++ if (use_ozone) {
++ deps += [ "//ui/ozone" ]
++ }
+ }
+
+ if (enable_background_mode) {