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/chromium/files
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/chromium/files')
-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
3 files changed, 232 insertions, 0 deletions
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) {