Use Intel GPU generation in blacklisting

Besides codename, now it supports specifying Intel GPU by generation.
Also added Whisky Lake, Comet Lake, Cannon Lake and Ice Lake as
Intel's new GPU types.

BUG=991895
TEST=gpu_unittests

Change-Id: Ia7d6e355bb04cbb82c59d9cf5f6436353ac626bf
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1705972
Commit-Queue: Lin Sun <lin.sun@intel.com>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Reviewed-by: Maggie Chen <magchen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#688953}
diff --git a/content/browser/gpu/gpu_data_manager_testing_autogen.cc b/content/browser/gpu/gpu_data_manager_testing_autogen.cc
index d225641..4b21ed1 100644
--- a/content/browser/gpu/gpu_data_manager_testing_autogen.cc
+++ b/content/browser/gpu/gpu_data_manager_testing_autogen.cc
@@ -41,7 +41,9 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry1_572251052,              // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},         // intel_gpu_generation
+            &kMoreForEntry1_572251052,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -71,7 +73,9 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry2_572251052,              // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},         // intel_gpu_generation
+            &kMoreForEntry2_572251052,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -101,7 +105,9 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry3_572251052,              // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},         // intel_gpu_generation
+            &kMoreForEntry3_572251052,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -131,7 +137,9 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry4_572251052,              // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},         // intel_gpu_generation
+            &kMoreForEntry4_572251052,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -161,7 +169,9 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry5_572251052,              // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},         // intel_gpu_generation
+            &kMoreForEntry5_572251052,  // more data
         },
         base::size(kExceptionsForEntry5),  // exceptions count
         kExceptionsForEntry5,              // exceptions
@@ -191,7 +201,9 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry6_572251052,              // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},         // intel_gpu_generation
+            &kMoreForEntry6_572251052,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -221,7 +233,9 @@
             nullptr,                                  // machine model info
             0,                                        // gpu_series size
             nullptr,                                  // gpu_series
-            &kMoreForEntry7_572251052,                // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},         // intel_gpu_generation
+            &kMoreForEntry7_572251052,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
diff --git a/content/browser/gpu/gpu_data_manager_testing_exceptions_autogen.h b/content/browser/gpu/gpu_data_manager_testing_exceptions_autogen.h
index 96ebb8d2..61bc1db1 100644
--- a/content/browser/gpu/gpu_data_manager_testing_exceptions_autogen.h
+++ b/content/browser/gpu/gpu_data_manager_testing_exceptions_autogen.h
@@ -27,7 +27,9 @@
         nullptr,                                          // machine model info
         0,                                                // gpu_series size
         nullptr,                                          // gpu_series
-        &kMoreForEntry5_572251052Exception0,              // more data
+        {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+         nullptr, nullptr},                   // intel_gpu_generation
+        &kMoreForEntry5_572251052Exception0,  // more data
     },
 };
 
diff --git a/gpu/config/gpu_blacklist_unittest.cc b/gpu/config/gpu_blacklist_unittest.cc
index 6c450d7..5e0d434 100644
--- a/gpu/config/gpu_blacklist_unittest.cc
+++ b/gpu/config/gpu_blacklist_unittest.cc
@@ -48,6 +48,8 @@
             nullptr,                               // machine model info
             0,                                     // gpu_series size
             nullptr,                               // gpu_series
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},                    // intel_gpu_generation
             nullptr,                               // more conditions
         },
         0,        // exceptions count
diff --git a/gpu/config/gpu_control_list.cc b/gpu/config/gpu_control_list.cc
index 2c6c9c4..38b497a 100644
--- a/gpu/config/gpu_control_list.cc
+++ b/gpu/config/gpu_control_list.cc
@@ -336,7 +336,7 @@
     if (os_version.IsSpecified() && !os_version.Contains(target_os_version))
       return false;
   }
-  if (vendor_id != 0 || gpu_series_list_size > 0) {
+  if (vendor_id != 0 || gpu_series_list_size > 0 || intel_gpu_generation.IsSpecified()) {
     std::vector<GPUInfo::GPUDevice> candidates;
     switch (multi_gpu_category) {
       case kMultiGpuCategoryPrimary:
@@ -376,6 +376,17 @@
           }
         }
       }
