Plumb up DRI version and change workarounds based on it

Switches bool direct_rendering to string direct_rendering_version. This
allows us to plumb up what version of DRI is being used, when we can
reliably detect it.

This is motivated by the observation that we can safely re-enable
partial swaps on Linux when chrome is using DRI3.

Bug: 941670
Change-Id: I0cd8c12e28a6d9e8019e153bf7ff64907c4c3345
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1521440
Reviewed-by: Robert Kroeger <rjkroege@chromium.org>
Reviewed-by: Ken Buchanan <kenrb@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Reviewed-by: St├ęphane Marchesin <marcheu@chromium.org>
Commit-Queue: Jonathan Backer <backer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#642639}
diff --git a/content/browser/gpu/gpu_data_manager_testing_arrays_and_structs_autogen.h b/content/browser/gpu/gpu_data_manager_testing_arrays_and_structs_autogen.h
index e455d1ea..49189ae 100644
--- a/content/browser/gpu/gpu_data_manager_testing_arrays_and_structs_autogen.h
+++ b/content/browser/gpu/gpu_data_manager_testing_arrays_and_structs_autogen.h
@@ -18,6 +18,22 @@
     GPU_FEATURE_TYPE_ACCELERATED_WEBGL,
 };
 
+const GpuControlList::More kMoreForEntry1_572251052 = {
+    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 kFeatureListForGpuManagerTestingEntry2[1] = {
     GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS,
 };
@@ -29,10 +45,42 @@
     nullptr,
 };
 
+const GpuControlList::More kMoreForEntry2_572251052 = {
+    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 kFeatureListForGpuManagerTestingEntry3[1] = {
     GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS,
 };
 
+const GpuControlList::More kMoreForEntry3_572251052 = {
+    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 kFeatureListForGpuManagerTestingEntry4[2] = {
     GPU_FEATURE_TYPE_ACCELERATED_WEBGL2,
     GPU_FEATURE_TYPE_ACCELERATED_WEBGL,
@@ -45,10 +93,42 @@
     nullptr,
 };
 
+const GpuControlList::More kMoreForEntry4_572251052 = {
+    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 kFeatureListForGpuManagerTestingEntry5[1] = {
     GPU_FEATURE_TYPE_ACCELERATED_WEBGL,
 };
 
+const GpuControlList::More kMoreForEntry5_572251052 = {
+    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 GpuControlList::GLStrings kGLStringsForGpuManagerTestingEntry5Exception0 =
     {
         nullptr,
@@ -57,6 +137,22 @@
         nullptr,
 };
 
+const GpuControlList::More kMoreForEntry5_572251052Exception0 = {
+    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 kFeatureListForGpuManagerTestingEntry6[12] = {
     GPU_FEATURE_TYPE_FLASH_STAGE3D,
     GPU_FEATURE_TYPE_GPU_COMPOSITING,
@@ -72,10 +168,42 @@
     GPU_FEATURE_TYPE_FLASH_STAGE3D_BASELINE,
 };
 
+const GpuControlList::More kMoreForEntry6_572251052 = {
+    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 kFeatureListForGpuManagerTestingEntry7[1] = {
     GPU_FEATURE_TYPE_ACCELERATED_WEBGL,
 };
 
+const GpuControlList::More kMoreForEntry7_572251052 = {
+    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  // CONTENT_BROWSER_GPU_GPU_DATA_MANAGER_TESTING_ARRAYS_AND_STRUCTS_AUTOGEN_H_
diff --git a/content/browser/gpu/gpu_data_manager_testing_autogen.cc b/content/browser/gpu/gpu_data_manager_testing_autogen.cc
index c20dee7..b224be9 100644
--- a/content/browser/gpu/gpu_data_manager_testing_autogen.cc
+++ b/content/browser/gpu/gpu_data_manager_testing_autogen.cc
@@ -41,7 +41,7 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            nullptr,                                // more conditions
+            &kMoreForEntry1_572251052,              // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -71,7 +71,7 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            nullptr,                                // more conditions
+            &kMoreForEntry2_572251052,              // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -101,7 +101,7 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            nullptr,                                // more conditions
+            &kMoreForEntry3_572251052,              // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -131,7 +131,7 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            nullptr,                                // more conditions
+            &kMoreForEntry4_572251052,              // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -161,7 +161,7 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            nullptr,                                // more conditions
+            &kMoreForEntry5_572251052,              // more data
         },
         base::size(kExceptionsForEntry5),  // exceptions count
         kExceptionsForEntry5,              // exceptions
@@ -191,7 +191,7 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            nullptr,                                // more conditions
+            &kMoreForEntry6_572251052,              // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -221,7 +221,7 @@
             nullptr,                                  // machine model info
             0,                                        // gpu_series size
             nullptr,                                  // gpu_series
-            nullptr,                                  // more conditions
+            &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 b33ca71..4d60314 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,7 @@
         nullptr,                                          // machine model info
         0,                                                // gpu_series size
         nullptr,                                          // gpu_series
-        nullptr,                                          // more conditions
+        &kMoreForEntry5_572251052Exception0,              // more data
     },
 };
 
diff --git a/content/browser/gpu/gpu_internals_ui.cc b/content/browser/gpu/gpu_internals_ui.cc
index 3fa00d9..71fab54 100644
--- a/content/browser/gpu/gpu_internals_ui.cc
+++ b/content/browser/gpu/gpu_internals_ui.cc
@@ -275,9 +275,21 @@
         ui::IsCompositingManagerPresent() ? "Yes" : "No"));
   }
 #endif
-  std::string direct_rendering = gpu_info.direct_rendering ? "Yes" : "No";
-  basic_info->Append(
-      NewDescriptionValuePair("Direct rendering", direct_rendering));
+  std::string direct_rendering_version;
+  if (gpu_info.direct_rendering_version == "1") {
+    direct_rendering_version = "indirect";
+  } else if (gpu_info.direct_rendering_version == "2") {
+    direct_rendering_version = "direct but version unknown";
+  } else if (base::StartsWith(gpu_info.direct_rendering_version, "2.",
+                              base::CompareCase::INSENSITIVE_ASCII)) {
+    direct_rendering_version = gpu_info.direct_rendering_version;
+    base::ReplaceFirstSubstringAfterOffset(&direct_rendering_version, 0, "2.",
+                                           "DRI");
+  } else {
+    direct_rendering_version = "unknown";
+  }
+  basic_info->Append(NewDescriptionValuePair("Direct rendering version",
+                                             direct_rendering_version));
 
   std::string reset_strategy =
       base::StringPrintf("0x%04x", gpu_info.gl_reset_notification_strategy);
diff --git a/gpu/command_buffer/tests/gl_test_utils.cc b/gpu/command_buffer/tests/gl_test_utils.cc
index f7a4e2a..4881834 100644
--- a/gpu/command_buffer/tests/gl_test_utils.cc
+++ b/gpu/command_buffer/tests/gl_test_utils.cc
@@ -20,6 +20,7 @@
 #include "gpu/config/gpu_util.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/gfx/geometry/size.h"
+#include "ui/gl/gl_version_info.h"
 #include "ui/gl/init/gl_factory.h"
 
 #if defined(OS_LINUX)
@@ -399,14 +400,17 @@
   gl_.Initialize(options);
   gl_.MakeCurrent();
 
-  bool result =
-      gl::init::GetGLWindowSystemBindingInfo(&window_system_binding_info_);
+  gl_extensions_ =
+      gfx::MakeExtensionSet(gl::GetGLExtensionsFromCurrentContext());
+  gl::GLVersionInfo gl_version_info(
+      reinterpret_cast<const char*>(glGetString(GL_VERSION)),
+      reinterpret_cast<const char*>(glGetString(GL_RENDERER)), gl_extensions_);
+  bool result = gl::init::GetGLWindowSystemBindingInfo(
+      gl_version_info, &window_system_binding_info_);
   DCHECK(result);
 
   egl_extensions_ =
       gfx::MakeExtensionSet(window_system_binding_info_.extensions);
-  gl_extensions_ =
-      gfx::MakeExtensionSet(gl::GetGLExtensionsFromCurrentContext());
 
   return true;
 }
diff --git a/gpu/config/gpu_control_list.cc b/gpu/config/gpu_control_list.cc
index 4e28d955..3a7166c 100644
--- a/gpu/config/gpu_control_list.cc
+++ b/gpu/config/gpu_control_list.cc
@@ -300,7 +300,8 @@
       return false;
     }
   }
