[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