+    } 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);
+        if (candidate_generation.empty())
+          continue;
+        if (intel_gpu_generation.Contains(candidate_generation)) {
+          found = true;
+          break;
+        }
+      }
     } else {
       GPUInfo::GPUDevice gpu;
       gpu.vendor_id = vendor_id;
diff --git a/gpu/config/gpu_control_list.h b/gpu/config/gpu_control_list.h
index 1b43f9e8..f836439 100644
--- a/gpu/config/gpu_control_list.h
+++ b/gpu/config/gpu_control_list.h
@@ -182,6 +182,7 @@
     const MachineModelInfo* machine_model_info;
     size_t gpu_series_list_size;
     const GpuSeriesType* gpu_series_list;
+    Version intel_gpu_generation;
     const More* more;
 
     bool Contains(OsType os_type,
diff --git a/gpu/config/gpu_control_list_entry_unittest.cc b/gpu/config/gpu_control_list_entry_unittest.cc
index c18ffd0..d02c664 100644
--- a/gpu/config/gpu_control_list_entry_unittest.cc
+++ b/gpu/config/gpu_control_list_entry_unittest.cc
@@ -865,6 +865,188 @@
   EXPECT_TRUE(entry.Contains(kOsWin, "10.0", gpu_info));
 }
 
+TEST_F(GpuControlListEntryTest, GpuGeneration) {
+  const Entry& entry = GetEntry(kGpuControlListEntryTest_GpuGeneration);
+  GPUInfo gpu_info;
+  gpu_info.gpu.vendor_id = 0x8086;
+  // Intel SandyBridge
+  gpu_info.gpu.device_id = 0x0116;
+  EXPECT_TRUE(entry.Contains(kOsWin, "10.0", gpu_info));
+  // Intel Haswell
+  gpu_info.gpu.device_id = 0x0416;
+  EXPECT_TRUE(entry.Contains(kOsWin, "10.0", gpu_info));
+  // Intel Broadwell
+  gpu_info.gpu.device_id = 0x1616;
+  EXPECT_TRUE(entry.Contains(kOsWin, "10.0", gpu_info));
+  // Intel KabyLake
+  gpu_info.gpu.device_id = 0x5916;
+  EXPECT_FALSE(entry.Contains(kOsWin, "10.0", gpu_info));
+  // Intel IceLake
+  gpu_info.gpu.device_id = 0x8A56;
+  EXPECT_FALSE(entry.Contains(kOsWin, "10.0", gpu_info));
+  // Non-Intel GPU
+  gpu_info.gpu.vendor_id = 0x10de;
+  gpu_info.gpu.device_id = 0x0df8;
+  EXPECT_FALSE(entry.Contains(kOsWin, "10.0", gpu_info));
+}
+
+TEST_F(GpuControlListEntryTest, GpuGenerationActive) {
+  const Entry& entry = GetEntry(kGpuControlListEntryTest_GpuGenerationActive);
+
+  // Intel Broadwell
+  GPUInfo::GPUDevice intel_gpu;
+  intel_gpu.vendor_id = 0x8086;
+  intel_gpu.device_id = 0x1616;
+  // NVidia GPU
+  GPUInfo::GPUDevice nvidia_gpu;
+  nvidia_gpu.vendor_id = 0x10de;
+  nvidia_gpu.device_id = 0x0df8;
+
+  {  // Single GPU
+    GPUInfo gpu_info;
+    gpu_info.gpu = intel_gpu;
+    EXPECT_TRUE(entry.Contains(kOsWin, "10.0", gpu_info));
+  }
+
+  {  // Dual GPU, Intel is primary and active
+    GPUInfo gpu_info;
+    gpu_info.gpu = intel_gpu;
+    gpu_info.gpu.active = true;
+    gpu_info.secondary_gpus.push_back(nvidia_gpu);
+    EXPECT_TRUE(entry.Contains(kOsWin, "10.0", gpu_info));
+  }
+
+  {  // Dual GPU, Intel is secondary and active
+    GPUInfo gpu_info;
+    gpu_info.gpu = nvidia_gpu;
+    gpu_info.secondary_gpus.push_back(intel_gpu);
+    gpu_info.secondary_gpus[0].active = true;
+    EXPECT_TRUE(entry.Contains(kOsWin, "10.0", gpu_info));
+  }
+
+  {  // Dual GPU, NVidia is primary and active
+    GPUInfo gpu_info;
+    gpu_info.gpu = nvidia_gpu;
+    gpu_info.gpu.active = true;
+    gpu_info.secondary_gpus.push_back(intel_gpu);
+    EXPECT_FALSE(entry.Contains(kOsWin, "10.0", gpu_info));
+  }
+
+  {  // Dual GPU, NVidia is secondary and active
+    GPUInfo gpu_info;
+    gpu_info.gpu = intel_gpu;
+    gpu_info.secondary_gpus.push_back(nvidia_gpu);
+    gpu_info.secondary_gpus[0].active = true;
+    EXPECT_FALSE(entry.Contains(kOsWin, "10.0", gpu_info));
+  }
+}
+
+TEST_F(GpuControlListEntryTest, GpuGenerationAny) {
+  const Entry& entry = GetEntry(kGpuControlListEntryTest_GpuGenerationAny);
+
+  // Intel Broadwell
+  GPUInfo::GPUDevice intel_gpu;
+  intel_gpu.vendor_id = 0x8086;
+  intel_gpu.device_id = 0x1616;
+  // NVidia GPU
+  GPUInfo::GPUDevice nvidia_gpu;
+  nvidia_gpu.vendor_id = 0x10de;
+  nvidia_gpu.device_id = 0x0df8;
+
+  {  // Single GPU Intel
+    GPUInfo gpu_info;
+    gpu_info.gpu = intel_gpu;
+    EXPECT_TRUE(entry.Contains(kOsWin, "10.0", gpu_info));
+  }
+
+  {  // Single GPU Nvidia
+    GPUInfo gpu_info;
+    gpu_info.gpu = nvidia_gpu;
+    EXPECT_FALSE(entry.Contains(kOsWin, "10.0", gpu_info));
+  }
+
+  {  // Dual GPU, Intel is primary
+    GPUInfo gpu_info;
+    gpu_info.gpu = intel_gpu;
+    gpu_info.secondary_gpus.push_back(nvidia_gpu);
+    EXPECT_TRUE(entry.Contains(kOsWin, "10.0", gpu_info));
+  }
+
+  {  // Dual GPU, Intel is secondary
+    GPUInfo gpu_info;
+    gpu_info.gpu = nvidia_gpu;
+    gpu_info.secondary_gpus.push_back(intel_gpu);
+    EXPECT_TRUE(entry.Contains(kOsWin, "10.0", gpu_info));
+  }
+}
+
+TEST_F(GpuControlListEntryTest, GpuGenerationPrimary) {
+  const Entry& entry = GetEntry(kGpuControlListEntryTest_GpuGenerationPrimary);
+
+  // Intel Broadwell
+  GPUInfo::GPUDevice intel_gpu;
+  intel_gpu.vendor_id = 0x8086;
+  intel_gpu.device_id = 0x1616;
+  // NVidia GPU
+  GPUInfo::GPUDevice nvidia_gpu;
+  nvidia_gpu.vendor_id = 0x10de;
+  nvidia_gpu.device_id = 0x0df8;
+
+  {  // Single GPU
+    GPUInfo gpu_info;
+    gpu_info.gpu = intel_gpu;
+    EXPECT_TRUE(entry.Contains(kOsWin, "10.0", gpu_info));
+  }
+
+  {  // Dual GPU, Intel is primary
+    GPUInfo gpu_info;
+    gpu_info.gpu = intel_gpu;
+    gpu_info.secondary_gpus.push_back(nvidia_gpu);
+    EXPECT_TRUE(entry.Contains(kOsWin, "10.0", gpu_info));
+  }
+
+  {  // Dual GPU, Intel is secondary
+    GPUInfo gpu_info;
+    gpu_info.gpu = nvidia_gpu;
+    gpu_info.secondary_gpus.push_back(intel_gpu);
+    EXPECT_FALSE(entry.Contains(kOsWin, "10.0", gpu_info));
+  }
+}
+
+TEST_F(GpuControlListEntryTest, GpuGenerationSecondary) {
+  const Entry& entry = GetEntry(kGpuControlListEntryTest_GpuGenerationSecondary);
+
+  // Intel Broadwell
+  GPUInfo::GPUDevice intel_gpu;
+  intel_gpu.vendor_id = 0x8086;
+  intel_gpu.device_id = 0x1616;
+  // NVidia GPU
+  GPUInfo::GPUDevice nvidia_gpu;
+  nvidia_gpu.vendor_id = 0x10de;
+  nvidia_gpu.device_id = 0x0df8;
+
+
+  {  // Single GPU
+    GPUInfo gpu_info;
+    gpu_info.gpu = intel_gpu;
+    EXPECT_FALSE(entry.Contains(kOsWin, "10.0", gpu_info));
+  }
+
+  {  // Dual GPU, Intel is primary
+    GPUInfo gpu_info;
+    gpu_info.gpu = intel_gpu;
+    gpu_info.secondary_gpus.push_back(nvidia_gpu);
+    EXPECT_FALSE(entry.Contains(kOsWin, "10.0", gpu_info));
+  }
+
+  {  // Dual GPU, Intel is secondary
+    GPUInfo gpu_info;
+    gpu_info.gpu = nvidia_gpu;
+    gpu_info.secondary_gpus.push_back(intel_gpu);
+    EXPECT_TRUE(entry.Contains(kOsWin, "10.0", gpu_info));
+  }
+}
+
 #if defined(OS_WIN)
 TEST_F(GpuControlListEntryTest, HardwareOverlay) {
   const Entry& entry = GetEntry(kGpuControlListEntryTest_HardwareOverlay);
diff --git a/gpu/config/gpu_control_list_format.txt b/gpu/config/gpu_control_list_format.txt
index be0b348..b61c158f 100644
--- a/gpu/config/gpu_control_list_format.txt
+++ b/gpu/config/gpu_control_list_format.txt
@@ -72,11 +72,14 @@
 //     include: "intel_sandybridge", "intel_valleyview", "intel_ivybridge",
 //     "intel_haswell", "intel_cherryview", "intel_broadwell",
 //     "intel_apollolake", "intel_skylake", "intel_geminilake",
-//     "intel_kabylake", "intel_coffeelake".
+//     "intel_kabylake", "intel_coffeelake", "intel_whiskeylake",
+//     "intel_cometlake", "intel_cannonlake", "intel_icelake".
 // 29. "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
+//     specific integer (meaning generation) associated.
 //
 // VERSION includes "op", "style", "value", and "value2".  "op" can be any of
 // the following values: "=", "<", "<=", ">", ">=", "any", "between".  "style"
diff --git a/gpu/config/gpu_control_list_testing.json b/gpu/config/gpu_control_list_testing.json
index 1d87989..55f5852 100644
--- a/gpu/config/gpu_control_list_testing.json
+++ b/gpu/config/gpu_control_list_testing.json
@@ -812,6 +812,65 @@
       "features": [
         "test_feature_0"
       ]
+    },
+    {
+      "id": 68,
+      "description": "GpuControlListEntryTest.GpuGeneration",
+      "intel_gpu_generation": {
+        "op": "<",
+        "value": "9"
+      },
+      "features": [
+        "test_feature_0"
+      ]
+    },
+    {
+      "id": 69,
+      "description": "GpuControlListEntryTest.GpuGenerationActive",
+      "intel_gpu_generation": {
+        "op": "<",
+        "value": "9"
+      },
+      "multi_gpu_category": "active",
+      "features": [
+        "test_feature_0"
+      ]
+    },
+    {
+      "id": 70,
+      "description": "GpuControlListEntryTest.GpuGenerationAny",
+      "intel_gpu_generation": {
+        "op": "<",
+        "value": "9"
+      },
+      "multi_gpu_category": "any",
+      "features": [
+        "test_feature_0"
+      ]
+    },
+    {
+      "id": 71,
+      "description": "GpuControlListEntryTest.GpuGenerationPrimary",
+      "intel_gpu_generation": {
+        "op": "<",
+        "value": "9"
+      },
+      "multi_gpu_category": "primary",
+      "features": [
+        "test_feature_0"
+      ]
+    },
+    {
+      "id": 72,
+      "description": "GpuControlListEntryTest.GpuGenerationSecondary",
+      "intel_gpu_generation": {
+        "op": "<",
+        "value": "9"
+      },
+      "multi_gpu_category": "secondary",
+      "features": [
+        "test_feature_0"
+      ]
     }
   ]
 }