-  if (!direct_rendering && gpu_info.direct_rendering) {
+  if (direct_rendering_version.IsSpecified() &&
+      !direct_rendering_version.Contains(gpu_info.direct_rendering_version)) {
     return false;
   }
   if (in_process_gpu && !gpu_info.in_process_gpu) {
diff --git a/gpu/config/gpu_control_list.h b/gpu/config/gpu_control_list.h
index e84b962..4563cac 100644
--- a/gpu/config/gpu_control_list.h
+++ b/gpu/config/gpu_control_list.h
@@ -153,7 +153,7 @@
     Version pixel_shader_version;
     bool in_process_gpu;
     uint32_t gl_reset_notification_strategy;
-    bool direct_rendering;
+    Version direct_rendering_version;
     Version gpu_count;
     SupportedOrNot hardware_overlay;
 
diff --git a/gpu/config/gpu_control_list_entry_unittest.cc b/gpu/config/gpu_control_list_entry_unittest.cc
index 6214f40..e35e9c5 100644
--- a/gpu/config/gpu_control_list_entry_unittest.cc
+++ b/gpu/config/gpu_control_list_entry_unittest.cc
@@ -661,9 +661,17 @@
 TEST_F(GpuControlListEntryTest, DirectRendering) {
   const Entry& entry = GetEntry(kGpuControlListEntryTest_DirectRendering);
   GPUInfo gpu_info;
-  gpu_info.direct_rendering = true;
+  // No info does not match.
+  gpu_info.direct_rendering_version = "";
   EXPECT_FALSE(entry.Contains(kOsLinux, "7.0", gpu_info));
-  gpu_info.direct_rendering = false;
+
+  // Indirect rendering does not match.
+  gpu_info.direct_rendering_version = "1";
+  EXPECT_FALSE(entry.Contains(kOsLinux, "7.0", gpu_info));
+
+  gpu_info.direct_rendering_version = "2";
+  EXPECT_TRUE(entry.Contains(kOsLinux, "7.0", gpu_info));
+  gpu_info.direct_rendering_version = "2.3";
   EXPECT_TRUE(entry.Contains(kOsLinux, "7.0", gpu_info));
 }
 
diff --git a/gpu/config/gpu_control_list_testing.json b/gpu/config/gpu_control_list_testing.json
index 3c4cd77..ca5a29e 100644
--- a/gpu/config/gpu_control_list_testing.json
+++ b/gpu/config/gpu_control_list_testing.json
@@ -698,7 +698,10 @@
       "os": {
         "type": "linux"
       },
-      "direct_rendering": false,
+      "direct_rendering_version": {
+        "op" : ">=",
+        "value": "2"
+      },
       "features": [
         "test_feature_1"
       ]
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 f543d980..34dfde9b 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
@@ -40,22 +40,134 @@
      nullptr},  // driver_date
 };
 
+const GpuControlList::More kMoreForEntry1_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 kFeatureListForGpuControlTestingEntry2[1] = {
     TEST_FEATURE_0,
 };
 
+const GpuControlList::More kMoreForEntry2_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 kFeatureListForGpuControlTestingEntry3[1] = {
     TEST_FEATURE_0,
 };
 
+const GpuControlList::More kMoreForEntry3_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 kFeatureListForGpuControlTestingEntry4[1] = {
     TEST_FEATURE_0,
 };
 
+const GpuControlList::More kMoreForEntry4_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 GpuControlList::More kMoreForEntry4_1440601243Exception0 = {
+    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 kFeatureListForGpuControlTestingEntry5[1] = {
     TEST_FEATURE_0,
 };
 
+const GpuControlList::More kMoreForEntry5_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 GpuControlList::More kMoreForEntry5_1440601243Exception0 = {
+    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 kFeatureListForGpuControlTestingEntry6[1] = {
     TEST_FEATURE_0,
 };
@@ -68,6 +180,22 @@
      nullptr},  // driver_date
 };
 
+const GpuControlList::More kMoreForEntry6_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 kFeatureListForGpuControlTestingEntry7[1] = {
     TEST_FEATURE_0,
 };
@@ -77,15 +205,47 @@
     0x0640,
 };
 
+const GpuControlList::More kMoreForEntry7_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 kFeatureListForGpuControlTestingEntry8[1] = {
     TEST_FEATURE_0,
 };
 
+const GpuControlList::More kMoreForEntry8_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 kFeatureListForGpuControlTestingEntry9[1] = {
     TEST_FEATURE_0,
 };
 
-const GpuControlList::More kMoreForEntry9 = {
+const GpuControlList::More kMoreForEntry9_1440601243 = {
     GpuControlList::kGLTypeGLES,  // gl_type
     {GpuControlList::kEQ, GpuControlList::kVersionStyleNumerical, "3.0",
      nullptr},  // gl_version
@@ -93,7 +253,8 @@
      nullptr},  // pixel_shader_version
     false,      // in_process_gpu
     0,          // gl_reset_notification_strategy
-    true,       // direct_rendering
+    {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical, nullptr,
+     nullptr},  // direct_rendering_version
     {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical, nullptr,
      nullptr},                  // gpu_count
     GpuControlList::kDontCare,  // hardware_overlay
@@ -104,7 +265,7 @@
     TEST_FEATURE_0,
 };
 
-const GpuControlList::More kMoreForEntry10 = {
+const GpuControlList::More kMoreForEntry10_1440601243 = {
     GpuControlList::kGLTypeANGLE,  // gl_type
     {GpuControlList::kGT, GpuControlList::kVersionStyleNumerical, "2.0",
      nullptr},  // gl_version
@@ -112,7 +273,8 @@
      nullptr},  // pixel_shader_version
     false,      // in_process_gpu
     0,          // gl_reset_notification_strategy
-    true,       // direct_rendering
+    {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical, nullptr,
+     nullptr},  // direct_rendering_version
     {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical, nullptr,
      nullptr},                  // gpu_count
     GpuControlList::kDontCare,  // hardware_overlay
@@ -123,7 +285,7 @@
     TEST_FEATURE_0,
 };
 
-const GpuControlList::More kMoreForEntry11 = {
+const GpuControlList::More kMoreForEntry11_1440601243 = {
     GpuControlList::kGLTypeGL,  // gl_type
     {GpuControlList::kLT, GpuControlList::kVersionStyleNumerical, "4.0",
      nullptr},  // gl_version
@@ -131,7 +293,8 @@
      nullptr},  // pixel_shader_version
     false,      // in_process_gpu
     0,          // gl_reset_notification_strategy
-    true,       // direct_rendering
+    {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical, nullptr,
+     nullptr},  // direct_rendering_version
     {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical, nullptr,
      nullptr},                  // gpu_count
     GpuControlList::kDontCare,  // hardware_overlay
@@ -149,6 +312,22 @@
     nullptr,
 };
 
+const GpuControlList::More kMoreForEntry12_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 kFeatureListForGpuControlTestingEntry13[1] = {
     TEST_FEATURE_0,
 };
@@ -160,6 +339,22 @@
     nullptr,
 };
 
+const GpuControlList::More kMoreForEntry13_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 kFeatureListForGpuControlTestingEntry14[1] = {
     TEST_FEATURE_0,
 };
@@ -171,6 +366,22 @@
     nullptr,
 };
 
+const GpuControlList::More kMoreForEntry14_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 kFeatureListForGpuControlTestingEntry15[1] = {
     TEST_FEATURE_0,
 };
@@ -182,6 +393,22 @@
     nullptr,
 };
 
+const GpuControlList::More kMoreForEntry15_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 kFeatureListForGpuControlTestingEntry16[1] = {
     TEST_FEATURE_0,
 };
@@ -193,14 +420,62 @@
     nullptr,
 };
 
+const GpuControlList::More kMoreForEntry16_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 kFeatureListForGpuControlTestingEntry17[1] = {
     TEST_FEATURE_0,
 };
 
+const GpuControlList::More kMoreForEntry17_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 kFeatureListForGpuControlTestingEntry18[1] = {
     TEST_FEATURE_0,
 };
 
+const GpuControlList::More kMoreForEntry18_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 kFeatureListForGpuControlTestingEntry19[1] = {
     TEST_FEATURE_0,
 };
@@ -213,6 +488,22 @@
      nullptr},  // driver_date
 };
 
+const GpuControlList::More kMoreForEntry19_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 kFeatureListForGpuControlTestingEntry20[1] = {
     TEST_FEATURE_0,
 };
@@ -225,6 +516,22 @@
      nullptr},  // driver_date
 };
 
+const GpuControlList::More kMoreForEntry20_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 kFeatureListForGpuControlTestingEntry21[1] = {
     TEST_FEATURE_1,
 };
@@ -237,10 +544,42 @@
      nullptr},  // driver_date
 };
 
+const GpuControlList::More kMoreForEntry21_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 kFeatureListForGpuControlTestingEntry22[1] = {
     TEST_FEATURE_1,
 };
 
+const GpuControlList::More kMoreForEntry22_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 GpuControlList::GLStrings
     kGLStringsForGpuControlTestingEntry22Exception0 = {
         nullptr,
@@ -249,11 +588,27 @@
         nullptr,
 };
 
+const GpuControlList::More kMoreForEntry22_1440601243Exception0 = {
+    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 kFeatureListForGpuControlTestingEntry23[1] = {
     TEST_FEATURE_1,
 };
 
-const GpuControlList::More kMoreForEntry23 = {
+const GpuControlList::More kMoreForEntry23_1440601243 = {
     GpuControlList::kGLTypeGL,  // gl_type
     {GpuControlList::kLT, GpuControlList::kVersionStyleNumerical, "3.5",
      nullptr},  // gl_version
@@ -261,7 +616,8 @@
      nullptr},  // pixel_shader_version
     false,      // in_process_gpu
     0,          // gl_reset_notification_strategy
-    true,       // direct_rendering
+    {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical, nullptr,
+     nullptr},  // direct_rendering_version
     {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical, nullptr,
      nullptr},                  // gpu_count
     GpuControlList::kDontCare,  // hardware_overlay
@@ -274,11 +630,43 @@
     TEST_FEATURE_2,
 };
 
+const GpuControlList::More kMoreForEntry24_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 kFeatureListForGpuControlTestingEntry25[2] = {
     TEST_FEATURE_1,
     TEST_FEATURE_2,
 };
 
+const GpuControlList::More kMoreForEntry25_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 kFeatureListForGpuControlTestingEntry26[1] = {
     TEST_FEATURE_0,
 };
@@ -287,6 +675,22 @@
     0x0640,
 };
 
+const GpuControlList::More kMoreForEntry26_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 kFeatureListForGpuControlTestingEntry27[1] = {
     TEST_FEATURE_0,
 };
