[arch-commits] Commit in chromium/trunk (4 files)
Evangelos Foutras
foutrelis at archlinux.org
Thu Feb 7 20:18:34 UTC 2019
Date: Thursday, February 7, 2019 @ 20:18:33
Author: foutrelis
Revision: 345621
upgpkg: chromium 72.0.3626.96-2
Enable VAAPI (patch from Fedora).
Added:
chromium/trunk/chromium-vaapi-fix-the-VA_CHECK_VERSION.patch
chromium/trunk/chromium-vaapi-relax-the-version-check-for-VA-API.patch
chromium/trunk/chromium-vaapi.patch
Modified:
chromium/trunk/PKGBUILD
---------------------------------------------------------+
PKGBUILD | 16 +
chromium-vaapi-fix-the-VA_CHECK_VERSION.patch | 74 ++++++
chromium-vaapi-relax-the-version-check-for-VA-API.patch | 62 +++++
chromium-vaapi.patch | 172 ++++++++++++++
4 files changed, 322 insertions(+), 2 deletions(-)
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2019-02-07 19:54:15 UTC (rev 345620)
+++ PKGBUILD 2019-02-07 20:18:33 UTC (rev 345621)
@@ -5,7 +5,7 @@
pkgname=chromium
pkgver=72.0.3626.96
-pkgrel=1
+pkgrel=2
_launcher_ver=6
pkgdesc="A web browser built for speed, simplicity, and security"
arch=('x86_64')
@@ -12,7 +12,7 @@
url="https://www.chromium.org/Home"
license=('BSD')
depends=('gtk3' 'nss' 'alsa-lib' 'xdg-utils' 'libxss' 'libcups' 'libgcrypt'
- 'ttf-font' 'systemd' 'dbus' 'libpulse' 'pciutils' 'json-glib'
+ 'ttf-font' 'systemd' 'dbus' 'libpulse' 'pciutils' 'json-glib' 'libva'
'desktop-file-utils' 'hicolor-icon-theme')
makedepends=('python' 'python2' 'gperf' 'yasm' 'mesa' 'ninja' 'nodejs' 'git'
'clang' 'lld' 'gn' 'java-runtime-headless')
@@ -25,6 +25,9 @@
chromium-launcher-$_launcher_ver.tar.gz::https://github.com/foutrelis/chromium-launcher/archive/v$_launcher_ver.tar.gz
chromium-system-icu.patch
chromium-webrtc-missing-header.patch
+ chromium-vaapi.patch
+ chromium-vaapi-relax-the-version-check-for-VA-API.patch
+ chromium-vaapi-fix-the-VA_CHECK_VERSION.patch
chromium-widevine.patch
chromium-skia-harmony.patch)
sha256sums=('b2daf52aac4d9eba0ab9f034db6f2411ad6930dd02544c4b583e3a6e49dcaa3b'
@@ -31,6 +34,9 @@
'04917e3cd4307d8e31bfb0027a5dce6d086edb10ff8a716024fbb8bb0c7dccf1'
'e2d284311f49c529ea45083438a768db390bde52949995534034d2a814beab89'
'63cbed7d7af327c17878a2066c303f106ff08636372721845131f7ff13d87b44'
+ '561151f381db44908ab5649f3579049e4cbce04cbed76e32d767b156bf83944d'
+ '07fcf5d25114c7335582f117090b5e0bd148aca69044d4fe25c66b4c52dcd2a6'
+ '0bd750255163bfb1bedaf97c1cdb313f42bd9e6e52243c6e68494b6e0ffb84bf'
'd081f2ef8793544685aad35dea75a7e6264a2cb987ff3541e6377f4a3650a28b'
'5887f78b55c4ecbbcba5930f3f0bb7bc0117c2a41c2f761805fcf7f46f1ca2b3')
@@ -82,6 +88,11 @@
third_party/blink/renderer/core/xml/parser/xml_document_parser.cc \
third_party/libxml/chromium/libxml_utils.cc
+ # Enable VAAPI on Linux
+ patch -Np1 -i ../chromium-vaapi.patch
+ patch -Np1 -i ../chromium-vaapi-relax-the-version-check-for-VA-API.patch
+ patch -Np1 -i ../chromium-vaapi-fix-the-VA_CHECK_VERSION.patch
+
# Load Widevine CDM if available
patch -Np1 -i ../chromium-widevine.patch
@@ -153,6 +164,7 @@
'use_custom_libcxx=false'
'enable_hangout_services_extension=true'
'enable_widevine=true'
+ 'use_vaapi=true'
'enable_nacl=false'
'enable_swiftshader=false'
"google_api_key=\"${_google_api_key}\""
Added: chromium-vaapi-fix-the-VA_CHECK_VERSION.patch
===================================================================
--- chromium-vaapi-fix-the-VA_CHECK_VERSION.patch (rev 0)
+++ chromium-vaapi-fix-the-VA_CHECK_VERSION.patch 2019-02-07 20:18:33 UTC (rev 345621)
@@ -0,0 +1,74 @@
+From 674fb0486a1b525cb850530c4cdc79506338bd37 Mon Sep 17 00:00:00 2001
+From: Azhar Shaikh <azhar.shaikh at intel.com>
+Date: Fri, 11 Jan 2019 07:44:38 +0000
+Subject: [PATCH] media/gpu/vaapi: Fix the VA_CHECK_VERSION
+
+commit 6f1309ef8fe109 ("media/gpu/vaapi: Relax the version
+check for VA-API") added the VA_CHECK_VERSION to relax the
+VA-API version check. But it still does the same thing as
+the previous check. VA_CHECK_VERSION will return 'true', only
+when the VA-API version is greater than or equal to the
+parameters passed to it. So in this case when the major and
+minor version were passed from vaInitialize() output, it did
+the same strict check as earlier. When trying to update libva
+to a newer version, there will still be a mismatch, since
+vaInitialize() would return the updated/newer libva version
+installed on the system, but the chromium would still be built
+with older version (libva-2.1.0 as of now).
+To fix this and actually relax the check, make sure the system
+version of libva is greater than the libva version with which
+the browser is built, since libva is backward compatible. This
+will allow any future libva updates without breaking existing code.
+
+Fixes: 6f1309ef8fe109 ("media/gpu/vaapi: Relax the version check for VA-API")
+
+Bug: 905814
+TEST=Below scenarios were tested and h/w acceleration is working successfully.
+TEST=Build chromium with libva-2.3.0 and system version 2.3.0
+TEST=Build chromium with libva-2.1.0 and system version 2.3.0
+TEST=Build chromium with libva 2.1.0 and system version 2.1.0
+
+Signed-off-by: Azhar Shaikh <azhar.shaikh at intel.com>
+Change-Id: I1ec14aabed21b7d6b6fc55080bbac17233c40ec0
+Reviewed-on: https://chromium-review.googlesource.com/c/1376716
+Commit-Queue: Alexandre Courbot <acourbot at chromium.org>
+Reviewed-by: Alexandre Courbot <acourbot at chromium.org>
+Reviewed-by: Miguel Casas <mcasas at chromium.org>
+Cr-Commit-Position: refs/heads/master@{#621940}
+---
+ media/gpu/vaapi/vaapi_wrapper.cc | 19 ++++++++++---------
+ 1 file changed, 10 insertions(+), 9 deletions(-)
+
+diff --git a/media/gpu/vaapi/vaapi_wrapper.cc b/media/gpu/vaapi/vaapi_wrapper.cc
+index 4921aabf64..93d7c98b80 100644
+--- a/media/gpu/vaapi/vaapi_wrapper.cc
++++ b/media/gpu/vaapi/vaapi_wrapper.cc
+@@ -337,15 +337,16 @@ bool VADisplayState::InitializeOnce() {
+ << va_vendor_string_;
+
+ // The VAAPI version is determined from what is loaded on the system by
+- // calling vaInitialize(). We want a runtime evaluation of libva version,
+- // of what is loaded on the system, with, what browser is compiled with.
+- // Also since the libva is now ABI-compatible, relax the version check
+- // which helps in upgrading the libva, without breaking any existing
+- // functionality.
+- if (!VA_CHECK_VERSION(major_version, minor_version, 0)) {
+- LOG(ERROR) << "This build of Chromium requires VA-API version "
+- << VA_MAJOR_VERSION << "." << VA_MINOR_VERSION
+- << ", system version: " << major_version << "." << minor_version;
++ // calling vaInitialize(). Since the libva is now ABI-compatible, relax the
++ // version check which helps in upgrading the libva, without breaking any
++ // existing functionality. Make sure the system version is not older than
++ // the version with which the chromium is built since libva is only
++ // guaranteed to be backward (and not forward) compatible.
++ if (VA_MAJOR_VERSION > major_version ||
++ (VA_MAJOR_VERSION == major_version && VA_MINOR_VERSION > minor_version)) {
++ LOG(ERROR) << "The system version " << major_version << "." << minor_version
++ << " should be greater than or equal to "
++ << VA_MAJOR_VERSION << "." << VA_MINOR_VERSION;
+ return false;
+ }
+ return true;
+--
+2.20.1
+
Added: chromium-vaapi-relax-the-version-check-for-VA-API.patch
===================================================================
--- chromium-vaapi-relax-the-version-check-for-VA-API.patch (rev 0)
+++ chromium-vaapi-relax-the-version-check-for-VA-API.patch 2019-02-07 20:18:33 UTC (rev 345621)
@@ -0,0 +1,62 @@
+From 6f1309ef8fe10965e4d0018b4f1b80ac6deccdaa Mon Sep 17 00:00:00 2001
+From: Azhar Shaikh <azhar.shaikh at intel.com>
+Date: Fri, 30 Nov 2018 23:11:57 +0000
+Subject: [PATCH] media/gpu/vaapi: Relax the version check for VA-API
+
+Since the newer versions of VA-API are ABI compatible, relax the
+version checks for VA-API, by using VA_CHECK_VERSION().
+This will help in updating the libva to the latest releases,
+while still supporting the old versions, till the new version of
+libva is merged and picked by the builds. Thus ensuring that
+hardware accleration is not broken while updating the libva.
+
+Bug: 905814
+TEST=libva-2.3.0 and libva-2.1.0 are able to do hardware acceleration.
+
+Suggested-by: Alexandre Courbot <acourbot at chromium.org>
+Signed-off-by: Azhar Shaikh <azhar.shaikh at intel.com>
+Change-Id: I510549f72290d20676927eeeeb89a87199c062af
+Reviewed-on: https://chromium-review.googlesource.com/c/1352519
+Reviewed-by: Alexandre Courbot <acourbot at chromium.org>
+Reviewed-by: Hirokazu Honda <hiroh at chromium.org>
+Commit-Queue: Miguel Casas <mcasas at chromium.org>
+Cr-Commit-Position: refs/heads/master@{#612832}
+---
+ AUTHORS | 1 +
+ media/gpu/vaapi/vaapi_wrapper.cc | 8 +++++++-
+ 2 files changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/AUTHORS b/AUTHORS
+index 567fe15a60..ff42fc5df0 100644
+--- a/AUTHORS
++++ b/AUTHORS
+@@ -103,6 +103,7 @@ Asish Singh <asish.singh at samsung.com>
+ Attila Dusnoki <dati91 at gmail.com>
+ Avinaash Doreswamy <avi.nitk at samsung.com>
+ Ayush Khandelwal <k.ayush at samsung.com>
++Azhar Shaikh <azhar.shaikh at intel.com>
+ Balazs Kelemen <b.kelemen at samsung.com>
+ Baul Eun <baul.eun at samsung.com>
+ Behara Mani Shyam Patro <behara.ms at samsung.com>
+diff --git a/media/gpu/vaapi/vaapi_wrapper.cc b/media/gpu/vaapi/vaapi_wrapper.cc
+index b4156423f7..053384d378 100644
+--- a/media/gpu/vaapi/vaapi_wrapper.cc
++++ b/media/gpu/vaapi/vaapi_wrapper.cc
+@@ -333,7 +333,13 @@ bool VADisplayState::InitializeOnce() {
+ DVLOG(1) << "VAAPI version: " << major_version << "." << minor_version << " "
+ << va_vendor_string_;
+
+- if (major_version != VA_MAJOR_VERSION || minor_version != VA_MINOR_VERSION) {
++ // The VAAPI version is determined from what is loaded on the system by
++ // calling vaInitialize(). We want a runtime evaluation of libva version,
++ // of what is loaded on the system, with, what browser is compiled with.
++ // Also since the libva is now ABI-compatible, relax the version check
++ // which helps in upgrading the libva, without breaking any existing
++ // functionality.
++ if (!VA_CHECK_VERSION(major_version, minor_version, 0)) {
+ LOG(ERROR) << "This build of Chromium requires VA-API version "
+ << VA_MAJOR_VERSION << "." << VA_MINOR_VERSION
+ << ", system version: " << major_version << "." << minor_version;
+--
+2.20.1
+
Added: chromium-vaapi.patch
===================================================================
--- chromium-vaapi.patch (rev 0)
+++ chromium-vaapi.patch 2019-02-07 20:18:33 UTC (rev 345621)
@@ -0,0 +1,172 @@
+From abc7295ca1653c85472916909f0eb76e28e79a58 Mon Sep 17 00:00:00 2001
+From: Akarshan Biswas <akarshan.biswas at gmail.com>
+Date: Thu, 24 Jan 2019 12:45:29 +0530
+Subject: [PATCH] Enable mojo with VDA2 on Linux
+
+---
+ chrome/browser/about_flags.cc | 8 ++++----
+ chrome/browser/flag_descriptions.cc | 9 +++++++--
+ chrome/browser/flag_descriptions.h | 10 ++++++++--
+ gpu/config/software_rendering_list.json | 3 ++-
+ media/media_options.gni | 9 ++++++---
+ media/mojo/services/gpu_mojo_media_client.cc | 4 ++--
+ 6 files changed, 29 insertions(+), 14 deletions(-)
+
+diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
+index 0a84c6ac1..be2aa1d8b 100644
+--- a/chrome/browser/about_flags.cc
++++ b/chrome/browser/about_flags.cc
+@@ -1714,7 +1714,7 @@ const FeatureEntry kFeatureEntries[] = {
+ "disable-accelerated-video-decode",
+ flag_descriptions::kAcceleratedVideoDecodeName,
+ flag_descriptions::kAcceleratedVideoDecodeDescription,
+- kOsMac | kOsWin | kOsCrOS | kOsAndroid,
++ kOsMac | kOsWin | kOsCrOS | kOsAndroid | kOsLinux,
+ SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedVideoDecode),
+ },
+ #if defined(OS_WIN)
+@@ -2345,12 +2345,12 @@ const FeatureEntry kFeatureEntries[] = {
+ FEATURE_VALUE_TYPE(service_manager::features::kXRSandbox)},
+ #endif // ENABLE_ISOLATED_XR_SERVICE
+ #endif // ENABLE_VR
+-#if defined(OS_CHROMEOS)
++#if defined(OS_CHROMEOS) || defined(OS_LINUX)
+ {"disable-accelerated-mjpeg-decode",
+ flag_descriptions::kAcceleratedMjpegDecodeName,
+- flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsCrOS,
++ flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsCrOS | kOsLinux,
+ SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedMjpegDecode)},
+-#endif // OS_CHROMEOS
++#endif // OS_CHROMEOS // OS_LINUX
+ {"v8-cache-options", flag_descriptions::kV8CacheOptionsName,
+ flag_descriptions::kV8CacheOptionsDescription, kOsAll,
+ MULTI_VALUE_TYPE(kV8CacheOptionsChoices)},
+diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
+index 62637e092..86f89fc6e 100644
+--- a/chrome/browser/flag_descriptions.cc
++++ b/chrome/browser/flag_descriptions.cc
+@@ -3085,15 +3085,20 @@ const char kTextSuggestionsTouchBarDescription[] =
+
+ #endif
+
+-// Chrome OS -------------------------------------------------------------------
++// Chrome OS Linux-------------------------------------------------------------------
+
+-#if defined(OS_CHROMEOS)
++#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && !defined(OS_ANDROID))
+
+ const char kAcceleratedMjpegDecodeName[] =
+ "Hardware-accelerated mjpeg decode for captured frame";
+ const char kAcceleratedMjpegDecodeDescription[] =
+ "Enable hardware-accelerated mjpeg decode for captured frame where "
+ "available.";
++#endif
++
++// Chrome OS --------------------------------------------------
++
++#if defined(OS_CHROMEOS)
+
+ const char kAllowTouchpadThreeFingerClickName[] = "Touchpad three-finger-click";
+ const char kAllowTouchpadThreeFingerClickDescription[] =
+diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
+index 5dac660bb..6cc4115da 100644
+--- a/chrome/browser/flag_descriptions.h
++++ b/chrome/browser/flag_descriptions.h
+@@ -1846,13 +1846,19 @@ extern const char kPermissionPromptPersistenceToggleDescription[];
+
+ #endif // defined(OS_MACOSX)
+
+-// Chrome OS ------------------------------------------------------------------
++// Chrome OS and Linux ------------------------------------------------------------------
+
+-#if defined(OS_CHROMEOS)
++#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && !defined(OS_ANDROID))
+
+ extern const char kAcceleratedMjpegDecodeName[];
+ extern const char kAcceleratedMjpegDecodeDescription[];
+
++#endif // defined(OS_CHROMEOS) || (defined(OS_LINUX) && !defined(OS_ANDROID))
++
++// Chrome OS ------------------------------------------------------------------------
++
++#if defined(OS_CHROMEOS)
++
+ extern const char kAllowTouchpadThreeFingerClickName[];
+ extern const char kAllowTouchpadThreeFingerClickDescription[];
+
+diff --git a/gpu/config/software_rendering_list.json b/gpu/config/software_rendering_list.json
+index 65f37b3f1..ae8a1718f 100644
+--- a/gpu/config/software_rendering_list.json
++++ b/gpu/config/software_rendering_list.json
+@@ -371,11 +371,12 @@
+ },
+ {
+ "id": 48,
+- "description": "Accelerated video decode is unavailable on Linux",
++ "description": "Accelerated VA-API video decode is not supported on NVIDIA platforms",
+ "cr_bugs": [137247],
+ "os": {
+ "type": "linux"
+ },
++ "vendor_id": "0x10de",
+ "features": [
+ "accelerated_video_decode"
+ ]
+diff --git a/media/media_options.gni b/media/media_options.gni
+index 46eaa5818..6e338f651 100644
+--- a/media/media_options.gni
++++ b/media/media_options.gni
+@@ -5,6 +5,7 @@
+ import("//build/config/chrome_build.gni")
+ import("//build/config/chromecast_build.gni")
+ import("//build/config/features.gni")
++import("//media/gpu/args.gni")
+ import("//testing/libfuzzer/fuzzer_test.gni")
+
+ # Do not expand this list without double-checking with OWNERS, this is a list of
+@@ -129,8 +130,9 @@ declare_args() {
+ # |mojo_media_services|). When enabled, selected mojo paths will be enabled in
+ # the media pipeline and corresponding services will hosted in the selected
+ # remote process (e.g. "utility" process, see |mojo_media_host|).
+- enable_mojo_media = is_android || is_chromecast || is_chromeos || is_mac ||
+- is_win || enable_library_cdms
++ enable_mojo_media =
++ is_android || is_chromecast || is_chromeos || is_mac || is_win ||
++ enable_library_cdms || (is_desktop_linux && use_vaapi)
+
+ # Enable the TestMojoMediaClient to be used in mojo MediaService. This is for
+ # testing only and will override the default platform MojoMediaClient, if any.
+@@ -200,7 +202,8 @@ if (enable_mojo_media) {
+ ]
+ _default_mojo_media_host = "gpu"
+ }
+- } else if (is_chromeos || is_mac || is_win) {
++ } else if (is_chromeos || is_mac || is_win ||
++ (is_desktop_linux && use_vaapi)) {
+ _default_mojo_media_services = [ "video_decoder" ]
+ _default_mojo_media_host = "gpu"
+ }
+diff --git a/media/mojo/services/gpu_mojo_media_client.cc b/media/mojo/services/gpu_mojo_media_client.cc
+index 75f5e611c..09a8fef92 100644
+--- a/media/mojo/services/gpu_mojo_media_client.cc
++++ b/media/mojo/services/gpu_mojo_media_client.cc
+@@ -54,7 +54,7 @@ namespace media {
+ namespace {
+
+ #if defined(OS_ANDROID) || defined(OS_CHROMEOS) || defined(OS_MACOSX) || \
+- defined(OS_WIN)
++ defined(OS_WIN) || defined(OS_LINUX)
+ gpu::CommandBufferStub* GetCommandBufferStub(
+ base::WeakPtr<MediaGpuChannelManager> media_gpu_channel_manager,
+ base::UnguessableToken channel_token,
+@@ -148,7 +148,7 @@ std::unique_ptr<VideoDecoder> GpuMojoMediaClient::CreateVideoDecoder(
+ android_overlay_factory_cb_, std::move(request_overlay_info_cb),
+ std::make_unique<VideoFrameFactoryImpl>(gpu_task_runner_,
+ std::move(get_stub_cb)));
+-#elif defined(OS_CHROMEOS) || defined(OS_MACOSX) || defined(OS_WIN)
++#elif defined(OS_CHROMEOS) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX)
+ std::unique_ptr<VideoDecoder> vda_video_decoder = VdaVideoDecoder::Create(
+ task_runner, gpu_task_runner_, media_log->Clone(), target_color_space,
+ gpu_preferences_, gpu_workarounds_,
+--
+2.20.1
More information about the arch-commits
mailing list