diff --git a/gpu/config/gpu_control_list_testing_arrays_and_structs_autogen.h b/gpu/config/gpu_control_list_testing_arrays_and_structs_autogen.h
index 2062513..cd45ad0 100644
--- a/gpu/config/gpu_control_list_testing_arrays_and_structs_autogen.h
+++ b/gpu/config/gpu_control_list_testing_arrays_and_structs_autogen.h
@@ -1554,8 +1554,8 @@
 };
 
 const GpuSeriesType kGpuSeriesForEntry60[2] = {
-    GpuSeriesType::kIntelSkyLake,
-    GpuSeriesType::kIntelKabyLake,
+    GpuSeriesType::kIntelSkylake,
+    GpuSeriesType::kIntelKabylake,
 };
 
 const GpuControlList::More kMoreForEntry60_1440601243 = {
@@ -1579,7 +1579,7 @@
 };
 
 const GpuSeriesType kGpuSeriesForEntry61[1] = {
-    GpuSeriesType::kIntelKabyLake,
+    GpuSeriesType::kIntelKabylake,
 };
 
 const GpuControlList::More kMoreForEntry61_1440601243 = {
@@ -1603,7 +1603,7 @@
 };
 
 const GpuSeriesType kGpuSeriesForEntry62[1] = {
-    GpuSeriesType::kIntelKabyLake,
+    GpuSeriesType::kIntelKabylake,
 };
 
 const GpuControlList::More kMoreForEntry62_1440601243 = {
@@ -1627,7 +1627,7 @@
 };
 
 const GpuSeriesType kGpuSeriesForEntry63[1] = {
-    GpuSeriesType::kIntelKabyLake,
+    GpuSeriesType::kIntelKabylake,
 };
 
 const GpuControlList::More kMoreForEntry63_1440601243 = {
@@ -1651,7 +1651,7 @@
 };
 
 const GpuSeriesType kGpuSeriesForEntry64[1] = {
-    GpuSeriesType::kIntelKabyLake,
+    GpuSeriesType::kIntelKabylake,
 };
 
 const GpuControlList::More kMoreForEntry64_1440601243 = {
@@ -1691,7 +1691,7 @@
 };
 
 const GpuSeriesType kGpuSeriesForEntry65Exception0[1] = {
-    GpuSeriesType::kIntelKabyLake,
+    GpuSeriesType::kIntelKabylake,
 };
 
 const GpuControlList::More kMoreForEntry65_1440601243Exception0 = {
@@ -1756,6 +1756,106 @@
     0,                             // test_group
 };
 
+const int kFeatureListForGpuControlTestingEntry68[1] = {
+    TEST_FEATURE_0,
+};
+
+const GpuControlList::More kMoreForEntry68_1440601243 = {
+    GpuControlList::kGLTypeNone,  // gl_type
+    {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical, nullptr,
+     nullptr},  // gl_version
+    {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical, nullptr,
+     nullptr},  // pixel_shader_version
+    false,      // in_process_gpu
+    0,          // gl_reset_notification_strategy
+    {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical, nullptr,
+     nullptr},  // direct_rendering_version
+    {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical, nullptr,
+     nullptr},                  // gpu_count
+    GpuControlList::kDontCare,  // hardware_overlay
+    0,                          // test_group
+};
+
+const int kFeatureListForGpuControlTestingEntry69[1] = {
+    TEST_FEATURE_0,
+};
+
+const GpuControlList::More kMoreForEntry69_1440601243 = {
+    GpuControlList::kGLTypeNone,  // gl_type
+    {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical, nullptr,
+     nullptr},  // gl_version
+    {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical, nullptr,
+     nullptr},  // pixel_shader_version
+    false,      // in_process_gpu
+    0,          // gl_reset_notification_strategy
+    {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical, nullptr,
+     nullptr},  // direct_rendering_version
+    {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical, nullptr,
+     nullptr},                  // gpu_count
+    GpuControlList::kDontCare,  // hardware_overlay
+    0,                          // test_group
+};
+
+const int kFeatureListForGpuControlTestingEntry70[1] = {
+    TEST_FEATURE_0,
+};
+
+const GpuControlList::More kMoreForEntry70_1440601243 = {
+    GpuControlList::kGLTypeNone,  // gl_type
+    {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical, nullptr,
+     nullptr},  // gl_version
+    {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical, nullptr,
+     nullptr},  // pixel_shader_version
+    false,      // in_process_gpu
+    0,          // gl_reset_notification_strategy
+    {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical, nullptr,
+     nullptr},  // direct_rendering_version
+    {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical, nullptr,
+     nullptr},                  // gpu_count
+    GpuControlList::kDontCare,  // hardware_overlay
+    0,                          // test_group
+};
+
+const int kFeatureListForGpuControlTestingEntry71[1] = {
+    TEST_FEATURE_0,
+};
+
+const GpuControlList::More kMoreForEntry71_1440601243 = {
+    GpuControlList::kGLTypeNone,  // gl_type
+    {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical, nullptr,
+     nullptr},  // gl_version
+    {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical, nullptr,
+     nullptr},  // pixel_shader_version
+    false,      // in_process_gpu
+    0,          // gl_reset_notification_strategy
+    {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical, nullptr,
+     nullptr},  // direct_rendering_version
+    {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical, nullptr,
+     nullptr},                  // gpu_count
+    GpuControlList::kDontCare,  // hardware_overlay
+    0,                          // test_group
+};
+
+const int kFeatureListForGpuControlTestingEntry72[1] = {
+    TEST_FEATURE_0,
+};
+
+const GpuControlList::More kMoreForEntry72_1440601243 = {
+    GpuControlList::kGLTypeNone,  // gl_type
+    {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical, nullptr,
+     nullptr},  // gl_version
+    {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical, nullptr,
+     nullptr},  // pixel_shader_version
+    false,      // in_process_gpu
+    0,          // gl_reset_notification_strategy
+    {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical, nullptr,
+     nullptr},  // direct_rendering_version
+    {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical, nullptr,
+     nullptr},                  // gpu_count
+    GpuControlList::kDontCare,  // hardware_overlay
+    0,                          // test_group
+};
+
 }  // namespace gpu
 
 #endif  // GPU_CONFIG_GPU_CONTROL_LIST_TESTING_ARRAYS_AND_STRUCTS_AUTOGEN_H_