@@ -305,10 +709,42 @@
      nullptr},  // machine model version
 };
 
+const GpuControlList::More kMoreForEntry27_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 kFeatureListForGpuControlTestingEntry28[1] = {
     TEST_FEATURE_0,
 };
 
+const GpuControlList::More kMoreForEntry28_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 char* const kMachineModelNameForEntry28Exception0[1] = {
     "Nexus.*",
 };
@@ -321,6 +757,22 @@
      nullptr},  // machine model version
 };
 
+const GpuControlList::More kMoreForEntry28_1440601243Exception0 = {
+    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 kFeatureListForGpuControlTestingEntry29[1] = {
     TEST_FEATURE_0,
 };
@@ -336,6 +788,22 @@
      nullptr},  // machine model version
 };
 
+const GpuControlList::More kMoreForEntry29_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 kFeatureListForGpuControlTestingEntry30[1] = {
     TEST_FEATURE_0,
 };
@@ -351,6 +819,22 @@
      nullptr},  // machine model version
 };
 
+const GpuControlList::More kMoreForEntry30_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 GpuControlList::MachineModelInfo kMachineModelInfoForEntry30Exception0 = {
     0,        // machine model name size
     nullptr,  // machine model names
@@ -358,6 +842,22 @@
      nullptr},  // machine model version
 };
 
+const GpuControlList::More kMoreForEntry30_1440601243Exception0 = {
+    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 kFeatureListForGpuControlTestingEntry31[1] = {
     TEST_FEATURE_0,
 };
@@ -366,6 +866,22 @@
     0x0166,
 };
 
+const GpuControlList::More kMoreForEntry31_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 kFeatureListForGpuControlTestingEntry32[1] = {
     TEST_FEATURE_0,
 };
@@ -374,6 +890,22 @@
     0x0640,
 };
 
+const GpuControlList::More kMoreForEntry32_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 kFeatureListForGpuControlTestingEntry33[1] = {
     TEST_FEATURE_0,
 };
@@ -382,6 +914,22 @@
     0x0166,
 };
 
+const GpuControlList::More kMoreForEntry33_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 kFeatureListForGpuControlTestingEntry34[1] = {
     TEST_FEATURE_0,
 };
@@ -390,6 +938,22 @@
     0x0166,
 };
 
+const GpuControlList::More kMoreForEntry34_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 kFeatureListForGpuControlTestingEntry35[1] = {
     TEST_FEATURE_0,
 };
@@ -398,6 +962,22 @@
     0x0166,
 };
 
+const GpuControlList::More kMoreForEntry35_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 kFeatureListForGpuControlTestingEntry36[1] = {
     TEST_FEATURE_0,
 };
@@ -407,10 +987,42 @@
     0x0168,
 };
 
+const GpuControlList::More kMoreForEntry36_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 kFeatureListForGpuControlTestingEntry37[1] = {
     TEST_FEATURE_0,
 };
 
+const GpuControlList::More kMoreForEntry37_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 kFeatureListForGpuControlTestingEntry38[1] = {
     TEST_FEATURE_0,
 };
@@ -419,15 +1031,47 @@
     0x0640,
 };
 
+const GpuControlList::More kMoreForEntry38_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 kFeatureListForGpuControlTestingEntry39[1] = {
     TEST_FEATURE_0,
 };
 
+const GpuControlList::More kMoreForEntry39_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 kFeatureListForGpuControlTestingEntry40[1] = {
     TEST_FEATURE_0,
 };
 
-const GpuControlList::More kMoreForEntry40 = {
+const GpuControlList::More kMoreForEntry40_1440601243 = {
     GpuControlList::kGLTypeNone,  // gl_type
     {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical, nullptr,
      nullptr},  // gl_version
@@ -435,7 +1079,8 @@
      nullptr},  // pixel_shader_version
     false,      // in_process_gpu
     0,          // gl_reset_notification_strategy
-    true,       // direct_rendering
+    {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical, nullptr,
+     nullptr},  // direct_rendering_version
     {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical, nullptr,
      nullptr},                  // gpu_count
     GpuControlList::kDontCare,  // hardware_overlay
@@ -446,22 +1091,102 @@
     TEST_FEATURE_0,
 };
 
+const GpuControlList::More kMoreForEntry41_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 kFeatureListForGpuControlTestingEntry42[1] = {
     TEST_FEATURE_0,
 };
 
+const GpuControlList::More kMoreForEntry42_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 kFeatureListForGpuControlTestingEntry43[1] = {
     TEST_FEATURE_0,
 };
 
+const GpuControlList::More kMoreForEntry43_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 kFeatureListForGpuControlTestingEntry44[1] = {
     TEST_FEATURE_0,
 };
 
+const GpuControlList::More kMoreForEntry44_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 kFeatureListForGpuControlTestingEntry45[1] = {
     TEST_FEATURE_0,
 };
 
+const GpuControlList::More kMoreForEntry45_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 uint32_t kDeviceIDsForGpuControlTestingEntry45Exception0[1] = {
     0x2a06,
 };
@@ -475,6 +1200,22 @@
          nullptr, nullptr},  // driver_date
 };
 
+const GpuControlList::More kMoreForEntry45_1440601243Exception0 = {
+    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 uint32_t kDeviceIDsForGpuControlTestingEntry45Exception1[1] = {
     0x2a02,
 };
@@ -488,19 +1229,67 @@
          nullptr, nullptr},  // driver_date
 };
 
+const GpuControlList::More kMoreForEntry45_1440601243Exception1 = {
+    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 kFeatureListForGpuControlTestingEntry46[1] = {
     TEST_FEATURE_0,
 };
 
+const GpuControlList::More kMoreForEntry46_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 kFeatureListForGpuControlTestingEntry47[1] = {
     TEST_FEATURE_0,
 };
 
+const GpuControlList::More kMoreForEntry47_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 kFeatureListForGpuControlTestingEntry48[1] = {
     TEST_FEATURE_0,
 };
 
-const GpuControlList::More kMoreForEntry48 = {
+const GpuControlList::More kMoreForEntry48_1440601243 = {
     GpuControlList::kGLTypeNone,  // gl_type
     {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical, nullptr,
      nullptr},  // gl_version
@@ -508,7 +1297,8 @@
      nullptr},  // pixel_shader_version
     true,       // in_process_gpu
     0,          // gl_reset_notification_strategy
-    true,       // direct_rendering
+    {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical, nullptr,
+     nullptr},  // direct_rendering_version
     {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical, nullptr,
      nullptr},                  // gpu_count
     GpuControlList::kDontCare,  // hardware_overlay
@@ -519,6 +1309,22 @@
     TEST_FEATURE_0,
 };
 
+const GpuControlList::More kMoreForEntry49_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 kFeatureListForGpuControlTestingEntry50[1] = {
     TEST_FEATURE_0,
 };
@@ -531,6 +1337,22 @@
      nullptr},  // driver_date
 };
 
+const GpuControlList::More kMoreForEntry50_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 kFeatureListForGpuControlTestingEntry51[1] = {
     TEST_FEATURE_0,
 };
@@ -543,10 +1365,42 @@
      nullptr},  // driver_date
 };
 
+const GpuControlList::More kMoreForEntry51_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 kFeatureListForGpuControlTestingEntry52[1] = {
     TEST_FEATURE_0,
 };
 
+const GpuControlList::More kMoreForEntry52_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 GpuControlList::GLStrings
     kGLStringsForGpuControlTestingEntry52Exception0 = {
         nullptr,
@@ -555,10 +1409,42 @@
         nullptr,
 };
 
+const GpuControlList::More kMoreForEntry52_1440601243Exception0 = {
+    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 kFeatureListForGpuControlTestingEntry53[1] = {
     TEST_FEATURE_0,
 };
 
+const GpuControlList::More kMoreForEntry53_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 kFeatureListForGpuControlTestingEntry54[1] = {
     TEST_FEATURE_0,
 };
@@ -571,21 +1457,7 @@
      nullptr},  // driver_date
 };
 
-const char* const kDisabledExtensionsForEntry55[2] = {
-    "test_extension2",
-    "test_extension1",
-};
-
-const char* const kDisabledExtensionsForEntry56[2] = {
-    "test_extension3",
-    "test_extension2",
-};
-
-const int kFeatureListForGpuControlTestingEntry57[1] = {
-    TEST_FEATURE_1,
-};
-
-const GpuControlList::More kMoreForEntry57 = {
+const GpuControlList::More kMoreForEntry54_1440601243 = {
     GpuControlList::kGLTypeNone,  // gl_type
     {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical, nullptr,
      nullptr},  // gl_version
@@ -593,7 +1465,70 @@
      nullptr},  // pixel_shader_version
     false,      // in_process_gpu
     0,          // gl_reset_notification_strategy
-    false,      // direct_rendering
+    {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 char* const kDisabledExtensionsForEntry55[2] = {
+    "test_extension2",
+    "test_extension1",
+};
+
+const GpuControlList::More kMoreForEntry55_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 char* const kDisabledExtensionsForEntry56[2] = {
+    "test_extension3",
+    "test_extension2",
+};
+
+const GpuControlList::More kMoreForEntry56_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 kFeatureListForGpuControlTestingEntry57[1] = {
+    TEST_FEATURE_1,
+};
+
+const GpuControlList::More kMoreForEntry57_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::kGE, GpuControlList::kVersionStyleNumerical, "2",
+     nullptr},  // direct_rendering_version
     {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical, nullptr,
      nullptr},                  // gpu_count
     GpuControlList::kDontCare,  // hardware_overlay
@@ -604,11 +1539,7 @@
     TEST_FEATURE_0,
 };
 
