Index: gpu/config/gpu_info_collector_win.cc |
=================================================================== |
--- gpu/config/gpu_info_collector_win.cc (revision 204018) |
+++ gpu/config/gpu_info_collector_win.cc (working copy) |
@@ -15,6 +15,7 @@ |
#include "base/command_line.h" |
#include "base/debug/trace_event.h" |
+#include "base/metrics/field_trial.h" |
#include "base/file_util.h" |
#include "base/files/file_path.h" |
#include "base/logging.h" |
@@ -206,33 +207,15 @@ |
// Determines whether D3D11 won't work, either because it is not supported on |
// the machine or because it is known it is likely to crash. |
bool D3D11ShouldWork(const GPUInfo& gpu_info) { |
- // Windows XP never supports D3D11. |
- if (base::win::GetVersion() <= base::win::VERSION_XP) |
+ // Windows XP never supports D3D11. It seems to be less stable that D3D9 on |
+ // Vista. |
+ if (base::win::GetVersion() <= base::win::VERSION_VISTA) |
return false; |
- // Intel? |
- if (gpu_info.gpu.vendor_id == 0x8086) { |
- // 2nd Generation Core Processor Family Integrated Graphics Controller |
- // or Intel Ivy Bridge? |
- if (gpu_info.gpu.device_id == 0x0102 || |
- gpu_info.gpu.device_id == 0x0106 || |
- gpu_info.gpu.device_id == 0x0116 || |
- gpu_info.gpu.device_id == 0x0126 || |
- gpu_info.gpu.device_id == 0x0152 || |
- gpu_info.gpu.device_id == 0x0156 || |
- gpu_info.gpu.device_id == 0x015a || |
- gpu_info.gpu.device_id == 0x0162 || |
- gpu_info.gpu.device_id == 0x0166) { |
- // http://crbug.com/196373. |
- if (base::win::GetVersion() == base::win::VERSION_VISTA) |
- return false; |
+ // http://crbug.com/175525. |
+ if (gpu_info.display_link_version.IsValid()) |
+ return false; |
- // http://crbug.com/175525. |
- if (gpu_info.display_link_version.IsValid()) |
- return false; |
- } |
- } |
- |
return true; |
} |
@@ -612,13 +595,24 @@ |
if (!CollectDriverInfoD3D(id, gpu_info)) |
return false; |
- // Collect basic information about supported D3D11 features. Delay for 45 |
- // seconds so as not to regress performance tests. |
- if (D3D11ShouldWork(*gpu_info)) { |
- base::MessageLoop::current()->PostDelayedTask( |
- FROM_HERE, |
- base::Bind(&CollectD3D11Support), |
- base::TimeDelta::FromSeconds(45)); |
+ // This is on a field trial so we can turn it off easily if it blows up |
+ // again in stable channel. |
+ scoped_refptr<base::FieldTrial> trial( |
+ base::FieldTrialList::FactoryGetFieldTrial("D3D11StatsExperiment", 100, |
+ "Disabled", 2015, 7, 8, |
+ NULL)); |
+ const int enabled_group = |
+ trial->AppendGroup("Enabled", 0); |
+ |
+ if (trial->group() == enabled_group) { |
+ // Collect basic information about supported D3D11 features. Delay for 45 |
+ // seconds so as not to regress performance tests. |
+ if (D3D11ShouldWork(*gpu_info)) { |
+ base::MessageLoop::current()->PostDelayedTask( |
+ FROM_HERE, |
+ base::Bind(&CollectD3D11Support), |
+ base::TimeDelta::FromSeconds(45)); |
+ } |
} |
return true; |