diff options
author | jbauman@chromium.org <jbauman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-08 09:33:44 +0000 |
---|---|---|
committer | jbauman@chromium.org <jbauman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-08 09:33:44 +0000 |
commit | bdb68b9997cf50d1ad4803ca830ae4dc4530e502 (patch) | |
tree | 6acd291c6ff5c1c1c0a719ff0cd321ee2ae8095c /ui/compositor | |
parent | 683ef50ad3bd599cd09a52f11900cfd484fd3407 (diff) | |
download | chromium_src-bdb68b9997cf50d1ad4803ca830ae4dc4530e502.zip chromium_src-bdb68b9997cf50d1ad4803ca830ae4dc4530e502.tar.gz chromium_src-bdb68b9997cf50d1ad4803ca830ae4dc4530e502.tar.bz2 |
Use software renderer for windows with an initial size less than 64x64
If the width or height of a window is less than 64 pixels then some AMD drivers have problems presenting from them, so composite those windows in software.
BUG=286609
Review URL: https://codereview.chromium.org/59913008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@233845 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/compositor')
-rw-r--r-- | ui/compositor/compositor.cc | 4 | ||||
-rw-r--r-- | ui/compositor/compositor.h | 8 | ||||
-rw-r--r-- | ui/compositor/layer_unittest.cc | 2 | ||||
-rw-r--r-- | ui/compositor/test/test_compositor_host_win.cc | 2 | ||||
-rw-r--r-- | ui/compositor/test/test_compositor_host_x11.cc | 2 |
5 files changed, 13 insertions, 5 deletions
diff --git a/ui/compositor/compositor.cc b/ui/compositor/compositor.cc index 43cee8d..e65855b 100644 --- a/ui/compositor/compositor.cc +++ b/ui/compositor/compositor.cc @@ -231,7 +231,8 @@ PendingSwap::~PendingSwap() { namespace ui { -Compositor::Compositor(gfx::AcceleratedWidget widget) +Compositor::Compositor(bool use_software_renderer, + gfx::AcceleratedWidget widget) : root_layer_(NULL), widget_(widget), posted_swaps_(new PostedSwapQueue()), @@ -240,6 +241,7 @@ Compositor::Compositor(gfx::AcceleratedWidget widget) last_ended_frame_(0), next_draw_is_resize_(false), disable_schedule_composite_(false), + use_software_renderer_(use_software_renderer), compositor_lock_(NULL), defer_draw_scheduling_(false), waiting_on_compositing_end_(false), diff --git a/ui/compositor/compositor.h b/ui/compositor/compositor.h index 662c47b..c3d79a4 100644 --- a/ui/compositor/compositor.h +++ b/ui/compositor/compositor.h @@ -223,7 +223,7 @@ class COMPOSITOR_EXPORT Compositor NON_EXPORTED_BASE(public cc::LayerTreeHostSingleThreadClient), public base::SupportsWeakPtr<Compositor> { public: - explicit Compositor(gfx::AcceleratedWidget widget); + Compositor(bool use_software_renderer, gfx::AcceleratedWidget widget); virtual ~Compositor(); static void Initialize(); @@ -339,6 +339,10 @@ class COMPOSITOR_EXPORT Compositor const cc::LayerTreeDebugState& GetLayerTreeDebugState() const; void SetLayerTreeDebugState(const cc::LayerTreeDebugState& debug_state); + // Should the compositor use a software output device. If false, it may still + // use a software output device if no GPU is available. + bool use_software_renderer() const { return use_software_renderer_; } + private: friend class base::RefCounted<Compositor>; friend class CompositorLock; @@ -377,6 +381,8 @@ class COMPOSITOR_EXPORT Compositor bool disable_schedule_composite_; + bool use_software_renderer_; + CompositorLock* compositor_lock_; // Prevent more than one draw from being scheduled. diff --git a/ui/compositor/layer_unittest.cc b/ui/compositor/layer_unittest.cc index 2d94d35..0c2f2e1 100644 --- a/ui/compositor/layer_unittest.cc +++ b/ui/compositor/layer_unittest.cc @@ -355,7 +355,7 @@ class LayerWithDelegateTest : public testing::Test { bool allow_test_contexts = true; InitializeContextFactoryForTests(allow_test_contexts); Compositor::Initialize(); - compositor_.reset(new Compositor(gfx::kNullAcceleratedWidget)); + compositor_.reset(new Compositor(false, gfx::kNullAcceleratedWidget)); compositor_->SetScaleAndSize(1.0f, gfx::Size(1000, 1000)); } diff --git a/ui/compositor/test/test_compositor_host_win.cc b/ui/compositor/test/test_compositor_host_win.cc index 5c7cdb4..140b0cd 100644 --- a/ui/compositor/test/test_compositor_host_win.cc +++ b/ui/compositor/test/test_compositor_host_win.cc @@ -16,7 +16,7 @@ class TestCompositorHostWin : public TestCompositorHost, public: TestCompositorHostWin(const gfx::Rect& bounds) { Init(NULL, bounds); - compositor_.reset(new ui::Compositor(hwnd())); + compositor_.reset(new ui::Compositor(false, hwnd())); compositor_->SetScaleAndSize(1.0f, GetSize()); } diff --git a/ui/compositor/test/test_compositor_host_x11.cc b/ui/compositor/test/test_compositor_host_x11.cc index 4215e27..578df6a 100644 --- a/ui/compositor/test/test_compositor_host_x11.cc +++ b/ui/compositor/test/test_compositor_host_x11.cc @@ -69,7 +69,7 @@ void TestCompositorHostX11::Show() { if (event.type == MapNotify && event.xmap.window == window_) break; } - compositor_.reset(new ui::Compositor(window_)); + compositor_.reset(new ui::Compositor(false, window_)); compositor_->SetScaleAndSize(1.0f, bounds_.size()); } |