diff --git a/gpu/config/gpu_control_list_testing_autogen.cc b/gpu/config/gpu_control_list_testing_autogen.cc
index 9136921f..d8d7563 100644
--- a/gpu/config/gpu_control_list_testing_autogen.cc
+++ b/gpu/config/gpu_control_list_testing_autogen.cc
@@ -41,7 +41,9 @@
             nullptr,                                 // machine model info
             0,                                       // gpu_series size
             nullptr,                                 // gpu_series
-            &kMoreForEntry1_1440601243,              // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},          // intel_gpu_generation
+            &kMoreForEntry1_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -71,7 +73,9 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry2_1440601243,             // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},          // intel_gpu_generation
+            &kMoreForEntry2_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -101,7 +105,9 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry3_1440601243,             // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},          // intel_gpu_generation
+            &kMoreForEntry3_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -131,7 +137,9 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry4_1440601243,             // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},          // intel_gpu_generation
+            &kMoreForEntry4_1440601243,  // more data
         },
         base::size(kExceptionsForEntry4),  // exceptions count
         kExceptionsForEntry4,              // exceptions
@@ -161,7 +169,9 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry5_1440601243,             // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},          // intel_gpu_generation
+            &kMoreForEntry5_1440601243,  // more data
         },
         base::size(kExceptionsForEntry5),  // exceptions count
         kExceptionsForEntry5,              // exceptions
@@ -191,7 +201,9 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry6_1440601243,             // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},          // intel_gpu_generation
+            &kMoreForEntry6_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -221,7 +233,9 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry7_1440601243,             // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},          // intel_gpu_generation
+            &kMoreForEntry7_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -251,7 +265,9 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry8_1440601243,             // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},          // intel_gpu_generation
+            &kMoreForEntry8_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -281,7 +297,9 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry9_1440601243,             // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},          // intel_gpu_generation
+            &kMoreForEntry9_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -311,7 +329,9 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry10_1440601243,            // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry10_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -341,7 +361,9 @@
             nullptr,                                 // machine model info
             0,                                       // gpu_series size
             nullptr,                                 // gpu_series
-            &kMoreForEntry11_1440601243,             // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry11_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -371,7 +393,9 @@
             nullptr,                                 // machine model info
             0,                                       // gpu_series size
             nullptr,                                 // gpu_series
-            &kMoreForEntry12_1440601243,             // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry12_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -401,7 +425,9 @@
             nullptr,                                 // machine model info
             0,                                       // gpu_series size
             nullptr,                                 // gpu_series
-            &kMoreForEntry13_1440601243,             // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry13_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -431,7 +457,9 @@
             nullptr,                                 // machine model info
             0,                                       // gpu_series size
             nullptr,                                 // gpu_series
-            &kMoreForEntry14_1440601243,             // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry14_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -461,7 +489,9 @@
             nullptr,                                 // machine model info
             0,                                       // gpu_series size
             nullptr,                                 // gpu_series
-            &kMoreForEntry15_1440601243,             // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry15_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -491,7 +521,9 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry16_1440601243,            // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry16_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -521,7 +553,9 @@
             nullptr,                                      // machine model info
             0,                                            // gpu_series size
             nullptr,                                      // gpu_series
-            &kMoreForEntry17_1440601243,                  // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry17_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -551,7 +585,9 @@
             nullptr,                                  // machine model info
             0,                                        // gpu_series size
             nullptr,                                  // gpu_series
-            &kMoreForEntry18_1440601243,              // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry18_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -581,7 +617,9 @@
             nullptr,                                  // machine model info
             0,                                        // gpu_series size
             nullptr,                                  // gpu_series
-            &kMoreForEntry19_1440601243,              // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry19_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -611,7 +649,9 @@
             nullptr,                                  // machine model info
             0,                                        // gpu_series size
             nullptr,                                  // gpu_series
-            &kMoreForEntry20_1440601243,              // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry20_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -641,7 +681,9 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry21_1440601243,            // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry21_1440601243,  // more data
         },
         base::size(kExceptionsForEntry21),  // exceptions count
         kExceptionsForEntry21,              // exceptions
@@ -671,7 +713,9 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry22_1440601243,            // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry22_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -701,7 +745,9 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry23_1440601243,            // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry23_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -731,7 +777,9 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry24_1440601243,            // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry24_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -762,7 +810,9 @@
             nullptr,                                     // machine model info
             0,                                           // gpu_series size
             nullptr,                                     // gpu_series
-            &kMoreForEntry25_1440601243,                 // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry25_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -792,7 +842,9 @@
             &kMachineModelInfoForEntry26,           // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry26_1440601243,            // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry26_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -822,7 +874,9 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry27_1440601243,            // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry27_1440601243,  // more data
         },
         base::size(kExceptionsForEntry27),  // exceptions count
         kExceptionsForEntry27,              // exceptions
@@ -852,7 +906,9 @@
             &kMachineModelInfoForEntry28,           // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry28_1440601243,            // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry28_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -882,7 +938,9 @@
             &kMachineModelInfoForEntry29,           // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry29_1440601243,            // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry29_1440601243,  // more data
         },
         base::size(kExceptionsForEntry29),  // exceptions count
         kExceptionsForEntry29,              // exceptions
@@ -913,7 +971,9 @@
             nullptr,                                     // machine model info
             0,                                           // gpu_series size
             nullptr,                                     // gpu_series
-            &kMoreForEntry30_1440601243,                 // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry30_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -944,7 +1004,9 @@
             nullptr,                                     // machine model info
             0,                                           // gpu_series size
             nullptr,                                     // gpu_series
-            &kMoreForEntry31_1440601243,                 // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry31_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -975,7 +1037,9 @@
             nullptr,                                     // machine model info
             0,                                           // gpu_series size
             nullptr,                                     // gpu_series
-            &kMoreForEntry32_1440601243,                 // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry32_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1006,7 +1070,9 @@
             nullptr,                                     // machine model info
             0,                                           // gpu_series size
             nullptr,                                     // gpu_series
-            &kMoreForEntry33_1440601243,                 // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry33_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1037,7 +1103,9 @@
             nullptr,                                     // machine model info
             0,                                           // gpu_series size
             nullptr,                                     // gpu_series
-            &kMoreForEntry34_1440601243,                 // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry34_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1068,7 +1136,9 @@
             nullptr,                                     // machine model info
             0,                                           // gpu_series size
             nullptr,                                     // gpu_series
-            &kMoreForEntry35_1440601243,                 // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry35_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1098,7 +1168,9 @@
             nullptr,                                  // machine model info
             0,                                        // gpu_series size
             nullptr,                                  // gpu_series
-            &kMoreForEntry36_1440601243,              // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry36_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1129,7 +1201,9 @@
             nullptr,                                     // machine model info
             0,                                           // gpu_series size
             nullptr,                                     // gpu_series
