commit:     add1b12dc5e74f23686f3652c251ef1f3f991722
Author:     Stephan Hartmann <sultan <AT> gentoo <DOT> org>
AuthorDate: Thu Sep 24 16:36:33 2020 +0000
Commit:     Stephan Hartmann <sultan <AT> gentoo <DOT> org>
CommitDate: Thu Sep 24 16:37:39 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=add1b12d

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 <AT> gentoo.org>

 www-client/chromium/Manifest                       |   4 +-
 ...0.4263.3.ebuild => chromium-87.0.4270.0.ebuild} |  43 ++---
 .../files/chromium-86-fix-vaapi-on-intel.patch     |  40 +++++
 .../files/chromium-87-fix-vaapi-build.patch        | 177 +++++++++++++++++++++
 .../chromium/files/chromium-87-ozone-deps.patch    |  15 ++
 5 files changed, 258 insertions(+), 21 deletions(-)

diff --git a/www-client/chromium/Manifest b/www-client/chromium/Manifest
index f6af9471028..ae5531a4293 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
similarity index 97%
rename from www-client/chromium/chromium-87.0.4263.3.ebuild
rename to www-client/chromium/chromium-87.0.4270.0.ebuild
index 35a5f4c1ced..008abd293ee 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 00000000000..2e3f9a6fdc5
--- /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 <[email protected]>
+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 00000000000..e230510fde7
--- /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 <[email protected]>
+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 00000000000..ceb693cea8b
--- /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) {

Reply via email to