-const int kFeatureListForGpuControlTestingEntry59[1] = {
-    TEST_FEATURE_0,
-};
-
-const GpuControlList::More kMoreForEntry59 = {
+const GpuControlList::More kMoreForEntry58_1440601243 = {
     GpuControlList::kGLTypeNone,  // gl_type
     {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical, nullptr,
      nullptr},  // gl_version
@@ -616,7 +1547,28 @@
      nullptr},  // pixel_shader_version
     false,      // in_process_gpu
     0,          // gl_reset_notification_strategy
-    true,       // direct_rendering
+    {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 kFeatureListForGpuControlTestingEntry59[1] = {
+    TEST_FEATURE_0,
+};
+
+const GpuControlList::More kMoreForEntry59_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
@@ -627,7 +1579,7 @@
     TEST_FEATURE_1,
 };
 
-const GpuControlList::More kMoreForEntry60 = {
+const GpuControlList::More kMoreForEntry60_1440601243 = {
     GpuControlList::kGLTypeNone,  // gl_type
     {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical, nullptr,
      nullptr},  // gl_version
@@ -635,7 +1587,8 @@
      nullptr},  // pixel_shader_version
     false,      // in_process_gpu
     0,          // gl_reset_notification_strategy
-    true,       // direct_rendering
+    {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical, nullptr,
+     nullptr},  // direct_rendering_version
     {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical, nullptr,
      nullptr},                  // gpu_count
     GpuControlList::kDontCare,  // hardware_overlay
@@ -651,6 +1604,22 @@
     GpuSeriesType::kIntelKabyLake,
 };
 
+const GpuControlList::More kMoreForEntry61_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 kFeatureListForGpuControlTestingEntry62[1] = {
     TEST_FEATURE_0,
 };
@@ -659,6 +1628,22 @@
     GpuSeriesType::kIntelKabyLake,
 };
 
+const GpuControlList::More kMoreForEntry62_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 kFeatureListForGpuControlTestingEntry63[1] = {
     TEST_FEATURE_0,
 };
@@ -667,6 +1652,22 @@
     GpuSeriesType::kIntelKabyLake,
 };
 
+const GpuControlList::More kMoreForEntry63_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 kFeatureListForGpuControlTestingEntry64[1] = {
     TEST_FEATURE_0,
 };
@@ -675,6 +1676,22 @@
     GpuSeriesType::kIntelKabyLake,
 };
 
+const GpuControlList::More kMoreForEntry64_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 kFeatureListForGpuControlTestingEntry65[1] = {
     TEST_FEATURE_0,
 };
@@ -683,14 +1700,62 @@
     GpuSeriesType::kIntelKabyLake,
 };
 
+const GpuControlList::More kMoreForEntry65_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 kFeatureListForGpuControlTestingEntry66[1] = {
     TEST_FEATURE_0,
 };
 
+const GpuControlList::More kMoreForEntry66_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 GpuSeriesType kGpuSeriesForEntry66Exception0[1] = {
     GpuSeriesType::kIntelKabyLake,
 };
 
+const GpuControlList::More kMoreForEntry66_1440601243Exception0 = {
+    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 kFeatureListForGpuControlTestingEntry67[1] = {
     TEST_FEATURE_0,
 };
@@ -703,11 +1768,7 @@
      nullptr},  // driver_date
 };
 
-const int kFeatureListForGpuControlTestingEntry68[1] = {
-    TEST_FEATURE_0,
-};
-
-const GpuControlList::More kMoreForEntry68 = {
+const GpuControlList::More kMoreForEntry67_1440601243 = {
     GpuControlList::kGLTypeNone,  // gl_type
     {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical, nullptr,
      nullptr},  // gl_version
@@ -715,7 +1776,28 @@
      nullptr},  // pixel_shader_version
     false,      // in_process_gpu
     0,          // gl_reset_notification_strategy
-    true,       // direct_rendering
+    {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 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::kUnsupported,  // hardware_overlay
diff --git a/gpu/config/gpu_control_list_testing_autogen.cc b/gpu/config/gpu_control_list_testing_autogen.cc
index 7601e14..b71fbeb0 100644
--- a/gpu/config/gpu_control_list_testing_autogen.cc
+++ b/gpu/config/gpu_control_list_testing_autogen.cc
@@ -41,7 +41,7 @@
             nullptr,                                 // machine model info
             0,                                       // gpu_series size
             nullptr,                                 // gpu_series
-            nullptr,                                 // more conditions
+            &kMoreForEntry1_1440601243,              // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -71,7 +71,7 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            nullptr,                                // more conditions
+            &kMoreForEntry2_1440601243,             // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -101,7 +101,7 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            nullptr,                                // more conditions
+            &kMoreForEntry3_1440601243,             // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -131,7 +131,7 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            nullptr,                                // more conditions
+            &kMoreForEntry4_1440601243,             // more data
         },
         base::size(kExceptionsForEntry4),  // exceptions count
         kExceptionsForEntry4,              // exceptions
@@ -161,7 +161,7 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            nullptr,                                // more conditions
+            &kMoreForEntry5_1440601243,             // more data
         },
         base::size(kExceptionsForEntry5),  // exceptions count
         kExceptionsForEntry5,              // exceptions
@@ -191,7 +191,7 @@
             nullptr,                                 // machine model info
             0,                                       // gpu_series size
             nullptr,                                 // gpu_series
-            nullptr,                                 // more conditions
+            &kMoreForEntry6_1440601243,              // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -221,7 +221,7 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            nullptr,                                // more conditions
+            &kMoreForEntry7_1440601243,             // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -251,7 +251,7 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            nullptr,                                // more conditions
+            &kMoreForEntry8_1440601243,             // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -281,7 +281,7 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry9,                        // more data
+            &kMoreForEntry9_1440601243,             // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -311,7 +311,7 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry10,                       // more data
+            &kMoreForEntry10_1440601243,            // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -341,7 +341,7 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry11,                       // more data
+            &kMoreForEntry11_1440601243,            // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -371,7 +371,7 @@
             nullptr,                                 // machine model info
             0,                                       // gpu_series size
             nullptr,                                 // gpu_series
-            nullptr,                                 // more conditions
+            &kMoreForEntry12_1440601243,             // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -401,7 +401,7 @@
             nullptr,                                 // machine model info
             0,                                       // gpu_series size
             nullptr,                                 // gpu_series
-            nullptr,                                 // more conditions
+            &kMoreForEntry13_1440601243,             // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -431,7 +431,7 @@
             nullptr,                                 // machine model info
             0,                                       // gpu_series size
             nullptr,                                 // gpu_series
-            nullptr,                                 // more conditions
+            &kMoreForEntry14_1440601243,             // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -461,7 +461,7 @@
             nullptr,                                 // machine model info
             0,                                       // gpu_series size
             nullptr,                                 // gpu_series
-            nullptr,                                 // more conditions
+            &kMoreForEntry15_1440601243,             // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -491,7 +491,7 @@
             nullptr,                                 // machine model info
             0,                                       // gpu_series size
             nullptr,                                 // gpu_series
-            nullptr,                                 // more conditions
+            &kMoreForEntry16_1440601243,             // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -521,7 +521,7 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            nullptr,                                // more conditions
+            &kMoreForEntry17_1440601243,            // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -551,7 +551,7 @@
             nullptr,                                      // machine model info
             0,                                            // gpu_series size
             nullptr,                                      // gpu_series
-            nullptr,                                      // more conditions
+            &kMoreForEntry18_1440601243,                  // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -581,7 +581,7 @@
             nullptr,                                  // machine model info
             0,                                        // gpu_series size
             nullptr,                                  // gpu_series
-            nullptr,                                  // more conditions
+            &kMoreForEntry19_1440601243,              // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -611,7 +611,7 @@
             nullptr,                                  // machine model info
             0,                                        // gpu_series size
             nullptr,                                  // gpu_series
-            nullptr,                                  // more conditions
+            &kMoreForEntry20_1440601243,              // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -641,7 +641,7 @@
             nullptr,                                  // machine model info
             0,                                        // gpu_series size
             nullptr,                                  // gpu_series
-            nullptr,                                  // more conditions
+            &kMoreForEntry21_1440601243,              // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -671,7 +671,7 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            nullptr,                                // more conditions
+            &kMoreForEntry22_1440601243,            // more data
         },
         base::size(kExceptionsForEntry22),  // exceptions count
         kExceptionsForEntry22,              // exceptions
@@ -701,7 +701,7 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry23,                       // more data
+            &kMoreForEntry23_1440601243,            // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -731,7 +731,7 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            nullptr,                                // more conditions
+            &kMoreForEntry24_1440601243,            // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -761,7 +761,7 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            nullptr,                                // more conditions
+            &kMoreForEntry25_1440601243,            // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -792,7 +792,7 @@
             nullptr,                                     // machine model info
             0,                                           // gpu_series size
             nullptr,                                     // gpu_series
-            nullptr,                                     // more conditions
+            &kMoreForEntry26_1440601243,                 // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -822,7 +822,7 @@
             &kMachineModelInfoForEntry27,           // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            nullptr,                                // more conditions
+            &kMoreForEntry27_1440601243,            // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -852,7 +852,7 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            nullptr,                                // more conditions
+            &kMoreForEntry28_1440601243,            // more data
         },
         base::size(kExceptionsForEntry28),  // exceptions count
         kExceptionsForEntry28,              // exceptions
@@ -882,7 +882,7 @@
             &kMachineModelInfoForEntry29,           // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            nullptr,                                // more conditions