-            &kMoreForEntry37_1440601243,                 // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry37_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1159,7 +1233,9 @@
             nullptr,                                  // machine model info
             0,                                        // gpu_series size
             nullptr,                                  // gpu_series
-            &kMoreForEntry38_1440601243,              // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry38_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1189,7 +1265,9 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry39_1440601243,            // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry39_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1219,7 +1297,9 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry40_1440601243,            // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry40_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1249,7 +1329,9 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry41_1440601243,            // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry41_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1279,7 +1361,9 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry42_1440601243,            // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry42_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1309,7 +1393,9 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry43_1440601243,            // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry43_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1339,7 +1425,9 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry44_1440601243,            // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry44_1440601243,  // more data
         },
         base::size(kExceptionsForEntry44),  // exceptions count
         kExceptionsForEntry44,              // exceptions
@@ -1370,7 +1458,9 @@
             nullptr,                                  // machine model info
             0,                                        // gpu_series size
             nullptr,                                  // gpu_series
-            &kMoreForEntry45_1440601243,              // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry45_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1401,7 +1491,9 @@
             nullptr,                                    // machine model info
             0,                                          // gpu_series size
             nullptr,                                    // gpu_series
-            &kMoreForEntry46_1440601243,                // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry46_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1431,7 +1523,9 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry47_1440601243,            // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry47_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1461,7 +1555,9 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry48_1440601243,            // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry48_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1491,7 +1587,9 @@
             nullptr,                                  // machine model info
             0,                                        // gpu_series size
             nullptr,                                  // gpu_series
-            &kMoreForEntry49_1440601243,              // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry49_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1521,7 +1619,9 @@
             nullptr,                                  // machine model info
             0,                                        // gpu_series size
             nullptr,                                  // gpu_series
-            &kMoreForEntry50_1440601243,              // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry50_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1551,7 +1651,9 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry51_1440601243,            // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry51_1440601243,  // more data
         },
         base::size(kExceptionsForEntry51),  // exceptions count
         kExceptionsForEntry51,              // exceptions
@@ -1581,7 +1683,9 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry52_1440601243,            // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry52_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1611,7 +1715,9 @@
             nullptr,                                  // machine model info
             0,                                        // gpu_series size
             nullptr,                                  // gpu_series
-            &kMoreForEntry53_1440601243,              // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry53_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1641,7 +1747,9 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry54_1440601243,            // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry54_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1671,7 +1779,9 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry55_1440601243,            // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry55_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1701,7 +1811,9 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry56_1440601243,            // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry56_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1731,7 +1843,9 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry57_1440601243,            // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry57_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1761,7 +1875,9 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry58_1440601243,            // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry58_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1791,7 +1907,9 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry59_1440601243,            // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry59_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1821,7 +1939,9 @@
             nullptr,                                // machine model info
             base::size(kGpuSeriesForEntry60),       // gpu_series size
             kGpuSeriesForEntry60,                   // gpu_series
-            &kMoreForEntry60_1440601243,            // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry60_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1851,7 +1971,9 @@
             nullptr,                                  // machine model info
             base::size(kGpuSeriesForEntry61),         // gpu_series size
             kGpuSeriesForEntry61,                     // gpu_series
-            &kMoreForEntry61_1440601243,              // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry61_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1881,7 +2003,9 @@
             nullptr,                               // machine model info
             base::size(kGpuSeriesForEntry62),      // gpu_series size
             kGpuSeriesForEntry62,                  // gpu_series
-            &kMoreForEntry62_1440601243,           // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry62_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1911,7 +2035,9 @@
             nullptr,                                   // machine model info
             base::size(kGpuSeriesForEntry63),          // gpu_series size
             kGpuSeriesForEntry63,                      // gpu_series
-            &kMoreForEntry63_1440601243,               // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry63_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1941,7 +2067,9 @@
             nullptr,                                     // machine model info
             base::size(kGpuSeriesForEntry64),            // gpu_series size
             kGpuSeriesForEntry64,                        // gpu_series
-            &kMoreForEntry64_1440601243,                 // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry64_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1971,7 +2099,9 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry65_1440601243,            // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry65_1440601243,  // more data
         },
         base::size(kExceptionsForEntry65),  // exceptions count
         kExceptionsForEntry65,              // exceptions
@@ -2001,7 +2131,9 @@
             nullptr,                                  // machine model info
             0,                                        // gpu_series size
             nullptr,                                  // gpu_series
