Commit b25f9b2b authored by Jeff Huang's avatar Jeff Huang 🤔

chromium: update to 72.0.3626.109, enable vaapi support

parent aea48796
Pipeline #2550 passed with stages
in 189 minutes and 39 seconds
......@@ -33,7 +33,7 @@ readonly _unwanted_bundled_libs=(
)
pkgname=chromium
pkgver=72.0.3626.96
pkgver=72.0.3626.109
pkgrel=1
_launcher_ver=6
pkgdesc="A web browser built for speed, simplicity, and security"
......@@ -42,23 +42,34 @@ 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'
'desktop-file-utils' 'hicolor-icon-theme')
'desktop-file-utils' 'hicolor-icon-theme' 'libva')
depends+=(${_system_libs[@]})
makedepends=('python3' 'python2' 'gperf' 'yasm' 'mesa' 'ninja' 'nodejs' 'git' 'clang' 'lld' 'gn' 'java-runtime')
optdepends=('pepperflashplugin: support for Flash content'
'kwallet: for storing passwords in KWallet'
'kdialog: needed for file dialogs in KDE')
replaces=('chromium-vaapi' 'chromium-vaapi-bin')
install=chromium.install
source=(https://commondatastorage.googleapis.com/chromium-browser-official/$pkgname-$pkgver.tar.xz
chromium-launcher-$_launcher_ver.tar.gz::https://github.com/foutrelis/chromium-launcher/archive/v$_launcher_ver.tar.gz
chromium-drirc-disable-10bpc-color-configs.conf
chromium-system-icu.patch
chromium-webrtc-missing-header.patch
chromium-vaapi.patch
chromium-vaapi-relax-the-version-check-for-VA-API.patch
chromium-enable-mojo-video-decoders-by-default.patch
chromium-vaapi-fix-the-VA_CHECK_VERSION.patch
chromium-widevine.patch
chromium-skia-harmony.patch)
sha256sums=('b2daf52aac4d9eba0ab9f034db6f2411ad6930dd02544c4b583e3a6e49dcaa3b'
sha256sums=('574a5400dcd9452bf41481518aa5097c396df6e1eb97c67303638ba967048c2d'
'04917e3cd4307d8e31bfb0027a5dce6d086edb10ff8a716024fbb8bb0c7dccf1'
'babda4f5c1179825797496898d77334ac067149cac03d797ab27ac69671a7feb'
'e2d284311f49c529ea45083438a768db390bde52949995534034d2a814beab89'
'63cbed7d7af327c17878a2066c303f106ff08636372721845131f7ff13d87b44'
'e87ede45edf39ac19e56ac1ae49c9d1f5f5130e5838bcbb4c3d4fb16e55575c0'
'07fcf5d25114c7335582f117090b5e0bd148aca69044d4fe25c66b4c52dcd2a6'
'669a9ad4773d182a06ee729008a60aeadddae92f1a0077b3811e11f292c8d4ff'
'0bd750255163bfb1bedaf97c1cdb313f42bd9e6e52243c6e68494b6e0ffb84bf'
'd081f2ef8793544685aad35dea75a7e6264a2cb987ff3541e6377f4a3650a28b'
'5887f78b55c4ecbbcba5930f3f0bb7bc0117c2a41c2f761805fcf7f46f1ca2b3')
......@@ -82,6 +93,12 @@ prepare() {
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-enable-mojo-video-decoders-by-default.patch
patch -Np1 -i ../chromium-vaapi-fix-the-VA_CHECK_VERSION.patch
# Load Widevine CDM if available
patch -Np1 -i ../chromium-widevine.patch
......@@ -163,6 +180,7 @@ build() {
'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}\""
......@@ -200,6 +218,9 @@ package() {
install -Dm4755 out/Release/chrome_sandbox "$pkgdir/usr/lib/chromium/chrome-sandbox"
ln -s /usr/lib/chromium/chromedriver "$pkgdir/usr/bin/chromedriver"
install -Dm644 ../chromium-drirc-disable-10bpc-color-configs.conf \
"$pkgdir/usr/share/drirc.d/10-$pkgname.conf"
install -Dm644 chrome/installer/linux/common/desktop.template \
"$pkgdir/usr/share/applications/chromium.desktop"
install -Dm644 chrome/app/resources/manpage.1.in \
......
<!--
Disable 10 bpc color configs; fixes VAAPI playback.
https://bugs.freedesktop.org/show_bug.cgi?id=106490
-->
<driconf>
<device>
<application name="Chromium" executable="chromium">
<option name="allow_rgb10_configs" value="false" />
</application>
</device>
</driconf>
From 31225b9c5f3f685d65f742dc129241c30c32157c Mon Sep 17 00:00:00 2001
From: Julien Isorce <julien.isorce@chromium.org>
Date: Sat, 15 Dec 2018 01:02:18 +0000
Subject: [PATCH] Enable mojo video decoders by default on Linux desktop if
use_vaapi is true
Already the case for ChromeOS, Mac and Win. And run the service
in the GPU process too. Except that here the gn arg use_vaapi
has to be true as well.
Note that this CL does not change the following:
- the gn arg 'use_vaapi' is still false by default on Linux,
see media/gpu/args.gni
- 'accelerated_video_decode' is still black listed on Linux,
see entry 48 in gpu/config/software_rendering_list.json
- it is still not possible to enable hw video decode from
about:flags, see chrome/browser/about_flags.cc
Also note that with this CL the ffmpeg and libvpx video decoders
are still selected thanks to media::DecoderSelector::SelectDecoder
in case vaapi fails to initialize.
Also see https://chromium-review.googlesource.com/c/chromium/src/+/1225275/
which was very similar but for ChromeOS.
Tested on Linux desktop with gn args:
- use_vaapi = true (default is false)
./out/release/chrome --ignore-gpu-blacklist --use-gl=desktop url_to_vp9_video
./out/release/chrome --ignore-gpu-blacklist --use-gl=egl url_to_vp9_video
-> MojoVideoDecoder was in use and VaapiVideoDecodeAccelerator runing in the
GPU process, through MojoVideoDecoderService
Bug: 522298
Change-Id: Ia19f9f3edc0af488a477a16001b7de4f4818b3b2
Reviewed-on: https://chromium-review.googlesource.com/c/1370717
Reviewed-by: Dan Sanders <sandersd@chromium.org>
Commit-Queue: Julien Isorce <julien.isorce@chromium.org>
Cr-Commit-Position: refs/heads/master@{#616901}
---
media/media_options.gni | 9 ++++++---
media/mojo/services/gpu_mojo_media_client.cc | 5 +++--
2 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/media/media_options.gni b/media/media_options.gni
index 46eaa58181..6e338f651b 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 75f5e611c7..f056e1b315 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,8 @@ 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
From 674fb0486a1b525cb850530c4cdc79506338bd37 Mon Sep 17 00:00:00 2001
From: Azhar Shaikh <azhar.shaikh@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@intel.com>
Change-Id: I1ec14aabed21b7d6b6fc55080bbac17233c40ec0
Reviewed-on: https://chromium-review.googlesource.com/c/1376716
Commit-Queue: Alexandre Courbot <acourbot@chromium.org>
Reviewed-by: Alexandre Courbot <acourbot@chromium.org>
Reviewed-by: Miguel Casas <mcasas@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
From 6f1309ef8fe10965e4d0018b4f1b80ac6deccdaa Mon Sep 17 00:00:00 2001
From: Azhar Shaikh <azhar.shaikh@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@chromium.org>
Signed-off-by: Azhar Shaikh <azhar.shaikh@intel.com>
Change-Id: I510549f72290d20676927eeeeb89a87199c062af
Reviewed-on: https://chromium-review.googlesource.com/c/1352519
Reviewed-by: Alexandre Courbot <acourbot@chromium.org>
Reviewed-by: Hirokazu Honda <hiroh@chromium.org>
Commit-Queue: Miguel Casas <mcasas@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@samsung.com>
Attila Dusnoki <dati91@gmail.com>
Avinaash Doreswamy <avi.nitk@samsung.com>
Ayush Khandelwal <k.ayush@samsung.com>
+Azhar Shaikh <azhar.shaikh@intel.com>
Balazs Kelemen <b.kelemen@samsung.com>
Baul Eun <baul.eun@samsung.com>
Behara Mani Shyam Patro <behara.ms@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
From abc7295ca1653c85472916909f0eb76e28e79a58 Mon Sep 17 00:00:00 2001
From: Akarshan Biswas <akarshan.biswas@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"
]
--
2.20.1
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment