Home | History | Annotate | Download | only in gpu
      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
      3 // found in the LICENSE file.
      4 
      5 #include "content/browser/gpu/gpu_data_manager_impl.h"
      6 
      7 #include "content/browser/gpu/gpu_data_manager_impl_private.h"
      8 
      9 namespace content {
     10 
     11 // static
     12 GpuDataManager* GpuDataManager::GetInstance() {
     13   return GpuDataManagerImpl::GetInstance();
     14 }
     15 
     16 // static
     17 GpuDataManagerImpl* GpuDataManagerImpl::GetInstance() {
     18   return Singleton<GpuDataManagerImpl>::get();
     19 }
     20 
     21 void GpuDataManagerImpl::InitializeForTesting(
     22     const std::string& gpu_blacklist_json, const gpu::GPUInfo& gpu_info) {
     23   base::AutoLock auto_lock(lock_);
     24   private_->InitializeForTesting(gpu_blacklist_json, gpu_info);
     25 }
     26 
     27 bool GpuDataManagerImpl::IsFeatureBlacklisted(int feature) const {
     28   base::AutoLock auto_lock(lock_);
     29   return private_->IsFeatureBlacklisted(feature);
     30 }
     31 
     32 bool GpuDataManagerImpl::IsDriverBugWorkaroundActive(int feature) const {
     33   base::AutoLock auto_lock(lock_);
     34   return private_->IsDriverBugWorkaroundActive(feature);
     35 }
     36 
     37 gpu::GPUInfo GpuDataManagerImpl::GetGPUInfo() const {
     38   base::AutoLock auto_lock(lock_);
     39   return private_->GetGPUInfo();
     40 }
     41 
     42 void GpuDataManagerImpl::GetGpuProcessHandles(
     43     const GetGpuProcessHandlesCallback& callback) const {
     44   base::AutoLock auto_lock(lock_);
     45   private_->GetGpuProcessHandles(callback);
     46 }
     47 
     48 bool GpuDataManagerImpl::GpuAccessAllowed(std::string* reason) const {
     49   base::AutoLock auto_lock(lock_);
     50   return private_->GpuAccessAllowed(reason);
     51 }
     52 
     53 void GpuDataManagerImpl::RequestCompleteGpuInfoIfNeeded() {
     54   base::AutoLock auto_lock(lock_);
     55   private_->RequestCompleteGpuInfoIfNeeded();
     56 }
     57 
     58 bool GpuDataManagerImpl::IsEssentialGpuInfoAvailable() const {
     59   base::AutoLock auto_lock(lock_);
     60   return private_->IsEssentialGpuInfoAvailable();
     61 }
     62 
     63 bool GpuDataManagerImpl::IsCompleteGpuInfoAvailable() const {
     64   base::AutoLock auto_lock(lock_);
     65   return private_->IsCompleteGpuInfoAvailable();
     66 }
     67 
     68 void GpuDataManagerImpl::RequestVideoMemoryUsageStatsUpdate() const {
     69   base::AutoLock auto_lock(lock_);
     70   private_->RequestVideoMemoryUsageStatsUpdate();
     71 }
     72 
     73 bool GpuDataManagerImpl::ShouldUseSwiftShader() const {
     74   base::AutoLock auto_lock(lock_);
     75   return private_->ShouldUseSwiftShader();
     76 }
     77 
     78 void GpuDataManagerImpl::RegisterSwiftShaderPath(
     79     const base::FilePath& path) {
     80   base::AutoLock auto_lock(lock_);
     81   private_->RegisterSwiftShaderPath(path);
     82 }
     83 
     84 bool GpuDataManagerImpl::ShouldUseWarp() const {
     85   base::AutoLock auto_lock(lock_);
     86   return private_->ShouldUseWarp();
     87 }
     88 
     89 void GpuDataManagerImpl::AddObserver(
     90     GpuDataManagerObserver* observer) {
     91   base::AutoLock auto_lock(lock_);
     92   private_->AddObserver(observer);
     93 }
     94 
     95 void GpuDataManagerImpl::RemoveObserver(
     96     GpuDataManagerObserver* observer) {
     97   base::AutoLock auto_lock(lock_);
     98   private_->RemoveObserver(observer);
     99 }
    100 
    101 void GpuDataManagerImpl::UnblockDomainFrom3DAPIs(const GURL& url) {
    102   base::AutoLock auto_lock(lock_);
    103   private_->UnblockDomainFrom3DAPIs(url);
    104 }
    105 
    106 void GpuDataManagerImpl::DisableGpuWatchdog() {
    107   base::AutoLock auto_lock(lock_);
    108   private_->DisableGpuWatchdog();
    109 }
    110 
    111 void GpuDataManagerImpl::SetGLStrings(const std::string& gl_vendor,
    112                                       const std::string& gl_renderer,
    113                                       const std::string& gl_version) {
    114   base::AutoLock auto_lock(lock_);
    115   private_->SetGLStrings(gl_vendor, gl_renderer, gl_version);
    116 }
    117 
    118 void GpuDataManagerImpl::GetGLStrings(std::string* gl_vendor,
    119                                       std::string* gl_renderer,
    120                                       std::string* gl_version) {
    121   base::AutoLock auto_lock(lock_);
    122   private_->GetGLStrings(gl_vendor, gl_renderer, gl_version);
    123 }
    124 
    125 void GpuDataManagerImpl::DisableHardwareAcceleration() {
    126   base::AutoLock auto_lock(lock_);
    127   private_->DisableHardwareAcceleration();
    128 }
    129 
    130 bool GpuDataManagerImpl::CanUseGpuBrowserCompositor() const {
    131   base::AutoLock auto_lock(lock_);
    132   return private_->CanUseGpuBrowserCompositor();
    133 }
    134 
    135 void GpuDataManagerImpl::Initialize() {
    136   base::AutoLock auto_lock(lock_);
    137   private_->Initialize();
    138 }
    139 
    140 void GpuDataManagerImpl::UpdateGpuInfo(const gpu::GPUInfo& gpu_info) {
    141   base::AutoLock auto_lock(lock_);
    142   private_->UpdateGpuInfo(gpu_info);
    143 }
    144 
    145 void GpuDataManagerImpl::UpdateVideoMemoryUsageStats(
    146     const GPUVideoMemoryUsageStats& video_memory_usage_stats) {
    147   base::AutoLock auto_lock(lock_);
    148   private_->UpdateVideoMemoryUsageStats(video_memory_usage_stats);
    149 }
    150 
    151 void GpuDataManagerImpl::AppendRendererCommandLine(
    152     base::CommandLine* command_line) const {
    153   base::AutoLock auto_lock(lock_);
    154   private_->AppendRendererCommandLine(command_line);
    155 }
    156 
    157 void GpuDataManagerImpl::AppendGpuCommandLine(
    158     base::CommandLine* command_line) const {
    159   base::AutoLock auto_lock(lock_);
    160   private_->AppendGpuCommandLine(command_line);
    161 }
    162 
    163 void GpuDataManagerImpl::AppendPluginCommandLine(
    164     base::CommandLine* command_line) const {
    165   base::AutoLock auto_lock(lock_);
    166   private_->AppendPluginCommandLine(command_line);
    167 }
    168 
    169 void GpuDataManagerImpl::UpdateRendererWebPrefs(
    170     WebPreferences* prefs) const {
    171   base::AutoLock auto_lock(lock_);
    172   private_->UpdateRendererWebPrefs(prefs);
    173 }
    174 
    175 std::string GpuDataManagerImpl::GetBlacklistVersion() const {
    176   base::AutoLock auto_lock(lock_);
    177   return private_->GetBlacklistVersion();
    178 }
    179 
    180 std::string GpuDataManagerImpl::GetDriverBugListVersion() const {
    181   base::AutoLock auto_lock(lock_);
    182   return private_->GetDriverBugListVersion();
    183 }
    184 
    185 void GpuDataManagerImpl::GetBlacklistReasons(base::ListValue* reasons) const {
    186   base::AutoLock auto_lock(lock_);
    187   private_->GetBlacklistReasons(reasons);
    188 }
    189 
    190 void GpuDataManagerImpl::GetDriverBugWorkarounds(
    191     base::ListValue* workarounds) const {
    192   base::AutoLock auto_lock(lock_);
    193   private_->GetDriverBugWorkarounds(workarounds);
    194 }
    195 
    196 void GpuDataManagerImpl::AddLogMessage(int level,
    197                                        const std::string& header,
    198                                        const std::string& message) {
    199   base::AutoLock auto_lock(lock_);
    200   private_->AddLogMessage(level, header, message);
    201 }
    202 
    203 void GpuDataManagerImpl::ProcessCrashed(
    204     base::TerminationStatus exit_code) {
    205   base::AutoLock auto_lock(lock_);
    206   private_->ProcessCrashed(exit_code);
    207 }
    208 
    209 base::ListValue* GpuDataManagerImpl::GetLogMessages() const {
    210   base::AutoLock auto_lock(lock_);
    211   return private_->GetLogMessages();
    212 }
    213 
    214 void GpuDataManagerImpl::HandleGpuSwitch() {
    215   base::AutoLock auto_lock(lock_);
    216   private_->HandleGpuSwitch();
    217 }
    218 
    219 void GpuDataManagerImpl::BlockDomainFrom3DAPIs(
    220     const GURL& url, DomainGuilt guilt) {
    221   base::AutoLock auto_lock(lock_);
    222   private_->BlockDomainFrom3DAPIs(url, guilt);
    223 }
    224 
    225 bool GpuDataManagerImpl::Are3DAPIsBlocked(const GURL& url,
    226                                           int render_process_id,
    227                                           int render_view_id,
    228                                           ThreeDAPIType requester) {
    229   base::AutoLock auto_lock(lock_);
    230   return private_->Are3DAPIsBlocked(
    231       url, render_process_id, render_view_id, requester);
    232 }
    233 
    234 void GpuDataManagerImpl::DisableDomainBlockingFor3DAPIsForTesting() {
    235   base::AutoLock auto_lock(lock_);
    236   private_->DisableDomainBlockingFor3DAPIsForTesting();
    237 }
    238 
    239 size_t GpuDataManagerImpl::GetBlacklistedFeatureCount() const {
    240   base::AutoLock auto_lock(lock_);
    241   return private_->GetBlacklistedFeatureCount();
    242 }
    243 
    244 void GpuDataManagerImpl::SetDisplayCount(unsigned int display_count) {
    245   base::AutoLock auto_lock(lock_);
    246   private_->SetDisplayCount(display_count);
    247 }
    248 
    249 unsigned int GpuDataManagerImpl::GetDisplayCount() const {
    250   base::AutoLock auto_lock(lock_);
    251   return private_->GetDisplayCount();
    252 }
    253 
    254 bool GpuDataManagerImpl::UpdateActiveGpu(uint32 vendor_id, uint32 device_id) {
    255   base::AutoLock auto_lock(lock_);
    256   return private_->UpdateActiveGpu(vendor_id, device_id);
    257 }
    258 
    259 void GpuDataManagerImpl::Notify3DAPIBlocked(const GURL& url,
    260                                             int render_process_id,
    261                                             int render_view_id,
    262                                             ThreeDAPIType requester) {
    263   base::AutoLock auto_lock(lock_);
    264   private_->Notify3DAPIBlocked(
    265       url, render_process_id, render_view_id, requester);
    266 }
    267 
    268 void GpuDataManagerImpl::OnGpuProcessInitFailure() {
    269   base::AutoLock auto_lock(lock_);
    270   private_->OnGpuProcessInitFailure();
    271 }
    272 
    273 GpuDataManagerImpl::GpuDataManagerImpl()
    274     : private_(GpuDataManagerImplPrivate::Create(this)) {
    275 }
    276 
    277 GpuDataManagerImpl::~GpuDataManagerImpl() {
    278 }
    279 
    280 }  // namespace content
    281