summaryrefslogtreecommitdiff
path: root/chromium-119-hide-UseChromeOSDirectVideoDecoder-flag-on-VA-API-devices.patch
diff options
context:
space:
mode:
Diffstat (limited to 'chromium-119-hide-UseChromeOSDirectVideoDecoder-flag-on-VA-API-devices.patch')
-rw-r--r--chromium-119-hide-UseChromeOSDirectVideoDecoder-flag-on-VA-API-devices.patch189
1 files changed, 189 insertions, 0 deletions
diff --git a/chromium-119-hide-UseChromeOSDirectVideoDecoder-flag-on-VA-API-devices.patch b/chromium-119-hide-UseChromeOSDirectVideoDecoder-flag-on-VA-API-devices.patch
new file mode 100644
index 0000000..10db551
--- /dev/null
+++ b/chromium-119-hide-UseChromeOSDirectVideoDecoder-flag-on-VA-API-devices.patch
@@ -0,0 +1,189 @@
+commit 87fca7f1759e800bd72b5ab6511eea17d6400a76
+Author: Pilar Molina Lopez <pmolinalopez@chromium.org>
+Date: Tue Oct 24 19:57:55 2023 +0000
+
+ video: hide UseChromeOSDirectVideoDecoder flag on VA-API devices
+
+ We are seeing crashes causes by this CHECK statement:
+ https://source.chromium.org/chromium/chromium/src/+/main:content/public/browser/gpu_utils.cc;l=151;drc=0e777ba9b6c34611705d5b145c92bcd09539011c
+ It's triggered when the user manually disables the UseChromeOSDirectVideoDecoder
+ flag on VA-API devices (Intel and AMD). This flag is supported only on
+ non-Intel and non-AMD devices. This CL adds this information to the flag
+ description and hides the flag in case VA-API is used.
+
+ Bug: 1469285
+ Test: manual test on volteer
+ Change-Id: I153b9ccb3815498c91ce5eee966834060749e247
+ Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4960919
+ Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
+ Reviewed-by: Andres Calderon Jaramillo <andrescj@chromium.org>
+ Reviewed-by: Avi Drissman <avi@chromium.org>
+ Commit-Queue: Pilar Molina Lopez <pmolinalopez@chromium.org>
+ Cr-Commit-Position: refs/heads/main@{#1214411}
+
+diff -up chromium-119.0.6045.105/chrome/browser/about_flags.cc.hide-UseChromeOSDirectVideoDecoder-flag-on-VA-API-devices chromium-119.0.6045.105/chrome/browser/about_flags.cc
+--- chromium-119.0.6045.105/chrome/browser/about_flags.cc.hide-UseChromeOSDirectVideoDecoder-flag-on-VA-API-devices 2023-11-01 19:10:09.000000000 +0100
++++ chromium-119.0.6045.105/chrome/browser/about_flags.cc 2023-11-06 17:12:08.057984291 +0100
+@@ -7771,11 +7771,13 @@ const FeatureEntry kFeatureEntries[] = {
+ #endif // BUILDFLAG(IS_CHROMEOS_ASH)
+
+ #if BUILDFLAG(IS_CHROMEOS) && BUILDFLAG(USE_CHROMEOS_MEDIA_ACCELERATION)
++#if !BUILDFLAG(USE_VAAPI)
+ {"chromeos-direct-video-decoder",
+ flag_descriptions::kChromeOSDirectVideoDecoderName,
+ flag_descriptions::kChromeOSDirectVideoDecoderDescription,
+ kOsCrOS | kOsLacros,
+ FEATURE_VALUE_TYPE(media::kUseChromeOSDirectVideoDecoder)},
++#endif // !BUILDFLAG(USE_VAAPI)
+
+ {"enable-vbr-encode-acceleration",
+ flag_descriptions::kChromeOSHWVBREncodingName,
+diff -up chromium-119.0.6045.105/chrome/browser/DEPS.hide-UseChromeOSDirectVideoDecoder-flag-on-VA-API-devices chromium-119.0.6045.105/chrome/browser/DEPS
+--- chromium-119.0.6045.105/chrome/browser/DEPS.hide-UseChromeOSDirectVideoDecoder-flag-on-VA-API-devices 2023-11-01 19:10:09.000000000 +0100
++++ chromium-119.0.6045.105/chrome/browser/DEPS 2023-11-06 17:12:08.055984248 +0100
+@@ -415,6 +415,7 @@ include_rules = [
+ "+media/base", # For media switches
+ "+media/capabilities", # For InMemoryVideoDecodeStatsDB
+ "+media/cdm",
++ "+media/gpu/buildflags.h",
+ "+media/remoting/device_capability_checker.h",
+ "+media/capture",
+ "+media/midi", # For midi switches
+diff -up chromium-119.0.6045.105/chrome/browser/flag_descriptions.cc.hide-UseChromeOSDirectVideoDecoder-flag-on-VA-API-devices chromium-119.0.6045.105/chrome/browser/flag_descriptions.cc
+--- chromium-119.0.6045.105/chrome/browser/flag_descriptions.cc.hide-UseChromeOSDirectVideoDecoder-flag-on-VA-API-devices 2023-11-01 19:10:12.000000000 +0100
++++ chromium-119.0.6045.105/chrome/browser/flag_descriptions.cc 2023-11-06 17:12:08.059984335 +0100
+@@ -7,6 +7,7 @@
+ #include "build/build_config.h"
+ #include "build/chromeos_buildflags.h"
+ #include "components/supervised_user/core/common/buildflags.h"
++#include "media/gpu/buildflags.h"
+ #include "pdf/buildflags.h"
+
+ // Keep in identical order as the header file, see the comment at the top
+@@ -7424,6 +7425,7 @@ const char kVaapiVP9kSVCEncoderDescripti
+ #endif // defined(ARCH_CPU_X86_FAMILY) && BUILDFLAG(IS_CHROMEOS)
+
+ #if BUILDFLAG(IS_CHROMEOS) && BUILDFLAG(USE_CHROMEOS_MEDIA_ACCELERATION)
++#if !BUILDFLAG(USE_VAAPI)
+ const char kChromeOSDirectVideoDecoderName[] = "ChromeOS Direct Video Decoder";
+ const char kChromeOSDirectVideoDecoderDescription[] =
+ "Enables the hardware-accelerated ChromeOS direct media::VideoDecoder "
+@@ -7431,7 +7433,8 @@ const char kChromeOSDirectVideoDecoderDe
+ "--platform-disallows-chromeos-direct-video-decoder command line switch "
+ "which is added for platforms where said direct VideoDecoder does not work "
+ "or is not well tested (see the disable_cros_video_decoder USE flag in "
+- "ChromeOS)";
++ "ChromeOS). This flag is supported only on non-Intel and non-AMD devices.";
++#endif // !BUILDFLAG(USE_VAAPI)
+ const char kChromeOSHWVBREncodingName[] =
+ "ChromeOS Hardware Variable Bitrate Encoding";
+ const char kChromeOSHWVBREncodingDescription[] =
+diff -up chromium-119.0.6045.105/content/public/browser/gpu_utils.cc.hide-UseChromeOSDirectVideoDecoder-flag-on-VA-API-devices chromium-119.0.6045.105/content/public/browser/gpu_utils.cc
+--- chromium-119.0.6045.105/content/public/browser/gpu_utils.cc.hide-UseChromeOSDirectVideoDecoder-flag-on-VA-API-devices 2023-11-01 19:10:26.000000000 +0100
++++ chromium-119.0.6045.105/content/public/browser/gpu_utils.cc 2023-11-06 17:12:08.059984335 +0100
+@@ -133,20 +133,26 @@ const gpu::GpuPreferences GetGpuPreferen
+ #if BUILDFLAG(USE_CHROMEOS_MEDIA_ACCELERATION)
+ // The direct VideoDecoder is disallowed on some particular SoC/platforms.
+ const bool should_use_direct_video_decoder =
++#if BUILDFLAG(USE_VAAPI)
++ true;
++#else
+ !command_line->HasSwitch(
+ switches::kPlatformDisallowsChromeOSDirectVideoDecoder) &&
+ base::FeatureList::IsEnabled(media::kUseChromeOSDirectVideoDecoder);
++#endif // BUILDFLAG(USE_VAAPI)
++
++ gpu_preferences.enable_chromeos_direct_video_decoder =
++#if BUILDFLAG(USE_VAAPI)
++ should_use_direct_video_decoder;
++#else
++ // For testing purposes, the following flag allows using the "other" video
++ // decoder implementation.
++ base::FeatureList::IsEnabled(
++ media::kUseAlternateVideoDecoderImplementation)
++ ? !should_use_direct_video_decoder
++ : should_use_direct_video_decoder;
++#endif // BUILDFLAG(USE_VAAPI)
+
+- // For testing purposes, the following flag allows using the "other" video
+- // decoder implementation.
+- if (base::FeatureList::IsEnabled(
+- media::kUseAlternateVideoDecoderImplementation)) {
+- gpu_preferences.enable_chromeos_direct_video_decoder =
+- !should_use_direct_video_decoder;
+- } else {
+- gpu_preferences.enable_chromeos_direct_video_decoder =
+- should_use_direct_video_decoder;
+- }
+ #if BUILDFLAG(USE_VAAPI)
+ CHECK(gpu_preferences.enable_chromeos_direct_video_decoder);
+ #endif // BUILDFLAG(USE_VAAPI)
+diff -up chromium-119.0.6045.105/media/base/media_switches.cc.hide-UseChromeOSDirectVideoDecoder-flag-on-VA-API-devices chromium-119.0.6045.105/media/base/media_switches.cc
+--- chromium-119.0.6045.105/media/base/media_switches.cc.hide-UseChromeOSDirectVideoDecoder-flag-on-VA-API-devices 2023-11-01 19:10:31.000000000 +0100
++++ chromium-119.0.6045.105/media/base/media_switches.cc 2023-11-06 17:12:08.060984356 +0100
+@@ -1202,6 +1202,7 @@ BASE_FEATURE(kChromeOSHWVBREncoding,
+ "ChromeOSHWVBREncoding",
+ base::FEATURE_DISABLED_BY_DEFAULT);
+
++#if !BUILDFLAG(USE_VAAPI)
+ // Enable the hardware-accelerated direct video decoder instead of the one
+ // needing the VdaVideoDecoder adapter. This flag is used mainly as a
+ // chrome:flag for developers debugging issues as well as to be able to
+@@ -1210,6 +1211,7 @@ BASE_FEATURE(kChromeOSHWVBREncoding,
+ BASE_FEATURE(kUseChromeOSDirectVideoDecoder,
+ "UseChromeOSDirectVideoDecoder",
+ base::FEATURE_ENABLED_BY_DEFAULT);
++#endif // !BUILDFLAG(USE_VAAPI)
+
+ // Limit the number of concurrent hardware decoder instances on ChromeOS.
+ BASE_FEATURE(kLimitConcurrentDecoderInstances,
+@@ -1238,7 +1240,7 @@ BASE_FEATURE(kPreferSoftwareMT21,
+ "PreferSoftwareMT21",
+ base::FEATURE_DISABLED_BY_DEFAULT);
+ #endif // defined(ARCH_CPU_ARM_FAMILY)
+-#if BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(USE_VAAPI)
+ // ChromeOS has one of two VideoDecoder implementations active based on
+ // SoC/board specific configurations that are sent via command line flags. This
+ // switch allows using the non default implementation for testing.
+@@ -1246,7 +1248,7 @@ BASE_FEATURE(kPreferSoftwareMT21,
+ BASE_FEATURE(kUseAlternateVideoDecoderImplementation,
+ "UseAlternateVideoDecoderImplementation",
+ base::FEATURE_DISABLED_BY_DEFAULT);
+-#endif // BUILDFLAG(IS_CHROMEOS)
++#endif // BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(USE_VAAPI)
+ #endif // BUILDFLAG(USE_CHROMEOS_MEDIA_ACCELERATION)
+
+ #if BUILDFLAG(IS_WIN)
+diff -up chromium-119.0.6045.105/media/base/media_switches.h.hide-UseChromeOSDirectVideoDecoder-flag-on-VA-API-devices chromium-119.0.6045.105/media/base/media_switches.h
+--- chromium-119.0.6045.105/media/base/media_switches.h.hide-UseChromeOSDirectVideoDecoder-flag-on-VA-API-devices 2023-11-01 19:10:31.000000000 +0100
++++ chromium-119.0.6045.105/media/base/media_switches.h 2023-11-06 17:12:08.060984356 +0100
+@@ -14,6 +14,7 @@
+ #include "build/build_config.h"
+ #include "build/chromeos_buildflags.h"
+ #include "media/base/media_export.h"
++#include "media/gpu/buildflags.h"
+ #include "media/media_buildflags.h"
+
+ namespace base {
+@@ -382,16 +383,18 @@ MEDIA_EXPORT BASE_DECLARE_FEATURE(kBuilt
+ #if BUILDFLAG(USE_CHROMEOS_MEDIA_ACCELERATION)
+ MEDIA_EXPORT BASE_DECLARE_FEATURE(kChromeOSHWAV1Decoder);
+ MEDIA_EXPORT BASE_DECLARE_FEATURE(kChromeOSHWVBREncoding);
++#if !BUILDFLAG(USE_VAAPI)
+ MEDIA_EXPORT BASE_DECLARE_FEATURE(kUseChromeOSDirectVideoDecoder);
++#endif // !BUILDFLAG(USE_VAAPI)
+ MEDIA_EXPORT BASE_DECLARE_FEATURE(kLimitConcurrentDecoderInstances);
+ MEDIA_EXPORT BASE_DECLARE_FEATURE(kUSeSequencedTaskRunnerForVEA);
+ #if defined(ARCH_CPU_ARM_FAMILY)
+ MEDIA_EXPORT BASE_DECLARE_FEATURE(kPreferGLImageProcessor);
+ MEDIA_EXPORT BASE_DECLARE_FEATURE(kPreferSoftwareMT21);
+ #endif // defined(ARCH_CPU_ARM_FAMILY)
+-#if BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(USE_VAAPI)
+ MEDIA_EXPORT BASE_DECLARE_FEATURE(kUseAlternateVideoDecoderImplementation);
+-#endif // BUILDFLAG(IS_CHROMEOS)
++#endif // BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(USE_VAAPI)
+ #endif // BUILDFLAG(USE_CHROMEOS_MEDIA_ACCELERATION)
+
+ #if BUILDFLAG(IS_WIN)