+            &kMoreForEntry29_1440601243,            // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -912,7 +912,7 @@
             &kMachineModelInfoForEntry30,           // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            nullptr,                                // more conditions
+            &kMoreForEntry30_1440601243,            // more data
         },
         base::size(kExceptionsForEntry30),  // exceptions count
         kExceptionsForEntry30,              // exceptions
@@ -943,7 +943,7 @@
             nullptr,                                     // machine model info
             0,                                           // gpu_series size
             nullptr,                                     // gpu_series
-            nullptr,                                     // more conditions
+            &kMoreForEntry31_1440601243,                 // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -974,7 +974,7 @@
             nullptr,                                     // machine model info
             0,                                           // gpu_series size
             nullptr,                                     // gpu_series
-            nullptr,                                     // more conditions
+            &kMoreForEntry32_1440601243,                 // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1005,7 +1005,7 @@
             nullptr,                                     // machine model info
             0,                                           // gpu_series size
             nullptr,                                     // gpu_series
-            nullptr,                                     // more conditions
+            &kMoreForEntry33_1440601243,                 // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1036,7 +1036,7 @@
             nullptr,                                     // machine model info
             0,                                           // gpu_series size
             nullptr,                                     // gpu_series
-            nullptr,                                     // more conditions
+            &kMoreForEntry34_1440601243,                 // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1067,7 +1067,7 @@
             nullptr,                                     // machine model info
             0,                                           // gpu_series size
             nullptr,                                     // gpu_series
-            nullptr,                                     // more conditions
+            &kMoreForEntry35_1440601243,                 // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1098,7 +1098,7 @@
             nullptr,                                     // machine model info
             0,                                           // gpu_series size
             nullptr,                                     // gpu_series
-            nullptr,                                     // more conditions
+            &kMoreForEntry36_1440601243,                 // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1128,7 +1128,7 @@
             nullptr,                                  // machine model info
             0,                                        // gpu_series size
             nullptr,                                  // gpu_series
-            nullptr,                                  // more conditions
+            &kMoreForEntry37_1440601243,              // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1159,7 +1159,7 @@
             nullptr,                                     // machine model info
             0,                                           // gpu_series size
             nullptr,                                     // gpu_series
-            nullptr,                                     // more conditions
+            &kMoreForEntry38_1440601243,                 // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1189,7 +1189,7 @@
             nullptr,                                  // machine model info
             0,                                        // gpu_series size
             nullptr,                                  // gpu_series
-            nullptr,                                  // more conditions
+            &kMoreForEntry39_1440601243,              // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1219,7 +1219,7 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry40,                       // more data
+            &kMoreForEntry40_1440601243,            // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1249,7 +1249,7 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            nullptr,                                // more conditions
+            &kMoreForEntry41_1440601243,            // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1279,7 +1279,7 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            nullptr,                                // more conditions
+            &kMoreForEntry42_1440601243,            // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1309,7 +1309,7 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            nullptr,                                // more conditions
+            &kMoreForEntry43_1440601243,            // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1339,7 +1339,7 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            nullptr,                                // more conditions
+            &kMoreForEntry44_1440601243,            // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1369,7 +1369,7 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            nullptr,                                // more conditions
+            &kMoreForEntry45_1440601243,            // more data
         },
         base::size(kExceptionsForEntry45),  // exceptions count
         kExceptionsForEntry45,              // exceptions
@@ -1400,7 +1400,7 @@
             nullptr,                                  // machine model info
             0,                                        // gpu_series size
             nullptr,                                  // gpu_series
-            nullptr,                                  // more conditions
+            &kMoreForEntry46_1440601243,              // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1431,7 +1431,7 @@
             nullptr,                                    // machine model info
             0,                                          // gpu_series size
             nullptr,                                    // gpu_series
-            nullptr,                                    // more conditions
+            &kMoreForEntry47_1440601243,                // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1461,7 +1461,7 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry48,                       // more data
+            &kMoreForEntry48_1440601243,            // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1491,7 +1491,7 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            nullptr,                                // more conditions
+            &kMoreForEntry49_1440601243,            // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1521,7 +1521,7 @@
             nullptr,                                  // machine model info
             0,                                        // gpu_series size
             nullptr,                                  // gpu_series
-            nullptr,                                  // more conditions
+            &kMoreForEntry50_1440601243,              // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1551,7 +1551,7 @@
             nullptr,                                  // machine model info
             0,                                        // gpu_series size
             nullptr,                                  // gpu_series
-            nullptr,                                  // more conditions
+            &kMoreForEntry51_1440601243,              // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1581,7 +1581,7 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            nullptr,                                // more conditions
+            &kMoreForEntry52_1440601243,            // more data
         },
         base::size(kExceptionsForEntry52),  // exceptions count
         kExceptionsForEntry52,              // exceptions
@@ -1611,7 +1611,7 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            nullptr,                                // more conditions
+            &kMoreForEntry53_1440601243,            // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1641,7 +1641,7 @@
             nullptr,                                  // machine model info
             0,                                        // gpu_series size
             nullptr,                                  // gpu_series
-            nullptr,                                  // more conditions
+            &kMoreForEntry54_1440601243,              // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1671,7 +1671,7 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            nullptr,                                // more conditions
+            &kMoreForEntry55_1440601243,            // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1701,7 +1701,7 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            nullptr,                                // more conditions
+            &kMoreForEntry56_1440601243,            // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1731,7 +1731,7 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry57,                       // more data
+            &kMoreForEntry57_1440601243,            // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1761,7 +1761,7 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            nullptr,                                // more conditions
+            &kMoreForEntry58_1440601243,            // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1791,7 +1791,7 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry59,                       // more data
+            &kMoreForEntry59_1440601243,            // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1821,7 +1821,7 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry60,                       // more data
+            &kMoreForEntry60_1440601243,            // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1851,7 +1851,7 @@
             nullptr,                                // machine model info
             base::size(kGpuSeriesForEntry61),       // gpu_series size
             kGpuSeriesForEntry61,                   // gpu_series
-            nullptr,                                // more conditions
+            &kMoreForEntry61_1440601243,            // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1881,7 +1881,7 @@
             nullptr,                                  // machine model info
             base::size(kGpuSeriesForEntry62),         // gpu_series size
             kGpuSeriesForEntry62,                     // gpu_series
-            nullptr,                                  // more conditions
+            &kMoreForEntry62_1440601243,              // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1911,7 +1911,7 @@
             nullptr,                               // machine model info
             base::size(kGpuSeriesForEntry63),      // gpu_series size
             kGpuSeriesForEntry63,                  // gpu_series
-            nullptr,                               // more conditions
+            &kMoreForEntry63_1440601243,           // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1941,7 +1941,7 @@
             nullptr,                                   // machine model info
             base::size(kGpuSeriesForEntry64),          // gpu_series size
             kGpuSeriesForEntry64,                      // gpu_series
-            nullptr,                                   // more conditions
+            &kMoreForEntry64_1440601243,               // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -1971,7 +1971,7 @@
             nullptr,                                     // machine model info
             base::size(kGpuSeriesForEntry65),            // gpu_series size
             kGpuSeriesForEntry65,                        // gpu_series
-            nullptr,                                     // more conditions
+            &kMoreForEntry65_1440601243,                 // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -2001,7 +2001,7 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            nullptr,                                // more conditions
+            &kMoreForEntry66_1440601243,            // more data
         },
         base::size(kExceptionsForEntry66),  // exceptions count
         kExceptionsForEntry66,              // exceptions
@@ -2031,7 +2031,7 @@
             nullptr,                                  // machine model info
             0,                                        // gpu_series size
             nullptr,                                  // gpu_series
-            nullptr,                                  // more conditions
+            &kMoreForEntry67_1440601243,              // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
@@ -2061,7 +2061,7 @@
             nullptr,                                // machine model info
             0,                                      // gpu_series size
             nullptr,                                // gpu_series
-            &kMoreForEntry68,                       // more data
+            &kMoreForEntry68_1440601243,            // more data
         },
         0,        // exceptions count
         nullptr,  // exceptions
diff --git a/gpu/config/gpu_control_list_testing_exceptions_autogen.h b/gpu/config/gpu_control_list_testing_exceptions_autogen.h
index 1adc7d7..49b04a3 100644
--- a/gpu/config/gpu_control_list_testing_exceptions_autogen.h
+++ b/gpu/config/gpu_control_list_testing_exceptions_autogen.h
@@ -27,7 +27,7 @@
         nullptr,                                // machine model info
         0,                                      // gpu_series size
         nullptr,                                // gpu_series
-        nullptr,                                // more conditions
+        &kMoreForEntry4_1440601243Exception0,   // more data
     },
 };
 
@@ -46,7 +46,7 @@
         nullptr,                                // machine model info
         0,                                      // gpu_series size
         nullptr,                                // gpu_series
-        nullptr,                                // more conditions
+        &kMoreForEntry5_1440601243Exception0,   // more data
     },
 };
 
@@ -65,7 +65,7 @@
         nullptr,                                           // machine model info
         0,                                                 // gpu_series size
         nullptr,                                           // gpu_series
-        nullptr,                                           // more conditions
+        &kMoreForEntry22_1440601243Exception0,             // more data
     },
 };
 
@@ -84,7 +84,7 @@
         &kMachineModelInfoForEntry28Exception0,  // machine model info
         0,                                       // gpu_series size
         nullptr,                                 // gpu_series
-        nullptr,                                 // more conditions
+        &kMoreForEntry28_1440601243Exception0,   // more data
     },
 };
 