-            &kMoreForEntry66_1440601243,              // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry66_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -2031,11 +2163,173 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry67_1440601243,            // more data
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},           // intel_gpu_generation
+            &kMoreForEntry67_1440601243,  // more data
+        },
+        0,        // exceptions count
+        nullptr,  // exceptions
+    },
+    {
+        68,  // id
+        "GpuControlListEntryTest.GpuGeneration",
+        base::size(kFeatureListForGpuControlTestingEntry68),  // features size
+        kFeatureListForGpuControlTestingEntry68,              // features
+        0,        // DisabledExtensions size
+        nullptr,  // DisabledExtensions
+        0,        // DisabledWebGLExtensions size
+        nullptr,  // DisabledWebGLExtensions
+        0,        // CrBugs size
+        nullptr,  // CrBugs
+        {
+            GpuControlList::kOsAny,  // os_type
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},                     // os_version
+            0x00,                                   // vendor_id
+            0,                                      // DeviceIDs size
+            nullptr,                                // DeviceIDs
+            GpuControlList::kMultiGpuCategoryNone,  // multi_gpu_category
+            GpuControlList::kMultiGpuStyleNone,     // multi_gpu_style
+            nullptr,                                // driver info
+            nullptr,                                // GL strings
+            nullptr,                                // machine model info
+            0,                                      // gpu_series size
+            nullptr,                                // gpu_series
+            {GpuControlList::kLT, GpuControlList::kVersionStyleNumerical, "9",
+             nullptr},                    // intel_gpu_generation
+            &kMoreForEntry68_1440601243,  // more data
+        },
+        0,        // exceptions count
+        nullptr,  // exceptions
+    },
+    {
+        69,  // id
+        "GpuControlListEntryTest.GpuGenerationActive",
+        base::size(kFeatureListForGpuControlTestingEntry69),  // features size
+        kFeatureListForGpuControlTestingEntry69,              // features
+        0,        // DisabledExtensions size
+        nullptr,  // DisabledExtensions
+        0,        // DisabledWebGLExtensions size
+        nullptr,  // DisabledWebGLExtensions
+        0,        // CrBugs size
+        nullptr,  // CrBugs
+        {
+            GpuControlList::kOsAny,  // os_type
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},                       // os_version
+            0x00,                                     // vendor_id
+            0,                                        // DeviceIDs size
+            nullptr,                                  // DeviceIDs
+            GpuControlList::kMultiGpuCategoryActive,  // multi_gpu_category
+            GpuControlList::kMultiGpuStyleNone,       // multi_gpu_style
+            nullptr,                                  // driver info
+            nullptr,                                  // GL strings
+            nullptr,                                  // machine model info
+            0,                                        // gpu_series size
+            nullptr,                                  // gpu_series
+            {GpuControlList::kLT, GpuControlList::kVersionStyleNumerical, "9",
+             nullptr},                    // intel_gpu_generation
+            &kMoreForEntry69_1440601243,  // more data
+        },
+        0,        // exceptions count
+        nullptr,  // exceptions
+    },
+    {
+        70,  // id
+        "GpuControlListEntryTest.GpuGenerationAny",
+        base::size(kFeatureListForGpuControlTestingEntry70),  // features size
+        kFeatureListForGpuControlTestingEntry70,              // features
+        0,        // DisabledExtensions size
+        nullptr,  // DisabledExtensions
+        0,        // DisabledWebGLExtensions size
+        nullptr,  // DisabledWebGLExtensions
+        0,        // CrBugs size
+        nullptr,  // CrBugs
+        {
+            GpuControlList::kOsAny,  // os_type
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},                    // os_version
+            0x00,                                  // vendor_id
+            0,                                     // DeviceIDs size
+            nullptr,                               // DeviceIDs
+            GpuControlList::kMultiGpuCategoryAny,  // multi_gpu_category
+            GpuControlList::kMultiGpuStyleNone,    // multi_gpu_style
+            nullptr,                               // driver info
+            nullptr,                               // GL strings
+            nullptr,                               // machine model info
+            0,                                     // gpu_series size
+            nullptr,                               // gpu_series
+            {GpuControlList::kLT, GpuControlList::kVersionStyleNumerical, "9",
+             nullptr},                    // intel_gpu_generation
+            &kMoreForEntry70_1440601243,  // more data
+        },
+        0,        // exceptions count
+        nullptr,  // exceptions
+    },
+    {
+        71,  // id
+        "GpuControlListEntryTest.GpuGenerationPrimary",
+        base::size(kFeatureListForGpuControlTestingEntry71),  // features size
+        kFeatureListForGpuControlTestingEntry71,              // features
+        0,        // DisabledExtensions size
+        nullptr,  // DisabledExtensions
+        0,        // DisabledWebGLExtensions size
+        nullptr,  // DisabledWebGLExtensions
+        0,        // CrBugs size
+        nullptr,  // CrBugs
+        {
+            GpuControlList::kOsAny,  // os_type
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},                        // os_version
+            0x00,                                      // vendor_id
+            0,                                         // DeviceIDs size
+            nullptr,                                   // DeviceIDs
+            GpuControlList::kMultiGpuCategoryPrimary,  // multi_gpu_category
+            GpuControlList::kMultiGpuStyleNone,        // multi_gpu_style
+            nullptr,                                   // driver info
+            nullptr,                                   // GL strings
+            nullptr,                                   // machine model info
+            0,                                         // gpu_series size
+            nullptr,                                   // gpu_series
+            {GpuControlList::kLT, GpuControlList::kVersionStyleNumerical, "9",
+             nullptr},                    // intel_gpu_generation
+            &kMoreForEntry71_1440601243,  // more data
+        },
+        0,        // exceptions count
+        nullptr,  // exceptions
+    },
+    {
+        72,  // id
+        "GpuControlListEntryTest.GpuGenerationSecondary",
+        base::size(kFeatureListForGpuControlTestingEntry72),  // features size
+        kFeatureListForGpuControlTestingEntry72,              // features
+        0,        // DisabledExtensions size
+        nullptr,  // DisabledExtensions
+        0,        // DisabledWebGLExtensions size
+        nullptr,  // DisabledWebGLExtensions
+        0,        // CrBugs size
+        nullptr,  // CrBugs
+        {
+            GpuControlList::kOsAny,  // os_type
+            {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+             nullptr, nullptr},                          // os_version
+            0x00,                                        // vendor_id
+            0,                                           // DeviceIDs size
+            nullptr,                                     // DeviceIDs
+            GpuControlList::kMultiGpuCategorySecondary,  // multi_gpu_category
+            GpuControlList::kMultiGpuStyleNone,          // multi_gpu_style
+            nullptr,                                     // driver info
+            nullptr,                                     // GL strings
+            nullptr,                                     // machine model info
+            0,                                           // gpu_series size
+            nullptr,                                     // gpu_series
+            {GpuControlList::kLT, GpuControlList::kVersionStyleNumerical, "9",
+             nullptr},                    // intel_gpu_generation
+            &kMoreForEntry72_1440601243,  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
     },
 };
-const size_t kGpuControlListTestingEntryCount = 67;
+const size_t kGpuControlListTestingEntryCount = 72;
 }  // namespace gpu
diff --git a/gpu/config/gpu_control_list_testing_entry_enums_autogen.h b/gpu/config/gpu_control_list_testing_entry_enums_autogen.h
index aaae422d..c7c7da5e 100644
--- a/gpu/config/gpu_control_list_testing_entry_enums_autogen.h
+++ b/gpu/config/gpu_control_list_testing_entry_enums_autogen.h
@@ -80,6 +80,11 @@
   kGpuControlListEntryTest_GpuSeriesInException = 64,
   kGpuControlListEntryTest_MultipleDrivers = 65,
   kGpuControlListEntryTest_HardwareOverlay = 66,
+  kGpuControlListEntryTest_GpuGeneration = 67,
+  kGpuControlListEntryTest_GpuGenerationActive = 68,
+  kGpuControlListEntryTest_GpuGenerationAny = 69,
+  kGpuControlListEntryTest_GpuGenerationPrimary = 70,
+  kGpuControlListEntryTest_GpuGenerationSecondary = 71,
 };
 }  // namespace gpu
 
diff --git a/gpu/config/gpu_control_list_testing_exceptions_autogen.h b/gpu/config/gpu_control_list_testing_exceptions_autogen.h
index 50543ed..e04e2df 100644
--- a/gpu/config/gpu_control_list_testing_exceptions_autogen.h
+++ b/gpu/config/gpu_control_list_testing_exceptions_autogen.h
@@ -27,7 +27,9 @@
         nullptr,                                // machine model info
         0,                                      // gpu_series size
         nullptr,                                // gpu_series
-        &kMoreForEntry4_1440601243Exception0,   // more data
+        {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+         nullptr, nullptr},                    // intel_gpu_generation
+        &kMoreForEntry4_1440601243Exception0,  // more data
     },
 };
 
@@ -46,7 +48,9 @@
         nullptr,                                // machine model info
         0,                                      // gpu_series size
         nullptr,                                // gpu_series
-        &kMoreForEntry5_1440601243Exception0,   // more data
+        {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+         nullptr, nullptr},                    // intel_gpu_generation
+        &kMoreForEntry5_1440601243Exception0,  // more data
     },
 };
 
@@ -65,7 +69,9 @@
         nullptr,                                           // machine model info
         0,                                                 // gpu_series size
         nullptr,                                           // gpu_series
-        &kMoreForEntry21_1440601243Exception0,             // more data
+        {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+         nullptr, nullptr},                     // intel_gpu_generation
+        &kMoreForEntry21_1440601243Exception0,  // more data
     },
 };
 
@@ -84,7 +90,9 @@
         &kMachineModelInfoForEntry27Exception0,  // machine model info
         0,                                       // gpu_series size
         nullptr,                                 // gpu_series
-        &kMoreForEntry27_1440601243Exception0,   // more data
+        {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+         nullptr, nullptr},                     // intel_gpu_generation
+        &kMoreForEntry27_1440601243Exception0,  // more data
     },
 };
 
@@ -103,7 +111,9 @@
         &kMachineModelInfoForEntry29Exception0,  // machine model info
         0,                                       // gpu_series size
         nullptr,                                 // gpu_series
-        &kMoreForEntry29_1440601243Exception0,   // more data
+        {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+         nullptr, nullptr},                     // intel_gpu_generation
+        &kMoreForEntry29_1440601243Exception0,  // more data
     },
 };
 
@@ -120,9 +130,11 @@
         GpuControlList::kMultiGpuStyleNone,     // multi_gpu_style
         &kDriverInfoForGpuControlTestingEntry44Exception0,  // driver info
         nullptr,                                            // GL strings
