Skip to content

Commit 1c84e85

Browse files
committed
Driver workarounds (fix commented out bit)
1 parent c563b62 commit 1c84e85

File tree

1 file changed

+123
-0
lines changed

1 file changed

+123
-0
lines changed

widget/windows/GfxInfo.cpp

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,9 @@ uint32_t ParseIDFromDeviceID(const nsAString& key, const nsAString& prefix,
317317
// based on http://msdn.microsoft.com/en-us/library/ms724834(VS.85).aspx
318318
enum {
319319
kWindowsUnknown = 0,
320+
kWindowsXP = 0x50001,
321+
kWindowsServer2003 = 0x50002,
322+
kWindowsVista = 0x60000,
320323
kWindows7 = 0x60001,
321324
kWindows8 = 0x60002,
322325
kWindows8_1 = 0x60003,
@@ -1154,6 +1157,12 @@ void GfxInfo::AddCrashReportAnnotations() {
11541157
static OperatingSystem WindowsVersionToOperatingSystem(
11551158
int32_t aWindowsVersion) {
11561159
switch (aWindowsVersion) {
1160+
case kWindowsXP:
1161+
return OperatingSystem::WindowsXP;
1162+
case kWindowsServer2003:
1163+
return OperatingSystem::WindowsServer2003;
1164+
case kWindowsVista:
1165+
return OperatingSystem::WindowsVista;
11571166
case kWindows7:
11581167
return OperatingSystem::Windows7;
11591168
case kWindows8:
@@ -1211,6 +1220,12 @@ const nsTArray<GfxDriverInfo>& GfxInfo::GetGfxDriverInfo() {
12111220
/*
12121221
* NVIDIA entries
12131222
*/
1223+
APPEND_TO_DRIVER_BLOCKLIST(
1224+
OperatingSystem::WindowsXP, DeviceFamily::NvidiaAll,
1225+
GfxDriverInfo::optionalFeatures,
1226+
nsIGfxInfo::FEATURE_BLOCKED_DRIVER_VERSION, DRIVER_LESS_THAN_OR_EQUAL,
1227+
V(6, 14, 11, 8745), "FEATURE_FAILURE_NV_XP",
1228+
"nVidia driver > 187.45");
12141229
/*
12151230
* The last 5 digit of the NVIDIA driver version maps to the version that
12161231
* NVIDIA uses. The minor version (15, 16, 17) corresponds roughtly to the
@@ -1221,12 +1236,24 @@ const nsTArray<GfxDriverInfo>& GfxInfo::GetGfxDriverInfo() {
12211236
* 187.45 (late October 2009) and earlier contain a bug which can cause us
12221237
* to crash on shutdown.
12231238
*/
1239+
APPEND_TO_DRIVER_BLOCKLIST(
1240+
OperatingSystem::WindowsVista, DeviceFamily::NvidiaAll,
1241+
GfxDriverInfo::optionalFeatures,
1242+
nsIGfxInfo::FEATURE_BLOCKED_DRIVER_VERSION, DRIVER_LESS_THAN_OR_EQUAL,
1243+
V(8, 15, 11, 8745), "FEATURE_FAILURE_NV_VISTA_15",
1244+
"nVidia driver > 187.45");
12241245
APPEND_TO_DRIVER_BLOCKLIST(
12251246
OperatingSystem::Windows7, DeviceFamily::NvidiaAll,
12261247
GfxDriverInfo::optionalFeatures,
12271248
nsIGfxInfo::FEATURE_BLOCKED_DRIVER_VERSION, DRIVER_LESS_THAN_OR_EQUAL,
12281249
V(8, 15, 11, 8745), "FEATURE_FAILURE_NV_W7_15",
12291250
"nVidia driver > 187.45");
1251+
APPEND_TO_DRIVER_BLOCKLIST_RANGE(
1252+
OperatingSystem::WindowsVista, DeviceFamily::NvidiaAll,
1253+
GfxDriverInfo::optionalFeatures,
1254+
nsIGfxInfo::FEATURE_BLOCKED_DRIVER_VERSION,
1255+
DRIVER_BETWEEN_INCLUSIVE_START, V(8, 16, 10, 0000), V(8, 16, 11, 8745),
1256+
"FEATURE_FAILURE_NV_VISTA_16", "nVidia driver > 187.45");
12301257
APPEND_TO_DRIVER_BLOCKLIST_RANGE(
12311258
OperatingSystem::Windows7, DeviceFamily::NvidiaAll,
12321259
GfxDriverInfo::optionalFeatures,
@@ -1235,6 +1262,12 @@ const nsTArray<GfxDriverInfo>& GfxInfo::GetGfxDriverInfo() {
12351262
"FEATURE_FAILURE_NV_W7_16", "nVidia driver > 187.45");
12361263
// Telemetry doesn't show any driver in this range so it might not even be
12371264
// required.
1265+
APPEND_TO_DRIVER_BLOCKLIST_RANGE(
1266+
OperatingSystem::WindowsVista, DeviceFamily::NvidiaAll,
1267+
GfxDriverInfo::optionalFeatures,
1268+
nsIGfxInfo::FEATURE_BLOCKED_DRIVER_VERSION,
1269+
DRIVER_BETWEEN_INCLUSIVE_START, V(8, 17, 10, 0000), V(8, 17, 11, 8745),
1270+
"FEATURE_FAILURE_NV_VISTA_17", "nVidia driver > 187.45");
12381271
APPEND_TO_DRIVER_BLOCKLIST_RANGE(
12391272
OperatingSystem::Windows7, DeviceFamily::NvidiaAll,
12401273
GfxDriverInfo::optionalFeatures,
@@ -1361,6 +1394,25 @@ const nsTArray<GfxDriverInfo>& GfxInfo::GetGfxDriverInfo() {
13611394
nsIGfxInfo::FEATURE_BLOCKED_DRIVER_VERSION, \
13621395
DRIVER_BUILD_ID_LESS_THAN, driverVer, ruleId)
13631396

1397+
IMPLEMENT_INTEL_DRIVER_BLOCKLIST_D2D(OperatingSystem::WindowsVista,
1398+
DeviceFamily::IntelGMA500, 2026,
1399+
"FEATURE_FAILURE_594877_1");
1400+
IMPLEMENT_INTEL_DRIVER_BLOCKLIST_D2D(
1401+
OperatingSystem::WindowsVista, DeviceFamily::IntelGMA900,
1402+
GfxDriverInfo::allDriverVersions, "FEATURE_FAILURE_594877_2");
1403+
IMPLEMENT_INTEL_DRIVER_BLOCKLIST_D2D(OperatingSystem::WindowsVista,
1404+
DeviceFamily::IntelGMA950, 1930,
1405+
"FEATURE_FAILURE_594877_3");
1406+
IMPLEMENT_INTEL_DRIVER_BLOCKLIST_D2D(OperatingSystem::WindowsVista,
1407+
DeviceFamily::IntelGMA3150, 2117,
1408+
"FEATURE_FAILURE_594877_4");
1409+
IMPLEMENT_INTEL_DRIVER_BLOCKLIST_D2D(OperatingSystem::WindowsVista,
1410+
DeviceFamily::IntelGMAX3000, 1930,
1411+
"FEATURE_FAILURE_594877_5");
1412+
IMPLEMENT_INTEL_DRIVER_BLOCKLIST_D2D(
1413+
OperatingSystem::WindowsVista, DeviceFamily::IntelHDGraphicsToSandyBridge,
1414+
2202, "FEATURE_FAILURE_594877_6");
1415+
13641416
IMPLEMENT_INTEL_DRIVER_BLOCKLIST_D2D(OperatingSystem::Windows7,
13651417
DeviceFamily::IntelGMA500, 2026,
13661418
"FEATURE_FAILURE_594877_7");
@@ -1391,6 +1443,60 @@ const nsTArray<GfxDriverInfo>& GfxInfo::GetGfxDriverInfo() {
13911443
DRIVER_LESS_THAN, GfxDriverInfo::allDriverVersions,
13921444
"FEATURE_FAILURE_1180379");
13931445

1446+
IMPLEMENT_INTEL_DRIVER_BLOCKLIST(
1447+
OperatingSystem::WindowsXP, DeviceFamily::IntelGMA500, V(3,0,20,3200),
1448+
"FEATURE_FAILURE_INTEL_1");
1449+
IMPLEMENT_INTEL_DRIVER_BLOCKLIST(
1450+
OperatingSystem::WindowsXP, DeviceFamily::IntelGMA900,
1451+
GfxDriverInfo::allDriverVersions, "FEATURE_FAILURE_INTEL_2");
1452+
IMPLEMENT_INTEL_DRIVER_BLOCKLIST(
1453+
OperatingSystem::WindowsXP, DeviceFamily::IntelGMA950,
1454+
V(6, 14, 10, 4926), "FEATURE_FAILURE_INTEL_3");
1455+
IMPLEMENT_INTEL_DRIVER_BLOCKLIST(
1456+
OperatingSystem::WindowsXP, DeviceFamily::IntelGMA3150,
1457+
V(6, 14, 10, 5134), "FEATURE_FAILURE_INTEL_4");
1458+
IMPLEMENT_INTEL_DRIVER_BLOCKLIST(
1459+
OperatingSystem::WindowsXP, DeviceFamily::IntelGMAX3000,
1460+
V(6, 14, 10, 5218), "FEATURE_FAILURE_INTEL_5");
1461+
IMPLEMENT_INTEL_DRIVER_BLOCKLIST(
1462+
OperatingSystem::WindowsXP, DeviceFamily::IntelGMAX4500HD,
1463+
V(6, 14, 10, 4969), "FEATURE_FAILURE_INTEL_6");
1464+
IMPLEMENT_INTEL_DRIVER_BLOCKLIST(
1465+
OperatingSystem::WindowsXP, DeviceFamily::IntelHDGraphicsToSandyBridge,
1466+
V(6, 14, 10, 4969), "FEATURE_FAILURE_INTEL_7");
1467+
1468+
// StrechRect seems to suffer from precision issues which leads to artifacting
1469+
// during content drawing starting with at least version 6.14.10.5082
1470+
// and going until 6.14.10.5218. See bug 919454 and bug 949275 for more info.
1471+
APPEND_TO_DRIVER_BLOCKLIST_RANGE(
1472+
OperatingSystem::WindowsXP, DeviceFamily::IntelGMAX4500HD,
1473+
GfxDriverInfo::optionalFeatures,
1474+
nsIGfxInfo::FEATURE_BLOCKED_DRIVER_VERSION,
1475+
DRIVER_BETWEEN_EXCLUSIVE, V(6, 14, 10, 5076), V(6, 14, 10, 5218),
1476+
"FEATURE_FAILURE_INTEL_8", "6.14.10.5218");
1477+
1478+
IMPLEMENT_INTEL_DRIVER_BLOCKLIST(
1479+
OperatingSystem::WindowsVista, DeviceFamily::IntelGMA500, V(3, 0, 20, 3200),
1480+
"FEATURE_FAILURE_INTEL_9");
1481+
IMPLEMENT_INTEL_DRIVER_BLOCKLIST(
1482+
OperatingSystem::WindowsVista, DeviceFamily::IntelGMA900,
1483+
GfxDriverInfo::allDriverVersions, "FEATURE_FAILURE_INTEL_10");
1484+
IMPLEMENT_INTEL_DRIVER_BLOCKLIST(
1485+
OperatingSystem::WindowsVista, DeviceFamily::IntelGMA950,
1486+
V(7, 14, 10, 1504), "FEATURE_FAILURE_INTEL_11");
1487+
IMPLEMENT_INTEL_DRIVER_BLOCKLIST(
1488+
OperatingSystem::WindowsVista, DeviceFamily::IntelGMA3150,
1489+
V(7, 14, 10, 1910), "FEATURE_FAILURE_INTEL_12");
1490+
IMPLEMENT_INTEL_DRIVER_BLOCKLIST(
1491+
OperatingSystem::WindowsVista, DeviceFamily::IntelGMAX3000,
1492+
V(7, 15, 10, 1666), "FEATURE_FAILURE_INTEL_13");
1493+
IMPLEMENT_INTEL_DRIVER_BLOCKLIST(
1494+
OperatingSystem::WindowsVista, DeviceFamily::IntelGMAX4500HD,
1495+
V(7, 15, 10, 1666), "FEATURE_FAILURE_INTEL_14");
1496+
IMPLEMENT_INTEL_DRIVER_BLOCKLIST(
1497+
OperatingSystem::WindowsVista, DeviceFamily::IntelHDGraphicsToSandyBridge,
1498+
V(7, 15, 10, 1666), "FEATURE_FAILURE_INTEL_15");
1499+
13941500
IMPLEMENT_INTEL_DRIVER_BLOCKLIST(
13951501
OperatingSystem::Windows7, DeviceFamily::IntelGMA500, V(5, 0, 0, 2026),
13961502
"FEATURE_FAILURE_INTEL_16");
@@ -2002,6 +2108,23 @@ nsresult GfxInfo::GetFeatureStatusImpl(
20022108
}
20032109
}
20042110

2111+
/* // special-case the WinXP test slaves: they have out-of-date drivers, but we still want to
2112+
// whitelist them, actually we do know that this combination of device and driver version
2113+
// works well.
2114+
if (mWindowsVersion == kWindowsXP &&
2115+
adapterVendorID.Equals(GfxDriverInfo::GetDeviceVendor(VendorNVIDIA), nsCaseInsensitiveStringComparator()) &&
2116+
adapterDeviceID.LowerCaseEqualsLiteral("0x0861") && // GeForce 9400
2117+
driverVersion == V(6,14,11,7756))
2118+
{
2119+
*aStatus = FEATURE_STATUS_OK;
2120+
return NS_OK;
2121+
}
2122+
*/
2123+
// Windows Server 2003 should be just like Windows XP for present purpose, but still has a different version number.
2124+
// OTOH Windows Server 2008 R1 and R2 already have the same version numbers as Vista and Seven respectively
2125+
if (os == OperatingSystem::WindowsServer2003)
2126+
os = OperatingSystem::WindowsXP;
2127+
20052128
return GfxInfoBase::GetFeatureStatusImpl(
20062129
aFeature, aStatus, aSuggestedDriverVersion, aDriverInfo, aFailureId, &os);
20072130
}

0 commit comments

Comments
 (0)