Index: gpu/config/gpu_info_collector_win.cc |
diff --git a/gpu/config/gpu_info_collector_win.cc b/gpu/config/gpu_info_collector_win.cc |
index 8968d41a2a7f3c9bb1148f670f2cce847af592ce..119b0d238314718608d086ed6c703253652e047f 100644 |
--- a/gpu/config/gpu_info_collector_win.cc |
+++ b/gpu/config/gpu_info_collector_win.cc |
@@ -371,8 +371,8 @@ void GetAMDVideocardInfo(GPUInfo* gpu_info) { |
} |
#endif |
-bool CollectDriverInfoD3D(const std::wstring& device_id, |
- GPUInfo* gpu_info) { |
+CollectInfoResult CollectDriverInfoD3D(const std::wstring& device_id, |
+ GPUInfo* gpu_info) { |
TRACE_EVENT0("gpu", "CollectDriverInfoD3D"); |
// create device info for the display device |
@@ -381,7 +381,7 @@ bool CollectDriverInfoD3D(const std::wstring& device_id, |
DIGCF_PRESENT | DIGCF_PROFILE | DIGCF_ALLCLASSES); |
if (device_info == INVALID_HANDLE_VALUE) { |
LOG(ERROR) << "Creating device info failed"; |
- return false; |
+ return kCollectInfoNonFatalFailure; |
} |
DWORD index = 0; |
@@ -453,7 +453,7 @@ bool CollectDriverInfoD3D(const std::wstring& device_id, |
} |
} |
SetupDiDestroyDeviceInfoList(device_info); |
- return found; |
+ return found ? kCollectInfoSuccess : kCollectInfoNonFatalFailure; |
} |
CollectInfoResult CollectContextGraphicsInfo(GPUInfo* gpu_info) { |
@@ -466,13 +466,16 @@ CollectInfoResult CollectContextGraphicsInfo(GPUInfo* gpu_info) { |
CommandLine::ForCurrentProcess()->GetSwitchValueASCII(switches::kUseGL); |
if (requested_implementation_name == "swiftshader") { |
gpu_info->software_rendering = true; |
+ gpu_info->context_info_state = kCollectInfoNonFatalFailure; |
return kCollectInfoNonFatalFailure; |
} |
} |
CollectInfoResult result = CollectGraphicsInfoGL(gpu_info); |
- if (result != kCollectInfoSuccess) |
+ if (result != kCollectInfoSuccess) { |
+ gpu_info->context_info_state = result; |
return result; |
+ } |
// ANGLE's renderer strings are of the form: |
// ANGLE (<adapter_identifier> Direct3D<version> vs_x_x ps_x_x) |
@@ -516,16 +519,16 @@ CollectInfoResult CollectContextGraphicsInfo(GPUInfo* gpu_info) { |
RE2::Hex(&gpu_info->adapter_luid)); |
// DirectX diagnostics are collected asynchronously because it takes a |
- // couple of seconds. Do not mark gpu_info as complete until that is done. |
- gpu_info->finalized = false; |
+ // couple of seconds. |
} else { |
- gpu_info->finalized = true; |
+ gpu_info->dx_diagnostics_info_state = kCollectInfoNonFatalFailure; |
} |
+ gpu_info->context_info_state = kCollectInfoSuccess; |
return kCollectInfoSuccess; |
} |
-GpuIDResult CollectGpuID(uint32* vendor_id, uint32* device_id) { |
+CollectInfoResult CollectGpuID(uint32* vendor_id, uint32* device_id) { |
DCHECK(vendor_id && device_id); |
*vendor_id = 0; |
*device_id = 0; |
@@ -550,9 +553,9 @@ GpuIDResult CollectGpuID(uint32* vendor_id, uint32* device_id) { |
*vendor_id = vendor; |
*device_id = device; |
if (*vendor_id != 0 && *device_id != 0) |
- return kGpuIDSuccess; |
+ return kCollectInfoSuccess; |
} |
- return kGpuIDFailure; |
+ return kCollectInfoNonFatalFailure; |
} |
CollectInfoResult CollectBasicGraphicsInfo(GPUInfo* gpu_info) { |
@@ -595,8 +598,10 @@ CollectInfoResult CollectBasicGraphicsInfo(GPUInfo* gpu_info) { |
} |
} |
- if (id.length() <= 20) |
+ if (id.length() <= 20) { |
+ gpu_info->basic_info_state = kCollectInfoNonFatalFailure; |
return kCollectInfoNonFatalFailure; |
+ } |
int vendor_id = 0, device_id = 0; |
base::string16 vendor_id_string = id.substr(8, 4); |
@@ -606,8 +611,10 @@ CollectInfoResult CollectBasicGraphicsInfo(GPUInfo* gpu_info) { |
gpu_info->gpu.vendor_id = vendor_id; |
gpu_info->gpu.device_id = device_id; |
// TODO(zmo): we only need to call CollectDriverInfoD3D() if we use ANGLE. |
- if (!CollectDriverInfoD3D(id, gpu_info)) |
+ if (!CollectDriverInfoD3D(id, gpu_info)) { |
+ gpu_info->basic_info_state = kCollectInfoNonFatalFailure; |
return kCollectInfoNonFatalFailure; |
+ } |
// Collect basic information about supported D3D11 features. Delay for 45 |
// seconds so as not to regress performance tests. |
@@ -629,6 +636,7 @@ CollectInfoResult CollectBasicGraphicsInfo(GPUInfo* gpu_info) { |
} |
} |
+ gpu_info->basic_info_state = kCollectInfoSuccess; |
return kCollectInfoSuccess; |
} |