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 1726 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1737 // trees need another update to generate new ones. | 1737 // trees need another update to generate new ones. |
1738 active_tree_->set_needs_update_draw_properties(); | 1738 active_tree_->set_needs_update_draw_properties(); |
1739 if (pending_tree_) | 1739 if (pending_tree_) |
1740 pending_tree_->set_needs_update_draw_properties(); | 1740 pending_tree_->set_needs_update_draw_properties(); |
1741 } | 1741 } |
1742 } | 1742 } |
1743 | 1743 |
1744 void LayerTreeHostImpl::CreateAndSetTileManager( | 1744 void LayerTreeHostImpl::CreateAndSetTileManager( |
1745 ResourceProvider* resource_provider, | 1745 ResourceProvider* resource_provider, |
1746 ContextProvider* context_provider, | 1746 ContextProvider* context_provider, |
1747 bool using_map_image) { | 1747 bool using_map_image, |
| 1748 bool allow_rasterize_on_demand) { |
1748 DCHECK(settings_.impl_side_painting); | 1749 DCHECK(settings_.impl_side_painting); |
1749 DCHECK(resource_provider); | 1750 DCHECK(resource_provider); |
1750 tile_manager_ = | 1751 tile_manager_ = |
1751 TileManager::Create(this, | 1752 TileManager::Create(this, |
1752 resource_provider, | 1753 resource_provider, |
1753 context_provider, | 1754 context_provider, |
1754 rendering_stats_instrumentation_, | 1755 rendering_stats_instrumentation_, |
1755 using_map_image, | 1756 using_map_image, |
| 1757 allow_rasterize_on_demand, |
1756 GetMaxTransferBufferUsageBytes(context_provider), | 1758 GetMaxTransferBufferUsageBytes(context_provider), |
1757 GetMaxRasterTasksUsageBytes(context_provider), | 1759 GetMaxRasterTasksUsageBytes(context_provider), |
1758 GetMapImageTextureTarget(context_provider)); | 1760 GetMapImageTextureTarget(context_provider)); |
1759 | 1761 |
1760 UpdateTileManagerMemoryPolicy(ActualManagedMemoryPolicy()); | 1762 UpdateTileManagerMemoryPolicy(ActualManagedMemoryPolicy()); |
1761 need_to_update_visible_tiles_before_draw_ = false; | 1763 need_to_update_visible_tiles_before_draw_ = false; |
1762 } | 1764 } |
1763 | 1765 |
1764 void LayerTreeHostImpl::EnforceZeroBudget(bool zero_budget) { | 1766 void LayerTreeHostImpl::EnforceZeroBudget(bool zero_budget) { |
1765 SetManagedMemoryPolicy(cached_managed_memory_policy_, zero_budget); | 1767 SetManagedMemoryPolicy(cached_managed_memory_policy_, zero_budget); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1798 EnforceZeroBudget(true); | 1800 EnforceZeroBudget(true); |
1799 | 1801 |
1800 bool skip_gl_renderer = false; | 1802 bool skip_gl_renderer = false; |
1801 CreateAndSetRenderer( | 1803 CreateAndSetRenderer( |
1802 output_surface.get(), resource_provider.get(), skip_gl_renderer); | 1804 output_surface.get(), resource_provider.get(), skip_gl_renderer); |
1803 | 1805 |
1804 if (!renderer_) | 1806 if (!renderer_) |
1805 return false; | 1807 return false; |
1806 | 1808 |
1807 if (settings_.impl_side_painting) { | 1809 if (settings_.impl_side_painting) { |
1808 CreateAndSetTileManager(resource_provider.get(), | 1810 CreateAndSetTileManager( |
1809 output_surface->context_provider().get(), | 1811 resource_provider.get(), |
1810 GetRendererCapabilities().using_map_image); | 1812 output_surface->context_provider().get(), |
| 1813 GetRendererCapabilities().using_map_image, |
| 1814 GetRendererCapabilities().allow_rasterize_on_demand); |
1811 } | 1815 } |
1812 | 1816 |
1813 // Setup BeginImplFrameEmulation if it's not supported natively | 1817 // Setup BeginImplFrameEmulation if it's not supported natively |
1814 if (!settings_.begin_impl_frame_scheduling_enabled) { | 1818 if (!settings_.begin_impl_frame_scheduling_enabled) { |
1815 const base::TimeDelta display_refresh_interval = | 1819 const base::TimeDelta display_refresh_interval = |
1816 base::TimeDelta::FromMicroseconds( | 1820 base::TimeDelta::FromMicroseconds( |
1817 base::Time::kMicrosecondsPerSecond / | 1821 base::Time::kMicrosecondsPerSecond / |
1818 settings_.refresh_rate); | 1822 settings_.refresh_rate); |
1819 | 1823 |
1820 output_surface->InitializeBeginImplFrameEmulation( | 1824 output_surface->InitializeBeginImplFrameEmulation( |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1905 resource_provider_->InitializeSoftware(); | 1909 resource_provider_->InitializeSoftware(); |
1906 | 1910 |
1907 bool skip_gl_renderer = true; | 1911 bool skip_gl_renderer = true; |
1908 CreateAndSetRenderer( | 1912 CreateAndSetRenderer( |
1909 output_surface_.get(), resource_provider_.get(), skip_gl_renderer); | 1913 output_surface_.get(), resource_provider_.get(), skip_gl_renderer); |
1910 DCHECK(renderer_); | 1914 DCHECK(renderer_); |
1911 | 1915 |
1912 EnforceZeroBudget(true); | 1916 EnforceZeroBudget(true); |
1913 CreateAndSetTileManager(resource_provider_.get(), | 1917 CreateAndSetTileManager(resource_provider_.get(), |
1914 NULL, | 1918 NULL, |
1915 GetRendererCapabilities().using_map_image); | 1919 GetRendererCapabilities().using_map_image, |
| 1920 GetRendererCapabilities().allow_rasterize_on_demand); |
1916 DCHECK(tile_manager_); | 1921 DCHECK(tile_manager_); |
1917 | 1922 |
1918 SetOffscreenContextProvider(NULL); | 1923 SetOffscreenContextProvider(NULL); |
1919 | 1924 |
1920 client_->SetNeedsCommitOnImplThread(); | 1925 client_->SetNeedsCommitOnImplThread(); |
1921 } | 1926 } |
1922 | 1927 |
1923 void LayerTreeHostImpl::SetViewportSize(const gfx::Size& device_viewport_size) { | 1928 void LayerTreeHostImpl::SetViewportSize(const gfx::Size& device_viewport_size) { |
1924 if (device_viewport_size == device_viewport_size_) | 1929 if (device_viewport_size == device_viewport_size_) |
1925 return; | 1930 return; |
(...skipping 1061 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2987 swap_promise_monitor_.erase(monitor); | 2992 swap_promise_monitor_.erase(monitor); |
2988 } | 2993 } |
2989 | 2994 |
2990 void LayerTreeHostImpl::NotifySwapPromiseMonitorsOfSetNeedsRedraw() { | 2995 void LayerTreeHostImpl::NotifySwapPromiseMonitorsOfSetNeedsRedraw() { |
2991 std::set<SwapPromiseMonitor*>::iterator it = swap_promise_monitor_.begin(); | 2996 std::set<SwapPromiseMonitor*>::iterator it = swap_promise_monitor_.begin(); |
2992 for (; it != swap_promise_monitor_.end(); it++) | 2997 for (; it != swap_promise_monitor_.end(); it++) |
2993 (*it)->OnSetNeedsRedrawOnImpl(); | 2998 (*it)->OnSetNeedsRedrawOnImpl(); |
2994 } | 2999 } |
2995 | 3000 |
2996 } // namespace cc | 3001 } // namespace cc |
OLD | NEW |