summaryrefslogtreecommitdiffstats
path: root/content/browser/gpu
diff options
context:
space:
mode:
authorbajones@chromium.org <bajones@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-08-30 03:24:33 +0000
committerbajones@chromium.org <bajones@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-08-30 03:24:33 +0000
commitedf452870385b1548709982770fc416c186858f7 (patch)
treeee395d48604fdb0cd0975427c2d683a82d6eb450 /content/browser/gpu
parentad5e4ebe54171ebff0728a88883927f4a2619272 (diff)
downloadchromium_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.cc5
-rw-r--r--content/browser/gpu/gpu_data_manager_impl.h2
-rw-r--r--content/browser/gpu/gpu_data_manager_impl_private.cc11
-rw-r--r--content/browser/gpu/gpu_data_manager_impl_private.h1
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;