@@ -103,7 +103,7 @@
         &kMachineModelInfoForEntry30Exception0,  // machine model info
         0,                                       // gpu_series size
         nullptr,                                 // gpu_series
-        nullptr,                                 // more conditions
+        &kMoreForEntry30_1440601243Exception0,   // more data
     },
 };
 
@@ -120,10 +120,10 @@
         GpuControlList::kMultiGpuStyleNone,     // multi_gpu_style
         &kDriverInfoForGpuControlTestingEntry45Exception0,  // driver info
         nullptr,                                            // GL strings
-        nullptr,  // machine model info
-        0,        // gpu_series size
-        nullptr,  // gpu_series
-        nullptr,  // more conditions
+        nullptr,                                // machine model info
+        0,                                      // gpu_series size
+        nullptr,                                // gpu_series
+        &kMoreForEntry45_1440601243Exception0,  // more data
     },
     {
         GpuControlList::kOsAny,  // os_type
@@ -137,10 +137,10 @@
         GpuControlList::kMultiGpuStyleNone,     // multi_gpu_style
         &kDriverInfoForGpuControlTestingEntry45Exception1,  // driver info
         nullptr,                                            // GL strings
-        nullptr,  // machine model info
-        0,        // gpu_series size
-        nullptr,  // gpu_series
-        nullptr,  // more conditions
+        nullptr,                                // machine model info
+        0,                                      // gpu_series size
+        nullptr,                                // gpu_series
+        &kMoreForEntry45_1440601243Exception1,  // more data
     },
 };
 
@@ -159,7 +159,7 @@
         nullptr,                                           // machine model info
         0,                                                 // gpu_series size
         nullptr,                                           // gpu_series
-        nullptr,                                           // more conditions
+        &kMoreForEntry52_1440601243Exception0,             // more data
     },
 };
 
@@ -178,7 +178,7 @@
         nullptr,                                     // machine model info
         base::size(kGpuSeriesForEntry66Exception0),  // gpu_series size
         kGpuSeriesForEntry66Exception0,              // gpu_series
-        nullptr,                                     // more conditions
+        &kMoreForEntry66_1440601243Exception0,       // more data
     },
 };
 
diff --git a/gpu/config/gpu_driver_bug_list.json b/gpu/config/gpu_driver_bug_list.json
index 25bff8ed..eaa10ef 100644
--- a/gpu/config/gpu_driver_bug_list.json
+++ b/gpu/config/gpu_driver_bug_list.json
@@ -449,6 +449,10 @@
       },
       "gl_type": "gl",
       "gl_renderer": ".*Mesa.*",
+      "direct_rendering_version": {
+        "op" : "<",
+        "value": "2.3"
+      },
       "features": [
         "disable_post_sub_buffers_for_onscreen_surfaces"
       ]
@@ -1865,6 +1869,10 @@
       },
       "gl_type": "gl",
       "gl_version_string": ".*Mesa.*",
+      "direct_rendering_version": {
+        "op" : "<",
+        "value": "2.3"
+      },
       "features": [
         "disable_post_sub_buffers_for_onscreen_surfaces"
       ]
diff --git a/gpu/config/gpu_info.cc b/gpu/config/gpu_info.cc
index 38abaf0..7036b3a5 100644
--- a/gpu/config/gpu_info.cc
+++ b/gpu/config/gpu_info.cc
@@ -186,7 +186,6 @@
       amd_switchable(false),
       gl_reset_notification_strategy(0),
       software_rendering(false),
-      direct_rendering(true),
       sandboxed(false),
       in_process_gpu(true),
       passthrough_cmd_decoder(false),
@@ -243,7 +242,7 @@
     std::string gl_ws_extensions;
     uint32_t gl_reset_notification_strategy;
     bool software_rendering;
-    bool direct_rendering;
+    std::string direct_rendering_version;
     bool sandboxed;
     bool in_process_gpu;
     bool passthrough_cmd_decoder;
@@ -306,7 +305,7 @@
       static_cast<int>(gl_reset_notification_strategy));
   // TODO(kbr): add performance_stats.
   enumerator->AddBool("softwareRendering", software_rendering);
-  enumerator->AddBool("directRendering", direct_rendering);
+  enumerator->AddString("directRenderingVersion", direct_rendering_version);
   enumerator->AddBool("sandboxed", sandboxed);
   enumerator->AddBool("inProcessGpu", in_process_gpu);
   enumerator->AddBool("passthroughCmdDecoder", passthrough_cmd_decoder);
diff --git a/gpu/config/gpu_info.h b/gpu/config/gpu_info.h
index 88420f3..37e29d2 100644
--- a/gpu/config/gpu_info.h
+++ b/gpu/config/gpu_info.h
@@ -295,9 +295,12 @@
 
   bool software_rendering;
 
-  // Whether the driver uses direct rendering. True on most platforms, false on
-  // X11 when using remote X.
-  bool direct_rendering;
+  // Empty means unknown. Defined on X11 as
+  // - "1" means indirect (versions can't be all zero)
+  // - "2" means some type of direct rendering, but version cannot not be
+  //    reliably determined
+  // - "2.1", "2.2", "2.3" for DRI, DRI2, DRI3 respectively
+  std::string direct_rendering_version;
 
   // Whether the gpu process is running in a sandbox.
   bool sandboxed;
diff --git a/gpu/config/gpu_info_collector.cc b/gpu/config/gpu_info_collector.cc
index d5737b6..79d1a7f 100644
--- a/gpu/config/gpu_info_collector.cc
+++ b/gpu/config/gpu_info_collector.cc
@@ -226,11 +226,13 @@
       gfx::HasExtension(extension_set, "GL_OES_EGL_image");
 #else
   gl::GLWindowSystemBindingInfo window_system_binding_info;
-  if (gl::init::GetGLWindowSystemBindingInfo(&window_system_binding_info)) {
+  if (gl::init::GetGLWindowSystemBindingInfo(gl_info,
+                                             &window_system_binding_info)) {
     gpu_info->gl_ws_vendor = window_system_binding_info.vendor;
     gpu_info->gl_ws_version = window_system_binding_info.version;
     gpu_info->gl_ws_extensions = window_system_binding_info.extensions;
-    gpu_info->direct_rendering = window_system_binding_info.direct_rendering;
+    gpu_info->direct_rendering_version =
+        window_system_binding_info.direct_rendering_version;
   }
 #endif  // OS_ANDROID
 
diff --git a/gpu/config/process_json.py b/gpu/config/process_json.py
index c4faaf2..df68c6a 100755
--- a/gpu/config/process_json.py
+++ b/gpu/config/process_json.py
@@ -9,6 +9,7 @@
 import os
 import platform
 import sys
+import zlib
 from optparse import OptionParser
 from subprocess import call
 
@@ -378,7 +379,7 @@
   pixel_shader_version = None
   in_process_gpu = False
   gl_reset_notification_strategy = None
-  direct_rendering = True
+  direct_rendering_version = ''
   gpu_count = None
   hardware_overlay = None
   test_group = 0
@@ -451,9 +452,8 @@
       in_process_gpu = True
     elif key == 'gl_reset_notification_strategy':
       gl_reset_notification_strategy = entry[key]
-    elif key == 'direct_rendering':
-      assert not entry[key]
-      direct_rendering = False
+    elif key == 'direct_rendering_version':
+      direct_rendering_version = entry[key]
     elif key == 'gpu_count':
       gpu_count = entry[key]
     elif key == 'hardware_overlay':
@@ -502,13 +502,13 @@
                         data_file, data_helper_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 (not direct_rendering) or
-      gpu_count != None or hardware_overlay != None or test_group != 0):
+      gl_reset_notification_strategy != None or direct_rendering_version != None
+      or gpu_count != None or hardware_overlay != None or test_group != 0):
     write_entry_more_data(entry_id, is_exception, exception_id, gl_type,
                           gl_version, pixel_shader_version, in_process_gpu,
-                          gl_reset_notification_strategy, direct_rendering,
-                          gpu_count, hardware_overlay, test_group, data_file,
-                          data_helper_file)
+                          gl_reset_notification_strategy,
+                          direct_rendering_version, gpu_count, hardware_overlay,
+                          test_group, data_file, data_helper_file)
   else:
     data_file.write('nullptr,  // more conditions\n')
 
@@ -549,11 +549,18 @@
 
 def write_entry_more_data(entry_id, is_exception, exception_id, gl_type,
                           gl_version, pixel_shader_version, in_process_gpu,
-                          gl_reset_notification_strategy, direct_rendering,
-                          gpu_count, hardware_overlay, test_group, data_file,
-                          data_helper_file):
+                          gl_reset_notification_strategy,
+                          direct_rendering_version, gpu_count, hardware_overlay,
+                          test_group, data_file, data_helper_file):
   # write more data
-  var_name = 'kMoreForEntry' + str(entry_id)
+
+  # Generate a unique name for jumbo build which concatenates multiple
+  # translation units into one to speed compilation.
+  basename = os.path.basename(data_helper_file.name)
+  # & 0xffffffff converts to unsigned to keep consistent across Python versions
+  # and platforms as per https://docs.python.org/3/library/zlib.html
+  suffix = '_%s' % (zlib.crc32(basename) & 0xffffffff)
+  var_name = 'kMoreForEntry' + str(entry_id) + suffix
   if is_exception:
     var_name += 'Exception' + str(exception_id)
   data_helper_file.write('const GpuControlList::More %s = {\n' % var_name)
@@ -565,7 +572,8 @@
     gl_reset_notification_strategy = '0'
   data_helper_file.write('%s,  // gl_reset_notification_strategy\n' %
                          gl_reset_notification_strategy)
