| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/browser/gpu/gpu_data_manager_impl_private.h" | 5 #include "content/browser/gpu/gpu_data_manager_impl_private.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <iterator> | 8 #include <iterator> |
| 9 #include <memory> | 9 #include <memory> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 257 BLOCK_STATUS_SPECIFIC_DOMAIN_BLOCKED, | 257 BLOCK_STATUS_SPECIFIC_DOMAIN_BLOCKED, |
| 258 BLOCK_STATUS_ALL_DOMAINS_BLOCKED, | 258 BLOCK_STATUS_ALL_DOMAINS_BLOCKED, |
| 259 BLOCK_STATUS_MAX | 259 BLOCK_STATUS_MAX |
| 260 }; | 260 }; |
| 261 | 261 |
| 262 bool ShouldDisableHardwareAcceleration() { | 262 bool ShouldDisableHardwareAcceleration() { |
| 263 return base::CommandLine::ForCurrentProcess()->HasSwitch( | 263 return base::CommandLine::ForCurrentProcess()->HasSwitch( |
| 264 switches::kDisableGpu); | 264 switches::kDisableGpu); |
| 265 } | 265 } |
| 266 | 266 |
| 267 void OnVideoMemoryUsageStats(const gpu::VideoMemoryUsageStats& stats) { | 267 void RequestVideoMemoryUsageStats( |
| 268 GpuDataManagerImpl::GetInstance()->UpdateVideoMemoryUsageStats(stats); | 268 const base::Callback<void(const gpu::VideoMemoryUsageStats& stats)>& |
| 269 } | 269 callback, |
| 270 | 270 GpuProcessHost* host) { |
| 271 void RequestVideoMemoryUsageStats(GpuProcessHost* host) { | |
| 272 if (!host) | 271 if (!host) |
| 273 return; | 272 return; |
| 274 host->gpu_service()->GetVideoMemoryUsageStats( | 273 host->gpu_service()->GetVideoMemoryUsageStats(callback); |
| 275 base::Bind(&OnVideoMemoryUsageStats)); | |
| 276 } | 274 } |
| 277 | 275 |
| 278 void UpdateGpuInfoOnIO(const gpu::GPUInfo& gpu_info) { | 276 void UpdateGpuInfoOnIO(const gpu::GPUInfo& gpu_info) { |
| 279 // This function is called on the IO thread, but GPUInfo on GpuDataManagerImpl | 277 // This function is called on the IO thread, but GPUInfo on GpuDataManagerImpl |
| 280 // should be updated on the UI thread (since it can call into functions that | 278 // should be updated on the UI thread (since it can call into functions that |
| 281 // expect to run in the UI thread, e.g. ContentClient::SetGpuInfo()). | 279 // expect to run in the UI thread, e.g. ContentClient::SetGpuInfo()). |
| 282 BrowserThread::PostTask( | 280 BrowserThread::PostTask( |
| 283 BrowserThread::UI, FROM_HERE, | 281 BrowserThread::UI, FROM_HERE, |
| 284 base::Bind( | 282 base::Bind( |
| 285 [](const gpu::GPUInfo& gpu_info) { | 283 [](const gpu::GPUInfo& gpu_info) { |
| (...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 443 } | 441 } |
| 444 | 442 |
| 445 bool GpuDataManagerImplPrivate::IsCompleteGpuInfoAvailable() const { | 443 bool GpuDataManagerImplPrivate::IsCompleteGpuInfoAvailable() const { |
| 446 #if defined(OS_WIN) | 444 #if defined(OS_WIN) |
| 447 if (gpu_info_.dx_diagnostics_info_state == gpu::kCollectInfoNone) | 445 if (gpu_info_.dx_diagnostics_info_state == gpu::kCollectInfoNone) |
| 448 return false; | 446 return false; |
| 449 #endif | 447 #endif |
| 450 return IsEssentialGpuInfoAvailable(); | 448 return IsEssentialGpuInfoAvailable(); |
| 451 } | 449 } |
| 452 | 450 |
| 453 void GpuDataManagerImplPrivate::RequestVideoMemoryUsageStatsUpdate() const { | 451 void GpuDataManagerImplPrivate::RequestVideoMemoryUsageStatsUpdate( |
| 452 const base::Callback<void(const gpu::VideoMemoryUsageStats& stats)>& |
| 453 callback) const { |
| 454 GpuProcessHost::CallOnIO(GpuProcessHost::GPU_PROCESS_KIND_SANDBOXED, | 454 GpuProcessHost::CallOnIO(GpuProcessHost::GPU_PROCESS_KIND_SANDBOXED, |
| 455 false /* force_create */, | 455 false /* force_create */, |
| 456 base::Bind(&RequestVideoMemoryUsageStats)); | 456 base::Bind(&RequestVideoMemoryUsageStats, callback)); |
| 457 } | 457 } |
| 458 | 458 |
| 459 bool GpuDataManagerImplPrivate::ShouldUseSwiftShader() const { | 459 bool GpuDataManagerImplPrivate::ShouldUseSwiftShader() const { |
| 460 return use_swiftshader_; | 460 return use_swiftshader_; |
| 461 } | 461 } |
| 462 | 462 |
| 463 void GpuDataManagerImplPrivate::AddObserver(GpuDataManagerObserver* observer) { | 463 void GpuDataManagerImplPrivate::AddObserver(GpuDataManagerObserver* observer) { |
| 464 GpuDataManagerImpl::UnlockedSession session(owner_); | 464 GpuDataManagerImpl::UnlockedSession session(owner_); |
| 465 observer_list_->AddObserver(observer); | 465 observer_list_->AddObserver(observer); |
| 466 } | 466 } |
| (...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 706 UpdateGpuInfoHelper(); | 706 UpdateGpuInfoHelper(); |
| 707 } | 707 } |
| 708 | 708 |
| 709 void GpuDataManagerImplPrivate::UpdateGpuFeatureInfo( | 709 void GpuDataManagerImplPrivate::UpdateGpuFeatureInfo( |
| 710 const gpu::GpuFeatureInfo& gpu_feature_info) { | 710 const gpu::GpuFeatureInfo& gpu_feature_info) { |
| 711 if (!use_swiftshader_) { | 711 if (!use_swiftshader_) { |
| 712 gpu_feature_info_ = gpu_feature_info; | 712 gpu_feature_info_ = gpu_feature_info; |
| 713 } | 713 } |
| 714 } | 714 } |
| 715 | 715 |
| 716 void GpuDataManagerImplPrivate::UpdateVideoMemoryUsageStats( | |
| 717 const gpu::VideoMemoryUsageStats& video_memory_usage_stats) { | |
| 718 GpuDataManagerImpl::UnlockedSession session(owner_); | |
| 719 observer_list_->Notify(FROM_HERE, | |
| 720 &GpuDataManagerObserver::OnVideoMemoryUsageStatsUpdate, | |
| 721 video_memory_usage_stats); | |
| 722 } | |
| 723 | |
| 724 void GpuDataManagerImplPrivate::AppendRendererCommandLine( | 716 void GpuDataManagerImplPrivate::AppendRendererCommandLine( |
| 725 base::CommandLine* command_line) const { | 717 base::CommandLine* command_line) const { |
| 726 DCHECK(command_line); | 718 DCHECK(command_line); |
| 727 | 719 |
| 728 if (ShouldDisableAcceleratedVideoDecode(command_line)) | 720 if (ShouldDisableAcceleratedVideoDecode(command_line)) |
| 729 command_line->AppendSwitch(switches::kDisableAcceleratedVideoDecode); | 721 command_line->AppendSwitch(switches::kDisableAcceleratedVideoDecode); |
| 730 #if BUILDFLAG(ENABLE_WEBRTC) | 722 #if BUILDFLAG(ENABLE_WEBRTC) |
| 731 if (IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_ACCELERATED_VIDEO_ENCODE) && | 723 if (IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_ACCELERATED_VIDEO_ENCODE) && |
| 732 !command_line->HasSwitch(switches::kDisableWebRtcHWVP8Encoding)) | 724 !command_line->HasSwitch(switches::kDisableWebRtcHWVP8Encoding)) |
| 733 command_line->AppendSwitch(switches::kDisableWebRtcHWVP8Encoding); | 725 command_line->AppendSwitch(switches::kDisableWebRtcHWVP8Encoding); |
| (...skipping 673 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1407 gpu_info_.context_info_state = gpu::kCollectInfoFatalFailure; | 1399 gpu_info_.context_info_state = gpu::kCollectInfoFatalFailure; |
| 1408 #if defined(OS_WIN) | 1400 #if defined(OS_WIN) |
| 1409 gpu_info_.dx_diagnostics_info_state = gpu::kCollectInfoFatalFailure; | 1401 gpu_info_.dx_diagnostics_info_state = gpu::kCollectInfoFatalFailure; |
| 1410 #endif | 1402 #endif |
| 1411 complete_gpu_info_already_requested_ = true; | 1403 complete_gpu_info_already_requested_ = true; |
| 1412 // Some observers might be waiting. | 1404 // Some observers might be waiting. |
| 1413 NotifyGpuInfoUpdate(); | 1405 NotifyGpuInfoUpdate(); |
| 1414 } | 1406 } |
| 1415 | 1407 |
| 1416 } // namespace content | 1408 } // namespace content |
| OLD | NEW |