Bug 1615420. Disable DirectComposition on AMD and older Intel drivers on beta & release. r=aosmond
authorJeff Muizelaar <jmuizelaar@mozilla.com>
Fri, 13 Mar 2020 15:43:46 +0000
changeset 518565 08766c2e3d6ae550662bff4648702d2570979955
parent 518564 b8f97dccb4323773600e04b43931ee54ded2eb29
child 518566 24ad9eab921231cc8750a97ac05ebd73d4b783d3
push id37213
push usershindli@mozilla.com
push dateFri, 13 Mar 2020 21:46:16 +0000
treeherdermozilla-central@8ef0a54d7715 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersaosmond
bugs1615420
milestone76.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1615420. Disable DirectComposition on AMD and older Intel drivers on beta & release. r=aosmond This is similar to a change that landed directly into 74. We don't want to roll-out to these users yet and we don't want to have to think about it every release. Differential Revision: https://phabricator.services.mozilla.com/D66453
widget/GfxDriverInfo.h
widget/GfxInfoBase.cpp
widget/windows/GfxInfo.cpp
--- a/widget/GfxDriverInfo.h
+++ b/widget/GfxDriverInfo.h
@@ -123,16 +123,17 @@ enum class OperatingSystem : uint8_t {
   WindowsXP,
   WindowsServer2003,
   WindowsVista,
   Windows7,
   Windows8,
   Windows8_1,
   Windows10,
   RecentWindows10,
+  NotRecentWindows10,
   Linux,
   OSX,
   OSX10_5,
   OSX10_6,
   OSX10_7,
   OSX10_8,
   OSX10_9,
   OSX10_10,
--- a/widget/GfxInfoBase.cpp
+++ b/widget/GfxInfoBase.cpp
@@ -768,16 +768,24 @@ inline bool MatchingOperatingSystems(Ope
   if (aSystemOSBuild && aBlockedOS == OperatingSystem::RecentWindows10 &&
       aSystemOS == OperatingSystem::Windows10) {
     // For allowlist purposes, we sometimes want to restrict to only recent
     // versions of Windows 10. This is a bit of a kludge but easier than adding
     // complicated blocklist infrastructure for build ID comparisons like driver
     // versions.
     return aSystemOSBuild >= kMinWin10BuildNumber;
   }
+
+  if (aBlockedOS == OperatingSystem::NotRecentWindows10) {
+    if (aSystemOS == OperatingSystem::Windows10) {
+      return aSystemOSBuild < kMinWin10BuildNumber;
+    } else {
+      return true;
+    }
+  }
 #endif
 
 #if defined(XP_MACOSX)
   if (aBlockedOS == OperatingSystem::OSX) {
     // We do want even "unknown" aSystemOS to fall under "all OS X"
     return true;
   }
 #endif
--- a/widget/windows/GfxInfo.cpp
+++ b/widget/windows/GfxInfo.cpp
@@ -1863,21 +1863,44 @@ const nsTArray<GfxDriverInfo>& GfxInfo::
         DeviceFamily::IntelRolloutWebRender, nsIGfxInfo::FEATURE_WEBRENDER,
         nsIGfxInfo::FEATURE_ALLOW_QUALIFIED, DRIVER_COMPARISON_IGNORED,
         V(0, 0, 0, 0), "FEATURE_ROLLOUT_NIGHTLY_LISTED_INTEL");
 #endif
 
     ////////////////////////////////////
     // FEATURE_WEBRENDER_COMPOSITOR
 
+#ifndef EARLY_BETA_OR_EARLIER
+    // See also bug 161687
     APPEND_TO_DRIVER_BLOCKLIST2(
-        OperatingSystem::Windows10, DeviceFamily::IntelHD520,
+        OperatingSystem::Windows, DeviceFamily::IntelAll,
         nsIGfxInfo::FEATURE_WEBRENDER_COMPOSITOR,
         nsIGfxInfo::FEATURE_BLOCKED_DEVICE, DRIVER_LESS_THAN_OR_EQUAL,
         V(25, 20, 100, 6472), "FEATURE_FAILURE_BUG_1602511");
+
+    APPEND_TO_DRIVER_BLOCKLIST2(
+        OperatingSystem::Windows, DeviceFamily::AtiAll,
+        nsIGfxInfo::FEATURE_WEBRENDER_COMPOSITOR,
+        nsIGfxInfo::FEATURE_BLOCKED_DEVICE, DRIVER_EQUAL,
+        V(8, 17, 10, 1129), "FEATURE_FAILURE_CHROME_BUG_800950");
+
+    // Block all AMD for now
+    APPEND_TO_DRIVER_BLOCKLIST2(
+        OperatingSystem::Windows, DeviceFamily::AtiAll,
+        nsIGfxInfo::FEATURE_WEBRENDER_COMPOSITOR,
+        nsIGfxInfo::FEATURE_BLOCKED_DEVICE, DRIVER_COMPARISON_IGNORED,
+        V(0, 0, 0, 0), "FEATURE_FAILURE_ALL_AMD");
+
+    // Block all non-recent Win10
+    APPEND_TO_DRIVER_BLOCKLIST2(
+        OperatingSystem::NotRecentWindows10, DeviceFamily::All,
+        nsIGfxInfo::FEATURE_WEBRENDER_COMPOSITOR,
+        nsIGfxInfo::FEATURE_BLOCKED_OS_VERSION, DRIVER_COMPARISON_IGNORED,
+        V(0, 0, 0, 0), "FEATURE_FAILURE_NOT_RECENT_WIN10");
+#endif
   }
   return *sDriverInfo;
 }
 
 nsresult GfxInfo::GetFeatureStatusImpl(
     int32_t aFeature, int32_t* aStatus, nsAString& aSuggestedDriverVersion,
     const nsTArray<GfxDriverInfo>& aDriverInfo, nsACString& aFailureId,
     OperatingSystem* aOS /* = nullptr */) {