-  write_boolean_value(direct_rendering, 'direct_rendering', data_helper_file)
+  write_version(direct_rendering_version, 'direct_rendering_version',
+                data_helper_file)
   write_version(gpu_count, 'gpu_count', data_helper_file)
   write_supported_or_not(hardware_overlay, 'hardware_overlay', data_helper_file)
   write_integer_value(test_group, 'test_group', data_helper_file)
diff --git a/gpu/config/software_rendering_list.json b/gpu/config/software_rendering_list.json
index 5deceb6..d4c3b43 100644
--- a/gpu/config/software_rendering_list.json
+++ b/gpu/config/software_rendering_list.json
@@ -735,7 +735,10 @@
       "os": {
         "type": "linux"
       },
-      "direct_rendering": false,
+      "direct_rendering_version": {
+        "op": "<",
+        "value": "2"
+      },
       "features": [
         "all"
       ]
diff --git a/gpu/ipc/common/gpu_info.mojom b/gpu/ipc/common/gpu_info.mojom
index fb42f07..9731c4d3 100644
--- a/gpu/ipc/common/gpu_info.mojom
+++ b/gpu/ipc/common/gpu_info.mojom
@@ -141,7 +141,7 @@
   string gl_ws_extensions;
   uint32 gl_reset_notification_strategy;
   bool software_rendering;
-  bool direct_rendering;
+  string direct_rendering_version;
   bool sandboxed;
   bool in_process_gpu;
   bool passthrough_cmd_decoder;
diff --git a/gpu/ipc/common/gpu_info_struct_traits.cc b/gpu/ipc/common/gpu_info_struct_traits.cc
index 26148ba..f17db0f 100644
--- a/gpu/ipc/common/gpu_info_struct_traits.cc
+++ b/gpu/ipc/common/gpu_info_struct_traits.cc
@@ -351,7 +351,6 @@
   out->amd_switchable = data.amd_switchable();
   out->gl_reset_notification_strategy = data.gl_reset_notification_strategy();
   out->software_rendering = data.software_rendering();
-  out->direct_rendering = data.direct_rendering();
   out->sandboxed = data.sandboxed();
   out->in_process_gpu = data.in_process_gpu();
   out->passthrough_cmd_decoder = data.passthrough_cmd_decoder();
@@ -386,6 +385,7 @@
          data.ReadGlWsVendor(&out->gl_ws_vendor) &&
          data.ReadGlWsVersion(&out->gl_ws_version) &&
          data.ReadGlWsExtensions(&out->gl_ws_extensions) &&
+         data.ReadDirectRenderingVersion(&out->direct_rendering_version) &&
 #if defined(OS_WIN)
          data.ReadOverlayCapabilities(&out->overlay_capabilities) &&
          data.ReadDxDiagnostics(&out->dx_diagnostics) &&
diff --git a/gpu/ipc/common/gpu_info_struct_traits.h b/gpu/ipc/common/gpu_info_struct_traits.h
index 926f8ea..dca1fcf 100644
--- a/gpu/ipc/common/gpu_info_struct_traits.h
+++ b/gpu/ipc/common/gpu_info_struct_traits.h
@@ -313,8 +313,9 @@
     return input.software_rendering;
   }
 
-  static bool direct_rendering(const gpu::GPUInfo& input) {
-    return input.direct_rendering;
+  static const std::string& direct_rendering_version(
+      const gpu::GPUInfo& input) {
+    return input.direct_rendering_version;
   }
 
   static bool sandboxed(const gpu::GPUInfo& input) { return input.sandboxed; }
diff --git a/gpu/ipc/common/struct_traits_unittest.cc b/gpu/ipc/common/struct_traits_unittest.cc
index 2c51f08d..83a4aa2 100644
--- a/gpu/ipc/common/struct_traits_unittest.cc
+++ b/gpu/ipc/common/struct_traits_unittest.cc
@@ -149,7 +149,7 @@
   const std::string gl_ws_extensions = "gl_ws_extensions";
   const uint32_t gl_reset_notification_strategy = 0xbeef;
   const bool software_rendering = true;
-  const bool direct_rendering = true;
+  const std::string direct_rendering_version = "DRI1";
   const bool sandboxed = true;
   const bool in_process_gpu = true;
   const bool passthrough_cmd_decoder = true;
@@ -193,7 +193,7 @@
   input.gl_ws_extensions = gl_ws_extensions;
   input.gl_reset_notification_strategy = gl_reset_notification_strategy;
   input.software_rendering = software_rendering;
-  input.direct_rendering = direct_rendering;
+  input.direct_rendering_version = direct_rendering_version;
   input.sandboxed = sandboxed;
   input.in_process_gpu = in_process_gpu;
   input.passthrough_cmd_decoder = passthrough_cmd_decoder;
@@ -252,7 +252,7 @@
   EXPECT_EQ(gl_reset_notification_strategy,
             output.gl_reset_notification_strategy);
   EXPECT_EQ(software_rendering, output.software_rendering);
-  EXPECT_EQ(direct_rendering, output.direct_rendering);
+  EXPECT_EQ(direct_rendering_version, output.direct_rendering_version);
   EXPECT_EQ(sandboxed, output.sandboxed);
   EXPECT_EQ(in_process_gpu, output.in_process_gpu);
   EXPECT_EQ(passthrough_cmd_decoder, output.passthrough_cmd_decoder);
diff --git a/ui/gl/gl_glx_api_implementation.cc b/ui/gl/gl_glx_api_implementation.cc
index d7903a2..8aba57c 100644
--- a/ui/gl/gl_glx_api_implementation.cc
+++ b/ui/gl/gl_glx_api_implementation.cc
@@ -5,11 +5,13 @@
 #include "ui/gl/gl_glx_api_implementation.h"
 
 #include "base/command_line.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/strings/string_split.h"
 #include "base/strings/string_util.h"
 #include "ui/gl/gl_context.h"
 #include "ui/gl/gl_implementation.h"
 #include "ui/gl/gl_surface_glx.h"
+#include "ui/gl/gl_version_info.h"
 
 namespace gl {
 
@@ -120,7 +122,8 @@
   }
 }
 
