12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
- From: Deepak Mohan <[email protected]>
- 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
- index e496fc3cab0eed155123f5fc0e3cb5c4332bfcea..db062a89b241ea7d73b01a28adf6725e9f951e4d 100644
- --- a/content/browser/gpu/gpu_data_manager_impl.cc
- +++ b/content/browser/gpu/gpu_data_manager_impl.cc
- @@ -225,6 +225,11 @@ void GpuDataManagerImpl::TerminateInfoCollectionGpuProcess() {
- base::AutoLock auto_lock(lock_);
- private_->TerminateInfoCollectionGpuProcess();
- }
- +
- +bool GpuDataManagerImpl::DxdiagDx12VulkanRequested() const {
- + base::AutoLock auto_lock(lock_);
- + return private_->DxdiagDx12VulkanRequested();
- +}
- #endif // BUILDFLAG(IS_WIN)
-
- void GpuDataManagerImpl::PostCreateThreads() {
- diff --git a/content/browser/gpu/gpu_data_manager_impl.h b/content/browser/gpu/gpu_data_manager_impl.h
- index c57305681efb469d296c90df68b6cdbea927580d..6dda1a5465e08df64b539ee203b7c40386d16e72 100644
- --- a/content/browser/gpu/gpu_data_manager_impl.h
- +++ b/content/browser/gpu/gpu_data_manager_impl.h
- @@ -121,6 +121,7 @@ class CONTENT_EXPORT GpuDataManagerImpl : public GpuDataManager,
- bool Dx12Requested() const;
- bool VulkanRequested() const;
- void TerminateInfoCollectionGpuProcess();
- + bool DxdiagDx12VulkanRequested() const;
- #endif
- // Called from BrowserMainLoop::PostCreateThreads().
- // TODO(content/browser/gpu/OWNERS): This should probably use a
- diff --git a/content/browser/gpu/gpu_data_manager_impl_private.cc b/content/browser/gpu/gpu_data_manager_impl_private.cc
- index 019554cca7d25be443b75271278865e09a763a31..cc7e01260891c5d42ef590b040209f01943e1feb 100644
- --- a/content/browser/gpu/gpu_data_manager_impl_private.cc
- +++ b/content/browser/gpu/gpu_data_manager_impl_private.cc
- @@ -1199,6 +1199,12 @@ void GpuDataManagerImplPrivate::TerminateInfoCollectionGpuProcess() {
- if (host)
- host->ForceShutdown();
- }
- +
- +bool GpuDataManagerImplPrivate::DxdiagDx12VulkanRequested() const {
- + return !(gpu_info_vulkan_request_failed_ ||
- + gpu_info_dx12_request_failed_ ||
- + gpu_info_dx_diag_request_failed_);
- +}
- #endif
-
- void GpuDataManagerImplPrivate::PostCreateThreads() {
- diff --git a/content/browser/gpu/gpu_data_manager_impl_private.h b/content/browser/gpu/gpu_data_manager_impl_private.h
- index 790e72f12c7f1cf6e49d2a51949769a5d14bd4db..e02c3033231f93792fe2b456c08cfc2ac0f3d49e 100644
- --- a/content/browser/gpu/gpu_data_manager_impl_private.h
- +++ b/content/browser/gpu/gpu_data_manager_impl_private.h
- @@ -86,6 +86,7 @@ class CONTENT_EXPORT GpuDataManagerImplPrivate {
- bool Dx12Requested() const;
- bool VulkanRequested() const;
- void TerminateInfoCollectionGpuProcess();
- + bool DxdiagDx12VulkanRequested() const;
- #endif
- void PostCreateThreads();
- void UpdateDawnInfo(const std::vector<std::string>& dawn_info_list);
|