0

gpu: Always enable OOP-C on CrOS with Vulkan

On some ChromeOS devices, using Vulkan without OOP-C results in
artifacts during video encode. To remedy this, we unconditionally
enable OOP-C on CrOS when Vulkan is enabled.

Bug: b:318721705
Change-Id: I1196c83ccd973373aa176e49e58d4431ac31e7fe
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5254556
Reviewed-by: Vasiliy Telezhnikov <vasilyt@chromium.org>
Commit-Queue: Brian Ho <hob@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1255851}
This commit is contained in:
Brian Ho
2024-02-03 00:39:25 +00:00
committed by Chromium LUCI CQ
parent 2502aae007
commit fe80878471

@ -249,12 +249,24 @@ GpuFeatureStatus GetCanvasOopRasterizationFeatureStatus(
}
}
#if BUILDFLAG(IS_CHROMEOS_ASH)
// Disable OOP-C if explicitly turned off from the command line.
base::FeatureList* feature_list = base::FeatureList::GetInstance();
if (feature_list && feature_list->IsFeatureOverriddenFromCommandLine(
features::kCanvasOopRasterization.name,
base::FeatureList::OVERRIDE_DISABLE_FEATURE))
return kGpuFeatureStatusDisabled;
// VDA video decoder on ChromeOS uses legacy mailboxes which is not compatible
// with OOP-C
#if BUILDFLAG(IS_CHROMEOS_ASH)
if (!gpu_preferences.enable_chromeos_direct_video_decoder)
return kGpuFeatureStatusDisabled;
#endif
// On certain ChromeOS devices, using Vulkan without OOP-C results in video
// encode artifacts (b/318721705).
if (gpu_preferences.use_vulkan != VulkanImplementationName::kNone)
return kGpuFeatureStatusEnabled;
#endif // BUILDFLAG(IS_CHROMEOS_ASH)
// Canvas OOP Rasterization on platforms that are not fully enabled is
// controlled by a finch experiment.