diff options
author | bajones@chromium.org <bajones@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-08-30 03:24:33 +0000 |
---|---|---|
committer | bajones@chromium.org <bajones@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-08-30 03:24:33 +0000 |
commit | edf452870385b1548709982770fc416c186858f7 (patch) | |
tree | ee395d48604fdb0cd0975427c2d683a82d6eb450 /content/browser/gpu | |
parent | ad5e4ebe54171ebff0728a88883927f4a2619272 (diff) | |
download | chromium_src-edf452870385b1548709982770fc416c186858f7.zip chromium_src-edf452870385b1548709982770fc416c186858f7.tar.gz chromium_src-edf452870385b1548709982770fc416c186858f7.tar.bz2 |
Added GPU driver workaround for OSX multimonitor multisampling disabling
BUG=280905
Review URL: https://chromiumcodereview.appspot.com/23473003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@220495 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/gpu')
-rw-r--r-- | content/browser/gpu/gpu_data_manager_impl.cc | 5 | ||||
-rw-r--r-- | content/browser/gpu/gpu_data_manager_impl.h | 2 | ||||
-rw-r--r-- | content/browser/gpu/gpu_data_manager_impl_private.cc | 11 | ||||
-rw-r--r-- | content/browser/gpu/gpu_data_manager_impl_private.h | 1 |
4 files changed, 16 insertions, 3 deletions
diff --git a/content/browser/gpu/gpu_data_manager_impl.cc b/content/browser/gpu/gpu_data_manager_impl.cc index 747503c..dbdcbe21 100644 --- a/content/browser/gpu/gpu_data_manager_impl.cc +++ b/content/browser/gpu/gpu_data_manager_impl.cc @@ -29,6 +29,11 @@ bool GpuDataManagerImpl::IsFeatureBlacklisted(int feature) const { return private_->IsFeatureBlacklisted(feature); } +bool GpuDataManagerImpl::IsDriverBugWorkaroundActive(int feature) const { + base::AutoLock auto_lock(lock_); + return private_->IsDriverBugWorkaroundActive(feature); +} + gpu::GPUInfo GpuDataManagerImpl::GetGPUInfo() const { base::AutoLock auto_lock(lock_); return private_->GetGPUInfo(); diff --git a/content/browser/gpu/gpu_data_manager_impl.h b/content/browser/gpu/gpu_data_manager_impl.h index 497d3bd..1e15313 100644 --- a/content/browser/gpu/gpu_data_manager_impl.h +++ b/content/browser/gpu/gpu_data_manager_impl.h @@ -177,6 +177,8 @@ class CONTENT_EXPORT GpuDataManagerImpl // Called when GPU process initialization failed. void OnGpuProcessInitFailure(); + bool IsDriverBugWorkaroundActive(int feature) const; + private: friend class GpuDataManagerImplPrivate; friend class GpuDataManagerImplPrivateTest; diff --git a/content/browser/gpu/gpu_data_manager_impl_private.cc b/content/browser/gpu/gpu_data_manager_impl_private.cc index cf6200a..ee5463d 100644 --- a/content/browser/gpu/gpu_data_manager_impl_private.cc +++ b/content/browser/gpu/gpu_data_manager_impl_private.cc @@ -230,7 +230,7 @@ std::string IntSetToString(const std::set<int>& list) { void DisplayReconfigCallback(CGDirectDisplayID display, CGDisplayChangeSummaryFlags flags, void* gpu_data_manager) { - if(flags == kCGDisplayBeginConfigurationFlag) + if (flags == kCGDisplayBeginConfigurationFlag) return; // This call contains no information about the display change GpuDataManagerImpl* manager = @@ -380,6 +380,10 @@ bool GpuDataManagerImplPrivate::IsFeatureBlacklisted(int feature) const { return (blacklisted_features_.count(feature) == 1); } +bool GpuDataManagerImplPrivate::IsDriverBugWorkaroundActive(int feature) const { + return (gpu_driver_bugs_.count(feature) == 1); +} + size_t GpuDataManagerImplPrivate::GetBlacklistedFeatureCount() const { if (use_swiftshader_) return 1; @@ -821,8 +825,9 @@ void GpuDataManagerImplPrivate::UpdateRendererWebPrefs( prefs->flash_stage3d_baseline_enabled = false; if (IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS)) prefs->accelerated_2d_canvas_enabled = false; - if (IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_MULTISAMPLING) - || display_count_ > 1) + if (IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_MULTISAMPLING) || + (IsDriverBugWorkaroundActive(gpu::DISABLE_MULTIMONITOR_MULTISAMPLING) && + display_count_ > 1)) prefs->gl_multisampling_enabled = false; if (IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_3D_CSS)) { prefs->accelerated_compositing_for_3d_transforms_enabled = false; diff --git a/content/browser/gpu/gpu_data_manager_impl_private.h b/content/browser/gpu/gpu_data_manager_impl_private.h index eb226e8..8d15296 100644 --- a/content/browser/gpu/gpu_data_manager_impl_private.h +++ b/content/browser/gpu/gpu_data_manager_impl_private.h @@ -28,6 +28,7 @@ class CONTENT_EXPORT GpuDataManagerImplPrivate { const std::string& gpu_blacklist_json, const gpu::GPUInfo& gpu_info); bool IsFeatureBlacklisted(int feature) const; + bool IsDriverBugWorkaroundActive(int feature) const; gpu::GPUInfo GetGPUInfo() const; void GetGpuProcessHandles( const GpuDataManager::GetGpuProcessHandlesCallback& callback) const; |