-        nullptr,                                // machine model info
-        0,                                      // gpu_series size
-        nullptr,                                // gpu_series
+        nullptr,  // machine model info
+        0,        // gpu_series size
+        nullptr,  // gpu_series
+        {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+         nullptr, nullptr},                     // intel_gpu_generation
         &kMoreForEntry44_1440601243Exception0,  // more data
     },
     {
@@ -137,9 +149,11 @@
         GpuControlList::kMultiGpuStyleNone,     // multi_gpu_style
         &kDriverInfoForGpuControlTestingEntry44Exception1,  // driver info
         nullptr,                                            // GL strings
-        nullptr,                                // machine model info
-        0,                                      // gpu_series size
-        nullptr,                                // gpu_series
+        nullptr,  // machine model info
+        0,        // gpu_series size
+        nullptr,  // gpu_series
+        {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+         nullptr, nullptr},                     // intel_gpu_generation
         &kMoreForEntry44_1440601243Exception1,  // more data
     },
 };
@@ -159,7 +173,9 @@
         nullptr,                                           // machine model info
         0,                                                 // gpu_series size
         nullptr,                                           // gpu_series
-        &kMoreForEntry51_1440601243Exception0,             // more data
+        {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+         nullptr, nullptr},                     // intel_gpu_generation
+        &kMoreForEntry51_1440601243Exception0,  // more data
     },
 };
 
@@ -178,7 +194,9 @@
         nullptr,                                     // machine model info
         base::size(kGpuSeriesForEntry65Exception0),  // gpu_series size
         kGpuSeriesForEntry65Exception0,              // gpu_series
-        &kMoreForEntry65_1440601243Exception0,       // more data
+        {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
+         nullptr, nullptr},                     // intel_gpu_generation
+        &kMoreForEntry65_1440601243Exception0,  // more data
     },
 };
 
diff --git a/gpu/config/gpu_driver_bug_list.json b/gpu/config/gpu_driver_bug_list.json
index ca48c2f..dc3136a 100644
--- a/gpu/config/gpu_driver_bug_list.json
+++ b/gpu/config/gpu_driver_bug_list.json
@@ -2303,7 +2303,7 @@
     },
     {
       "id": 225,
-      "description": "VPx decoding is too slow on Intel Broadwell, Skylake, and CherryView",
+      "description": "VPx decoding is too slow on Intel Broadwell, Skylake, and CherryTrail",
       "cr_bugs": [616318],
       "os": {
         "type": "win"
@@ -2311,7 +2311,7 @@
       "gpu_series": [
         "intel_broadwell",
         "intel_skylake",
-        "intel_cherryview"
+        "intel_cherrytrail"
       ],
       "features": [
         "disable_accelerated_vpx_decode"
diff --git a/gpu/config/gpu_info.h b/gpu/config/gpu_info.h
index 3074ef0..e032a31 100644
--- a/gpu/config/gpu_info.h
+++ b/gpu/config/gpu_info.h
@@ -31,22 +31,28 @@
 enum class GpuSeriesType {
   kUnknown = 0,
   // Intel 6th gen
-  kIntelSandyBridge = 1,
+  kIntelSandybridge = 1,
   // Intel 7th gen
-  kIntelValleyView = 2,  // BayTrail
-  kIntelIvyBridge = 3,
+  kIntelBaytrail = 2,
+  kIntelIvybridge = 3,
   kIntelHaswell = 4,
   // Intel 8th gen
-  kIntelCherryView = 5,  // Braswell
+  kIntelCherrytrail = 5,
   kIntelBroadwell = 6,
   // Intel 9th gen
-  kIntelApolloLake = 7,
-  kIntelSkyLake = 8,
-  kIntelGeminiLake = 9,
-  kIntelKabyLake = 10,
-  kIntelCoffeeLake = 11,
+  kIntelApollolake = 7,
+  kIntelSkylake = 8,
+  kIntelGeminilake = 9,
+  kIntelKabylake = 10,
+  kIntelCoffeelake = 11,
+  kIntelWhiskeylake = 12,
+  kIntelCometlake = 13,
+  // Intel 10th gen
+  kIntelCannonlake = 14,
+  // Intel 11th gen
+  kIntelIcelake = 15,
   // Please also update |gpu_series_map| in process_json.py.
-  kMaxValue = kIntelCoffeeLake,
+  kMaxValue = kIntelIcelake,
 };
 
 // Video profile.  This *must* match media::VideoCodecProfile.
diff --git a/gpu/config/gpu_util.cc b/gpu/config/gpu_util.cc
index fa356a3..51ea316 100644
--- a/gpu/config/gpu_util.cc
+++ b/gpu/config/gpu_util.cc
@@ -654,8 +654,11 @@
   // and we don't want to expose an extra bit other than the already recorded
   // vendor_id and device_id.
   if (vendor_id == 0x8086) {  // Intel
-    // https://en.wikipedia.org/wiki/List_of_Intel_graphics_processing_units
     // We only identify Intel 6th gen or newer.
+    // The device id can be referred to in the following locations:
+    // https://en.wikipedia.org/wiki/List_of_Intel_graphics_processing_units
+    // and the heade files in Mesa sources:
+    // include/pci_ids/i965_pci_ids.h
     uint32_t masked_device_id = device_id & 0xFF00;
     switch (masked_device_id) {
       case 0x0100:
@@ -663,39 +666,56 @@
           case 0x0100:
           case 0x0110:
           case 0x0120:
-            return GpuSeriesType::kIntelSandyBridge;
+            return GpuSeriesType::kIntelSandybridge;
           case 0x0150:
             if (device_id == 0x0155 || device_id == 0x0157)
-              return GpuSeriesType::kIntelValleyView;
-            if (device_id == 0x0152 || device_id == 0x015A)
-              return GpuSeriesType::kIntelIvyBridge;
+              return GpuSeriesType::kIntelBaytrail;
+            if (device_id == 0x0152 || device_id == 0x015A
+                || device_id == 0x0156)
+              return GpuSeriesType::kIntelIvybridge;
             break;
           case 0x0160:
-            return GpuSeriesType::kIntelIvyBridge;
+            return GpuSeriesType::kIntelIvybridge;
           default:
             break;
         }
         break;
       case 0x0F00:
-        return GpuSeriesType::kIntelValleyView;
+        return GpuSeriesType::kIntelBaytrail;
       case 0x0400:
       case 0x0A00:
+      case 0x0C00:
       case 0x0D00:
         return GpuSeriesType::kIntelHaswell;
       case 0x2200:
-        return GpuSeriesType::kIntelCherryView;
+        return GpuSeriesType::kIntelCherrytrail;
       case 0x1600:
         return GpuSeriesType::kIntelBroadwell;
       case 0x5A00:
-        return GpuSeriesType::kIntelApolloLake;
+        if (device_id == 0x5A85 || device_id == 0x5A84)
+          return GpuSeriesType::kIntelApollolake;
+        return GpuSeriesType::kIntelCannonlake;
       case 0x1900:
-        return GpuSeriesType::kIntelSkyLake;
+        return GpuSeriesType::kIntelSkylake;
       case 0x3100:
-        return GpuSeriesType::kIntelGeminiLake;
+        return GpuSeriesType::kIntelGeminilake;
       case 0x5900:
-        return GpuSeriesType::kIntelKabyLake;
+        return GpuSeriesType::kIntelKabylake;
+      case 0x8700:
+        if (device_id == 0x87C0)
+          return GpuSeriesType::kIntelKabylake;
+        if (device_id == 0x87CA)
+          return GpuSeriesType::kIntelCoffeelake;
+        break;
       case 0x3E00:
-        return GpuSeriesType::kIntelCoffeeLake;
+        if (device_id == 0x3EA0 || device_id == 0x3EA1 || device_id == 0x3EA2
+            || device_id == 0x3EA4 || device_id == 0x3EA3)
+          return GpuSeriesType::kIntelWhiskeylake;
+        return GpuSeriesType::kIntelCoffeelake;
+      case 0x9B00:
+        return GpuSeriesType::kIntelCometlake;
+      case 0x8A00:
+        return GpuSeriesType::kIntelIcelake;
       default:
         break;
     }
@@ -703,4 +723,36 @@
   return GpuSeriesType::kUnknown;
 }
 
+std::string GetIntelGpuGeneration(uint32_t vendor_id, uint32_t device_id) {
+  if (vendor_id == 0x8086) {
+    GpuSeriesType gpu_series = GetGpuSeriesType(vendor_id, device_id);
+    switch (gpu_series) {
+      case GpuSeriesType::kIntelSandybridge:
+        return "6";
+      case GpuSeriesType::kIntelBaytrail:
+      case GpuSeriesType::kIntelIvybridge:
+      case GpuSeriesType::kIntelHaswell:
+        return "7";
+      case GpuSeriesType::kIntelCherrytrail:
+      case GpuSeriesType::kIntelBroadwell:
+        return "8";
+      case GpuSeriesType::kIntelApollolake:
+      case GpuSeriesType::kIntelSkylake:
+      case GpuSeriesType::kIntelGeminilake:
+      case GpuSeriesType::kIntelKabylake:
+      case GpuSeriesType::kIntelCoffeelake:
+      case GpuSeriesType::kIntelWhiskeylake:
+      case GpuSeriesType::kIntelCometlake:
+        return "9";
+      case GpuSeriesType::kIntelCannonlake:
+        return "10";
+      case GpuSeriesType::kIntelIcelake:
+        return "11";
+      default:
+        break;
+    }
+  }
+  return "";
+}
+
 }  // namespace gpu
diff --git a/gpu/config/gpu_util.h b/gpu/config/gpu_util.h
index 78c4a68..ebb8299 100644
--- a/gpu/config/gpu_util.h
+++ b/gpu/config/gpu_util.h
@@ -77,6 +77,9 @@
 GPU_EXPORT GpuSeriesType GetGpuSeriesType(uint32_t vendor_id,
                                           uint32_t device_id);
 
+GPU_EXPORT std::string GetIntelGpuGeneration(uint32_t vendor_id,
+                                             uint32_t device_id);
+
 }  // namespace gpu
 
 #endif  // GPU_CONFIG_GPU_UTIL_H_
