Bug 1815481: Disable hardware WebRender on Mesa drivers in Virtual Machines. r=rmader

We classify anything with 'mesa/vmgfx' as a Virtual Machine driver and
block it for Linux.

Differential Revision: https://phabricator.services.mozilla.com/D179864
This commit is contained in:
Brad Werth 2023-06-16 20:45:22 +00:00
Родитель c276d2c608
Коммит 50b102dff8
3 изменённых файлов: 15 добавлений и 0 удалений

Просмотреть файл

@ -773,6 +773,7 @@ const nsAString& GfxDriverInfo::GetDriverVendor(DriverVendor id) {
DECLARE_DRIVER_VENDOR_ID(SoftwareMesaAll, "mesa/sw-all");
DECLARE_DRIVER_VENDOR_ID(MesaNonIntelNvidiaAtiAll,
"mesa/non-intel-nvidia-ati-all");
DECLARE_DRIVER_VENDOR_ID(MesaVM, "mesa/vmwgfx");
case DriverVendor::Max: // Suppress a warning.
DECLARE_DRIVER_VENDOR_ID(All, "");
}

Просмотреть файл

@ -243,6 +243,8 @@ enum DriverVendor : uint8_t {
SoftwareMesaAll,
// Wildcard for all non-Intel/NVIDIA/ATI Mesa drivers.
MesaNonIntelNvidiaAtiAll,
// Running in VM.
MesaVM,
Max
};

Просмотреть файл

@ -377,6 +377,10 @@ void GfxInfo::GetData() {
CopyUTF16toUTF8(GfxDriverInfo::GetDriverVendor(DriverVendor::MesaSWRast),
mDriverVendor);
mIsAccelerated = false;
} else if (strcasestr(driDriver.get(), "vmwgfx")) {
CopyUTF16toUTF8(GfxDriverInfo::GetDriverVendor(DriverVendor::MesaVM),
mDriverVendor);
mIsAccelerated = false;
} else if (!mIsAccelerated) {
CopyUTF16toUTF8(
GfxDriverInfo::GetDriverVendor(DriverVendor::MesaSWUnknown),
@ -958,6 +962,14 @@ const nsTArray<GfxDriverInfo>& GfxInfo::GetGfxDriverInfo() {
V(21, 0, 0, 0), "FEATURE_FAILURE_WEBRENDER_BUG_1635186",
"Mesa 21.0.0.0");
// Bug 1815481 - Disable mesa drivers in virtual machines.
APPEND_TO_DRIVER_BLOCKLIST_EXT(
OperatingSystem::Linux, ScreenSizeStatus::All, BatteryStatus::All,
WindowProtocol::All, DriverVendor::MesaVM, DeviceFamily::All,
nsIGfxInfo::FEATURE_WEBRENDER, nsIGfxInfo::FEATURE_BLOCKED_DEVICE,
DRIVER_COMPARISON_IGNORED, V(0, 0, 0, 0),
"FEATURE_FAILURE_WEBRENDER_MESA_VM", "");
////////////////////////////////////
// FEATURE_WEBRENDER_COMPOSITOR
APPEND_TO_DRIVER_BLOCKLIST(