OLD | NEW |
1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 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 "cc/trees/layer_tree_host_impl.h" | 5 #include "cc/trees/layer_tree_host_impl.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <limits> | 8 #include <limits> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
208 | 208 |
209 LayerTreeHostImpl::LayerTreeHostImpl( | 209 LayerTreeHostImpl::LayerTreeHostImpl( |
210 const LayerTreeSettings& settings, | 210 const LayerTreeSettings& settings, |
211 LayerTreeHostImplClient* client, | 211 LayerTreeHostImplClient* client, |
212 Proxy* proxy, | 212 Proxy* proxy, |
213 RenderingStatsInstrumentation* rendering_stats_instrumentation, | 213 RenderingStatsInstrumentation* rendering_stats_instrumentation, |
214 SharedBitmapManager* manager, | 214 SharedBitmapManager* manager, |
215 int id) | 215 int id) |
216 : client_(client), | 216 : client_(client), |
217 proxy_(proxy), | 217 proxy_(proxy), |
| 218 use_gpu_rasterization_(false), |
218 input_handler_client_(NULL), | 219 input_handler_client_(NULL), |
219 did_lock_scrolling_layer_(false), | 220 did_lock_scrolling_layer_(false), |
220 should_bubble_scrolls_(false), | 221 should_bubble_scrolls_(false), |
221 wheel_scrolling_(false), | 222 wheel_scrolling_(false), |
222 scroll_affects_scroll_handler_(false), | 223 scroll_affects_scroll_handler_(false), |
223 scroll_layer_id_when_mouse_over_scrollbar_(0), | 224 scroll_layer_id_when_mouse_over_scrollbar_(0), |
224 tile_priorities_dirty_(false), | 225 tile_priorities_dirty_(false), |
225 root_layer_scroll_offset_delegate_(NULL), | 226 root_layer_scroll_offset_delegate_(NULL), |
226 settings_(settings), | 227 settings_(settings), |
227 visible_(true), | 228 visible_(true), |
(...skipping 1285 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1513 void LayerTreeHostImpl::FinishAllRendering() { | 1514 void LayerTreeHostImpl::FinishAllRendering() { |
1514 if (renderer_) | 1515 if (renderer_) |
1515 renderer_->Finish(); | 1516 renderer_->Finish(); |
1516 } | 1517 } |
1517 | 1518 |
1518 bool LayerTreeHostImpl::IsContextLost() { | 1519 bool LayerTreeHostImpl::IsContextLost() { |
1519 DCHECK(proxy_->IsImplThread()); | 1520 DCHECK(proxy_->IsImplThread()); |
1520 return renderer_ && renderer_->IsContextLost(); | 1521 return renderer_ && renderer_->IsContextLost(); |
1521 } | 1522 } |
1522 | 1523 |
| 1524 void LayerTreeHostImpl::SetUseGpuRasterization(bool use_gpu) { |
| 1525 if (use_gpu == use_gpu_rasterization_) |
| 1526 return; |
| 1527 |
| 1528 use_gpu_rasterization_ = use_gpu; |
| 1529 ReleaseTreeResources(); |
| 1530 |
| 1531 // We have released tilings for both active and pending tree. |
| 1532 // We would not have any content to draw until the pending tree is activated. |
| 1533 // Prevent the active tree from drawing until activation. |
| 1534 active_tree_->SetRequiresHighResToDraw(); |
| 1535 } |
| 1536 |
1523 const RendererCapabilitiesImpl& | 1537 const RendererCapabilitiesImpl& |
1524 LayerTreeHostImpl::GetRendererCapabilities() const { | 1538 LayerTreeHostImpl::GetRendererCapabilities() const { |
1525 return renderer_->Capabilities(); | 1539 return renderer_->Capabilities(); |
1526 } | 1540 } |
1527 | 1541 |
1528 bool LayerTreeHostImpl::SwapBuffers(const LayerTreeHostImpl::FrameData& frame) { | 1542 bool LayerTreeHostImpl::SwapBuffers(const LayerTreeHostImpl::FrameData& frame) { |
1529 active_tree()->ResetRequiresHighResToDraw(); | 1543 active_tree()->ResetRequiresHighResToDraw(); |
1530 if (frame.has_no_damage) { | 1544 if (frame.has_no_damage) { |
1531 active_tree()->BreakSwapPromises(SwapPromise::SWAP_FAILS); | 1545 active_tree()->BreakSwapPromises(SwapPromise::SWAP_FAILS); |
1532 return false; | 1546 return false; |
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1766 client_->SetNeedsAnimateOnImplThread(); | 1780 client_->SetNeedsAnimateOnImplThread(); |
1767 } | 1781 } |
1768 | 1782 |
1769 void LayerTreeHostImpl::SetNeedsRedraw() { | 1783 void LayerTreeHostImpl::SetNeedsRedraw() { |
1770 NotifySwapPromiseMonitorsOfSetNeedsRedraw(); | 1784 NotifySwapPromiseMonitorsOfSetNeedsRedraw(); |
1771 client_->SetNeedsRedrawOnImplThread(); | 1785 client_->SetNeedsRedrawOnImplThread(); |
1772 } | 1786 } |
1773 | 1787 |
1774 ManagedMemoryPolicy LayerTreeHostImpl::ActualManagedMemoryPolicy() const { | 1788 ManagedMemoryPolicy LayerTreeHostImpl::ActualManagedMemoryPolicy() const { |
1775 ManagedMemoryPolicy actual = cached_managed_memory_policy_; | 1789 ManagedMemoryPolicy actual = cached_managed_memory_policy_; |
1776 bool any_tree_use_gpu_rasterization = | |
1777 (active_tree_ && active_tree_->use_gpu_rasterization()) || | |
1778 (pending_tree_ && pending_tree_->use_gpu_rasterization()); | |
1779 if (debug_state_.rasterize_only_visible_content) { | 1790 if (debug_state_.rasterize_only_visible_content) { |
1780 actual.priority_cutoff_when_visible = | 1791 actual.priority_cutoff_when_visible = |
1781 gpu::MemoryAllocation::CUTOFF_ALLOW_REQUIRED_ONLY; | 1792 gpu::MemoryAllocation::CUTOFF_ALLOW_REQUIRED_ONLY; |
1782 } else if (any_tree_use_gpu_rasterization) { | 1793 } else if (use_gpu_rasterization()) { |
1783 actual.priority_cutoff_when_visible = | 1794 actual.priority_cutoff_when_visible = |
1784 gpu::MemoryAllocation::CUTOFF_ALLOW_NICE_TO_HAVE; | 1795 gpu::MemoryAllocation::CUTOFF_ALLOW_NICE_TO_HAVE; |
1785 } | 1796 } |
1786 | 1797 |
1787 if (zero_budget_) { | 1798 if (zero_budget_) { |
1788 actual.bytes_limit_when_visible = 0; | 1799 actual.bytes_limit_when_visible = 0; |
1789 } | 1800 } |
1790 | 1801 |
1791 return actual; | 1802 return actual; |
1792 } | 1803 } |
(...skipping 1330 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3123 swap_promise_monitor_.erase(monitor); | 3134 swap_promise_monitor_.erase(monitor); |
3124 } | 3135 } |
3125 | 3136 |
3126 void LayerTreeHostImpl::NotifySwapPromiseMonitorsOfSetNeedsRedraw() { | 3137 void LayerTreeHostImpl::NotifySwapPromiseMonitorsOfSetNeedsRedraw() { |
3127 std::set<SwapPromiseMonitor*>::iterator it = swap_promise_monitor_.begin(); | 3138 std::set<SwapPromiseMonitor*>::iterator it = swap_promise_monitor_.begin(); |
3128 for (; it != swap_promise_monitor_.end(); it++) | 3139 for (; it != swap_promise_monitor_.end(); it++) |
3129 (*it)->OnSetNeedsRedrawOnImpl(); | 3140 (*it)->OnSetNeedsRedrawOnImpl(); |
3130 } | 3141 } |
3131 | 3142 |
3132 } // namespace cc | 3143 } // namespace cc |
OLD | NEW |