summaryrefslogtreecommitdiff
path: root/chromium/gpu/config
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/gpu/config')
-rw-r--r--chromium/gpu/config/gpu_blocklist_unittest.cc6
-rw-r--r--chromium/gpu/config/gpu_control_list.cc65
-rw-r--r--chromium/gpu/config/gpu_control_list.h13
-rw-r--r--chromium/gpu/config/gpu_control_list_entry_unittest.cc34
-rw-r--r--chromium/gpu/config/gpu_control_list_format.txt78
-rw-r--r--chromium/gpu/config/gpu_control_list_testing.json41
-rw-r--r--chromium/gpu/config/gpu_control_list_testing_arrays_and_structs_autogen.h171
-rw-r--r--chromium/gpu/config/gpu_control_list_testing_autogen.cc524
-rw-r--r--chromium/gpu/config/gpu_control_list_testing_entry_enums_autogen.h2
-rw-r--r--chromium/gpu/config/gpu_control_list_testing_exceptions_autogen.h91
-rw-r--r--chromium/gpu/config/gpu_control_list_version_unittest.cc48
-rw-r--r--chromium/gpu/config/gpu_driver_bug_list.json71
-rw-r--r--chromium/gpu/config/gpu_finch_features.cc6
-rw-r--r--chromium/gpu/config/gpu_finch_features.h2
-rw-r--r--chromium/gpu/config/gpu_info.cc23
-rw-r--r--chromium/gpu/config/gpu_info.h46
-rw-r--r--chromium/gpu/config/gpu_info_collector.cc9
-rw-r--r--chromium/gpu/config/gpu_info_collector.h10
-rw-r--r--chromium/gpu/config/gpu_info_collector_win.cc204
-rw-r--r--chromium/gpu/config/gpu_info_unittest.cc15
-rw-r--r--chromium/gpu/config/gpu_lists_version.h2
-rw-r--r--chromium/gpu/config/gpu_preferences_unittest.cc85
-rw-r--r--chromium/gpu/config/gpu_switches.cc2
-rw-r--r--chromium/gpu/config/gpu_util.cc40
-rw-r--r--chromium/gpu/config/gpu_util.h14
-rw-r--r--chromium/gpu/config/gpu_workaround_list.txt5
-rwxr-xr-xchromium/gpu/config/process_json.py113
-rw-r--r--chromium/gpu/config/software_rendering_list.json63
28 files changed, 1225 insertions, 558 deletions
diff --git a/chromium/gpu/config/gpu_blocklist_unittest.cc b/chromium/gpu/config/gpu_blocklist_unittest.cc
index 68428cee88a..4f1df7a10ea 100644
--- a/chromium/gpu/config/gpu_blocklist_unittest.cc
+++ b/chromium/gpu/config/gpu_blocklist_unittest.cc
@@ -20,7 +20,7 @@ class GpuBlocklistTest : public testing::Test {
void RunFeatureTest(GpuFeatureType feature_type) {
const int kFeatureListForEntry1[1] = {feature_type};
- const uint32_t kDeviceIDsForEntry1[1] = {0x0640};
+ const GpuControlList::Device kDevicesForEntry1[1] = {{0x0640, 0x0}};
const GpuControlList::Entry kTestEntries[1] = {{
1, // id
"Test entry", // description
@@ -38,8 +38,8 @@ class GpuBlocklistTest : public testing::Test {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x10de, // vendor_id
- 1, // DeviceIDs size
- kDeviceIDsForEntry1, // DeviceIDs
+ 1, // Devices size
+ kDevicesForEntry1, // Devices
GpuControlList::kMultiGpuCategoryAny, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
diff --git a/chromium/gpu/config/gpu_control_list.cc b/chromium/gpu/config/gpu_control_list.cc
index b59016f27ee..f2a193025d7 100644
--- a/chromium/gpu/config/gpu_control_list.cc
+++ b/chromium/gpu/config/gpu_control_list.cc
@@ -7,6 +7,7 @@
#include <utility>
#include "base/logging.h"
+#include "base/notreached.h"
#include "base/numerics/safe_conversions.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_split.h"
@@ -159,6 +160,33 @@ bool GpuControlList::Version::Contains(const std::string& version_string,
if (op == kBetween)
ref_version2.erase(ref_version2.begin());
}
+ } else if (schema == kVersionSchemaNvidiaDriver) {
+ // The driver version we get from the os is "XX.XX.XXXA.BBCC", while the
+ // workaround is of the form "ABB.CC". Drop the first two stanzas from the
+ // detected version, erase all but the last character of the third, and move
+ // "B" to the previous stanza.
+ if (version.size() != 4)
+ return false;
+ // Remember that the detected version might not have leading zeros, so we
+ // have to be a bit careful. [2] is of the form "001A", where A > 0, so we
+ // just care that there's at least one digit. However, if there's less than
+ // that, the splitter stops anyway on that stanza, and the check for four
+ // stanzas will fail instead.
+ version.erase(version.begin(), version.begin() + 2);
+ version[0].erase(0, version[0].length() - 1);
+ // The last stanza may be missing leading zeros, so handle them.
+ if (version[1].length() < 3) {
+ // Two or more removed leading zeros, so BB are both zero.
+ version[0] += "00";
+ } else if (version[1].length() < 4) {
+ // One removed leading zero. BB is 0[1-9].
+ version[0] += "0" + version[1].substr(0, 1);
+ version[1].erase(0, 1);
+ } else {
+ // No leading zeros.
+ version[0] += version[1].substr(0, 2);
+ version[1].erase(0, 2);
+ }
}
int relation = Version::Compare(version, ref_version1, style);
switch (op) {
@@ -418,9 +446,9 @@ bool GpuControlList::Conditions::Contains(OsType target_os_type,
}
}
} else if (intel_gpu_generation.IsSpecified()) {
- for (size_t ii = 0; ii < candidates.size(); ++ii) {
- std::string candidate_generation = GetIntelGpuGeneration(
- candidates[ii].vendor_id, candidates[ii].device_id);
+ for (auto& candidate : candidates) {
+ std::string candidate_generation =
+ GetIntelGpuGeneration(candidate.vendor_id, candidate.device_id);
if (candidate_generation.empty())
continue;
if (intel_gpu_generation.Contains(candidate_generation)) {
@@ -429,24 +457,29 @@ bool GpuControlList::Conditions::Contains(OsType target_os_type,
}
}
} else {
- GPUInfo::GPUDevice gpu;
- gpu.vendor_id = vendor_id;
- if (device_id_size == 0) {
- for (size_t ii = 0; ii < candidates.size(); ++ii) {
- if (gpu.vendor_id == candidates[ii].vendor_id) {
+ if (device_size == 0) {
+ for (auto& candidate : candidates) {
+ if (vendor_id == candidate.vendor_id) {
found = true;
break;
}
}
} else {
- for (size_t ii = 0; ii < device_id_size; ++ii) {
- gpu.device_id = device_ids[ii];
- for (size_t jj = 0; jj < candidates.size(); ++jj) {
- if (gpu.vendor_id == candidates[jj].vendor_id &&
- gpu.device_id == candidates[jj].device_id) {
- found = true;
- break;
- }
+ for (size_t ii = 0; !found && ii < device_size; ++ii) {
+ uint32_t device_id = devices[ii].device_id;
+#if defined(OS_WIN)
+ uint32_t revision = devices[ii].revision;
+#endif // OS_WIN
+ for (auto& candidate : candidates) {
+ if (vendor_id != candidate.vendor_id ||
+ device_id != candidate.device_id)
+ continue;
+#if defined(OS_WIN)
+ if (revision && revision != candidate.revision)
+ continue;
+#endif // OS_WIN
+ found = true;
+ break;
}
}
}
diff --git a/chromium/gpu/config/gpu_control_list.h b/chromium/gpu/config/gpu_control_list.h
index 0820fa38738..9c6077b7ef4 100644
--- a/chromium/gpu/config/gpu_control_list.h
+++ b/chromium/gpu/config/gpu_control_list.h
@@ -92,6 +92,10 @@ class GPU_EXPORT GpuControlList {
// DDDD(old schema) or CCC.DDDD(new schema) is the build number.
// That is, indicates the actual driver number.
kVersionSchemaIntelDriver,
+ // The version format of Nvidia drivers is XX.XX.XXXA.AAAA where the X's
+ // can be any digits, and the A's are the actual version. The workaround
+ // list specifies them as AAA.AA to match how Nvidia publishes them.
+ kVersionSchemaNvidiaDriver,
};
enum SupportedOrNot {
@@ -181,12 +185,17 @@ class GPU_EXPORT GpuControlList {
static GLType GetDefaultGLType();
};
+ struct GPU_EXPORT Device {
+ uint32_t device_id;
+ uint32_t revision = 0u;
+ };
+
struct GPU_EXPORT Conditions {
OsType os_type;
Version os_version;
uint32_t vendor_id;
- size_t device_id_size;
- const uint32_t* device_ids;
+ size_t device_size;
+ const Device* devices;
MultiGpuCategory multi_gpu_category;
MultiGpuStyle multi_gpu_style;
const DriverInfo* driver_info;
diff --git a/chromium/gpu/config/gpu_control_list_entry_unittest.cc b/chromium/gpu/config/gpu_control_list_entry_unittest.cc
index 176081710c9..4ff35708d33 100644
--- a/chromium/gpu/config/gpu_control_list_entry_unittest.cc
+++ b/chromium/gpu/config/gpu_control_list_entry_unittest.cc
@@ -1156,4 +1156,38 @@ TEST_F(GpuControlListEntryTest, IntelOldDriverVersionEntry) {
EXPECT_TRUE(entry.Contains(kOsWin, "", gpu_info));
}
+#if defined(OS_WIN)
+TEST_F(GpuControlListEntryTest, DeviceRevisionEntry) {
+ const Entry& entry = GetEntry(kGpuControlListEntryTest_DeviceRevisionEntry);
+ GPUInfo gpu_info;
+ gpu_info.gpu.vendor_id = 0x1002;
+ gpu_info.gpu.device_id = 0x15DD;
+ gpu_info.gpu.revision = 0x86;
+ gpu_info.gpu.driver_version = "26.20.12055.1000";
+ EXPECT_TRUE(entry.Contains(kOsWin, "", gpu_info));
+ gpu_info.gpu.driver_version = "26.20.15023.6032";
+ EXPECT_FALSE(entry.Contains(kOsWin, "", gpu_info));
+ gpu_info.gpu.device_id = 0x15D8;
+ gpu_info.gpu.revision = 0xE1;
+ gpu_info.gpu.driver_version = "26.20.12055.1000";
+ EXPECT_FALSE(entry.Contains(kOsWin, "", gpu_info));
+ gpu_info.gpu.revision = 0xE3;
+ EXPECT_TRUE(entry.Contains(kOsWin, "", gpu_info));
+}
+
+TEST_F(GpuControlListEntryTest, DeviceRevisionUnspecifiedEntry) {
+ const Entry& entry =
+ GetEntry(kGpuControlListEntryTest_DeviceRevisionUnspecifiedEntry);
+ GPUInfo gpu_info;
+ gpu_info.gpu.vendor_id = 0x1002;
+ gpu_info.gpu.device_id = 0x15DD;
+ gpu_info.gpu.revision = 0x86;
+ EXPECT_TRUE(entry.Contains(kOsWin, "", gpu_info));
+ gpu_info.gpu.revision = 0x91;
+ EXPECT_TRUE(entry.Contains(kOsWin, "", gpu_info));
+ gpu_info.gpu.revision = 0x0;
+ EXPECT_TRUE(entry.Contains(kOsWin, "", gpu_info));
+}
+#endif // OS_WIN
+
} // namespace gpu
diff --git a/chromium/gpu/config/gpu_control_list_format.txt b/chromium/gpu/config/gpu_control_list_format.txt
index 6def629c495..1ff95688f54 100644
--- a/chromium/gpu/config/gpu_control_list_format.txt
+++ b/chromium/gpu/config/gpu_control_list_format.txt
@@ -22,69 +22,75 @@
// "os".
// "version" is a VERSION structure (defined below).
// 3. "vendor_id" is a string. 0 is reserved.
-// 4. "device_id" is an array of strings. 0 is reserved.
-// 5. "multi_gpu_style" is a string, valid values include:
+// 4. "device_id" is an array of strings. 0 is reserved
+// 5. "device_revision" is an array of strings. Default is 0. This is Windows
+// only. There are three ways to specify a device on Windows:
+// a) only specify device IDs;
+// b) specify one device ID, associate with multiple revisions;
+// c) specify k device IDs, associate with k device revisions.
+// https://docs.microsoft.com/en-us/windows-hardware/drivers/install/identifiers-for-pci-devices
+// 6. "multi_gpu_style" is a string, valid values include:
// a) "optimus": NVIDIA dual GPU
// b) "amd_switchable": AMD dual GPU
// c) "amd_switchable_integrated": AMD dual GPU, integrated GPU is active
// d) "amd_switchable_discrete": AMD dual GPU, discrete GPU is active
// c) and d) are only valid on Win, as on Mac we can switch GPU on the fly.
-// 6. "multi_gpu_category" is a string, valid values include "any", "primary",
+// 7. "multi_gpu_category" is a string, valid values include "any", "primary",
// "secondary", and "active". If unspecified, the default value is "active".
// See gpu_control_list.h for more details on the meanings of the strings.
-// 7. "driver_vendor" is a string pattern. (Not available on Windows)
-// 8. "driver_version" is a VERSION structure (defined below). On Windows
+// 8. "driver_vendor" is a string pattern. (Not available on Windows)
+// 9. "driver_version" is a VERSION structure (defined below). On Windows
// this value can be retrieved by searching for the "Driver File Version" in
// dxdiag.txt
-// 9. "gl_type" is a string, valid values include "gl", "gles", and "angle".
+// 10. "gl_type" is a string, valid values include "gl", "gles", and "angle".
// If "gl_version" is specified and "gl_type" is not, use the default value.
// The default value on Android is "gles", on Windows is "angle", on other
// platforms is "gl".
-// 10. "gl_version" is a VERSION structure (defined below).
-// 11. "gl_vendor" is a string pattern.
-// 12. "gl_renderer" is a string pattern.
-// 13. "gl_extensions" is a string pattern.
-// 14. "machine_model_name" is an array of string patterns.
-// 15. "machine_model_version" is a VERSION structure (defined below).
-// 16. "gpu_count" is a INT structure (defined below).
-// 17. "cpu_info" is a string pattern.
-// 18. "exceptions" is a list of entries.
-// 19. "features" is a list of gpu control list options, which can be
+// 11. "gl_version" is a VERSION structure (defined below).
+// 12. "gl_vendor" is a string pattern.
+// 13. "gl_renderer" is a string pattern.
+// 14. "gl_extensions" is a string pattern.
+// 15. "machine_model_name" is an array of string patterns.
+// 16. "machine_model_version" is a VERSION structure (defined below).
+// 17. "gpu_count" is a INT structure (defined below).
+// 18. "cpu_info" is a string pattern.
+// 19. "exceptions" is a list of entries.
+// 20. "features" is a list of gpu control list options, which can be
// configured by a specific list. See its *_json.cc file for a list of
// supported features. This field is mandatory.
// An "exceptions" list to the features can be added for convenience instead
// of listing all features except one.
-// 20. "description" has the description of the entry.
-// 21. "webkit_bugs" is an array of associated webkit bug numbers.
-// 22. "cr_bugs" is an array of associated webkit bug numbers.
-// 23. "disabled" is a boolean. If it is present, the entry will be skipped.
+// 21. "description" has the description of the entry.
+// 22. "webkit_bugs" is an array of associated webkit bug numbers.
+// 23. "cr_bugs" is an array of associated webkit bug numbers.
+// 24. "disabled" is a boolean. If it is present, the entry will be skipped.
// This can not be used in exceptions.
-// 24. "direct_rendering" is a boolean. If present, this will filter on whether
+// 25. "direct_rendering" is a boolean. If present, this will filter on whether
// the GL contexts are direct or indirect based on the value.
-// 25. "disabled_extensions" is a list of strings which contain the GL_EXTENSION
+// 26. "disabled_extensions" is a list of strings which contain the GL_EXTENSION
// strings which are disabled by the workaround.
-// 26. "pixel_shader_version" is a VERSION structure (defined below).
-// 27. "test_group" is an non-negative integer. If not specified, it defaults
+// 27. "pixel_shader_version" is a VERSION structure (defined below).
+// 28. "test_group" is an non-negative integer. If not specified, it defaults
// to 0, which is Chrome's blacklist. Any entries with a non-zero test_group
// ID will be appended on top of the default group entries if Chrome runs
// with --gpu-blacklist-test-group=ID.
-// 28. "intel_gpu_series" is a list of gpu series names. Currently supported
+// 29. "intel_gpu_series" is a list of gpu series names. Currently supported
// series include: "broadwater", "eaglelake", "ironlake", "sandybridge",
// "baytrail", "ivybridge", "haswell", "cherrytrail", "broadwell",
// "apollolake", "skylake", "geminilake", "kabylake", "coffeelake",
// "whiskeylake", "cometlake", "cannonlake", "icelake", "elkhartlake",
// "jasperlake", "tigerlake".
-// 29. "hardware_overlay" is either "supported" or "unsupported". Currently it
+// 30. "hardware_overlay" is either "supported" or "unsupported". Currently it
// only applies on Windows where hardware overlays may be supported on
// certain Intel GPUs. By default it's "dont_care" and there is no need to
// specify that.
-// 30. "intel_gpu_generation" is a VERSION structure. Each Intel GPU has a
+// 31. "intel_gpu_generation" is a VERSION structure. Each Intel GPU has a
// specific integer (meaning generation) associated.
-// 31. "subpixel_font_rendering" is either "supported" or "unsupported".
+// 32. "subpixel_font_rendering" is either "supported" or "unsupported".
// Currently it only applies on ChromeOS where subpixel font rendering
// causes a glitch on Mali GPUs. By default it's "dont_care" and there is
// no need to specify that.
-// 32. "driver_update_link" provides a link where affected users with older
+// 33. "driver_update_link" provides a link where affected users with older
// drivers can download a newer driver to avoid triggering this entry.
// Such link will be displayed in chrome://gpu for affected devices.
//
@@ -92,15 +98,15 @@
// be any of the following values: "=", "<", "<=", ">", ">=", "any", "between".
// "style" is optional and can be "lexical" or "numerical"; if it's not
// specified, it defaults to "numerical". "schema" is optional and can be
-// "common" or "intel_driver"; if it's not specified, it defaults to "common";
-// it's an error to specify "intel_driver" schema for entries that are not
-// specifically for Intel GPUs on Windows. "value2" is only used if "op" is
-// "between". "between" is "value <= * <= value2". "value" is used for all "op"
-// values except "any". "value" and "value2" are in the format of x, x.x,
-// x.x.x, etc.
+// "common", "intel_driver" or "nvidia_driver"; if it's not specified, it
+// defaults to "common"; it's an error to specify "(intel|nvidia)_driver" schema
+// for entries that are not specifically for Intel|Nvidia GPUs on Windows.
+// "value2" is only used if "op" is "between". "between" is
+// "value <= * <= value2". "value" is used for all "op" values except "any".
+// "value" and "value2" are in the format of x, x.x, x.x.x, etc.
// Only "driver_version" supports lexical style if the format is major.minor;
// in that case, major is still numerical, but minor is lexical.
-// Only "driver_version" supports "intel_driver" schema.
+// Only "driver_version" supports "(intel|nvidia)_driver" schema.
//
// FLOAT includes "op" "value", and "value2". "op" can be any of the
// following values: "=", "<", "<=", ">", ">=", "any", "between". "value2" is
diff --git a/chromium/gpu/config/gpu_control_list_testing.json b/chromium/gpu/config/gpu_control_list_testing.json
index ac413f1f2d2..f89624c144d 100644
--- a/chromium/gpu/config/gpu_control_list_testing.json
+++ b/chromium/gpu/config/gpu_control_list_testing.json
@@ -948,6 +948,47 @@
"features": [
"test_feature_0"
]
+ },
+ {
+ "id": 78,
+ "description": "GpuControlListEntryTest.DeviceRevisionEntry",
+ "os": {
+ "type": "win"
+ },
+ "vendor_id": "0x1002",
+ "exceptions": [
+ {
+ "device_id": ["0x15D8", "0x15DD"],
+ "device_revision": ["0x93", "0x86"],
+ "driver_version": {
+ "op": ">=",
+ "value": "26.20.15023.6032"
+ }
+ },
+ {
+ "device_id": ["0x15D8"],
+ "device_revision": ["0xE1", "0xE2"],
+ "driver_version": {
+ "op": ">=",
+ "value": "26.20.12055.1000"
+ }
+ }
+ ],
+ "features": [
+ "test_feature_0"
+ ]
+ },
+ {
+ "id": 79,
+ "description": "GpuControlListEntryTest.DeviceRevisionUnspecifiedEntry",
+ "os": {
+ "type": "win"
+ },
+ "vendor_id": "0x1002",
+ "device_id": ["0x15D8", "0x15DD"],
+ "features": [
+ "test_feature_0"
+ ]
}
]
}
diff --git a/chromium/gpu/config/gpu_control_list_testing_arrays_and_structs_autogen.h b/chromium/gpu/config/gpu_control_list_testing_arrays_and_structs_autogen.h
index 88b02cebb2a..acac88bd71c 100644
--- a/chromium/gpu/config/gpu_control_list_testing_arrays_and_structs_autogen.h
+++ b/chromium/gpu/config/gpu_control_list_testing_arrays_and_structs_autogen.h
@@ -28,8 +28,8 @@ const uint32_t kCrBugsForGpuControlTestingEntry1[2] = {
678,
};
-const uint32_t kDeviceIDsForGpuControlTestingEntry1[1] = {
- 0x0640,
+const GpuControlList::Device kDevicesForGpuControlTestingEntry1[1] = {
+ {0x0640, 0x0},
};
const GpuControlList::DriverInfo kDriverInfoForGpuControlTestingEntry1 = {
@@ -192,9 +192,9 @@ const int kFeatureListForGpuControlTestingEntry6[1] = {
TEST_FEATURE_0,
};
-const uint32_t kDeviceIDsForGpuControlTestingEntry6[2] = {
- 0x1023,
- 0x0640,
+const GpuControlList::Device kDevicesForGpuControlTestingEntry6[2] = {
+ {0x1023, 0x0},
+ {0x0640, 0x0},
};
const GpuControlList::More kMoreForEntry6_1440601243 = {
@@ -718,8 +718,8 @@ const int kFeatureListForGpuControlTestingEntry25[1] = {
TEST_FEATURE_0,
};
-const uint32_t kDeviceIDsForGpuControlTestingEntry25[1] = {
- 0x0640,
+const GpuControlList::Device kDevicesForGpuControlTestingEntry25[1] = {
+ {0x0640, 0x0},
};
const GpuControlList::More kMoreForEntry25_1440601243 = {
@@ -935,8 +935,8 @@ const int kFeatureListForGpuControlTestingEntry30[1] = {
TEST_FEATURE_0,
};
-const uint32_t kDeviceIDsForGpuControlTestingEntry30[1] = {
- 0x0166,
+const GpuControlList::Device kDevicesForGpuControlTestingEntry30[1] = {
+ {0x0166, 0x0},
};
const GpuControlList::More kMoreForEntry30_1440601243 = {
@@ -962,8 +962,8 @@ const int kFeatureListForGpuControlTestingEntry31[1] = {
TEST_FEATURE_0,
};
-const uint32_t kDeviceIDsForGpuControlTestingEntry31[1] = {
- 0x0640,
+const GpuControlList::Device kDevicesForGpuControlTestingEntry31[1] = {
+ {0x0640, 0x0},
};
const GpuControlList::More kMoreForEntry31_1440601243 = {
@@ -989,8 +989,8 @@ const int kFeatureListForGpuControlTestingEntry32[1] = {
TEST_FEATURE_0,
};
-const uint32_t kDeviceIDsForGpuControlTestingEntry32[1] = {
- 0x0166,
+const GpuControlList::Device kDevicesForGpuControlTestingEntry32[1] = {
+ {0x0166, 0x0},
};
const GpuControlList::More kMoreForEntry32_1440601243 = {
@@ -1016,8 +1016,8 @@ const int kFeatureListForGpuControlTestingEntry33[1] = {
TEST_FEATURE_0,
};
-const uint32_t kDeviceIDsForGpuControlTestingEntry33[1] = {
- 0x0166,
+const GpuControlList::Device kDevicesForGpuControlTestingEntry33[1] = {
+ {0x0166, 0x0},
};
const GpuControlList::More kMoreForEntry33_1440601243 = {
@@ -1043,8 +1043,8 @@ const int kFeatureListForGpuControlTestingEntry34[1] = {
TEST_FEATURE_0,
};
-const uint32_t kDeviceIDsForGpuControlTestingEntry34[1] = {
- 0x0166,
+const GpuControlList::Device kDevicesForGpuControlTestingEntry34[1] = {
+ {0x0166, 0x0},
};
const GpuControlList::More kMoreForEntry34_1440601243 = {
@@ -1070,9 +1070,9 @@ const int kFeatureListForGpuControlTestingEntry35[1] = {
TEST_FEATURE_0,
};
-const uint32_t kDeviceIDsForGpuControlTestingEntry35[2] = {
- 0x0166,
- 0x0168,
+const GpuControlList::Device kDevicesForGpuControlTestingEntry35[2] = {
+ {0x0166, 0x0},
+ {0x0168, 0x0},
};
const GpuControlList::More kMoreForEntry35_1440601243 = {
@@ -1121,8 +1121,8 @@ const int kFeatureListForGpuControlTestingEntry37[1] = {
TEST_FEATURE_0,
};
-const uint32_t kDeviceIDsForGpuControlTestingEntry37[1] = {
- 0x0640,
+const GpuControlList::Device kDevicesForGpuControlTestingEntry37[1] = {
+ {0x0640, 0x0},
};
const GpuControlList::More kMoreForEntry37_1440601243 = {
@@ -1305,8 +1305,9 @@ const GpuControlList::More kMoreForEntry44_1440601243 = {
GpuControlList::kDontCare, // subpixel_font_rendering
};
-const uint32_t kDeviceIDsForGpuControlTestingEntry44Exception0[1] = {
- 0x2a06,
+const GpuControlList::Device kDevicesForGpuControlTestingEntry44Exception0[1] =
+ {
+ {0x2a06, 0x0},
};
const GpuControlList::DriverInfo
@@ -1336,8 +1337,9 @@ const GpuControlList::More kMoreForEntry44_1440601243Exception0 = {
GpuControlList::kDontCare, // subpixel_font_rendering
};
-const uint32_t kDeviceIDsForGpuControlTestingEntry44Exception1[1] = {
- 0x2a02,
+const GpuControlList::Device kDevicesForGpuControlTestingEntry44Exception1[1] =
+ {
+ {0x2a02, 0x0},
};
const GpuControlList::DriverInfo
@@ -2334,6 +2336,123 @@ const GpuControlList::More kMoreForEntry77_1440601243 = {
GpuControlList::kDontCare, // subpixel_font_rendering
};
+const int kFeatureListForGpuControlTestingEntry78[1] = {
+ TEST_FEATURE_0,
+};
+
+const GpuControlList::More kMoreForEntry78_1440601243 = {
+ GpuControlList::kGLTypeNone, // gl_type
+ {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+ GpuControlList::kVersionSchemaCommon, nullptr, nullptr}, // gl_version
+ {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+ GpuControlList::kVersionSchemaCommon, nullptr,
+ nullptr}, // pixel_shader_version
+ false, // in_process_gpu
+ 0, // gl_reset_notification_strategy
+ {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+ GpuControlList::kVersionSchemaCommon, nullptr,
+ nullptr}, // direct_rendering_version
+ {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+ GpuControlList::kVersionSchemaCommon, nullptr, nullptr}, // gpu_count
+ GpuControlList::kDontCare, // hardware_overlay
+ 0, // test_group
+ GpuControlList::kDontCare, // subpixel_font_rendering
+};
+
+const GpuControlList::Device kDevicesForGpuControlTestingEntry78Exception0[2] =
+ {
+ {0x15D8, 0x93},
+ {0x15DD, 0x86},
+};
+
+const GpuControlList::DriverInfo
+ kDriverInfoForGpuControlTestingEntry78Exception0 = {
+ nullptr, // driver_vendor
+ {GpuControlList::kGE, GpuControlList::kVersionStyleNumerical,
+ GpuControlList::kVersionSchemaCommon, "26.20.15023.6032",
+ nullptr}, // driver_version
+};
+
+const GpuControlList::More kMoreForEntry78_1440601243Exception0 = {
+ GpuControlList::kGLTypeNone, // gl_type
+ {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+ GpuControlList::kVersionSchemaCommon, nullptr, nullptr}, // gl_version
+ {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+ GpuControlList::kVersionSchemaCommon, nullptr,
+ nullptr}, // pixel_shader_version
+ false, // in_process_gpu
+ 0, // gl_reset_notification_strategy
+ {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+ GpuControlList::kVersionSchemaCommon, nullptr,
+ nullptr}, // direct_rendering_version
+ {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+ GpuControlList::kVersionSchemaCommon, nullptr, nullptr}, // gpu_count
+ GpuControlList::kDontCare, // hardware_overlay
+ 0, // test_group
+ GpuControlList::kDontCare, // subpixel_font_rendering
+};
+
+const GpuControlList::Device kDevicesForGpuControlTestingEntry78Exception1[2] =
+ {
+ {0x15D8, 0xE1},
+ {0x15D8, 0xE2},
+};
+
+const GpuControlList::DriverInfo
+ kDriverInfoForGpuControlTestingEntry78Exception1 = {
+ nullptr, // driver_vendor
+ {GpuControlList::kGE, GpuControlList::kVersionStyleNumerical,
+ GpuControlList::kVersionSchemaCommon, "26.20.12055.1000",
+ nullptr}, // driver_version
+};
+
+const GpuControlList::More kMoreForEntry78_1440601243Exception1 = {
+ GpuControlList::kGLTypeNone, // gl_type
+ {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+ GpuControlList::kVersionSchemaCommon, nullptr, nullptr}, // gl_version
+ {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+ GpuControlList::kVersionSchemaCommon, nullptr,
+ nullptr}, // pixel_shader_version
+ false, // in_process_gpu
+ 0, // gl_reset_notification_strategy
+ {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+ GpuControlList::kVersionSchemaCommon, nullptr,
+ nullptr}, // direct_rendering_version
+ {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+ GpuControlList::kVersionSchemaCommon, nullptr, nullptr}, // gpu_count
+ GpuControlList::kDontCare, // hardware_overlay
+ 0, // test_group
+ GpuControlList::kDontCare, // subpixel_font_rendering
+};
+
+const int kFeatureListForGpuControlTestingEntry79[1] = {
+ TEST_FEATURE_0,
+};
+
+const GpuControlList::Device kDevicesForGpuControlTestingEntry79[2] = {
+ {0x15D8, 0x0},
+ {0x15DD, 0x0},
+};
+
+const GpuControlList::More kMoreForEntry79_1440601243 = {
+ GpuControlList::kGLTypeNone, // gl_type
+ {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+ GpuControlList::kVersionSchemaCommon, nullptr, nullptr}, // gl_version
+ {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+ GpuControlList::kVersionSchemaCommon, nullptr,
+ nullptr}, // pixel_shader_version
+ false, // in_process_gpu
+ 0, // gl_reset_notification_strategy
+ {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+ GpuControlList::kVersionSchemaCommon, nullptr,
+ nullptr}, // direct_rendering_version
+ {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+ GpuControlList::kVersionSchemaCommon, nullptr, nullptr}, // gpu_count
+ GpuControlList::kDontCare, // hardware_overlay
+ 0, // test_group
+ GpuControlList::kDontCare, // subpixel_font_rendering
+};
+
} // namespace gpu
#endif // GPU_CONFIG_GPU_CONTROL_LIST_TESTING_ARRAYS_AND_STRUCTS_AUTOGEN_H_
diff --git a/chromium/gpu/config/gpu_control_list_testing_autogen.cc b/chromium/gpu/config/gpu_control_list_testing_autogen.cc
index 64b9129fac4..e356b79cd81 100644
--- a/chromium/gpu/config/gpu_control_list_testing_autogen.cc
+++ b/chromium/gpu/config/gpu_control_list_testing_autogen.cc
@@ -31,10 +31,10 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kOsMacosx, // os_type
{GpuControlList::kEQ, GpuControlList::kVersionStyleNumerical,
GpuControlList::kVersionSchemaCommon, "10.6.4",
- nullptr}, // os_version
- 0x10de, // vendor_id
- base::size(kDeviceIDsForGpuControlTestingEntry1), // DeviceIDs size
- kDeviceIDsForGpuControlTestingEntry1, // DeviceIDs
+ nullptr}, // os_version
+ 0x10de, // vendor_id
+ base::size(kDevicesForGpuControlTestingEntry1), // Devices size
+ kDevicesForGpuControlTestingEntry1, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
&kDriverInfoForGpuControlTestingEntry1, // driver info
@@ -67,8 +67,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x10de, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -101,8 +101,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x10de, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -135,8 +135,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -169,8 +169,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -201,10 +201,10 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kOsAny, // os_type
{GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
GpuControlList::kVersionSchemaCommon, nullptr,
- nullptr}, // os_version
- 0x10de, // vendor_id
- base::size(kDeviceIDsForGpuControlTestingEntry6), // DeviceIDs size
- kDeviceIDsForGpuControlTestingEntry6, // DeviceIDs
+ nullptr}, // os_version
+ 0x10de, // vendor_id
+ base::size(kDevicesForGpuControlTestingEntry6), // Devices size
+ kDevicesForGpuControlTestingEntry6, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -237,8 +237,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -271,8 +271,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -305,8 +305,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -339,8 +339,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -373,8 +373,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -407,8 +407,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -441,8 +441,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -475,8 +475,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -509,8 +509,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -543,8 +543,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleOptimus, // multi_gpu_style
nullptr, // driver info
@@ -577,8 +577,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleAMDSwitchable, // multi_gpu_style
nullptr, // driver info
@@ -611,8 +611,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
&kDriverInfoForGpuControlTestingEntry18, // driver info
@@ -645,8 +645,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x1002, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
&kDriverInfoForGpuControlTestingEntry19, // driver info
@@ -679,8 +679,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x8086, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
&kDriverInfoForGpuControlTestingEntry20, // driver info
@@ -713,8 +713,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x8086, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -747,8 +747,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -781,8 +781,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -815,8 +815,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -847,18 +847,17 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kOsMacosx, // os_type
{GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
GpuControlList::kVersionSchemaCommon, nullptr,
- nullptr}, // os_version
- 0x10de, // vendor_id
- base::size(
- kDeviceIDsForGpuControlTestingEntry25), // DeviceIDs size
- kDeviceIDsForGpuControlTestingEntry25, // DeviceIDs
- GpuControlList::kMultiGpuCategoryActive, // multi_gpu_category
- GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
- nullptr, // driver info
- nullptr, // GL strings
- nullptr, // machine model info
- 0, // intel_gpu_series size
- nullptr, // intel_gpu_series
+ nullptr}, // os_version
+ 0x10de, // vendor_id
+ base::size(kDevicesForGpuControlTestingEntry25), // Devices size
+ kDevicesForGpuControlTestingEntry25, // Devices
+ GpuControlList::kMultiGpuCategoryActive, // multi_gpu_category
+ GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
+ nullptr, // driver info
+ nullptr, // GL strings
+ nullptr, // machine model info
+ 0, // intel_gpu_series size
+ nullptr, // intel_gpu_series
{GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // intel_gpu_generation
@@ -884,8 +883,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -918,8 +917,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -952,8 +951,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -986,8 +985,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -1018,18 +1017,17 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kOsMacosx, // os_type
{GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
GpuControlList::kVersionSchemaCommon, nullptr,
- nullptr}, // os_version
- 0x8086, // vendor_id
- base::size(
- kDeviceIDsForGpuControlTestingEntry30), // DeviceIDs size
- kDeviceIDsForGpuControlTestingEntry30, // DeviceIDs
- GpuControlList::kMultiGpuCategoryAny, // multi_gpu_category
- GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
- nullptr, // driver info
- nullptr, // GL strings
- nullptr, // machine model info
- 0, // intel_gpu_series size
- nullptr, // intel_gpu_series
+ nullptr}, // os_version
+ 0x8086, // vendor_id
+ base::size(kDevicesForGpuControlTestingEntry30), // Devices size
+ kDevicesForGpuControlTestingEntry30, // Devices
+ GpuControlList::kMultiGpuCategoryAny, // multi_gpu_category
+ GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
+ nullptr, // driver info
+ nullptr, // GL strings
+ nullptr, // machine model info
+ 0, // intel_gpu_series size
+ nullptr, // intel_gpu_series
{GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // intel_gpu_generation
@@ -1053,18 +1051,17 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kOsMacosx, // os_type
{GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
GpuControlList::kVersionSchemaCommon, nullptr,
- nullptr}, // os_version
- 0x10de, // vendor_id
- base::size(
- kDeviceIDsForGpuControlTestingEntry31), // DeviceIDs size
- kDeviceIDsForGpuControlTestingEntry31, // DeviceIDs
- GpuControlList::kMultiGpuCategoryAny, // multi_gpu_category
- GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
- nullptr, // driver info
- nullptr, // GL strings
- nullptr, // machine model info
- 0, // intel_gpu_series size
- nullptr, // intel_gpu_series
+ nullptr}, // os_version
+ 0x10de, // vendor_id
+ base::size(kDevicesForGpuControlTestingEntry31), // Devices size
+ kDevicesForGpuControlTestingEntry31, // Devices
+ GpuControlList::kMultiGpuCategoryAny, // multi_gpu_category
+ GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
+ nullptr, // driver info
+ nullptr, // GL strings
+ nullptr, // machine model info
+ 0, // intel_gpu_series size
+ nullptr, // intel_gpu_series
{GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // intel_gpu_generation
@@ -1088,11 +1085,10 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kOsMacosx, // os_type
{GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
GpuControlList::kVersionSchemaCommon, nullptr,
- nullptr}, // os_version
- 0x8086, // vendor_id
- base::size(
- kDeviceIDsForGpuControlTestingEntry32), // DeviceIDs size
- kDeviceIDsForGpuControlTestingEntry32, // DeviceIDs
+ nullptr}, // os_version
+ 0x8086, // vendor_id
+ base::size(kDevicesForGpuControlTestingEntry32), // Devices size
+ kDevicesForGpuControlTestingEntry32, // Devices
GpuControlList::kMultiGpuCategorySecondary, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -1123,18 +1119,17 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kOsMacosx, // os_type
{GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
GpuControlList::kVersionSchemaCommon, nullptr,
- nullptr}, // os_version
- 0x8086, // vendor_id
- base::size(
- kDeviceIDsForGpuControlTestingEntry33), // DeviceIDs size
- kDeviceIDsForGpuControlTestingEntry33, // DeviceIDs
- GpuControlList::kMultiGpuCategoryPrimary, // multi_gpu_category
- GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
- nullptr, // driver info
- nullptr, // GL strings
- nullptr, // machine model info
- 0, // intel_gpu_series size
- nullptr, // intel_gpu_series
+ nullptr}, // os_version
+ 0x8086, // vendor_id
+ base::size(kDevicesForGpuControlTestingEntry33), // Devices size
+ kDevicesForGpuControlTestingEntry33, // Devices
+ GpuControlList::kMultiGpuCategoryPrimary, // multi_gpu_category
+ GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
+ nullptr, // driver info
+ nullptr, // GL strings
+ nullptr, // machine model info
+ 0, // intel_gpu_series size
+ nullptr, // intel_gpu_series
{GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // intel_gpu_generation
@@ -1158,18 +1153,17 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kOsMacosx, // os_type
{GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
GpuControlList::kVersionSchemaCommon, nullptr,
- nullptr}, // os_version
- 0x8086, // vendor_id
- base::size(
- kDeviceIDsForGpuControlTestingEntry34), // DeviceIDs size
- kDeviceIDsForGpuControlTestingEntry34, // DeviceIDs
- GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
- GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
- nullptr, // driver info
- nullptr, // GL strings
- nullptr, // machine model info
- 0, // intel_gpu_series size
- nullptr, // intel_gpu_series
+ nullptr}, // os_version
+ 0x8086, // vendor_id
+ base::size(kDevicesForGpuControlTestingEntry34), // Devices size
+ kDevicesForGpuControlTestingEntry34, // Devices
+ GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
+ GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
+ nullptr, // driver info
+ nullptr, // GL strings
+ nullptr, // machine model info
+ 0, // intel_gpu_series size
+ nullptr, // intel_gpu_series
{GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // intel_gpu_generation
@@ -1193,18 +1187,17 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kOsMacosx, // os_type
{GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
GpuControlList::kVersionSchemaCommon, nullptr,
- nullptr}, // os_version
- 0x8086, // vendor_id
- base::size(
- kDeviceIDsForGpuControlTestingEntry35), // DeviceIDs size
- kDeviceIDsForGpuControlTestingEntry35, // DeviceIDs
- GpuControlList::kMultiGpuCategoryActive, // multi_gpu_category
- GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
- nullptr, // driver info
- nullptr, // GL strings
- nullptr, // machine model info
- 0, // intel_gpu_series size
- nullptr, // intel_gpu_series
+ nullptr}, // os_version
+ 0x8086, // vendor_id
+ base::size(kDevicesForGpuControlTestingEntry35), // Devices size
+ kDevicesForGpuControlTestingEntry35, // Devices
+ GpuControlList::kMultiGpuCategoryActive, // multi_gpu_category
+ GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
+ nullptr, // driver info
+ nullptr, // GL strings
+ nullptr, // machine model info
+ 0, // intel_gpu_series size
+ nullptr, // intel_gpu_series
{GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // intel_gpu_generation
@@ -1230,8 +1223,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x8086, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryActive, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -1262,18 +1255,17 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kOsMacosx, // os_type
{GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
GpuControlList::kVersionSchemaCommon, nullptr,
- nullptr}, // os_version
- 0x10de, // vendor_id
- base::size(
- kDeviceIDsForGpuControlTestingEntry37), // DeviceIDs size
- kDeviceIDsForGpuControlTestingEntry37, // DeviceIDs
- GpuControlList::kMultiGpuCategoryActive, // multi_gpu_category
- GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
- nullptr, // driver info
- nullptr, // GL strings
- nullptr, // machine model info
- 0, // intel_gpu_series size
- nullptr, // intel_gpu_series
+ nullptr}, // os_version
+ 0x10de, // vendor_id
+ base::size(kDevicesForGpuControlTestingEntry37), // Devices size
+ kDevicesForGpuControlTestingEntry37, // Devices
+ GpuControlList::kMultiGpuCategoryActive, // multi_gpu_category
+ GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
+ nullptr, // driver info
+ nullptr, // GL strings
+ nullptr, // machine model info
+ 0, // intel_gpu_series size
+ nullptr, // intel_gpu_series
{GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // intel_gpu_generation
@@ -1299,8 +1291,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x10de, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryActive, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -1333,8 +1325,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -1367,8 +1359,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, "4.2",
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -1401,8 +1393,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -1435,8 +1427,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -1468,8 +1460,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
{GpuControlList::kGE, GpuControlList::kVersionStyleNumerical,
GpuControlList::kVersionSchemaCommon, "6", nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -1502,8 +1494,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x8086, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -1536,8 +1528,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::
kMultiGpuStyleAMDSwitchableDiscrete, // multi_gpu_style
@@ -1571,8 +1563,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::
kMultiGpuStyleAMDSwitchableIntegrated, // multi_gpu_style
@@ -1606,8 +1598,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -1640,8 +1632,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x8086, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -1674,8 +1666,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x10de, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
&kDriverInfoForGpuControlTestingEntry49, // driver info
@@ -1708,8 +1700,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x10de, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
&kDriverInfoForGpuControlTestingEntry50, // driver info
@@ -1742,8 +1734,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x8086, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -1776,8 +1768,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x8086, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -1810,8 +1802,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x8086, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
&kDriverInfoForGpuControlTestingEntry53, // driver info
@@ -1844,8 +1836,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -1878,8 +1870,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -1912,8 +1904,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -1946,8 +1938,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, "3.19.1",
nullptr}, // os_version
0x8086, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -1980,8 +1972,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -2014,8 +2006,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -2048,8 +2040,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -2082,8 +2074,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryActive, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -2116,8 +2108,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryAny, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -2150,8 +2142,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryPrimary, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -2184,8 +2176,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategorySecondary, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -2218,8 +2210,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -2252,8 +2244,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x8086, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
&kDriverInfoForGpuControlTestingEntry66, // driver info
@@ -2286,8 +2278,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x8086, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -2320,8 +2312,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -2354,8 +2346,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryActive, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -2388,8 +2380,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryAny, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -2422,8 +2414,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryPrimary, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -2456,8 +2448,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategorySecondary, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -2490,8 +2482,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -2524,8 +2516,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -2558,8 +2550,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
&kDriverInfoForGpuControlTestingEntry75, // driver info
@@ -2592,8 +2584,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x8086, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
&kDriverInfoForGpuControlTestingEntry76, // driver info
@@ -2626,8 +2618,8 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
GpuControlList::kVersionSchemaCommon, nullptr,
nullptr}, // os_version
0x8086, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
&kDriverInfoForGpuControlTestingEntry77, // driver info
@@ -2643,6 +2635,74 @@ const GpuControlList::Entry kGpuControlListTestingEntries[] = {
0, // exceptions count
nullptr, // exceptions
},
+ {
+ 78, // id
+ "GpuControlListEntryTest.DeviceRevisionEntry",
+ base::size(kFeatureListForGpuControlTestingEntry78), // features size
+ kFeatureListForGpuControlTestingEntry78, // features
+ 0, // DisabledExtensions size
+ nullptr, // DisabledExtensions
+ 0, // DisabledWebGLExtensions size
+ nullptr, // DisabledWebGLExtensions
+ 0, // CrBugs size
+ nullptr, // CrBugs
+ {
+ GpuControlList::kOsWin, // os_type
+ {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+ GpuControlList::kVersionSchemaCommon, nullptr,
+ nullptr}, // os_version
+ 0x1002, // vendor_id
+ 0, // Devices size
+ nullptr, // Devices
+ GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
+ GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
+ nullptr, // driver info
+ nullptr, // GL strings
+ nullptr, // machine model info
+ 0, // intel_gpu_series size
+ nullptr, // intel_gpu_series
+ {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+ GpuControlList::kVersionSchemaCommon, nullptr,
+ nullptr}, // intel_gpu_generation
+ &kMoreForEntry78_1440601243, // more data
+ },
+ base::size(kExceptionsForEntry78), // exceptions count
+ kExceptionsForEntry78, // exceptions
+ },
+ {
+ 79, // id
+ "GpuControlListEntryTest.DeviceRevisionUnspecifiedEntry",
+ base::size(kFeatureListForGpuControlTestingEntry79), // features size
+ kFeatureListForGpuControlTestingEntry79, // features
+ 0, // DisabledExtensions size
+ nullptr, // DisabledExtensions
+ 0, // DisabledWebGLExtensions size
+ nullptr, // DisabledWebGLExtensions
+ 0, // CrBugs size
+ nullptr, // CrBugs
+ {
+ GpuControlList::kOsWin, // os_type
+ {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+ GpuControlList::kVersionSchemaCommon, nullptr,
+ nullptr}, // os_version
+ 0x1002, // vendor_id
+ base::size(kDevicesForGpuControlTestingEntry79), // Devices size
+ kDevicesForGpuControlTestingEntry79, // Devices
+ GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
+ GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
+ nullptr, // driver info
+ nullptr, // GL strings
+ nullptr, // machine model info
+ 0, // intel_gpu_series size
+ nullptr, // intel_gpu_series
+ {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+ GpuControlList::kVersionSchemaCommon, nullptr,
+ nullptr}, // intel_gpu_generation
+ &kMoreForEntry79_1440601243, // more data
+ },
+ 0, // exceptions count
+ nullptr, // exceptions
+ },
};
-const size_t kGpuControlListTestingEntryCount = 77;
+const size_t kGpuControlListTestingEntryCount = 79;
} // namespace gpu
diff --git a/chromium/gpu/config/gpu_control_list_testing_entry_enums_autogen.h b/chromium/gpu/config/gpu_control_list_testing_entry_enums_autogen.h
index fc12d787732..7b1a8fecf3e 100644
--- a/chromium/gpu/config/gpu_control_list_testing_entry_enums_autogen.h
+++ b/chromium/gpu/config/gpu_control_list_testing_entry_enums_autogen.h
@@ -90,6 +90,8 @@ enum GpuControlListTestingEntryEnum {
kGpuControlListEntryTest_IntelDriverVendorEntry = 74,
kGpuControlListEntryTest_IntelDriverVersionEntry = 75,
kGpuControlListEntryTest_IntelOldDriverVersionEntry = 76,
+ kGpuControlListEntryTest_DeviceRevisionEntry = 77,
+ kGpuControlListEntryTest_DeviceRevisionUnspecifiedEntry = 78,
};
} // namespace gpu
diff --git a/chromium/gpu/config/gpu_control_list_testing_exceptions_autogen.h b/chromium/gpu/config/gpu_control_list_testing_exceptions_autogen.h
index 355d7b165d0..fa66aa4aff2 100644
--- a/chromium/gpu/config/gpu_control_list_testing_exceptions_autogen.h
+++ b/chromium/gpu/config/gpu_control_list_testing_exceptions_autogen.h
@@ -18,8 +18,8 @@ const GpuControlList::Conditions kExceptionsForEntry4[1] = {
{GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
GpuControlList::kVersionSchemaCommon, nullptr, nullptr}, // os_version
0x10de, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -40,8 +40,8 @@ const GpuControlList::Conditions kExceptionsForEntry5[1] = {
{GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
GpuControlList::kVersionSchemaCommon, nullptr, nullptr}, // os_version
0x8086, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -62,8 +62,8 @@ const GpuControlList::Conditions kExceptionsForEntry21[1] = {
{GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
GpuControlList::kVersionSchemaCommon, nullptr, nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -84,8 +84,8 @@ const GpuControlList::Conditions kExceptionsForEntry27[1] = {
{GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
GpuControlList::kVersionSchemaCommon, nullptr, nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -106,8 +106,8 @@ const GpuControlList::Conditions kExceptionsForEntry29[1] = {
{GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
GpuControlList::kVersionSchemaCommon, nullptr, nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -129,8 +129,8 @@ const GpuControlList::Conditions kExceptionsForEntry44[2] = {
GpuControlList::kVersionSchemaCommon, nullptr, nullptr}, // os_version
0x8086, // vendor_id
base::size(
- kDeviceIDsForGpuControlTestingEntry44Exception0), // DeviceIDs size
- kDeviceIDsForGpuControlTestingEntry44Exception0, // DeviceIDs
+ kDevicesForGpuControlTestingEntry44Exception0), // Devices size
+ kDevicesForGpuControlTestingEntry44Exception0, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
&kDriverInfoForGpuControlTestingEntry44Exception0, // driver info
@@ -149,8 +149,8 @@ const GpuControlList::Conditions kExceptionsForEntry44[2] = {
GpuControlList::kVersionSchemaCommon, nullptr, nullptr}, // os_version
0x8086, // vendor_id
base::size(
- kDeviceIDsForGpuControlTestingEntry44Exception1), // DeviceIDs size
- kDeviceIDsForGpuControlTestingEntry44Exception1, // DeviceIDs
+ kDevicesForGpuControlTestingEntry44Exception1), // Devices size
+ kDevicesForGpuControlTestingEntry44Exception1, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
&kDriverInfoForGpuControlTestingEntry44Exception1, // driver info
@@ -171,8 +171,8 @@ const GpuControlList::Conditions kExceptionsForEntry51[1] = {
{GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
GpuControlList::kVersionSchemaCommon, nullptr, nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -193,8 +193,8 @@ const GpuControlList::Conditions kExceptionsForEntry65[1] = {
{GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
GpuControlList::kVersionSchemaCommon, nullptr, nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -216,8 +216,8 @@ const GpuControlList::Conditions kExceptionsForEntry73[3] = {
{GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
GpuControlList::kVersionSchemaCommon, nullptr, nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -235,8 +235,8 @@ const GpuControlList::Conditions kExceptionsForEntry73[3] = {
{GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
GpuControlList::kVersionSchemaCommon, nullptr, nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -254,8 +254,8 @@ const GpuControlList::Conditions kExceptionsForEntry73[3] = {
{GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
GpuControlList::kVersionSchemaCommon, nullptr, nullptr}, // os_version
0x00, // vendor_id
- 0, // DeviceIDs size
- nullptr, // DeviceIDs
+ 0, // Devices size
+ nullptr, // Devices
GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
nullptr, // driver info
@@ -270,6 +270,49 @@ const GpuControlList::Conditions kExceptionsForEntry73[3] = {
},
};
+const GpuControlList::Conditions kExceptionsForEntry78[2] = {
+ {
+ GpuControlList::kOsAny, // os_type
+ {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+ GpuControlList::kVersionSchemaCommon, nullptr, nullptr}, // os_version
+ 0x1002, // vendor_id
+ base::size(
+ kDevicesForGpuControlTestingEntry78Exception0), // Devices size
+ kDevicesForGpuControlTestingEntry78Exception0, // Devices
+ GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
+ GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
+ &kDriverInfoForGpuControlTestingEntry78Exception0, // driver info
+ nullptr, // GL strings
+ nullptr, // machine model info
+ 0, // intel_gpu_series size
+ nullptr, // intel_gpu_series
+ {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+ GpuControlList::kVersionSchemaCommon, nullptr,
+ nullptr}, // intel_gpu_generation
+ &kMoreForEntry78_1440601243Exception0, // more data
+ },
+ {
+ GpuControlList::kOsAny, // os_type
+ {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+ GpuControlList::kVersionSchemaCommon, nullptr, nullptr}, // os_version
+ 0x1002, // vendor_id
+ base::size(
+ kDevicesForGpuControlTestingEntry78Exception1), // Devices size
+ kDevicesForGpuControlTestingEntry78Exception1, // Devices
+ GpuControlList::kMultiGpuCategoryNone, // multi_gpu_category
+ GpuControlList::kMultiGpuStyleNone, // multi_gpu_style
+ &kDriverInfoForGpuControlTestingEntry78Exception1, // driver info
+ nullptr, // GL strings
+ nullptr, // machine model info
+ 0, // intel_gpu_series size
+ nullptr, // intel_gpu_series
+ {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+ GpuControlList::kVersionSchemaCommon, nullptr,
+ nullptr}, // intel_gpu_generation
+ &kMoreForEntry78_1440601243Exception1, // more data
+ },
+};
+
} // namespace gpu
#endif // GPU_CONFIG_GPU_CONTROL_LIST_TESTING_EXCEPTIONS_AUTOGEN_H_
diff --git a/chromium/gpu/config/gpu_control_list_version_unittest.cc b/chromium/gpu/config/gpu_control_list_version_unittest.cc
index 896b081aa1d..2c7dd2468e3 100644
--- a/chromium/gpu/config/gpu_control_list_version_unittest.cc
+++ b/chromium/gpu/config/gpu_control_list_version_unittest.cc
@@ -16,6 +16,7 @@ constexpr auto kLexical = GpuControlList::kVersionStyleLexical;
constexpr auto kCommon = GpuControlList::kVersionSchemaCommon;
constexpr auto kIntelDriver = GpuControlList::kVersionSchemaIntelDriver;
+constexpr auto kNvidiaDriver = GpuControlList::kVersionSchemaNvidiaDriver;
constexpr auto kBetween = GpuControlList::kBetween;
constexpr auto kEQ = GpuControlList::kEQ;
@@ -219,4 +220,51 @@ TEST_F(VersionTest, IntelDriverSchema) {
}
}
+TEST_F(VersionTest, NvidiaDriverSchema) {
+ {
+ // Nvidia drivers, XX.XX.XXXA.AABB, only AAA.BB is considered. The version
+ // is specified as "AAA.BB" or "AAA" in the workaround file.
+ {
+ // "AAA.BB" should exactly specify one version.
+ Version info = {kLT, kNumerical, kNvidiaDriver, "234.56", nullptr};
+ EXPECT_TRUE(info.Contains("26.10.0012.3455"));
+ EXPECT_TRUE(info.Contains("00.00.0012.3455"));
+ EXPECT_TRUE(info.Contains("00.00.012.3455"));
+ EXPECT_TRUE(info.Contains("00.00.12.3455"));
+ EXPECT_FALSE(info.Contains("26.10.0012.3456"));
+ EXPECT_FALSE(info.Contains("26.10.012.3456"));
+ EXPECT_FALSE(info.Contains("26.10.12.3456"));
+ EXPECT_FALSE(info.Contains("26.10.0012.3457"));
+ EXPECT_FALSE(info.Contains("00.00.0012.3457"));
+ EXPECT_TRUE(info.Contains("26.10.0012.2457"));
+ EXPECT_TRUE(info.Contains("26.10.0011.3457"));
+
+ // Leading zeros in the third stanza are okay.
+ EXPECT_TRUE(info.Contains("26.10.0002.3455"));
+ EXPECT_FALSE(info.Contains("26.10.0002.3456"));
+ EXPECT_FALSE(info.Contains("26.10.0002.3457"));
+ EXPECT_TRUE(info.Contains("26.10.0010.3457"));
+ EXPECT_TRUE(info.Contains("26.10.0000.3457"));
+
+ // Missing zeros in the fourth stanza are replaced.
+ EXPECT_TRUE(info.Contains("26.10.0012.455"));
+ EXPECT_TRUE(info.Contains("26.10.0012.57"));
+ EXPECT_FALSE(info.Contains("26.10.0013.456"));
+ EXPECT_FALSE(info.Contains("26.10.0013.57"));
+
+ // Too short is rejected.
+ EXPECT_FALSE(info.Contains("26.10..57"));
+ EXPECT_FALSE(info.Contains("26.10.100"));
+ EXPECT_FALSE(info.Contains("26.10.100."));
+ }
+
+ {
+ // "AAA" should allow "AAA.*"
+ Version info = {kEQ, kNumerical, kNvidiaDriver, "234", nullptr};
+ EXPECT_FALSE(info.Contains("26.10.0012.3556"));
+ EXPECT_TRUE(info.Contains("26.10.0012.3456"));
+ }
+ }
+}
+
} // namespace gpu
diff --git a/chromium/gpu/config/gpu_driver_bug_list.json b/chromium/gpu/config/gpu_driver_bug_list.json
index 450c929ea75..8d4d155a777 100644
--- a/chromium/gpu/config/gpu_driver_bug_list.json
+++ b/chromium/gpu/config/gpu_driver_bug_list.json
@@ -2273,12 +2273,13 @@
}
},
"features": [
- "disable_accelerated_vpx_decode"
+ "disable_accelerated_vp8_decode",
+ "disable_accelerated_vp9_decode"
]
},
{
"id": 225,
- "description": "VPx decoding is too slow on Intel Broadwell, Skylake, and CherryTrail",
+ "description": "VP9 decoding is too slow on Intel Broadwell, Skylake, and CherryTrail",
"cr_bugs": [616318],
"os": {
"type": "win"
@@ -2289,12 +2290,12 @@
"cherrytrail"
],
"features": [
- "disable_accelerated_vpx_decode"
+ "disable_accelerated_vp9_decode"
]
},
{
"id": 226,
- "description": "Accelerated VPx decoding is hanging on some videos.",
+ "description": "Accelerated VP9 decoding is hanging on some videos.",
"cr_bugs": [654111],
"os": {
"type": "win"
@@ -2305,7 +2306,7 @@
"value": "21.20.16.4542"
},
"features": [
- "disable_accelerated_vpx_decode"
+ "disable_accelerated_vp9_decode"
]
},
{
@@ -3468,11 +3469,16 @@
{
"id": 328,
"cr_bugs": [1041166],
- "description": "Disable D3D11VideoDecoder due to crashes on NVIDIA",
+ "description": "Disable D3D11VideoDecoder due to crashes on NVIDIA on older drivers",
"os": {
"type": "win"
},
"vendor_id": "0x10de",
+ "driver_version": {
+ "schema": "nvidia_driver",
+ "op": "<",
+ "value": "451.48"
+ },
"features": [
"disable_d3d11_video_decoder"
]
@@ -3534,7 +3540,7 @@
{
"id": 336,
"cr_bugs": [625785],
- "description": "DXVA video decoder crashes on some AMD GPUs",
+ "description": "DXVA video decoder crashes on some AMD GPUs.",
"os": {
"type": "win"
},
@@ -3604,7 +3610,7 @@
},
{
"id": 339,
- "description": "NV12 textures trigger crash on Intel driver 20.19.15.*",
+ "description": "Array textures trigger crash on Intel driver 20.19.15.*",
"cr_bugs": [971952],
"os": {
"type": "win",
@@ -3623,12 +3629,12 @@
"value2": "20.19.15.4380"
},
"features": [
- "disable_nv12_dxgi_video"
+ "disable_dxgi_zero_copy_video"
]
},
{
"id": 340,
- "description": "NV12 textures trigger crash on Intel driver 10.18.15.*",
+ "description": "Array textures trigger crash on Intel driver 10.18.15.*",
"cr_bugs": [971952],
"os": {
"type": "win",
@@ -3647,7 +3653,50 @@
"value2": "10.18.15.4293"
},
"features": [
- "disable_nv12_dxgi_video"
+ "disable_dxgi_zero_copy_video"
+ ]
+ },
+ {
+ "id": 341,
+ "description": "Driver crash deleting FBOs on Mac Intel Broadwell",
+ "cr_bugs": [1090584],
+ "os": {
+ "type": "macosx"
+ },
+ "vendor_id": "0x8086",
+ "intel_gpu_series": [
+ "broadwell"
+ ],
+ "features": [
+ "unbind_attachments_on_bound_render_fbo_delete"
+ ]
+ },
+ {
+ "id": 342,
+ "description": "Driver crash deleting FBOs on Mac nVidia 600/700 series",
+ "cr_bugs": [1090584],
+ "os": {
+ "type": "macosx"
+ },
+ "vendor_id": "0x10de",
+ "device_id": ["0x0fe9", "0x0fd5", "0x0fd8", "0x119e", "0x0fea", "0x11a2"],
+ "features": [
+ "unbind_attachments_on_bound_render_fbo_delete"
+ ]
+ },
+ {
+ "id": 344,
+ "description": "VP8 decoding crashes before Windows 10 Fall Creators Update.",
+ "cr_bugs": [1094840],
+ "os": {
+ "type": "win",
+ "version": {
+ "op": "<",
+ "value": "10.0.16299"
+ }
+ },
+ "features": [
+ "disable_accelerated_vp8_decode"
]
}
]
diff --git a/chromium/gpu/config/gpu_finch_features.cc b/chromium/gpu/config/gpu_finch_features.cc
index 6728228533a..c17e656898a 100644
--- a/chromium/gpu/config/gpu_finch_features.cc
+++ b/chromium/gpu/config/gpu_finch_features.cc
@@ -45,12 +45,6 @@ const base::Feature kDefaultEnableOopRasterization{
"DefaultEnableOopRasterization", base::FEATURE_DISABLED_BY_DEFAULT};
#endif
-// Allow putting a video swapchain underneath the main swapchain, so overlays
-// can be used even if there are controls on top of the video. It can be
-// enabled only when overlay is supported.
-const base::Feature kDirectCompositionUnderlays{
- "DirectCompositionUnderlays", base::FEATURE_ENABLED_BY_DEFAULT};
-
#if defined(OS_WIN)
// Use a high priority for GPU process on Windows.
const base::Feature kGpuProcessHighPriorityWin{
diff --git a/chromium/gpu/config/gpu_finch_features.h b/chromium/gpu/config/gpu_finch_features.h
index f2167ba9894..e9367d82a1d 100644
--- a/chromium/gpu/config/gpu_finch_features.h
+++ b/chromium/gpu/config/gpu_finch_features.h
@@ -26,8 +26,6 @@ GPU_EXPORT extern const base::Feature kDefaultEnableGpuRasterization;
GPU_EXPORT extern const base::Feature kDefaultEnableOopRasterization;
-GPU_EXPORT extern const base::Feature kDirectCompositionUnderlays;
-
#if defined(OS_WIN)
GPU_EXPORT extern const base::Feature kGpuProcessHighPriorityWin;
#endif
diff --git a/chromium/gpu/config/gpu_info.cc b/chromium/gpu/config/gpu_info.cc
index 4a60da24429..6e55eae87ef 100644
--- a/chromium/gpu/config/gpu_info.cc
+++ b/chromium/gpu/config/gpu_info.cc
@@ -5,6 +5,7 @@
#include <stdint.h>
#include "base/logging.h"
+#include "base/notreached.h"
#include "gpu/command_buffer/common/gpu_memory_buffer_support.h"
#include "gpu/config/gpu_info.h"
#include "gpu/config/gpu_util.h"
@@ -111,18 +112,6 @@ void EnumerateImageDecodeAcceleratorSupportedProfile(
}
#if defined(OS_WIN)
-void EnumerateDx12VulkanVersionInfo(const gpu::Dx12VulkanVersionInfo& info,
- gpu::GPUInfo::Enumerator* enumerator) {
- enumerator->BeginDx12VulkanVersionInfo();
- enumerator->AddBool("supportsDx12", info.supports_dx12);
- enumerator->AddBool("supportsVulkan", info.supports_vulkan);
- enumerator->AddString("dx12FeatureLevel",
- gpu::D3DFeatureLevelToString(info.d3d12_feature_level));
- enumerator->AddString("vulkanVersion",
- gpu::VulkanVersionToString(info.vulkan_version));
- enumerator->EndDx12VulkanVersionInfo();
-}
-
void EnumerateOverlayInfo(const gpu::OverlayInfo& info,
gpu::GPUInfo::Enumerator* enumerator) {
enumerator->BeginOverlayInfo();
@@ -280,7 +269,8 @@ void GPUInfo::EnumerateFields(Enumerator* enumerator) const {
#endif // OS_MACOSX
#if defined(OS_WIN)
DxDiagNode dx_diagnostics;
- Dx12VulkanVersionInfo dx12_vulkan_version_info;
+ uint32_t d3d12_feature_level;
+ uint32_t vulkan_version;
OverlayInfo overlay_info;
#endif
@@ -346,7 +336,12 @@ void GPUInfo::EnumerateFields(Enumerator* enumerator) const {
// TODO(kbr): add dx_diagnostics on Windows.
#if defined(OS_WIN)
EnumerateOverlayInfo(overlay_info, enumerator);
- EnumerateDx12VulkanVersionInfo(dx12_vulkan_version_info, enumerator);
+ enumerator->AddBool("supportsDx12", d3d12_feature_level != 0);
+ enumerator->AddBool("supportsVulkan", vulkan_version != 0);
+ enumerator->AddString("dx12FeatureLevel",
+ gpu::D3DFeatureLevelToString(d3d12_feature_level));
+ enumerator->AddString("vulkanVersion",
+ gpu::VulkanVersionToString(vulkan_version));
#endif
enumerator->AddInt("videoDecodeAcceleratorFlags",
video_decode_accelerator_capabilities.flags);
diff --git a/chromium/gpu/config/gpu_info.h b/chromium/gpu/config/gpu_info.h
index c8e756a6781..42bb614d83b 100644
--- a/chromium/gpu/config/gpu_info.h
+++ b/chromium/gpu/config/gpu_info.h
@@ -23,6 +23,10 @@
#include "gpu/vulkan/buildflags.h"
#include "ui/gfx/geometry/size.h"
+#if defined(OS_WIN)
+#include <dxgi.h>
+#endif
+
#if BUILDFLAG(ENABLE_VULKAN)
#include "gpu/config/vulkan_info.h"
#endif
@@ -187,29 +191,15 @@ enum class OverlaySupport {
GPU_EXPORT const char* OverlaySupportToString(OverlaySupport support);
-struct GPU_EXPORT Dx12VulkanVersionInfo {
- bool IsEmpty() const { return !d3d12_feature_level && !vulkan_version; }
-
- // True if the GPU driver supports DX12.
- bool supports_dx12 = false;
-
- // True if the GPU driver supports Vulkan.
- bool supports_vulkan = false;
-
- // The supported d3d feature level in the gpu driver;
- uint32_t d3d12_feature_level = 0;
-
- // The support Vulkan API version in the gpu driver;
- uint32_t vulkan_version = 0;
-};
-
struct GPU_EXPORT OverlayInfo {
OverlayInfo& operator=(const OverlayInfo& other) = default;
bool operator==(const OverlayInfo& other) const {
return direct_composition == other.direct_composition &&
supports_overlays == other.supports_overlays &&
yuy2_overlay_support == other.yuy2_overlay_support &&
- nv12_overlay_support == other.nv12_overlay_support;
+ nv12_overlay_support == other.nv12_overlay_support &&
+ bgra8_overlay_support == other.bgra8_overlay_support &&
+ rgb10a2_overlay_support == other.rgb10a2_overlay_support;
}
bool operator!=(const OverlayInfo& other) const { return !(*this == other); }
@@ -220,6 +210,8 @@ struct GPU_EXPORT OverlayInfo {
bool supports_overlays = false;
OverlaySupport yuy2_overlay_support = OverlaySupport::kNone;
OverlaySupport nv12_overlay_support = OverlaySupport::kNone;
+ OverlaySupport bgra8_overlay_support = OverlaySupport::kNone;
+ OverlaySupport rgb10a2_overlay_support = OverlaySupport::kNone;
};
#endif
@@ -251,10 +243,19 @@ struct GPU_EXPORT GPUInfo {
// The graphics card revision number.
uint32_t revision = 0u;
+
+ // The graphics card LUID. This is a unique identifier for the graphics card
+ // that is guaranteed to be unique until the computer is restarted. The LUID
+ // is used over the vendor id and device id because the device id is only
+ // unique relative its vendor, not to each other. If there are more than one
+ // of the same exact graphics card, they all have the same vendor id and
+ // device id but different LUIDs.
+ LUID luid;
#endif // OS_WIN
// Whether this GPU is the currently used one.
- // Currently this field is only supported and meaningful on OS X.
+ // Currently this field is only supported and meaningful on OS X and on
+ // Windows using Angle with D3D11.
bool active = false;
// The strings that describe the GPU.
@@ -378,7 +379,11 @@ struct GPU_EXPORT GPUInfo {
// The information returned by the DirectX Diagnostics Tool.
DxDiagNode dx_diagnostics;
- Dx12VulkanVersionInfo dx12_vulkan_version_info;
+ // The supported d3d feature level in the gpu driver;
+ uint32_t d3d12_feature_level = 0;
+
+ // The support Vulkan API version in the gpu driver;
+ uint32_t vulkan_version = 0;
// The GPU hardware overlay info.
OverlayInfo overlay_info;
@@ -446,9 +451,6 @@ struct GPU_EXPORT GPUInfo {
virtual void BeginAuxAttributes() = 0;
virtual void EndAuxAttributes() = 0;
- virtual void BeginDx12VulkanVersionInfo() = 0;
- virtual void EndDx12VulkanVersionInfo() = 0;
-
virtual void BeginOverlayInfo() = 0;
virtual void EndOverlayInfo() = 0;
diff --git a/chromium/gpu/config/gpu_info_collector.cc b/chromium/gpu/config/gpu_info_collector.cc
index 66e061f6020..cfdcdcaf632 100644
--- a/chromium/gpu/config/gpu_info_collector.cc
+++ b/chromium/gpu/config/gpu_info_collector.cc
@@ -344,7 +344,14 @@ bool CollectGraphicsInfoGL(GPUInfo* gpu_info) {
gpu_info->pixel_shader_version = glsl_version;
gpu_info->vertex_shader_version = glsl_version;
- IdentifyActiveGPU(gpu_info);
+ bool active_gpu_identified = false;
+#if defined(OS_WIN)
+ active_gpu_identified = IdentifyActiveGPUWithLuid(gpu_info);
+#endif // OS_WIN
+
+ if (!active_gpu_identified)
+ IdentifyActiveGPU(gpu_info);
+
return true;
}
diff --git a/chromium/gpu/config/gpu_info_collector.h b/chromium/gpu/config/gpu_info_collector.h
index b2423096815..dfa92445ebb 100644
--- a/chromium/gpu/config/gpu_info_collector.h
+++ b/chromium/gpu/config/gpu_info_collector.h
@@ -45,8 +45,11 @@ GPU_EXPORT bool CollectContextGraphicsInfo(GPUInfo* gpu_info);
#if defined(OS_WIN)
// Collect the DirectX Disagnostics information about the attached displays.
GPU_EXPORT bool GetDxDiagnostics(DxDiagNode* output);
-GPU_EXPORT void RecordGpuSupportedRuntimeVersionHistograms(
- Dx12VulkanVersionInfo* dx12_vulkan_version_info);
+GPU_EXPORT uint32_t GetGpuSupportedD3D12Version();
+GPU_EXPORT void RecordGpuSupportedDx12VersionHistograms(
+ uint32_t d3d12_feature_level);
+GPU_EXPORT uint32_t
+GetGpuSupportedVulkanVersion(const gpu::GPUInfo::GPUDevice& gpu_device);
// Iterate through all adapters and create a hardware D3D11 device on each
// adapter. If succeeded, query the highest feature level it supports and
@@ -59,6 +62,9 @@ GPU_EXPORT bool CollectD3D11FeatureInfo(D3D_FEATURE_LEVEL* d3d11_feature_level,
// Collect the hardware overlay support flags.
GPU_EXPORT void CollectHardwareOverlayInfo(OverlayInfo* overlay_info);
+
+// Identify the active GPU based on LUIDs.
+bool IdentifyActiveGPUWithLuid(GPUInfo* gpu_info);
#endif // OS_WIN
// Create a GL context and collect GL strings and versions.
diff --git a/chromium/gpu/config/gpu_info_collector_win.cc b/chromium/gpu/config/gpu_info_collector_win.cc
index f70d2abe277..f43a7e9ad8a 100644
--- a/chromium/gpu/config/gpu_info_collector_win.cc
+++ b/chromium/gpu/config/gpu_info_collector_win.cc
@@ -35,6 +35,8 @@
#include "gpu/config/gpu_util.h"
#include "third_party/vulkan_headers/include/vulkan/vulkan.h"
#include "ui/gl/direct_composition_surface_win.h"
+#include "ui/gl/gl_angle_util_win.h"
+#include "ui/gl/gl_surface_egl.h"
namespace gpu {
@@ -83,6 +85,32 @@ OverlaySupport FlagsToOverlaySupport(bool overlays_supported, UINT flags) {
return OverlaySupport::kNone;
}
+bool GetActiveAdapterLuid(LUID* luid) {
+ Microsoft::WRL::ComPtr<ID3D11Device> d3d11_device =
+ gl::QueryD3D11DeviceObjectFromANGLE();
+ if (!d3d11_device)
+ return false;
+
+ Microsoft::WRL::ComPtr<IDXGIDevice> dxgi_device;
+ if (FAILED(d3d11_device.As(&dxgi_device)))
+ return false;
+
+ Microsoft::WRL::ComPtr<IDXGIAdapter> adapter;
+ if (FAILED(dxgi_device->GetAdapter(&adapter)))
+ return false;
+
+ DXGI_ADAPTER_DESC desc;
+ if (FAILED(adapter->GetDesc(&desc)))
+ return false;
+
+ // Zero isn't a valid LUID.
+ if (desc.AdapterLuid.HighPart == 0 && desc.AdapterLuid.LowPart == 0)
+ return false;
+
+ *luid = desc.AdapterLuid;
+ return true;
+}
+
} // namespace
#if BUILDFLAG(GOOGLE_CHROME_BRANDING) && defined(OFFICIAL_BUILD)
@@ -118,14 +146,22 @@ void CollectHardwareOverlayInfo(OverlayInfo* overlay_info) {
overlay_info->supports_overlays,
gl::DirectCompositionSurfaceWin::GetOverlaySupportFlags(
DXGI_FORMAT_YUY2));
+ overlay_info->bgra8_overlay_support = FlagsToOverlaySupport(
+ overlay_info->supports_overlays,
+ gl::DirectCompositionSurfaceWin::GetOverlaySupportFlags(
+ DXGI_FORMAT_B8G8R8A8_UNORM));
+ overlay_info->rgb10a2_overlay_support = FlagsToOverlaySupport(
+ overlay_info->supports_overlays,
+ gl::DirectCompositionSurfaceWin::GetOverlaySupportFlags(
+ DXGI_FORMAT_R10G10B10A2_UNORM));
}
}
bool CollectDriverInfoD3D(GPUInfo* gpu_info) {
TRACE_EVENT0("gpu", "CollectDriverInfoD3D");
- Microsoft::WRL::ComPtr<IDXGIFactory> dxgi_factory;
- HRESULT hr = ::CreateDXGIFactory(IID_PPV_ARGS(&dxgi_factory));
+ Microsoft::WRL::ComPtr<IDXGIFactory1> dxgi_factory;
+ HRESULT hr = ::CreateDXGIFactory1(IID_PPV_ARGS(&dxgi_factory));
if (FAILED(hr))
return false;
@@ -144,6 +180,7 @@ bool CollectDriverInfoD3D(GPUInfo* gpu_info) {
device.device_id = desc.DeviceId;
device.sub_sys_id = desc.SubSysId;
device.revision = desc.Revision;
+ device.luid = desc.AdapterLuid;
LARGE_INTEGER umd_version;
hr = dxgi_adapter->CheckInterfaceSupport(__uuidof(IDXGIDevice),
@@ -199,15 +236,13 @@ bool CollectDriverInfoD3D(GPUInfo* gpu_info) {
}
// DirectX 12 are included with Windows 10 and Server 2016.
-void GetGpuSupportedD3D12Version(Dx12VulkanVersionInfo* info) {
+uint32_t GetGpuSupportedD3D12Version() {
TRACE_EVENT0("gpu", "GetGpuSupportedD3D12Version");
- info->supports_dx12 = false;
- info->d3d12_feature_level = 0;
base::ScopedNativeLibrary d3d12_library(
base::FilePath(FILE_PATH_LITERAL("d3d12.dll")));
if (!d3d12_library.is_valid())
- return;
+ return 0;
// The order of feature levels to attempt to create in D3D CreateDevice
const D3D_FEATURE_LEVEL feature_levels[] = {
@@ -224,14 +259,19 @@ void GetGpuSupportedD3D12Version(Dx12VulkanVersionInfo* info) {
for (auto level : feature_levels) {
if (SUCCEEDED(D3D12CreateDevice(nullptr, level, _uuidof(ID3D12Device),
nullptr))) {
- info->d3d12_feature_level = level;
- info->supports_dx12 = (level >= D3D_FEATURE_LEVEL_12_0) ? true : false;
- break;
+ return level;
}
}
}
+ return 0;
}
+// The old graphics drivers are installed to the Windows system directory
+// c:\windows\system32 or SysWOW64. Those versions can be detected without
+// specifying the absolute directory. For a newer version (>= ~2018), this won't
+// work. The newer graphics drivers are located in
+// c:\windows\system32\DriverStore\FileRepository\xxx.infxxx which contains a
+// different number at each installation
bool BadAMDVulkanDriverVersion() {
// Both 32-bit and 64-bit dll are broken. If 64-bit doesn't exist,
// 32-bit dll will be used to detect the AMD Vulkan driver.
@@ -260,6 +300,31 @@ bool BadAMDVulkanDriverVersion() {
return false;
}
+// Vulkan 1.1 was released by the Khronos Group on March 7, 2018.
+// Blacklist all driver versions without Vulkan 1.1 support and those that cause
+// lots of crashes.
+bool BadGraphicsDriverVersions(const gpu::GPUInfo::GPUDevice& gpu_device) {
+ // GPU Device info is not available in gpu_integration_test.info-collection
+ // with --no-delay-for-dx12-vulkan-info-collection.
+ if (gpu_device.driver_version.empty())
+ return false;
+
+ base::Version driver_version(gpu_device.driver_version);
+ if (!driver_version.IsValid())
+ return true;
+
+ // AMD Vulkan drivers - amdvlk64.dll
+ constexpr uint32_t kAMDVendorId = 0x1002;
+ if (gpu_device.vendor_id == kAMDVendorId) {
+ // 26.20.12028.2 (2019)- number of crashes 1,188,048 as of 5/14/2020.
+ // Returns -1, 0, 1 for <, ==, >.
+ if (driver_version.CompareTo(base::Version("26.20.12028.2")) == 0)
+ return true;
+ }
+
+ return false;
+}
+
bool InitVulkan(base::NativeLibrary* vulkan_library,
PFN_vkGetInstanceProcAddr* vkGetInstanceProcAddr,
PFN_vkCreateInstance* vkCreateInstance,
@@ -340,11 +405,9 @@ bool InitVulkanInstanceProc(
return false;
}
-void GetGpuSupportedVulkanVersionAndExtensions(
- Dx12VulkanVersionInfo* info,
- const std::vector<const char*>& requested_vulkan_extensions,
- std::vector<bool>* extension_support) {
- TRACE_EVENT0("gpu", "GetGpuSupportedVulkanVersionAndExtensions");
+uint32_t GetGpuSupportedVulkanVersion(
+ const gpu::GPUInfo::GPUDevice& gpu_device) {
+ TRACE_EVENT0("gpu", "GetGpuSupportedVulkanVersion");
base::NativeLibrary vulkan_library;
PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr;
@@ -353,20 +416,26 @@ void GetGpuSupportedVulkanVersionAndExtensions(
PFN_vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties;
VkInstance vk_instance = VK_NULL_HANDLE;
uint32_t physical_device_count = 0;
- info->supports_vulkan = false;
- info->vulkan_version = 0;
// Skip if the system has an older AMD Vulkan driver amdvlk64.dll or
// amdvlk32.dll which crashes when vkCreateInstance() is called. This bug has
// been fixed in the latest AMD driver.
+ // Detected by the file version of amdvlk64.dll.
if (BadAMDVulkanDriverVersion()) {
- return;
+ return 0;
}
+ // Don't collect any info if the graphics vulkan driver is blacklisted or
+ // doesn't support Vulkan 1.1
+ // Detected by the graphic driver version returned by DXGI
+ if (BadGraphicsDriverVersions(gpu_device))
+ return 0;
+
// Only supports a version >= 1.1.0.
+ uint32_t vulkan_version = 0;
if (!InitVulkan(&vulkan_library, &vkGetInstanceProcAddr, &vkCreateInstance,
- &info->vulkan_version)) {
- return;
+ &vulkan_version)) {
+ return 0;
}
VkApplicationInfo app_info = {};
@@ -382,7 +451,7 @@ void GetGpuSupportedVulkanVersionAndExtensions(
create_info.ppEnabledExtensionNames = enabled_instance_extensions.data();
// Get the Vulkan API version supported in the GPU driver
- int highest_minor_version = VK_VERSION_MINOR(info->vulkan_version);
+ int highest_minor_version = VK_VERSION_MINOR(vulkan_version);
for (int minor_version = highest_minor_version; minor_version >= 1;
--minor_version) {
app_info.apiVersion = VK_MAKE_VERSION(1, minor_version, 0);
@@ -394,9 +463,7 @@ void GetGpuSupportedVulkanVersionAndExtensions(
result = vkEnumeratePhysicalDevices(vk_instance, &physical_device_count,
nullptr);
if (result == VK_SUCCESS && physical_device_count > 0) {
- info->supports_vulkan = true;
- info->vulkan_version = app_info.apiVersion;
- break;
+ return app_info.apiVersion;
} else {
// Skip destroy here. GPU process shutdown will unload all loaded DLLs.
// vkDestroyInstance(vk_instance, nullptr);
@@ -405,37 +472,6 @@ void GetGpuSupportedVulkanVersionAndExtensions(
}
}
- // Check whether the requested_vulkan_extensions are supported
- if (info->supports_vulkan) {
- std::vector<VkPhysicalDevice> physical_devices(physical_device_count);
- vkEnumeratePhysicalDevices(vk_instance, &physical_device_count,
- physical_devices.data());
-
- // physical_devices[0]: Only query the default device for now
- uint32_t property_count;
- vkEnumerateDeviceExtensionProperties(physical_devices[0], nullptr,
- &property_count, nullptr);
-
- std::vector<VkExtensionProperties> extension_properties(property_count);
- if (property_count > 0) {
- vkEnumerateDeviceExtensionProperties(physical_devices[0], nullptr,
- &property_count,
- extension_properties.data());
- }
-
- for (size_t i = 0; i < requested_vulkan_extensions.size(); ++i) {
- for (size_t p = 0; p < property_count; ++p) {
- if (strcmp(requested_vulkan_extensions[i],
- extension_properties[p].extensionName) == 0) {
- (*extension_support)[i] = true;
- break;
- }
- }
- }
- } else {
- info->vulkan_version = VK_MAKE_VERSION(1, 0, 0);
- }
-
// From the crash reports, calling the following two functions might cause a
// crash in the Vulkan loader or in the Vulkan driver. To work around it,
// don't explicitly unload the DLL. Instead, GPU process shutdown will unload
@@ -444,40 +480,22 @@ void GetGpuSupportedVulkanVersionAndExtensions(
// vkDestroyInstance(vk_instance, nullptr);
// }
// base::UnloadNativeLibrary(vulkan_library);
+ return 0;
}
-void RecordGpuSupportedRuntimeVersionHistograms(Dx12VulkanVersionInfo* info) {
- // D3D
- GetGpuSupportedD3D12Version(info);
- UMA_HISTOGRAM_BOOLEAN("GPU.SupportsDX12", info->supports_dx12);
+void RecordGpuSupportedDx12VersionHistograms(uint32_t d3d12_feature_level) {
+ bool supports_dx12 =
+ (d3d12_feature_level >= D3D_FEATURE_LEVEL_12_0) ? true : false;
+ UMA_HISTOGRAM_BOOLEAN("GPU.SupportsDX12", supports_dx12);
UMA_HISTOGRAM_ENUMERATION(
"GPU.D3D12FeatureLevel",
- ConvertToHistogramFeatureLevel(info->d3d12_feature_level));
-
- // Vulkan
- const std::vector<const char*> vulkan_extensions = {
- "VK_KHR_external_memory_win32", "VK_KHR_external_semaphore_win32",
- "VK_KHR_win32_keyed_mutex"};
- std::vector<bool> extension_support(vulkan_extensions.size(), false);
- GetGpuSupportedVulkanVersionAndExtensions(info, vulkan_extensions,
- &extension_support);
-
- UMA_HISTOGRAM_BOOLEAN("GPU.SupportsVulkan", info->supports_vulkan);
- UMA_HISTOGRAM_ENUMERATION(
- "GPU.VulkanVersion",
- ConvertToHistogramVulkanVersion(info->vulkan_version));
-
- for (size_t i = 0; i < vulkan_extensions.size(); ++i) {
- std::string name = "GPU.VulkanExtSupport.";
- name.append(vulkan_extensions[i]);
- base::UmaHistogramBoolean(name, extension_support[i]);
- }
+ ConvertToHistogramFeatureLevel(d3d12_feature_level));
}
bool CollectD3D11FeatureInfo(D3D_FEATURE_LEVEL* d3d11_feature_level,
bool* has_discrete_gpu) {
- Microsoft::WRL::ComPtr<IDXGIFactory> dxgi_factory;
- if (FAILED(::CreateDXGIFactory(IID_PPV_ARGS(&dxgi_factory))))
+ Microsoft::WRL::ComPtr<IDXGIFactory1> dxgi_factory;
+ if (FAILED(::CreateDXGIFactory1(IID_PPV_ARGS(&dxgi_factory))))
return false;
base::ScopedNativeLibrary d3d11_library(
@@ -614,4 +632,30 @@ bool CollectBasicGraphicsInfo(GPUInfo* gpu_info) {
return CollectDriverInfoD3D(gpu_info);
}
+bool IdentifyActiveGPUWithLuid(GPUInfo* gpu_info) {
+ LUID luid;
+ if (!GetActiveAdapterLuid(&luid))
+ return false;
+
+ gpu_info->gpu.active = false;
+ for (size_t i = 0; i < gpu_info->secondary_gpus.size(); i++)
+ gpu_info->secondary_gpus[i].active = false;
+
+ if (gpu_info->gpu.luid.HighPart == luid.HighPart &&
+ gpu_info->gpu.luid.LowPart == luid.LowPart) {
+ gpu_info->gpu.active = true;
+ return true;
+ }
+
+ for (size_t i = 0; i < gpu_info->secondary_gpus.size(); i++) {
+ if (gpu_info->secondary_gpus[i].luid.HighPart == luid.HighPart &&
+ gpu_info->secondary_gpus[i].luid.LowPart == luid.LowPart) {
+ gpu_info->secondary_gpus[i].active = true;
+ return true;
+ }
+ }
+
+ return false;
+}
+
} // namespace gpu
diff --git a/chromium/gpu/config/gpu_info_unittest.cc b/chromium/gpu/config/gpu_info_unittest.cc
index 13bb5d38eff..3bd092c8fdc 100644
--- a/chromium/gpu/config/gpu_info_unittest.cc
+++ b/chromium/gpu/config/gpu_info_unittest.cc
@@ -16,7 +16,6 @@ class TestGPUInfoEnumerator : public gpu::GPUInfo::Enumerator {
video_decode_accelerator_profile_active_(false),
video_encode_accelerator_profile_active_(false),
image_decode_accelerator_profile_active_(false),
- dx12_vulkan_version_info_active_(false),
overlay_info_active_(false),
aux_attributes_active_(false) {}
@@ -63,14 +62,6 @@ class TestGPUInfoEnumerator : public gpu::GPUInfo::Enumerator {
image_decode_accelerator_profile_active_ = false;
}
- void BeginDx12VulkanVersionInfo() override {
- dx12_vulkan_version_info_active_ = true;
- }
-
- void EndDx12VulkanVersionInfo() override {
- dx12_vulkan_version_info_active_ = false;
- }
-
void BeginOverlayInfo() override { overlay_info_active_ = true; }
void EndOverlayInfo() override { overlay_info_active_ = false; }
@@ -94,10 +85,6 @@ class TestGPUInfoEnumerator : public gpu::GPUInfo::Enumerator {
return image_decode_accelerator_profile_active_;
}
- bool dx12_vulkan_version_info_active() const {
- return dx12_vulkan_version_info_active_;
- }
-
bool aux_attributes_active() const { return aux_attributes_active_; }
private:
@@ -105,7 +92,6 @@ class TestGPUInfoEnumerator : public gpu::GPUInfo::Enumerator {
bool video_decode_accelerator_profile_active_;
bool video_encode_accelerator_profile_active_;
bool image_decode_accelerator_profile_active_;
- bool dx12_vulkan_version_info_active_;
bool overlay_info_active_;
bool aux_attributes_active_;
};
@@ -121,7 +107,6 @@ TEST(GpuInfoTest, FieldEditStates) {
EXPECT_FALSE(enumerator.video_decode_accelerator_profile_active());
EXPECT_FALSE(enumerator.video_encode_accelerator_profile_active());
EXPECT_FALSE(enumerator.image_decode_accelerator_profile_active());
- EXPECT_FALSE(enumerator.dx12_vulkan_version_info_active());
EXPECT_FALSE(enumerator.aux_attributes_active());
}
diff --git a/chromium/gpu/config/gpu_lists_version.h b/chromium/gpu/config/gpu_lists_version.h
index 7fa92c79085..1dd6f587fda 100644
--- a/chromium/gpu/config/gpu_lists_version.h
+++ b/chromium/gpu/config/gpu_lists_version.h
@@ -3,6 +3,6 @@
#ifndef GPU_CONFIG_GPU_LISTS_VERSION_H_
#define GPU_CONFIG_GPU_LISTS_VERSION_H_
-#define GPU_LISTS_VERSION "80c974bf7990b9735a8e885046fc5c9b1da4796c"
+#define GPU_LISTS_VERSION "59840fa678c084e98201a428c7db996326e0c749"
#endif // GPU_CONFIG_GPU_LISTS_VERSION_H_
diff --git a/chromium/gpu/config/gpu_preferences_unittest.cc b/chromium/gpu/config/gpu_preferences_unittest.cc
index f2e0078f182..3cc5ecc9b74 100644
--- a/chromium/gpu/config/gpu_preferences_unittest.cc
+++ b/chromium/gpu/config/gpu_preferences_unittest.cc
@@ -5,8 +5,10 @@
#include <algorithm>
#include <cstring>
+#include "base/command_line.h"
#include "base/message_loop/message_pump_type.h"
#include "build/build_config.h"
+#include "gpu/config/gpu_switches.h"
#include "gpu/ipc/common/gpu_preferences.mojom.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -166,8 +168,7 @@ TEST(GpuPreferencesTest, EncodeDecode) {
GPU_PREFERENCES_FIELD(enable_oop_rasterization, true)
GPU_PREFERENCES_FIELD(disable_oop_rasterization, true)
GPU_PREFERENCES_FIELD(watchdog_starts_backgrounded, true)
- GPU_PREFERENCES_FIELD_ENUM(gr_context_type,
- GrContextType::kVulkan,
+ GPU_PREFERENCES_FIELD_ENUM(gr_context_type, GrContextType::kVulkan,
mojom::GrContextType::kVulkan)
GPU_PREFERENCES_FIELD_ENUM(use_vulkan, VulkanImplementationName::kNative,
mojom::VulkanImplementationName::kNative)
@@ -196,4 +197,84 @@ TEST(GpuPreferencesTest, EncodeDecode) {
}
}
+// Helper test for decoding GPU preferences from a crash dump string.
+TEST(GpuPreferencesTest, DISABLED_DecodePreferences) {
+ auto* command_line = base::CommandLine::ForCurrentProcess();
+ if (!command_line->HasSwitch(switches::kGpuPreferences)) {
+ LOG(ERROR) << "Please specify the preferences to decode via "
+ << switches::kGpuPreferences;
+ return;
+ }
+
+ const auto preferences =
+ command_line->GetSwitchValueASCII(switches::kGpuPreferences);
+
+ gpu::GpuPreferences gpu_preferences;
+ if (!gpu_preferences.FromSwitchValue(preferences)) {
+ LOG(ERROR) << "Failed to decode preferences: " << preferences;
+ return;
+ }
+
+ printf("GpuPreferences = {\n");
+#define PRINT_BOOL(key) \
+ printf(" %s: %s\n", #key, gpu_preferences.key ? "true" : "false")
+#define PRINT_INT(key) \
+ printf(" %s: %d\n", #key, static_cast<uint32_t>(gpu_preferences.key))
+
+ PRINT_BOOL(disable_accelerated_video_decode);
+ PRINT_BOOL(disable_accelerated_video_encode);
+ PRINT_BOOL(gpu_startup_dialog);
+ PRINT_BOOL(disable_gpu_watchdog);
+ PRINT_BOOL(gpu_sandbox_start_early);
+ PRINT_BOOL(enable_low_latency_dxva);
+ PRINT_BOOL(enable_zero_copy_dxgi_video);
+ PRINT_BOOL(enable_nv12_dxgi_video);
+ PRINT_BOOL(enable_media_foundation_vea_on_windows7);
+ PRINT_BOOL(disable_software_rasterizer);
+ PRINT_BOOL(log_gpu_control_list_decisions);
+ PRINT_BOOL(compile_shader_always_succeeds);
+ PRINT_BOOL(disable_gl_error_limit);
+ PRINT_BOOL(disable_glsl_translator);
+ PRINT_BOOL(disable_shader_name_hashing);
+ PRINT_BOOL(enable_gpu_command_logging);
+ PRINT_BOOL(enable_gpu_debugging);
+ PRINT_BOOL(enable_gpu_service_logging_gpu);
+ PRINT_BOOL(enable_gpu_driver_debug_logging);
+ PRINT_BOOL(disable_gpu_program_cache);
+ PRINT_BOOL(enforce_gl_minimums);
+ PRINT_INT(force_gpu_mem_available_bytes);
+ PRINT_INT(force_gpu_mem_discardable_limit_bytes);
+ PRINT_INT(gpu_program_cache_size);
+ PRINT_BOOL(disable_gpu_shader_disk_cache);
+ PRINT_BOOL(enable_threaded_texture_mailboxes);
+ PRINT_BOOL(gl_shader_interm_output);
+ PRINT_BOOL(emulate_shader_precision);
+ PRINT_BOOL(enable_gpu_service_logging);
+ PRINT_BOOL(enable_gpu_service_tracing);
+ PRINT_BOOL(use_passthrough_cmd_decoder);
+ PRINT_BOOL(disable_biplanar_gpu_memory_buffers_for_video_frames);
+ for (size_t i = 0; i < gpu_preferences.texture_target_exception_list.size();
+ ++i) {
+ PRINT_INT(texture_target_exception_list[i].usage);
+ PRINT_INT(texture_target_exception_list[i].format);
+ }
+ PRINT_BOOL(ignore_gpu_blacklist);
+ PRINT_BOOL(enable_oop_rasterization);
+ PRINT_BOOL(disable_oop_rasterization);
+ PRINT_BOOL(watchdog_starts_backgrounded);
+ PRINT_INT(gr_context_type);
+ PRINT_INT(use_vulkan);
+ PRINT_BOOL(enable_gpu_benchmarking_extension);
+ PRINT_BOOL(enable_webgpu);
+ PRINT_BOOL(enable_dawn_backend_validation);
+ PRINT_BOOL(enable_gpu_blocked_time_metric);
+ PRINT_BOOL(enable_perf_data_collection);
+#if defined(USE_OZONE)
+ PRINT_INT(message_pump_type);
+#endif
+ PRINT_BOOL(enable_native_gpu_memory_buffers);
+ PRINT_BOOL(force_disable_new_accelerated_video_decoder);
+ printf("}\n");
+}
+
} // namespace gpu
diff --git a/chromium/gpu/config/gpu_switches.cc b/chromium/gpu/config/gpu_switches.cc
index c44e30735c0..301e97583d0 100644
--- a/chromium/gpu/config/gpu_switches.cc
+++ b/chromium/gpu/config/gpu_switches.cc
@@ -14,7 +14,7 @@ const char kDisableGpuRasterization[] = "disable-gpu-rasterization";
// Skia GPU backend. Only valid with GPU accelerated compositing.
const char kEnableGpuRasterization[] = "enable-gpu-rasterization";
-// Select a different set of GPU blacklist entries with the specificed
+// Select a different set of GPU blacklist entries with the specified
// test_group ID.
const char kGpuBlacklistTestGroup[] = "gpu-blacklist-test-group";
diff --git a/chromium/gpu/config/gpu_util.cc b/chromium/gpu/config/gpu_util.cc
index d5517a075ff..066cef555d2 100644
--- a/chromium/gpu/config/gpu_util.cc
+++ b/chromium/gpu/config/gpu_util.cc
@@ -20,6 +20,7 @@
#include "base/command_line.h"
#include "base/logging.h"
#include "base/metrics/histogram_macros.h"
+#include "base/notreached.h"
#include "base/path_service.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_split.h"
@@ -170,6 +171,15 @@ GpuFeatureStatus GetGpuRasterizationFeatureStatus(
if (blacklisted_features.count(GPU_FEATURE_TYPE_GPU_RASTERIZATION))
return kGpuFeatureStatusBlacklisted;
+ // Enable gpu rasterization for vulkan, unless it is overridden by
+ // commandline.
+ if (base::FeatureList::IsEnabled(features::kVulkan) &&
+ !base::FeatureList::GetInstance()->IsFeatureOverriddenFromCommandLine(
+ features::kDefaultEnableGpuRasterization.name,
+ base::FeatureList::OVERRIDE_DISABLE_FEATURE)) {
+ return kGpuFeatureStatusEnabled;
+ }
+
// Gpu Rasterization on platforms that are not fully enabled is controlled by
// a finch experiment.
if (!base::FeatureList::IsEnabled(features::kDefaultEnableGpuRasterization))
@@ -207,11 +217,14 @@ GpuFeatureStatus GetOopRasterizationFeatureStatus(
else if (gpu_preferences.enable_oop_rasterization)
return kGpuFeatureStatusEnabled;
- // TODO(enne): Eventually oop rasterization will replace gpu rasterization,
- // and so we will need to address the underlying bugs or turn of GPU
- // rasterization for these cases.
- if (blacklisted_features.count(GPU_FEATURE_TYPE_OOP_RASTERIZATION))
- return kGpuFeatureStatusBlacklisted;
+ // Enable OOP rasterization for vulkan, unless it is overridden by
+ // commandline.
+ if (base::FeatureList::IsEnabled(features::kVulkan) &&
+ !base::FeatureList::GetInstance()->IsFeatureOverriddenFromCommandLine(
+ features::kDefaultEnableOopRasterization.name,
+ base::FeatureList::OVERRIDE_DISABLE_FEATURE)) {
+ return kGpuFeatureStatusEnabled;
+ }
// OOP Rasterization on platforms that are not fully enabled is controlled by
// a finch experiment.
@@ -1021,21 +1034,4 @@ std::string VulkanVersionToString(uint32_t vulkan_version) {
}
}
#endif // OS_WIN
-
-VulkanVersion ConvertToHistogramVulkanVersion(uint32_t vulkan_version) {
- if (vulkan_version < VK_MAKE_VERSION(1, 0, 0))
- return VulkanVersion::kVulkanVersionUnknown;
- else if (vulkan_version < VK_MAKE_VERSION(1, 1, 0))
- return VulkanVersion::kVulkanVersion_1_0_0;
- else if (vulkan_version < VK_MAKE_VERSION(1, 2, 0))
- return VulkanVersion::kVulkanVersion_1_1_0;
- else if (vulkan_version < VK_MAKE_VERSION(1, 3, 0))
- return VulkanVersion::kVulkanVersion_1_2_0;
- else {
- // Need to add 1.3.0+ to enum VulkanVersion.
- NOTREACHED();
- return VulkanVersion::kVulkanVersion_1_2_0;
- }
-}
-
} // namespace gpu
diff --git a/chromium/gpu/config/gpu_util.h b/chromium/gpu/config/gpu_util.h
index b4086559520..22ba88d991f 100644
--- a/chromium/gpu/config/gpu_util.h
+++ b/chromium/gpu/config/gpu_util.h
@@ -97,20 +97,6 @@ GPU_EXPORT std::string D3DFeatureLevelToString(uint32_t d3d_feature_level);
GPU_EXPORT std::string VulkanVersionToString(uint32_t vulkan_version);
#endif // OS_WIN
-// These values are persisted to logs. Entries should not be renumbered and
-// numeric values should never be reused.
-// This should match enum VulkanVersion in \tools\metrics\histograms\enums.xml
-enum class VulkanVersion {
- kVulkanVersionUnknown = 0,
- kVulkanVersion_1_0_0 = 1,
- kVulkanVersion_1_1_0 = 2,
- kVulkanVersion_1_2_0 = 3,
- kMaxValue = kVulkanVersion_1_2_0,
-};
-
-GPU_EXPORT VulkanVersion
-ConvertToHistogramVulkanVersion(uint32_t vulkan_version);
-
} // namespace gpu
#endif // GPU_CONFIG_GPU_UTIL_H_
diff --git a/chromium/gpu/config/gpu_workaround_list.txt b/chromium/gpu/config/gpu_workaround_list.txt
index fd5b9bb5e2a..5edf0d7b0ca 100644
--- a/chromium/gpu/config/gpu_workaround_list.txt
+++ b/chromium/gpu/config/gpu_workaround_list.txt
@@ -12,7 +12,9 @@ count_all_in_varyings_packing
decode_encode_srgb_for_generatemipmap
depth_stencil_renderbuffer_resize_emulation
disable_2d_canvas_auto_flush
-disable_accelerated_vpx_decode
+disable_accelerated_av1_decode
+disable_accelerated_vp8_decode
+disable_accelerated_vp9_decode
disable_async_readpixels
disable_av_sample_buffer_display_layer
disable_blend_equation_advanced
@@ -118,6 +120,7 @@ use_es2_for_oopr
use_gpu_driver_workaround_for_testing
use_intermediary_for_copy_texture_image
use_non_zero_size_for_client_side_stream_buffers
+use_single_video_decoder_texture
use_unused_standard_shared_blocks
use_virtualized_gl_contexts
validate_multisample_buffer_allocation
diff --git a/chromium/gpu/config/process_json.py b/chromium/gpu/config/process_json.py
index 1ec57b6a483..31c53351a3d 100755
--- a/chromium/gpu/config/process_json.py
+++ b/chromium/gpu/config/process_json.py
@@ -56,6 +56,16 @@ Legal: "24.20.100.7000", "0.0.100.7000", "0.0.0.7000", "0.0.100.0"
Illegal: "24.0.0.0", "24.20.0.0", "0.0.99.0"
'''
+NVIDIA_DRIVER_VERSION_SCHEMA = '''
+The version format used by Nvidia is ABC.DE, where A-E are any digit. When
+queried by Chrome, it will detect XX.XX.XXXA.BCDE, where 'X' is any digit and
+can be ignored. Chrome will re-format this to ABC.DE, and compare to the
+version listed here.
+
+So, Chrome might detect 26.21.0014.4575, which would be given here as 445.75 in
+the Nvidia version schema. The 26.21.001 is ignored.
+'''
+
def check_intel_driver_version(version):
ver_list = version.split('.')
@@ -68,6 +78,20 @@ def check_intel_driver_version(version):
return False
return True
+def check_nvidia_driver_version(version):
+ ver_list = version.split('.')
+ # Allow "456" to match "456.*", so allow a single-entry list.
+ if len(ver_list) == 0 or len(ver_list) > 2:
+ return False;
+ elif len(ver_list) == 2 and len(ver_list[1]) != 2:
+ return False
+ # Must start with three digits, whether it's "456.*" or "456.78".
+ if len(ver_list[0]) != 3:
+ return False
+ for ver in ver_list:
+ if not ver.isdigit():
+ return False
+ return True
def load_software_rendering_list_features(feature_type_filename):
header_file = open(feature_type_filename, 'r')
@@ -236,6 +260,7 @@ def write_version(version_info, name_tag, data_file):
schema_map = {
'common': 'Common',
'intel_driver': 'IntelDriver',
+ 'nvidia_driver': 'NvidiaDriver',
'': 'Common',
}
assert schema in schema_map
@@ -299,9 +324,48 @@ def write_string_value(string, name_tag, data_file):
def write_boolean_value(value, name_tag, data_file):
data_file.write('%s, // %s\n' % (str(value).lower(), name_tag))
+
def write_integer_value(value, name_tag, data_file):
data_file.write('%s, // %s\n' % (str(value), name_tag))
+
+def write_device_list(entry_id, device_id, device_revision, is_exception,
+ exception_id, unique_symbol_id, data_file,
+ data_helper_file):
+ if device_id:
+ # It's one of the three ways to specify devices:
+ # 1) only specify device IDs
+ # 2) specify one device ID, associated with multiple revisions
+ # 3) specify k device IDs associated with k device revisions.
+ device_size = len(device_id)
+ if device_size == 1 and device_revision and len(device_revision) > 1:
+ device_size = len(device_revision)
+ for ii in range(device_size - 1):
+ device_id.append(device_id[0])
+ if device_revision is None:
+ device_revision = []
+ for ii in range(device_size):
+ device_revision.append('0x0')
+ assert len(device_id) == len(device_revision)
+ var_name = 'kDevicesFor%sEntry%d' % (unique_symbol_id, entry_id)
+ if is_exception:
+ var_name += 'Exception' + str(exception_id)
+ # define the list
+ data_helper_file.write('const GpuControlList::Device %s[%d] = {\n' %
+ (var_name, len(device_id)))
+ for ii in range(device_size):
+ data_helper_file.write('{%s, %s},\n' %
+ (device_id[ii], device_revision[ii]))
+ data_helper_file.write('};\n\n')
+ # reference the list
+ data_file.write('base::size(%s), // Devices size\n' % var_name)
+ data_file.write('%s, // Devices\n' % var_name)
+ else:
+ assert not device_revision
+ data_file.write('0, // Devices size\n')
+ data_file.write('nullptr, // Devices\n')
+
+
def write_machine_model_info(entry_id, is_exception, exception_id,
machine_model_name, machine_model_version,
data_file, data_helper_file):
@@ -348,55 +412,56 @@ def write_os_type(os_type, data_file):
def write_multi_gpu_category(multi_gpu_category, data_file):
- map = {
+ suffix_for_category = {
'primary': 'Primary',
'secondary': 'Secondary',
'active': 'Active',
'any': 'Any',
'': 'None',
}
- assert multi_gpu_category in map
+ assert multi_gpu_category in suffix_for_category
data_file.write(
'GpuControlList::kMultiGpuCategory%s, // multi_gpu_category\n' %
- map[multi_gpu_category])
+ suffix_for_category[multi_gpu_category])
def write_multi_gpu_style(multi_gpu_style, data_file):
- map = {
+ suffix_for_style = {
'optimus': 'Optimus',
'amd_switchable': 'AMDSwitchable',
'amd_switchable_discrete': 'AMDSwitchableDiscrete',
'amd_switchable_integrated': 'AMDSwitchableIntegrated',
'': 'None',
}
- assert multi_gpu_style in map
+ assert multi_gpu_style in suffix_for_style
data_file.write(
'GpuControlList::kMultiGpuStyle%s, // multi_gpu_style\n' %
- map[multi_gpu_style])
+ suffix_for_style[multi_gpu_style])
def write_gl_type(gl_type, data_file):
- map = {
+ suffix_for_type = {
'gl': 'GL',
'gles': 'GLES',
'angle': 'ANGLE',
'': 'None',
}
- assert gl_type in map
- data_file.write('GpuControlList::kGLType%s, // gl_type\n' % map[gl_type])
+ assert gl_type in suffix_for_type
+ data_file.write('GpuControlList::kGLType%s, // gl_type\n' %
+ suffix_for_type[gl_type])
def write_supported_or_not(feature_value, feature_name, data_file):
if feature_value is None:
feature_value = 'dont_care'
- map = {
+ suffix_for_value = {
'supported': 'Supported',
'unsupported': 'Unsupported',
'dont_care': 'DontCare',
}
- assert feature_value in map
+ assert feature_value in suffix_for_value
data_file.write('GpuControlList::k%s, // %s\n' %
- (map[feature_value], feature_name))
+ (suffix_for_value[feature_value], feature_name))
def write_conditions(entry_id, is_exception, exception_id, entry,
@@ -406,6 +471,7 @@ def write_conditions(entry_id, is_exception, exception_id, entry,
os_version = None
vendor_id = 0
device_id = None
+ device_revision = None
multi_gpu_category = ''
multi_gpu_style = ''
intel_gpu_series_list = None
@@ -467,6 +533,8 @@ def write_conditions(entry_id, is_exception, exception_id, entry,
vendor_id = int(entry[key], 0)
elif key == 'device_id':
device_id = entry[key]
+ elif key == 'device_revision':
+ device_revision = entry[key]
elif key == 'multi_gpu_category':
multi_gpu_category = entry[key]
elif key == 'multi_gpu_style':
@@ -523,15 +591,14 @@ def write_conditions(entry_id, is_exception, exception_id, entry,
write_version(os_version, 'os_version', data_file)
data_file.write(format(vendor_id, '#04x'))
data_file.write(', // vendor_id\n')
- write_number_list(entry_id, 'uint32_t', 'DeviceIDs', device_id, is_exception,
+ write_device_list(entry_id, device_id, device_revision, is_exception,
exception_id, unique_symbol_id, data_file,
data_helper_file)
write_multi_gpu_category(multi_gpu_category, data_file)
write_multi_gpu_style(multi_gpu_style, data_file)
# group driver info
if driver_vendor != '' or driver_version != None:
- if (driver_version and driver_version.has_key('schema') and
- driver_version['schema'] == 'intel_driver'):
+ if driver_version and driver_version.get('schema') == 'intel_driver':
assert os_type == 'win', 'Intel driver schema is only for Windows'
is_intel = (format(vendor_id, '#04x') == '0x8086' or
intel_gpu_series_list or
@@ -544,6 +611,16 @@ def write_conditions(entry_id, is_exception, exception_id, entry,
check_intel_driver_version(driver_version['value2']))
assert valid_version, INTEL_DRIVER_VERSION_SCHEMA
+ if driver_version and driver_version.get('schema') == 'nvidia_driver':
+ assert os_type == 'win', 'Nvidia driver schema is only for Windows'
+ is_nvidia = (format(vendor_id, '#04x') == '0x10de')
+ assert is_nvidia, 'Nvidia driver schema is only for Nvidia GPUs'
+ valid_version = check_nvidia_driver_version(driver_version['value'])
+ if driver_version.has_key('value2'):
+ valid_version = (valid_version and
+ check_nvidia_driver_version(driver_version['value2']))
+ assert valid_version, NVIDIA_DRIVER_VERSION_SCHEMA
+
write_driver_info(entry_id, is_exception, exception_id, driver_vendor,
driver_version, unique_symbol_id,
data_file, data_helper_file)
@@ -739,13 +816,13 @@ def format_files(generated_files):
call([formatter, "-i", "-style=chromium", filename])
-def write_header_file_guard(file, filename, path, begin):
+def write_header_file_guard(out_file, filename, path, begin):
token = (path.upper().replace('/', '_') + '_' +
filename.upper().replace('.', '_') + '_')
if begin:
- file.write('#ifndef %s\n#define %s\n\n' % (token, token))
+ out_file.write('#ifndef %s\n#define %s\n\n' % (token, token))
else:
- file.write('\n#endif // %s\n' % token)
+ out_file.write('\n#endif // %s\n' % token)
def process_json_file(json_filepath, list_tag,
diff --git a/chromium/gpu/config/software_rendering_list.json b/chromium/gpu/config/software_rendering_list.json
index e94ed4307c7..5b5c542dbc9 100644
--- a/chromium/gpu/config/software_rendering_list.json
+++ b/chromium/gpu/config/software_rendering_list.json
@@ -620,11 +620,12 @@
{
"id": 90,
"description": "Accelerated video decode interferes with GPU sandbox on certain NVIDIA drivers",
- "cr_bugs": [298968],
+ "cr_bugs": [298968, 1020137],
"os": {
"type": "win"
},
"vendor_id": "0x10de",
+ "multi_gpu_category": "any",
"driver_version": {
"comment": "INF_version: 8.17.12.5729, 8.17.12.8026; date: 05/22/2010, 08/03/2011",
"op": "between",
@@ -1549,21 +1550,69 @@
},
{
"id": 154,
- "description": "Protected video decoding with swap chain is for Windows and Intel only",
- "features": [
- "protected_video_decode"
- ],
+ "description": "Protected video decoding with swap chain is for certain Intel and AMD GPUs on Windows",
+ "cr_bugs": [1093625],
"exceptions": [
{
+ "vendor_id": "0x8086",
"os": {
"type": "win",
"version": {
"op": ">=",
- "value": "10.0"
+ "value": "10"
}
+ }
+ },
+ {
+ "vendor_id": "0x1002",
+ "device_id": ["0x15d8"],
+ "device_revision": ["0xe1", "0xe2"],
+ "driver_version": {
+ "op": ">=",
+ "value": "26.20.12055.1000"
},
- "vendor_id": "0x8086"
+ "os": {
+ "type": "win",
+ "version": {
+ "op": ">=",
+ "value": "10"
+ }
+ }
+ },
+ {
+ "vendor_id": "0x1002",
+ "device_id": ["0x15d8", "0x15dd"],
+ "device_revision": ["0x93", "0x86"],
+ "driver_version": {
+ "op": ">=",
+ "value": "26.20.15023.6032"
+ },
+ "os": {
+ "type": "win",
+ "version": {
+ "op": ">=",
+ "value": "10"
+ }
+ }
+ },
+ {
+ "vendor_id": "0x1002",
+ "device_id": ["0x15d8", "0x15dd"],
+ "driver_version": {
+ "op": ">=",
+ "value": "27.20.1002.34"
+ },
+ "os": {
+ "type": "win",
+ "version": {
+ "op": ">=",
+ "value": "10"
+ }
+ }
}
+ ],
+ "features": [
+ "protected_video_decode"
]
},
{