Created
January 31, 2019 19:44
-
-
Save kureta/bbb57d4230b710cb9f4e9ecc0e9d0530 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/.SRCINFO b/.SRCINFO | |
index 19ddc83..c04f1eb 100644 | |
--- a/.SRCINFO | |
+++ b/.SRCINFO | |
@@ -1,7 +1,7 @@ | |
pkgbase = chromium-vaapi | |
pkgdesc = Chromium with VA-API support to enable hardware acceleration | |
pkgver = 72.0.3626.81 | |
- pkgrel = 1 | |
+ pkgrel = 2 | |
url = https://www.chromium.org/Home | |
install = chromium.install | |
arch = x86_64 | |
@@ -63,14 +63,14 @@ pkgbase = chromium-vaapi | |
source = chromium-webrtc-missing-header.patch | |
source = chromium-widevine.patch | |
source = chromium-skia-harmony.patch | |
- source = chromium-vaapi-r21.patch | |
+ source = enable-vaapi.patch | |
sha256sums = dfe89fe389008e6d2098099948d10774989d2f3e8dca6ace78ea4ec636dd8006 | |
sha256sums = 04917e3cd4307d8e31bfb0027a5dce6d086edb10ff8a716024fbb8bb0c7dccf1 | |
sha256sums = e2d284311f49c529ea45083438a768db390bde52949995534034d2a814beab89 | |
sha256sums = 63cbed7d7af327c17878a2066c303f106ff08636372721845131f7ff13d87b44 | |
sha256sums = d081f2ef8793544685aad35dea75a7e6264a2cb987ff3541e6377f4a3650a28b | |
sha256sums = 5887f78b55c4ecbbcba5930f3f0bb7bc0117c2a41c2f761805fcf7f46f1ca2b3 | |
- sha256sums = f3fffc4c053077b0a2cb584c42882b0d38473bb2762e2daf86bbacc2fe0a7f77 | |
+ sha256sums = 561151f381db44908ab5649f3579049e4cbce04cbed76e32d767b156bf83944d | |
pkgname = chromium-vaapi | |
diff --git a/PKGBUILD b/PKGBUILD | |
index ee886df..0c870f1 100644 | |
--- a/PKGBUILD | |
+++ b/PKGBUILD | |
@@ -11,7 +11,7 @@ | |
pkgname=chromium-vaapi | |
pkgver=72.0.3626.81 | |
-pkgrel=1 | |
+pkgrel=2 | |
_launcher_ver=6 | |
pkgdesc="Chromium with VA-API support to enable hardware acceleration" | |
arch=('x86_64') | |
@@ -38,14 +38,14 @@ source=(https://commondatastorage.googleapis.com/chromium-browser-official/chrom | |
chromium-webrtc-missing-header.patch | |
chromium-widevine.patch | |
chromium-skia-harmony.patch | |
- chromium-vaapi-r21.patch) | |
+ enable-vaapi.patch) | |
sha256sums=('dfe89fe389008e6d2098099948d10774989d2f3e8dca6ace78ea4ec636dd8006' | |
'04917e3cd4307d8e31bfb0027a5dce6d086edb10ff8a716024fbb8bb0c7dccf1' | |
'e2d284311f49c529ea45083438a768db390bde52949995534034d2a814beab89' | |
'63cbed7d7af327c17878a2066c303f106ff08636372721845131f7ff13d87b44' | |
'd081f2ef8793544685aad35dea75a7e6264a2cb987ff3541e6377f4a3650a28b' | |
'5887f78b55c4ecbbcba5930f3f0bb7bc0117c2a41c2f761805fcf7f46f1ca2b3' | |
- 'f3fffc4c053077b0a2cb584c42882b0d38473bb2762e2daf86bbacc2fe0a7f77') | |
+ '561151f381db44908ab5649f3579049e4cbce04cbed76e32d767b156bf83944d') | |
# Possible replacements are listed in build/linux/unbundle/replace_gn_files.py | |
# Keys are the names in the above script; values are the dependencies in Arch | |
@@ -120,7 +120,8 @@ prepare() { | |
ln -s /usr/bin/node third_party/node/linux/node-linux-x64/bin/ | |
msg2 'Applying VA-API patches' | |
- patch -Np1 -i ../chromium-vaapi-r21.patch | |
+ # https://src.fedoraproject.org/rpms/chromium/pull-request/18# | |
+ patch -Np1 -i ../enable-vaapi.patch | |
# Remove bundled libraries for which we will use the system copies; this | |
# *should* do what the remove_bundled_libraries.py script does, with the | |
diff --git a/chromium-vaapi-r21.patch b/chromium-vaapi-r21.patch | |
deleted file mode 100644 | |
index cf5fe37..0000000 | |
--- a/chromium-vaapi-r21.patch | |
+++ /dev/null | |
@@ -1,554 +0,0 @@ | |
-From e95d904578c265a84f117d7d5eff598423f9283d Mon Sep 17 00:00:00 2001 | |
-From: Daniel Charles | |
-Date: Fri, 09 Feb 2018 14:39:27 -0800 | |
-Subject: [PATCH] Enable VAVDA, VAVEA and VAJDA on linux with VAAPI only | |
- | |
-This patch contains all the changes necessary to use VA-API along with | |
-vaapi-driver to run all media use cases supported with hardware acceleration. | |
- | |
-It is intended to remain as experimental accessible from chrome://flags on linux. | |
-It requires libva/intel-vaapi-driver to be installed on the system path where | |
-chrome is executed. Other drivers could be tested if available. Flags are | |
-kept independent for linux, where this feature has to be enabled before | |
-actually using it. This should not change how other OSes use the flags | |
-already, the new flags will show at the buttom on the section of unavailable | |
-experiments | |
- | |
-The changes cover a range of compiler pre-processor flags to enable the stack. | |
-It moves the presandbox operations to the vaapi_wrapper class as the hook function | |
-is available there. vaInit will open driver on the correct installed folder. | |
- | |
-chrome flags consolidtation into only two flags for linux. Mjpeg and accelerated | |
-video are used. The other flags are kept for ChromeOS and other OSes. | |
- | |
-Developer testing was made on skylake hardware, ChromeOS and Ubuntu. | |
- | |
-BUG=NONE | |
-TEST=subjective testing with VAVDA,VAVEA and VAJDA, autotest for encoder | |
- and decoder hardware accelerated | |
- have libva/intel-vaapi-driver installed and not installed in the system | |
- repeat on different hardware families | |
- | |
-Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel | |
-Change-Id: Ifbbf5c9e5221a8b5733fc6d4d0cf984a1f103171 | |
-Signed-off-by: Daniel Charles | |
---- | |
- | |
---- a/chrome/browser/about_flags.cc | |
-+++ b/chrome/browser/about_flags.cc | |
-@@ -1429,12 +1429,14 @@ const FeatureEntry kFeatureEntries[] = { | |
- {"ui-disable-partial-swap", flag_descriptions::kUiPartialSwapName, | |
- flag_descriptions::kUiPartialSwapDescription, kOsAll, | |
- SINGLE_DISABLE_VALUE_TYPE(switches::kUIDisablePartialSwap)}, | |
-+#if defined(OS_CHROMEOS) || defined(OS_ANDROID) | |
- {"disable-webrtc-hw-decoding", flag_descriptions::kWebrtcHwDecodingName, | |
- flag_descriptions::kWebrtcHwDecodingDescription, kOsAndroid | kOsCrOS, | |
- SINGLE_DISABLE_VALUE_TYPE(switches::kDisableWebRtcHWDecoding)}, | |
- {"disable-webrtc-hw-encoding", flag_descriptions::kWebrtcHwEncodingName, | |
- flag_descriptions::kWebrtcHwEncodingDescription, kOsAndroid | kOsCrOS, | |
- SINGLE_DISABLE_VALUE_TYPE(switches::kDisableWebRtcHWEncoding)}, | |
-+#endif | |
- {"enable-webrtc-hw-h264-encoding", | |
- flag_descriptions::kWebrtcHwH264EncodingName, | |
- flag_descriptions::kWebrtcHwH264EncodingDescription, kOsAndroid | kOsCrOS, | |
-@@ -1815,6 +1817,13 @@ const FeatureEntry kFeatureEntries[] = { | |
- flag_descriptions::kShowTouchHudDescription, kOsCrOS, | |
- SINGLE_VALUE_TYPE(ash::switches::kAshTouchHud)}, | |
- #endif // OS_CHROMEOS | |
-+#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID) | |
-+ { | |
-+ "enable-accelerated-video", flag_descriptions::kAcceleratedVideoName, | |
-+ flag_descriptions::kAcceleratedVideoDescription, kOsLinux, | |
-+ SINGLE_VALUE_TYPE(switches::kEnableAcceleratedVideo), | |
-+ }, | |
-+#else | |
- { | |
- "disable-accelerated-video-decode", | |
- flag_descriptions::kAcceleratedVideoDecodeName, | |
-@@ -1822,6 +1831,7 @@ const FeatureEntry kFeatureEntries[] = { | |
- kOsMac | kOsWin | kOsCrOS | kOsAndroid, | |
- SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedVideoDecode), | |
- }, | |
-+#endif | |
- #if defined(OS_WIN) | |
- {"enable-hdr", flag_descriptions::kEnableHDRName, | |
- flag_descriptions::kEnableHDRDescription, kOsWin, | |
-@@ -2501,12 +2511,17 @@ const FeatureEntry kFeatureEntries[] = { | |
- FEATURE_VALUE_TYPE(features::kOpenVR)}, | |
- #endif // ENABLE_OPENVR | |
- #endif // ENABLE_VR | |
--#if defined(OS_CHROMEOS) | |
-+#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID) | |
-+ {"enable-accelerated-mjpeg-decode", | |
-+ flag_descriptions::kAcceleratedMjpegDecodeName, | |
-+ flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsLinux, | |
-+ SINGLE_VALUE_TYPE(switches::kEnableAcceleratedMjpegDecode)}, | |
-+#elif defined(OS_CHROMEOS) | |
- {"disable-accelerated-mjpeg-decode", | |
- flag_descriptions::kAcceleratedMjpegDecodeName, | |
- flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsCrOS, | |
- SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedMjpegDecode)}, | |
--#endif // OS_CHROMEOS | |
-+#endif | |
- {"v8-cache-options", flag_descriptions::kV8CacheOptionsName, | |
- flag_descriptions::kV8CacheOptionsDescription, kOsAll, | |
- MULTI_VALUE_TYPE(kV8CacheOptionsChoices)}, | |
---- a/chrome/browser/chromeos/login/chrome_restart_request.cc | |
-+++ b/chrome/browser/chromeos/login/chrome_restart_request.cc | |
-@@ -19,6 +19,7 @@ | |
- #include "base/sys_info.h" | |
- #include "base/timer/timer.h" | |
- #include "base/values.h" | |
-+#include "build/build_config.h" | |
- #include "cc/base/switches.h" | |
- #include "chrome/browser/browser_process.h" | |
- #include "chrome/browser/chromeos/boot_times_recorder.h" | |
-@@ -84,9 +85,14 @@ void DeriveCommandLine(const GURL& start | |
- ::switches::kDisable2dCanvasImageChromium, | |
- ::switches::kDisableAccelerated2dCanvas, | |
- ::switches::kDisableAcceleratedJpegDecoding, | |
-+#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID) | |
-+ ::switches::kEnableAcceleratedMjpegDecode, | |
-+ ::switches::kEnableAcceleratedVideo, | |
-+#else | |
- ::switches::kDisableAcceleratedMjpegDecode, | |
- ::switches::kDisableAcceleratedVideoDecode, | |
- ::switches::kDisableAcceleratedVideoEncode, | |
-+#endif | |
- ::switches::kDisableBlinkFeatures, | |
- ::switches::kDisableCastStreamingHWEncoding, | |
- ::switches::kDisableGpu, | |
-@@ -160,8 +166,10 @@ void DeriveCommandLine(const GURL& start | |
- ::switches::kEnableWebGLImageChromium, | |
- ::switches::kEnableWebVR, | |
- ::switches::kEnableUnsafeWebGPU, | |
-+#if (defined(OS_CHROMEOS) || defined(OS_ANDROID)) | |
- ::switches::kDisableWebRtcHWDecoding, | |
- ::switches::kDisableWebRtcHWEncoding, | |
-+#endif | |
- ::switches::kOzonePlatform, | |
- ash::switches::kAshEnableTabletMode, | |
- ash::switches::kAshEnableWaylandServer, | |
---- a/chrome/browser/flag_descriptions.cc | |
-+++ b/chrome/browser/flag_descriptions.cc | |
-@@ -14,6 +14,13 @@ const char kAccelerated2dCanvasDescripti | |
- "Enables the use of the GPU to perform 2d canvas rendering instead of " | |
- "using software rendering."; | |
- | |
-+#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID) | |
-+const char kAcceleratedVideoName[] = "Hardware-accelerated video"; | |
-+const char kAcceleratedVideoDescription[] = | |
-+ "Hardware-accelerated video where VA-API driver is installed on the" | |
-+ "system."; | |
-+#endif | |
-+ | |
- const char kAcceleratedVideoDecodeName[] = "Hardware-accelerated video decode"; | |
- const char kAcceleratedVideoDecodeDescription[] = | |
- "Hardware-accelerated video decode where available."; | |
-@@ -2121,6 +2128,7 @@ const char kWebrtcHybridAgcName[] = "Web | |
- const char kWebrtcHybridAgcDescription[] = | |
- "WebRTC Agc2 digital adaptation with Agc1 analog adaptation."; | |
- | |
-+#if defined(OS_CHROMEOS) || defined(OS_ANDROID) | |
- const char kWebrtcHwDecodingName[] = "WebRTC hardware video decoding"; | |
- const char kWebrtcHwDecodingDescription[] = | |
- "Support in WebRTC for decoding video streams using platform hardware."; | |
-@@ -2128,6 +2136,7 @@ const char kWebrtcHwDecodingDescription[ | |
- const char kWebrtcHwEncodingName[] = "WebRTC hardware video encoding"; | |
- const char kWebrtcHwEncodingDescription[] = | |
- "Support in WebRTC for encoding video streams using platform hardware."; | |
-+#endif | |
- | |
- const char kWebrtcHwH264EncodingName[] = "WebRTC hardware h264 video encoding"; | |
- const char kWebrtcHwH264EncodingDescription[] = | |
-@@ -3059,14 +3068,16 @@ const char kTextSuggestionsTouchBarDescr | |
- | |
- // Chrome OS ------------------------------------------------------------------- | |
- | |
--#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 | |
- | |
-+#if defined(OS_CHROMEOS) | |
- const char kAllowTouchpadThreeFingerClickName[] = "Touchpad three-finger-click"; | |
- const char kAllowTouchpadThreeFingerClickDescription[] = | |
- "Enables touchpad three-finger-click as middle button."; | |
---- a/chrome/browser/flag_descriptions.h | |
-+++ b/chrome/browser/flag_descriptions.h | |
-@@ -37,6 +37,10 @@ namespace flag_descriptions { | |
- extern const char kAccelerated2dCanvasName[]; | |
- extern const char kAccelerated2dCanvasDescription[]; | |
- | |
-+#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID) | |
-+extern const char kAcceleratedVideoName[]; | |
-+extern const char kAcceleratedVideoDescription[]; | |
-+#endif | |
- extern const char kAcceleratedVideoDecodeName[]; | |
- extern const char kAcceleratedVideoDecodeDescription[]; | |
- | |
-@@ -1849,13 +1853,17 @@ extern const char kPermissionPromptPersi | |
- | |
- #endif // defined(OS_MACOSX) | |
- | |
--// Chrome OS ------------------------------------------------------------------ | |
-- | |
--#if defined(OS_CHROMEOS) | |
-+#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && !defined(OS_ANDROID)) | |
- | |
- extern const char kAcceleratedMjpegDecodeName[]; | |
- extern const char kAcceleratedMjpegDecodeDescription[]; | |
- | |
-+#endif | |
-+ | |
-+// Chrome OS ------------------------------------------------------------------ | |
-+ | |
-+#if defined(OS_CHROMEOS) | |
-+ | |
- extern const char kAllowTouchpadThreeFingerClickName[]; | |
- extern const char kAllowTouchpadThreeFingerClickDescription[]; | |
- | |
---- a/content/browser/gpu/compositor_util.cc | |
-+++ b/content/browser/gpu/compositor_util.cc | |
-@@ -150,7 +150,11 @@ const GpuFeatureData GetGpuFeatureData( | |
- {"video_decode", | |
- SafeGetFeatureStatus(gpu_feature_info, | |
- gpu::GPU_FEATURE_TYPE_ACCELERATED_VIDEO_DECODE), | |
-+#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID) | |
-+ !command_line.HasSwitch(switches::kEnableAcceleratedVideo), | |
-+#else | |
- command_line.HasSwitch(switches::kDisableAcceleratedVideoDecode), | |
-+#endif | |
- "Accelerated video decode has been disabled, either via blacklist, " | |
- "about:flags or the command line.", | |
- true, true}, | |
---- a/content/browser/gpu/gpu_process_host.cc | |
-+++ b/content/browser/gpu/gpu_process_host.cc | |
-@@ -210,7 +210,9 @@ static const char* const kSwitchNames[] | |
- switches::kDisableLogging, | |
- switches::kDisableShaderNameHashing, | |
- switches::kDisableSkiaRuntimeOpts, | |
-+#if !defined(OS_LINUX) | |
- switches::kDisableWebRtcHWEncoding, | |
-+#endif | |
- #if defined(OS_WIN) | |
- switches::kEnableAcceleratedVpxDecode, | |
- #endif | |
---- a/content/browser/renderer_host/media/video_capture_browsertest.cc | |
-+++ b/content/browser/renderer_host/media/video_capture_browsertest.cc | |
-@@ -166,8 +166,13 @@ class VideoCaptureBrowserTest : public C | |
- base::CommandLine::ForCurrentProcess()->AppendSwitch( | |
- switches::kUseFakeJpegDecodeAccelerator); | |
- } else { | |
-+#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID) | |
-+ base::CommandLine::ForCurrentProcess()->AppendSwitch( | |
-+ switches::kEnableAcceleratedMjpegDecode); | |
-+#else | |
- base::CommandLine::ForCurrentProcess()->AppendSwitch( | |
- switches::kDisableAcceleratedMjpegDecode); | |
-+#endif | |
- } | |
- } | |
- | |
---- a/content/browser/renderer_host/render_process_host_impl.cc | |
-+++ b/content/browser/renderer_host/render_process_host_impl.cc | |
-@@ -2932,7 +2932,11 @@ void RenderProcessHostImpl::PropagateBro | |
- switches::kDefaultTileHeight, | |
- switches::kDisable2dCanvasImageChromium, | |
- switches::kDisableAcceleratedJpegDecoding, | |
-+#if defined(OS_LINUX) && !defined(OS_CHROMEOS) | |
-+ switches::kEnableAcceleratedVideo, | |
-+#else | |
- switches::kDisableAcceleratedVideoDecode, | |
-+#endif | |
- switches::kDisableBackgroundTasks, | |
- switches::kDisableBackgroundTimerThrottling, | |
- switches::kDisableBreakpad, | |
-@@ -3072,8 +3076,10 @@ void RenderProcessHostImpl::PropagateBro | |
- #if BUILDFLAG(ENABLE_RUNTIME_MEDIA_RENDERER_SELECTION) | |
- switches::kDisableMojoRenderer, | |
- #endif | |
-+#if !defined(OS_LINUX) || defined(OS_CHROMEOS) | |
- switches::kDisableWebRtcHWDecoding, | |
- switches::kDisableWebRtcHWEncoding, | |
-+#endif | |
- switches::kEnableWebRtcSrtpAesGcm, | |
- switches::kEnableWebRtcSrtpEncryptedHeaders, | |
- switches::kEnableWebRtcStunOrigin, | |
---- a/content/browser/webrtc/webrtc_media_recorder_browsertest.cc | |
-+++ b/content/browser/webrtc/webrtc_media_recorder_browsertest.cc | |
-@@ -66,7 +66,12 @@ class MAYBE_WebRtcMediaRecorderTest | |
- return; | |
- // This flag is also used for encoding, https://crbug.com/616640. | |
- base::CommandLine::ForCurrentProcess()->AppendSwitch( | |
-- switches::kDisableAcceleratedVideoDecode); | |
-+#if defined(OS_LINUX) && !defined(OS_CHROMEOS) | |
-+ switches::kEnableAcceleratedVideo | |
-+#else | |
-+ switches::kDisableAcceleratedVideoDecode | |
-+#endif | |
-+ ); | |
- } | |
- | |
- private: | |
---- a/content/gpu/BUILD.gn | |
-+++ b/content/gpu/BUILD.gn | |
-@@ -134,4 +134,8 @@ target(link_target_type, "gpu_sources") | |
- (!is_chromecast || is_cast_desktop_build)) { | |
- configs += [ "//build/config/linux/dri" ] | |
- } | |
-+ | |
-+ if (is_desktop_linux) { | |
-+ public_configs = [ "//media/gpu:libva_config" ] | |
-+ } | |
- } | |
---- a/content/gpu/gpu_main.cc | |
-+++ b/content/gpu/gpu_main.cc | |
-@@ -283,7 +283,7 @@ int GpuMain(const MainFunctionParams& pa | |
- | |
- base::PlatformThread::SetName("CrGpuMain"); | |
- | |
--#if defined(OS_ANDROID) || defined(OS_CHROMEOS) | |
-+#if defined(OS_LINUX) | |
- // Set thread priority before sandbox initialization. | |
- base::PlatformThread::SetCurrentThreadPriority(base::ThreadPriority::DISPLAY); | |
- #endif | |
-@@ -316,7 +316,7 @@ int GpuMain(const MainFunctionParams& pa | |
- GetContentClient()->SetGpuInfo(gpu_init->gpu_info()); | |
- | |
- base::ThreadPriority io_thread_priority = base::ThreadPriority::NORMAL; | |
--#if defined(OS_ANDROID) || defined(OS_CHROMEOS) | |
-+#if defined(OS_LINUX) | |
- io_thread_priority = base::ThreadPriority::DISPLAY; | |
- #endif | |
- | |
---- a/content/public/browser/gpu_utils.cc | |
-+++ b/content/public/browser/gpu_utils.cc | |
-@@ -58,9 +58,17 @@ const gpu::GpuPreferences GetGpuPreferen | |
- gpu_preferences.in_process_gpu = | |
- command_line->HasSwitch(switches::kInProcessGPU); | |
- gpu_preferences.disable_accelerated_video_decode = | |
-+#if defined(OS_LINUX) && !defined(OS_CHROMEOS) | |
-+ !command_line->HasSwitch(switches::kEnableAcceleratedVideo); | |
-+#else | |
- command_line->HasSwitch(switches::kDisableAcceleratedVideoDecode); | |
-+#endif | |
- gpu_preferences.disable_accelerated_video_encode = | |
-+#if defined(OS_LINUX) && !defined(OS_CHROMEOS) | |
-+ !command_line->HasSwitch(switches::kEnableAcceleratedVideo); | |
-+#else | |
- command_line->HasSwitch(switches::kDisableAcceleratedVideoEncode); | |
-+#endif | |
- #if defined(OS_WIN) | |
- uint32_t enable_accelerated_vpx_decode_val = | |
- gpu::GpuPreferences::VPX_VENDOR_MICROSOFT; | |
---- a/content/public/common/content_switches.cc | |
-+++ b/content/public/common/content_switches.cc | |
-@@ -64,6 +64,11 @@ const char kDisable3DAPIs[] | |
- // Disable gpu-accelerated 2d canvas. | |
- const char kDisableAccelerated2dCanvas[] = "disable-accelerated-2d-canvas"; | |
- | |
-+#if defined(OS_LINUX) | |
-+// Enables hardware acceleration of video for Linux only. VA-API driver | |
-+// is required to be present on the system installation. | |
-+const char kEnableAcceleratedVideo[] = "enable-accelerated-video"; | |
-+#endif | |
- // Disables hardware acceleration of video decode, where available. | |
- const char kDisableAcceleratedVideoDecode[] = | |
- "disable-accelerated-video-decode"; | |
-@@ -853,11 +858,13 @@ const char kWaitForDebuggerChildren[] | |
- // ignores this switch on its stable and beta channels. | |
- const char kDisableWebRtcEncryption[] = "disable-webrtc-encryption"; | |
- | |
-+#if defined(OS_CHROMEOS) | |
- // Disables HW decode acceleration for WebRTC. | |
- const char kDisableWebRtcHWDecoding[] = "disable-webrtc-hw-decoding"; | |
- | |
- // Disables HW encode acceleration for WebRTC. | |
- const char kDisableWebRtcHWEncoding[] = "disable-webrtc-hw-encoding"; | |
-+#endif | |
- | |
- // Enables negotiation of GCM cipher suites from RFC 7714 for SRTP in WebRTC. | |
- // See https://tools.ietf.org/html/rfc7714 for further information. | |
---- a/content/public/common/content_switches.h | |
-+++ b/content/public/common/content_switches.h | |
-@@ -102,6 +102,9 @@ CONTENT_EXPORT extern const char kDisabl | |
- CONTENT_EXPORT extern const char kDomAutomationController[]; | |
- extern const char kDisable2dCanvasClipAntialiasing[]; | |
- CONTENT_EXPORT extern const char kDumpBlinkRuntimeCallStats[]; | |
-+#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID) | |
-+CONTENT_EXPORT extern const char kEnableAcceleratedVideo[]; | |
-+#endif | |
- CONTENT_EXPORT extern const char kEnableAccessibilityObjectModel[]; | |
- CONTENT_EXPORT extern const char kEnableAggressiveDOMStorageFlushing[]; | |
- CONTENT_EXPORT extern const char kEnableAutomation[]; | |
-@@ -239,8 +242,10 @@ CONTENT_EXPORT extern const char kValida | |
- CONTENT_EXPORT extern const char kWaitForDebuggerChildren[]; | |
- | |
- CONTENT_EXPORT extern const char kDisableWebRtcEncryption[]; | |
-+#if defined(OS_CHROMEOS) | |
- CONTENT_EXPORT extern const char kDisableWebRtcHWDecoding[]; | |
- CONTENT_EXPORT extern const char kDisableWebRtcHWEncoding[]; | |
-+#endif | |
- CONTENT_EXPORT extern const char kEnableWebRtcSrtpAesGcm[]; | |
- CONTENT_EXPORT extern const char kEnableWebRtcSrtpEncryptedHeaders[]; | |
- CONTENT_EXPORT extern const char kEnableWebRtcStunOrigin[]; | |
---- a/content/renderer/media/webrtc/peer_connection_dependency_factory.cc | |
-+++ b/content/renderer/media/webrtc/peer_connection_dependency_factory.cc | |
-@@ -276,10 +276,18 @@ void PeerConnectionDependencyFactory::In | |
- | |
- const base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess(); | |
- if (gpu_factories && gpu_factories->IsGpuVideoAcceleratorEnabled()) { | |
-+#if defined(OS_LINUX) && !defined(OS_CHROMEOS) | |
-+ if (cmd_line->HasSwitch(switches::kEnableAcceleratedVideo)) | |
-+#else | |
- if (!cmd_line->HasSwitch(switches::kDisableWebRtcHWDecoding)) | |
-+#endif | |
- decoder_factory.reset(new RTCVideoDecoderFactory(gpu_factories)); | |
- | |
-+#if defined(OS_LINUX) && !defined(OS_CHROMEOS) | |
-+ if (cmd_line->HasSwitch(switches::kEnableAcceleratedVideo)) | |
-+#else | |
- if (!cmd_line->HasSwitch(switches::kDisableWebRtcHWEncoding)) | |
-+#endif | |
- encoder_factory.reset(new RTCVideoEncoderFactory(gpu_factories)); | |
- } | |
- | |
---- a/content/renderer/render_thread_impl.cc | |
-+++ b/content/renderer/render_thread_impl.cc | |
-@@ -1415,7 +1415,11 @@ media::GpuVideoAcceleratorFactories* Ren | |
- kGpuStreamPriorityMedia); | |
- | |
- const bool enable_video_accelerator = | |
-+#if defined(OS_LINUX) && !defined(OS_CHROMEOS) | |
-+ cmd_line->HasSwitch(switches::kEnableAcceleratedVideo) && | |
-+#else | |
- !cmd_line->HasSwitch(switches::kDisableAcceleratedVideoDecode) && | |
-+#endif | |
- (gpu_channel_host->gpu_feature_info() | |
- .status_values[gpu::GPU_FEATURE_TYPE_ACCELERATED_VIDEO_DECODE] == | |
- gpu::kGpuFeatureStatusEnabled); | |
---- a/gpu/config/software_rendering_list.json | |
-+++ b/gpu/config/software_rendering_list.json | |
-@@ -374,17 +374,6 @@ | |
- ] | |
- }, | |
- { | |
-- "id": 48, | |
-- "description": "Accelerated video decode is unavailable on Linux", | |
-- "cr_bugs": [137247], | |
-- "os": { | |
-- "type": "linux" | |
-- }, | |
-- "features": [ | |
-- "accelerated_video_decode" | |
-- ] | |
-- }, | |
-- { | |
- "id": 50, | |
- "description": "Disable VMware software renderer on older Mesa", | |
- "cr_bugs": [145531, 332596, 571899, 629434], | |
---- a/media/gpu/BUILD.gn | |
-+++ b/media/gpu/BUILD.gn | |
-@@ -501,6 +501,14 @@ if (use_v4l2_codec || use_vaapi || is_ma | |
- } | |
- } | |
- | |
-+if (is_desktop_linux && use_vaapi) { | |
-+ import("//build/config/linux/pkg_config.gni") | |
-+ | |
-+ pkg_config("libva_config") { | |
-+ packages = [ "libva" ] | |
-+ } | |
-+} | |
-+ | |
- if (use_v4l2_codec || use_vaapi) { | |
- test("jpeg_encode_accelerator_unittest") { | |
- deps = [ | |
-@@ -571,6 +579,10 @@ if (use_v4l2_codec || use_vaapi) { | |
- if (use_ozone) { | |
- deps += [ "//ui/ozone" ] | |
- } | |
-+ | |
-+ if (is_desktop_linux) { | |
-+ public_configs = [ ":libva_config" ] | |
-+ } | |
- } | |
- } | |
- | |
---- a/media/base/media_switches.cc | |
-+++ b/media/base/media_switches.cc | |
-@@ -108,10 +108,15 @@ const char kUseFileForFakeAudioCapture[] | |
- // accelerator hardware to be present. | |
- const char kUseFakeJpegDecodeAccelerator[] = "use-fake-jpeg-decode-accelerator"; | |
- | |
-+#if defined(OS_LINUX) && !defined(OS_CHROMEOS) | |
-+// Enable hardware accelerated mjpeg decode on linux | |
-+const char kEnableAcceleratedMjpegDecode[] = "enable-accelerated-mjpeg-decode"; | |
-+#else | |
- // Disable hardware acceleration of mjpeg decode for captured frame, where | |
- // available. | |
- const char kDisableAcceleratedMjpegDecode[] = | |
- "disable-accelerated-mjpeg-decode"; | |
-+#endif | |
- | |
- // When running tests on a system without the required hardware or libraries, | |
- // this flag will cause the tests to fail. Otherwise, they silently succeed. | |
-@@ -460,15 +465,22 @@ const base::Feature kPreloadMediaEngagem | |
- #endif | |
- | |
- bool IsVideoCaptureAcceleratedJpegDecodingEnabled() { | |
-+ | |
-+#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID) | |
-+ if (!base::CommandLine::ForCurrentProcess()->HasSwitch( | |
-+ switches::kEnableAcceleratedMjpegDecode) | |
-+#else | |
- if (base::CommandLine::ForCurrentProcess()->HasSwitch( | |
-- switches::kDisableAcceleratedMjpegDecode)) { | |
-+ switches::kDisableAcceleratedMjpegDecode) | |
-+#endif | |
-+ ) { | |
- return false; | |
- } | |
- if (base::CommandLine::ForCurrentProcess()->HasSwitch( | |
- switches::kUseFakeJpegDecodeAccelerator)) { | |
- return true; | |
- } | |
--#if defined(OS_CHROMEOS) | |
-+#if !defined(OS_ANDROID) && defined(OS_LINUX) | |
- return true; | |
- #endif | |
- return false; | |
---- a/media/base/media_switches.h | |
-+++ b/media/base/media_switches.h | |
-@@ -64,7 +64,11 @@ MEDIA_EXPORT extern const char kUseFakeD | |
- MEDIA_EXPORT extern const char kUseFileForFakeVideoCapture[]; | |
- MEDIA_EXPORT extern const char kUseFileForFakeAudioCapture[]; | |
- MEDIA_EXPORT extern const char kUseFakeJpegDecodeAccelerator[]; | |
-+#if defined(OS_LINUX) && !defined(OS_CHROMEOS) | |
-+MEDIA_EXPORT extern const char kEnableAcceleratedMjpegDecode[]; | |
-+#else | |
- MEDIA_EXPORT extern const char kDisableAcceleratedMjpegDecode[]; | |
-+#endif | |
- | |
- MEDIA_EXPORT extern const char kRequireAudioHardwareForTesting[]; | |
- MEDIA_EXPORT extern const char kMuteAudio[]; | |
---- a/content/browser/utility_process_host.cc | |
-+++ b/content/browser/utility_process_host.cc | |
-@@ -304,7 +304,11 @@ bool UtilityProcessHost::StartProcess() | |
- switches::kOverrideUseSoftwareGLForTests, | |
- switches::kOverrideEnabledCdmInterfaceVersion, | |
- switches::kProxyServer, | |
-+#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID) | |
-+ switches::kEnableAcceleratedMjpegDecode, | |
-+#else | |
- switches::kDisableAcceleratedMjpegDecode, | |
-+#endif | |
- switches::kUseFakeDeviceForMediaStream, | |
- switches::kUseFakeJpegDecodeAccelerator, | |
- switches::kUseFileForFakeVideoCapture, | |
diff --git a/enable-vaapi.patch b/enable-vaapi.patch | |
new file mode 100644 | |
index 0000000..3ee3a0d | |
--- /dev/null | |
+++ b/enable-vaapi.patch | |
@@ -0,0 +1,172 @@ | |
+From abc7295ca1653c85472916909f0eb76e28e79a58 Mon Sep 17 00:00:00 2001 | |
+From: Akarshan Biswas <[email protected]> | |
+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 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment