diff --git a/widget/GfxDriverInfo.h b/widget/GfxDriverInfo.h --- a/widget/GfxDriverInfo.h +++ b/widget/GfxDriverInfo.h @@ -97,10 +97,11 @@ Bug1137716, Bug1116812, Bug1155608, Bug1207665, Bug1447141, + NvidiaBlockWebRender, DeviceFamilyMax }; enum DeviceVendor { VendorAll, // There is an assumption that this is the first enum diff --git a/widget/GfxDriverInfo.cpp b/widget/GfxDriverInfo.cpp --- a/widget/GfxDriverInfo.cpp +++ b/widget/GfxDriverInfo.cpp @@ -318,10 +318,44 @@ APPEND_DEVICE(0xa001); /* Intel Media Accelerator 3150 */ APPEND_DEVICE(0xa002); APPEND_DEVICE(0xa011); APPEND_DEVICE(0xa012); break; + case NvidiaBlockWebRender: + /* GT218 */ + APPEND_DEVICE(0x0a60); + APPEND_DEVICE(0x0a62); + APPEND_DEVICE(0x0a63); + APPEND_DEVICE(0x0a64); + APPEND_DEVICE(0x0a65); + APPEND_DEVICE(0x0a66); + APPEND_DEVICE(0x0a67); + APPEND_DEVICE(0x0a7b); + APPEND_DEVICE(0x10c0); + APPEND_DEVICE(0x10c3); + APPEND_DEVICE(0x10c5); + APPEND_DEVICE(0x10d8); + /* GT218M */ + APPEND_DEVICE(0x0a68); + APPEND_DEVICE(0x0a69); + APPEND_DEVICE(0x0a6a); + APPEND_DEVICE(0x0a6c); + APPEND_DEVICE(0x0a6e); + APPEND_DEVICE(0x0a6f); + APPEND_DEVICE(0x0a70); + APPEND_DEVICE(0x0a71); + APPEND_DEVICE(0x0a72); + APPEND_DEVICE(0x0a73); + APPEND_DEVICE(0x0a74); + APPEND_DEVICE(0x0a75); + APPEND_DEVICE(0x0a76); + APPEND_DEVICE(0x0a7a); + /* GT218GL */ + APPEND_DEVICE(0x0a78); + /* GT218GLM */ + APPEND_DEVICE(0x0a7c); + break; // This should never happen, but we get a warning if we don't handle this. case DeviceFamilyMax: NS_WARNING("Invalid DeviceFamily id"); break; } diff --git a/widget/windows/GfxInfo.cpp b/widget/windows/GfxInfo.cpp --- a/widget/windows/GfxInfo.cpp +++ b/widget/windows/GfxInfo.cpp @@ -1419,11 +1419,17 @@ //////////////////////////////////// // FEATURE_WEBRENDER // We are blocking all non-Nvidia cards in gfxPlatform.cpp where we check - // for the WEBRENDER_QUALIFIED feature + // for the WEBRENDER_QUALIFIED feature. However we also want to block some + // specific Nvidia cards for being too low-powered, so we do that here. + APPEND_TO_DRIVER_BLOCKLIST2(OperatingSystem::Windows10, + (nsAString&) GfxDriverInfo::GetDeviceVendor(VendorNVIDIA), + (GfxDeviceFamily*)GfxDriverInfo::GetDeviceFamily(NvidiaBlockWebRender), + nsIGfxInfo::FEATURE_WEBRENDER, nsIGfxInfo::FEATURE_BLOCKED_DEVICE, + DRIVER_LESS_THAN, GfxDriverInfo::allDriverVersions, "FEATURE_UNQUALIFIED_WEBRENDER_NVIDIA_BLOCKED"); // Block all windows versions other than windows 10 APPEND_TO_DRIVER_BLOCKLIST2(OperatingSystem::Windows7, (nsAString&) GfxDriverInfo::GetDeviceVendor(VendorAll), GfxDriverInfo::allDevices, nsIGfxInfo::FEATURE_WEBRENDER, nsIGfxInfo::FEATURE_BLOCKED_DEVICE,