diff --git a/gpu/config/process_json.py b/gpu/config/process_json.py
index 64ff319..d8852c7 100755
--- a/gpu/config/process_json.py
+++ b/gpu/config/process_json.py
@@ -366,6 +366,7 @@
   multi_gpu_category = ''
   multi_gpu_style = ''
   gpu_series_list = None
+  intel_gpu_generation = None
   driver_vendor = ''
   driver_version = None
   gl_renderer = ''
@@ -425,6 +426,8 @@
       multi_gpu_style = entry[key]
     elif key == 'gpu_series':
       gpu_series_list = entry[key]
+    elif key == 'intel_gpu_generation':
+      intel_gpu_generation = entry[key]
     elif key == 'driver_vendor':
       driver_vendor = entry[key]
     elif key == 'driver_version':
@@ -496,6 +499,7 @@
                            data_file, data_helper_file)
   write_gpu_series_list(entry_id, is_exception, exception_id, gpu_series_list,
                         data_file, data_helper_file)
+  write_version(intel_gpu_generation, 'intel_gpu_generation', data_file)
   # group a bunch of less used conditions
   if (gl_version != None or pixel_shader_version != None or in_process_gpu or
       gl_reset_notification_strategy != None or direct_rendering_version != None
@@ -518,17 +522,21 @@
     data_helper_file.write('const GpuSeriesType %s[%d] = {\n' %
                            (var_name, len(gpu_series_list)))
     gpu_series_map = {
-      'intel_sandybridge': 'kIntelSandyBridge',
-      'intel_valleyview': 'kIntelValleyView',
-      'intel_ivybridge': 'kIntelIvyBridge',
+      'intel_sandybridge': 'kIntelSandybridge',
+      'intel_baytrail': 'kIntelBaytrail',
+      'intel_ivybridge': 'kIntelIvybridge',
       'intel_haswell': 'kIntelHaswell',
-      'intel_cherryview': 'kIntelCherryView',
+      'intel_cherrytrail': 'kIntelCherrytrail',
       'intel_broadwell': 'kIntelBroadwell',
-      'intel_apollolake': 'kIntelApolloLake',
-      'intel_skylake': 'kIntelSkyLake',
-      'intel_geminilake': 'kIntelGeminiLake',
-      'intel_kabylake': 'kIntelKabyLake',
-      'intel_coffeelake': 'kIntelCoffeeLake',
+      'intel_apollolake': 'kIntelApollolake',
+      'intel_skylake': 'kIntelSkylake',
+      'intel_geminilake': 'kIntelGeminilake',
+      'intel_kabylake': 'kIntelKabylake',
+      'intel_coffeelake': 'kIntelCoffeelake',
+      'intel_whiskeylake': 'kIntelWhiskeylake',
+      'intel_cometlake': 'kIntelCometlake',
+      'intel_cannonlake': 'kIntelCannonlake',
+      'intel_icelake': 'kIntelIcelake'
     }
     for series in gpu_series_list:
       assert series in gpu_series_map
diff --git a/gpu/config/software_rendering_list.json b/gpu/config/software_rendering_list.json
index 8a097fd..ea1294e 100644
--- a/gpu/config/software_rendering_list.json
+++ b/gpu/config/software_rendering_list.json
@@ -1629,10 +1629,10 @@
       "vendor_id": "0x8086",
       "gpu_series": [
         "intel_sandybridge",
-        "intel_valleyview",
+        "intel_baytrail",
         "intel_ivybridge",
         "intel_haswell",
-        "intel_cherryview",
+        "intel_cherrytrail",
         "intel_broadwell",
         "intel_apollolake",
         "intel_skylake",
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index aa405408..5a3db32 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -29212,16 +29212,20 @@
   </summary>
   <int value="0" label="Unknown (mostly Non-Intel)"/>
   <int value="1" label="Intel SandyBridge"/>
-  <int value="2" label="Intel ValleyView (BayTrail)"/>
+  <int value="2" label="Intel BayTrail"/>
   <int value="3" label="Intel IvyBridge"/>
   <int value="4" label="Intel Haswell"/>
-  <int value="5" label="Intel CherryView (Braswell)"/>
+  <int value="5" label="Intel CherryTrail"/>
   <int value="6" label="Intel Broadwell"/>
   <int value="7" label="Intel ApolloLake"/>
   <int value="8" label="Intel SkyLake"/>
   <int value="9" label="Intel GeminiLake"/>
   <int value="10" label="Intel KabyLake"/>
   <int value="11" label="Intel CoffeeLake"/>
+  <int value="12" label="Intel WhiskeyLake"/>
+  <int value="13" label="Intel CometLake"/>
+  <int value="14" label="Intel CannonLake"/>
+  <int value="15" label="Intel IceLake"/>
 </enum>
 
 <enum name="GPUsetIsAcceleratedCompositingActive">