Index: content/browser/gpu/gpu_data_manager_impl_private.cc |
diff --git a/content/browser/gpu/gpu_data_manager_impl_private.cc b/content/browser/gpu/gpu_data_manager_impl_private.cc |
index fd705c8967ac20837a5d2c6b45f039d7c71b3fa2..f93950e559a2865e4ca56cbd0edb0f8487f7d54d 100644 |
--- a/content/browser/gpu/gpu_data_manager_impl_private.cc |
+++ b/content/browser/gpu/gpu_data_manager_impl_private.cc |
@@ -363,7 +363,7 @@ bool GpuDataManagerImplPrivate::GpuAccessAllowed( |
} |
void GpuDataManagerImplPrivate::RequestCompleteGpuInfoIfNeeded() { |
- if (complete_gpu_info_already_requested_ || gpu_info_.finalized) |
+ if (complete_gpu_info_already_requested_ || IsCompleteGpuInfoAvailable(true)) |
return; |
complete_gpu_info_already_requested_ = true; |
@@ -377,8 +377,16 @@ void GpuDataManagerImplPrivate::RequestCompleteGpuInfoIfNeeded() { |
new GpuMsg_CollectGraphicsInfo()); |
} |
-bool GpuDataManagerImplPrivate::IsCompleteGpuInfoAvailable() const { |
- return gpu_info_.finalized; |
+bool GpuDataManagerImplPrivate::IsCompleteGpuInfoAvailable( |
+ bool includes_extra) const { |
+ if (gpu_info_.basic_info_state == gpu::kCollectInfoNone || |
+ gpu_info_.context_info_state == gpu::kCollectInfoNone) |
+ return false; |
+#if defined(OS_WIN) |
+ if (gpu_info_.dx_diagnostics_info_state == gpu::kCollectInfoNone) |
piman
2014/09/03 00:50:55
did you mean && includes_extra here?
Otherwise, i
Zhenyao Mo
2014/09/03 01:31:23
Per estatde's comment, I divide into two functions
|
+ return false; |
+#endif |
+ return true; |
} |
void GpuDataManagerImplPrivate::RequestVideoMemoryUsageStatsUpdate() const { |
@@ -503,9 +511,13 @@ void GpuDataManagerImplPrivate::Initialize() { |
gpu::CollectBasicGraphicsInfo(&gpu_info); |
} |
#if defined(ARCH_CPU_X86_FAMILY) |
- if (!gpu_info.gpu.vendor_id || !gpu_info.gpu.device_id) |
- gpu_info.finalized = true; |
-#endif |
+ if (!gpu_info.gpu.vendor_id || !gpu_info.gpu.device_id) { |
+ gpu_info.context_info_state = gpu::kCollectInfoNonFatalFailure; |
+#if defined(OS_WIN) |
+ gpu_info.dx_diagnostics_info_state = gpu::kCollectInfoNonFatalFailure; |
+#endif // OS_WIN |
+ } |
+#endif // ARCH_CPU_X86_FAMILY |
std::string gpu_blacklist_string; |
std::string gpu_driver_bug_list_string; |
@@ -549,8 +561,8 @@ void GpuDataManagerImplPrivate::UpdateGpuInfo(const gpu::GPUInfo& gpu_info) { |
return; |
gpu::MergeGPUInfo(&gpu_info_, gpu_info); |
- complete_gpu_info_already_requested_ = |
- complete_gpu_info_already_requested_ || gpu_info_.finalized; |
+ if (IsCompleteGpuInfoAvailable(true)) |
+ complete_gpu_info_already_requested_ = true; |
UpdateGpuInfoHelper(); |
} |
@@ -1073,7 +1085,10 @@ void GpuDataManagerImplPrivate::Notify3DAPIBlocked(const GURL& url, |
void GpuDataManagerImplPrivate::OnGpuProcessInitFailure() { |
gpu_process_accessible_ = false; |
- gpu_info_.finalized = true; |
+ gpu_info_.context_info_state = gpu::kCollectInfoFatalFailure; |
+#if defined(OS_WIN) |
+ gpu_info_.dx_diagnostics_info_state = gpu::kCollectInfoFatalFailure; |
+#endif |
complete_gpu_info_already_requested_ = true; |
// Some observers might be waiting. |
NotifyGpuInfoUpdate(); |