-bool GetGLWindowSystemBindingInfoGLX(GLWindowSystemBindingInfo* info) {
+bool GetGLWindowSystemBindingInfoGLX(const GLVersionInfo& gl_info,
+                                     GLWindowSystemBindingInfo* info) {
   Display* display = glXGetCurrentDisplay();
   const int kDefaultScreen = 0;
   const char* vendor =
@@ -136,7 +139,32 @@
     info->version = version;
   if (extensions)
     info->extensions = extensions;
-  info->direct_rendering = !!glXIsDirect(display, glXGetCurrentContext());
+  if (glXIsDirect(display, glXGetCurrentContext())) {
+    info->direct_rendering_version = "2";
+    bool using_mesa = gl_info.driver_vendor.find("Mesa") != std::string::npos ||
+                      gl_info.driver_version.find("Mesa") != std::string::npos;
+    if (using_mesa) {
+      std::vector<std::string> split_version =
+          base::SplitString(gl_info.driver_version, ".", base::TRIM_WHITESPACE,
+                            base::SPLIT_WANT_ALL);
+      int ext_code, first_event, first_error;
+      unsigned major_num = 0;
+      base::StringToUint(split_version[0], &major_num);
+      // Mesa after version 17 will reliably use DRI3 when available.
+      if (major_num >= 17 && XQueryExtension(display, "DRI3", &ext_code,
+                                             &first_event, &first_error)) {
+        info->direct_rendering_version = "2.3";
+      } else if (XQueryExtension(display, "DRI2", &ext_code, &first_event,
+                                 &first_error)) {
+        info->direct_rendering_version = "2.2";
+      } else if (XQueryExtension(display, "DRI", &ext_code, &first_event,
+                                 &first_error)) {
+        info->direct_rendering_version = "2.1";
+      }
+    }
+  } else {
+    info->direct_rendering_version = "1";
+  }
   return true;
 }
 
diff --git a/ui/gl/gl_glx_api_implementation.h b/ui/gl/gl_glx_api_implementation.h
index f3ac47ec..b75b5f03 100644
--- a/ui/gl/gl_glx_api_implementation.h
+++ b/ui/gl/gl_glx_api_implementation.h
@@ -14,12 +14,14 @@
 
 namespace gl {
 
+struct GLVersionInfo;
 struct GLWindowSystemBindingInfo;
 
 GL_EXPORT void InitializeStaticGLBindingsGLX();
 GL_EXPORT void InitializeDebugGLBindingsGLX();
 GL_EXPORT void ClearBindingsGLX();
-GL_EXPORT bool GetGLWindowSystemBindingInfoGLX(GLWindowSystemBindingInfo* info);
+GL_EXPORT bool GetGLWindowSystemBindingInfoGLX(const GLVersionInfo& gl_info,
+                                               GLWindowSystemBindingInfo* info);
 GL_EXPORT void SetDisabledExtensionsGLX(const std::string& disabled_extensions);
 GL_EXPORT bool InitializeExtensionSettingsOneOffGLX();
 
diff --git a/ui/gl/gl_implementation.cc b/ui/gl/gl_implementation.cc
index 9234bb6..89fcb5cf 100644
--- a/ui/gl/gl_implementation.cc
+++ b/ui/gl/gl_implementation.cc
@@ -220,8 +220,8 @@
   SetNullDrawGLBindingsEnabled(initial_enabled_);
 }
 
-GLWindowSystemBindingInfo::GLWindowSystemBindingInfo()
-    : direct_rendering(true) {}
+GLWindowSystemBindingInfo::GLWindowSystemBindingInfo() {}
+GLWindowSystemBindingInfo::~GLWindowSystemBindingInfo() {}
 
 std::string GetGLExtensionsFromCurrentContext() {
   return GetGLExtensionsFromCurrentContext(g_current_gl_context);
diff --git a/ui/gl/gl_implementation.h b/ui/gl/gl_implementation.h
index fd6290c..8a2b295 100644
--- a/ui/gl/gl_implementation.h
+++ b/ui/gl/gl_implementation.h
@@ -39,10 +39,11 @@
 
 struct GL_EXPORT GLWindowSystemBindingInfo {
   GLWindowSystemBindingInfo();
+  ~GLWindowSystemBindingInfo();
   std::string vendor;
   std::string version;
   std::string extensions;
-  bool direct_rendering;
+  std::string direct_rendering_version;
 };
 
 using GLFunctionPointerType = void (*)();
diff --git a/ui/gl/init/gl_factory.h b/ui/gl/init/gl_factory.h
index b6dfd9c..44200f0 100644
--- a/ui/gl/init/gl_factory.h
+++ b/ui/gl/init/gl_factory.h
@@ -20,10 +20,12 @@
 namespace gl {
 
 class GLContext;
-struct GLContextAttribs;
 class GLShareGroup;
 class GLSurface;
 
+struct GLContextAttribs;
+struct GLVersionInfo;
+
 namespace init {
 
 // Returns a list of allowed GL implementations. The default implementation will
@@ -55,6 +57,7 @@
 // Return information about the GL window system binding implementation (e.g.,
 // EGL, GLX, WGL). Returns true if the information was retrieved successfully.
 GL_INIT_EXPORT bool GetGLWindowSystemBindingInfo(
+    const GLVersionInfo& gl_info,
     GLWindowSystemBindingInfo* info);
 
 // Creates a GL context that is compatible with the given surface.
diff --git a/ui/gl/init/gl_factory_android.cc b/ui/gl/init/gl_factory_android.cc
index a9e2d4cc..490f8ba 100644
--- a/ui/gl/init/gl_factory_android.cc
+++ b/ui/gl/init/gl_factory_android.cc
@@ -70,7 +70,8 @@
   return impls;
 }
 
-bool GetGLWindowSystemBindingInfo(GLWindowSystemBindingInfo* info) {
+bool GetGLWindowSystemBindingInfo(const GLVersionInfo& gl_info,
+                                  GLWindowSystemBindingInfo* info) {
   switch (GetGLImplementation()) {
     case kGLImplementationEGLGLES2:
       return GetGLWindowSystemBindingInfoEGL(info);
diff --git a/ui/gl/init/gl_factory_mac.cc b/ui/gl/init/gl_factory_mac.cc
index 56b8916..62d29a7 100644
--- a/ui/gl/init/gl_factory_mac.cc
+++ b/ui/gl/init/gl_factory_mac.cc
@@ -72,7 +72,8 @@
   return impls;
 }
 
-bool GetGLWindowSystemBindingInfo(GLWindowSystemBindingInfo* info) {
+bool GetGLWindowSystemBindingInfo(const GLVersionInfo& gl_info,
+                                  GLWindowSystemBindingInfo* info) {
   return false;
 }
 
diff --git a/ui/gl/init/gl_factory_ozone.cc b/ui/gl/init/gl_factory_ozone.cc
index 1dfbf40..faba8ea6 100644
--- a/ui/gl/init/gl_factory_ozone.cc
+++ b/ui/gl/init/gl_factory_ozone.cc
@@ -23,9 +23,10 @@
   return GetSurfaceFactoryOzone()->GetAllowedGLImplementations();
 }
 
-bool GetGLWindowSystemBindingInfo(GLWindowSystemBindingInfo* info) {
+bool GetGLWindowSystemBindingInfo(const GLVersionInfo& gl_info,
+                                  GLWindowSystemBindingInfo* info) {
   if (HasGLOzone())
-    return GetGLOzone()->GetGLWindowSystemBindingInfo(info);
+    return GetGLOzone()->GetGLWindowSystemBindingInfo(gl_info, info);
 
   return false;
 }
diff --git a/ui/gl/init/gl_factory_win.cc b/ui/gl/init/gl_factory_win.cc
index 2fd24ae..973fc4f 100644
--- a/ui/gl/init/gl_factory_win.cc
+++ b/ui/gl/init/gl_factory_win.cc
@@ -31,7 +31,8 @@
   return impls;
 }
 
-bool GetGLWindowSystemBindingInfo(GLWindowSystemBindingInfo* info) {
+bool GetGLWindowSystemBindingInfo(const GLVersionInfo& gl_info,
+                                  GLWindowSystemBindingInfo* info) {
   switch (GetGLImplementation()) {
     case kGLImplementationDesktopGL:
       return GetGLWindowSystemBindingInfoWGL(info);
diff --git a/ui/gl/init/gl_factory_x11.cc b/ui/gl/init/gl_factory_x11.cc
index 4a09c1c..f6efd5d 100644
--- a/ui/gl/init/gl_factory_x11.cc
+++ b/ui/gl/init/gl_factory_x11.cc
@@ -31,10 +31,11 @@
   return impls;
 }
 
-bool GetGLWindowSystemBindingInfo(GLWindowSystemBindingInfo* info) {
+bool GetGLWindowSystemBindingInfo(const GLVersionInfo& gl_info,
+                                  GLWindowSystemBindingInfo* info) {
   switch (GetGLImplementation()) {
     case kGLImplementationDesktopGL:
-      return GetGLWindowSystemBindingInfoGLX(info);
+      return GetGLWindowSystemBindingInfoGLX(gl_info, info);
     case kGLImplementationEGLGLES2:
       return GetGLWindowSystemBindingInfoEGL(info);
     default:
diff --git a/ui/ozone/common/gl_ozone_egl.cc b/ui/ozone/common/gl_ozone_egl.cc
index 95da3290..9666f5f 100644
--- a/ui/ozone/common/gl_ozone_egl.cc
+++ b/ui/ozone/common/gl_ozone_egl.cc
@@ -56,6 +56,7 @@
 }
 
 bool GLOzoneEGL::GetGLWindowSystemBindingInfo(
+    const gl::GLVersionInfo& gl_info,
     gl::GLWindowSystemBindingInfo* info) {
   return gl::GetGLWindowSystemBindingInfoEGL(info);
 }
diff --git a/ui/ozone/common/gl_ozone_egl.h b/ui/ozone/common/gl_ozone_egl.h
index 1607c25..0364db36 100644
--- a/ui/ozone/common/gl_ozone_egl.h
+++ b/ui/ozone/common/gl_ozone_egl.h
@@ -28,6 +28,7 @@
   bool InitializeExtensionSettingsOneOffPlatform() override;
   void ShutdownGL() override;
   bool GetGLWindowSystemBindingInfo(
+      const gl::GLVersionInfo& gl_info,
       gl::GLWindowSystemBindingInfo* info) override;
   scoped_refptr<gl::GLContext> CreateGLContext(
       gl::GLShareGroup* share_group,
diff --git a/ui/ozone/platform/x11/gl_ozone_glx.cc b/ui/ozone/platform/x11/gl_ozone_glx.cc
index ab78a370..a11dc42 100644
--- a/ui/ozone/platform/x11/gl_ozone_glx.cc
+++ b/ui/ozone/platform/x11/gl_ozone_glx.cc
@@ -87,8 +87,9 @@
 }
 
 bool GLOzoneGLX::GetGLWindowSystemBindingInfo(
+    const gl::GLVersionInfo& gl_info,
     gl::GLWindowSystemBindingInfo* info) {
-  return gl::GetGLWindowSystemBindingInfoGLX(info);
+  return gl::GetGLWindowSystemBindingInfoGLX(gl_info, info);
 }
 
 scoped_refptr<gl::GLContext> GLOzoneGLX::CreateGLContext(
diff --git a/ui/ozone/platform/x11/gl_ozone_glx.h b/ui/ozone/platform/x11/gl_ozone_glx.h
index 2423800..0fd54f3 100644
--- a/ui/ozone/platform/x11/gl_ozone_glx.h
+++ b/ui/ozone/platform/x11/gl_ozone_glx.h
@@ -24,6 +24,7 @@
   bool InitializeExtensionSettingsOneOffPlatform() override;
   void ShutdownGL() override;
   bool GetGLWindowSystemBindingInfo(
+      const gl::GLVersionInfo& gl_info,
       gl::GLWindowSystemBindingInfo* info) override;
   scoped_refptr<gl::GLContext> CreateGLContext(
       gl::GLShareGroup* share_group,
diff --git a/ui/ozone/public/gl_ozone.h b/ui/ozone/public/gl_ozone.h
index f406cfd..ba76bca 100644
--- a/ui/ozone/public/gl_ozone.h
+++ b/ui/ozone/public/gl_ozone.h
@@ -17,9 +17,11 @@
 
 namespace gl {
 class GLContext;
-struct GLContextAttribs;
 class GLShareGroup;
 class GLSurface;
+
+struct GLContextAttribs;
+struct GLVersionInfo;
 }
 
 namespace ui {
@@ -58,6 +60,7 @@
   // Returns information about the GL window system binding implementation (eg.
   // EGL, GLX, WGL). Returns true if the information was retrieved successfully.
   virtual bool GetGLWindowSystemBindingInfo(
+      const gl::GLVersionInfo& gl_info,
       gl::GLWindowSystemBindingInfo* info) = 0;
 
   // Creates a GL context that is compatible with the given surface.