2020-03-03 21:35:05 +00:00
|
|
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
|
|
From: Deepak Mohan <hop2deep@gmail.com>
|
|
|
|
Date: Fri, 28 Feb 2020 15:08:26 -0800
|
|
|
|
Subject: gpu: notify when dxdiag request for gpu info fails
|
|
|
|
|
|
|
|
We rely on the signal OnGpuInfoUpdate to process gpu info.
|
|
|
|
When Electron wants to collect the complete info in a single run
|
|
|
|
it checks for the presence of dx_diagnostics attribute, as these
|
|
|
|
are the only async calls that happens in the gpu process, but
|
|
|
|
there are times when this call can fail due to crash or software
|
|
|
|
rendering and there is no signal from browser process on this event
|
|
|
|
to identify it.
|
|
|
|
|
|
|
|
diff --git a/content/browser/gpu/gpu_data_manager_impl.cc b/content/browser/gpu/gpu_data_manager_impl.cc
|
2020-04-21 00:25:38 +00:00
|
|
|
index 80fd68b4b862e59ba255163f3a903846a7768d75..ced78998277f37b4b8d656d264f389b5f47ddb1c 100644
|
2020-03-03 21:35:05 +00:00
|
|
|
--- a/content/browser/gpu/gpu_data_manager_impl.cc
|
|
|
|
+++ b/content/browser/gpu/gpu_data_manager_impl.cc
|
2020-04-21 00:25:38 +00:00
|
|
|
@@ -170,6 +170,11 @@ void GpuDataManagerImpl::TerminateInfoCollectionGpuProcess() {
|
2020-03-03 21:35:05 +00:00
|
|
|
base::AutoLock auto_lock(lock_);
|
2020-04-21 00:25:38 +00:00
|
|
|
private_->TerminateInfoCollectionGpuProcess();
|
2020-03-03 21:35:05 +00:00
|
|
|
}
|
2020-04-21 00:25:38 +00:00
|
|
|
+
|
2020-03-03 21:35:05 +00:00
|
|
|
+bool GpuDataManagerImpl::DxdiagDx12VulkanRequested() const {
|
|
|
|
+ base::AutoLock auto_lock(lock_);
|
|
|
|
+ return private_->DxdiagDx12VulkanRequested();
|
|
|
|
+}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
void GpuDataManagerImpl::UpdateGpuFeatureInfo(
|
|
|
|
diff --git a/content/browser/gpu/gpu_data_manager_impl.h b/content/browser/gpu/gpu_data_manager_impl.h
|
2020-04-21 00:25:38 +00:00
|
|
|
index ce8f9551f1b17c7508a0e0bd0ecc55eca2c0ac6e..2e71ce71ff9f18e2fc68f51ddbeedc3901f3dc7c 100644
|
2020-03-03 21:35:05 +00:00
|
|
|
--- a/content/browser/gpu/gpu_data_manager_impl.h
|
|
|
|
+++ b/content/browser/gpu/gpu_data_manager_impl.h
|
2020-04-21 00:25:38 +00:00
|
|
|
@@ -93,6 +93,7 @@ class CONTENT_EXPORT GpuDataManagerImpl : public GpuDataManager,
|
2020-03-14 20:54:14 +00:00
|
|
|
// Called from BrowserMainLoop::BrowserThreadsStarted().
|
|
|
|
void OnBrowserThreadsStarted();
|
2020-04-21 00:25:38 +00:00
|
|
|
void TerminateInfoCollectionGpuProcess();
|
2020-03-03 21:35:05 +00:00
|
|
|
+ bool DxdiagDx12VulkanRequested() const;
|
|
|
|
#endif
|
|
|
|
// Update the GPU feature info. This updates the blacklist and enabled status
|
|
|
|
// of GPU rasterization. In the future this will be used for more features.
|
|
|
|
diff --git a/content/browser/gpu/gpu_data_manager_impl_private.cc b/content/browser/gpu/gpu_data_manager_impl_private.cc
|
2020-06-01 20:34:34 +00:00
|
|
|
index f65d5d0eb7d10ec6887fc156d23ab948e10c1bc3..0e34fb12f6e08039fb541890ee869c1ad1e08948 100644
|
2020-03-03 21:35:05 +00:00
|
|
|
--- a/content/browser/gpu/gpu_data_manager_impl_private.cc
|
|
|
|
+++ b/content/browser/gpu/gpu_data_manager_impl_private.cc
|
2020-06-01 20:34:34 +00:00
|
|
|
@@ -922,6 +922,10 @@ void GpuDataManagerImplPrivate::TerminateInfoCollectionGpuProcess() {
|
2020-04-21 00:25:38 +00:00
|
|
|
host->ForceShutdown();
|
2020-03-03 21:35:05 +00:00
|
|
|
}
|
2020-03-14 20:54:14 +00:00
|
|
|
|
2020-03-03 21:35:05 +00:00
|
|
|
+bool GpuDataManagerImplPrivate::DxdiagDx12VulkanRequested() const {
|
|
|
|
+ return !(gpu_info_dx12_vulkan_request_failed_ ||
|
|
|
|
+ gpu_info_dx_diag_request_failed_);
|
|
|
|
+}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
void GpuDataManagerImplPrivate::UpdateGpuFeatureInfo(
|
|
|
|
diff --git a/content/browser/gpu/gpu_data_manager_impl_private.h b/content/browser/gpu/gpu_data_manager_impl_private.h
|
2020-04-21 00:25:38 +00:00
|
|
|
index 37c11fa98c30d2ab0455e550847c9dbecc327304..082a2062107d4baed74ea3ea77d0c33295e3eac8 100644
|
2020-03-03 21:35:05 +00:00
|
|
|
--- a/content/browser/gpu/gpu_data_manager_impl_private.h
|
|
|
|
+++ b/content/browser/gpu/gpu_data_manager_impl_private.h
|
2020-04-21 00:25:38 +00:00
|
|
|
@@ -72,6 +72,7 @@ class CONTENT_EXPORT GpuDataManagerImplPrivate {
|
2020-03-03 21:35:05 +00:00
|
|
|
bool Dx12VulkanRequested() const;
|
2020-03-14 20:54:14 +00:00
|
|
|
void OnBrowserThreadsStarted();
|
2020-04-21 00:25:38 +00:00
|
|
|
void TerminateInfoCollectionGpuProcess();
|
2020-03-03 21:35:05 +00:00
|
|
|
+ bool DxdiagDx12VulkanRequested() const;
|
|
|
|
#endif
|
|
|
|
void UpdateGpuFeatureInfo(const gpu::GpuFeatureInfo& gpu_feature_info,
|
|
|
|
const base::Optional<gpu::GpuFeatureInfo>&
|