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 1823 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1834 active_tree_->set_needs_update_draw_properties(); | 1834 active_tree_->set_needs_update_draw_properties(); |
1835 if (pending_tree_) | 1835 if (pending_tree_) |
1836 pending_tree_->set_needs_update_draw_properties(); | 1836 pending_tree_->set_needs_update_draw_properties(); |
1837 client_->UpdateRendererCapabilitiesOnImplThread(); | 1837 client_->UpdateRendererCapabilitiesOnImplThread(); |
1838 } | 1838 } |
1839 | 1839 |
1840 void LayerTreeHostImpl::CreateAndSetTileManager( | 1840 void LayerTreeHostImpl::CreateAndSetTileManager( |
1841 ResourceProvider* resource_provider, | 1841 ResourceProvider* resource_provider, |
1842 ContextProvider* context_provider, | 1842 ContextProvider* context_provider, |
1843 bool use_zero_copy, | 1843 bool use_zero_copy, |
1844 bool use_one_copy, | 1844 bool use_one_copy) { |
1845 bool allow_rasterize_on_demand) { | |
1846 DCHECK(settings_.impl_side_painting); | 1845 DCHECK(settings_.impl_side_painting); |
1847 DCHECK(resource_provider); | 1846 DCHECK(resource_provider); |
1848 DCHECK(proxy_->ImplThreadTaskRunner()); | 1847 DCHECK(proxy_->ImplThreadTaskRunner()); |
1849 | 1848 |
1850 transfer_buffer_memory_limit_ = | 1849 transfer_buffer_memory_limit_ = |
1851 GetMaxTransferBufferUsageBytes(context_provider); | 1850 GetMaxTransferBufferUsageBytes(context_provider); |
1852 | 1851 |
1853 if (use_zero_copy) { | 1852 if (use_zero_copy) { |
1854 resource_pool_ = | 1853 resource_pool_ = |
1855 ResourcePool::Create(resource_provider, | 1854 ResourcePool::Create(resource_provider, |
(...skipping 27 matching lines...) Expand all Loading... |
1883 transfer_buffer_memory_limit_); | 1882 transfer_buffer_memory_limit_); |
1884 resource_pool_ = ResourcePool::Create( | 1883 resource_pool_ = ResourcePool::Create( |
1885 resource_provider, | 1884 resource_provider, |
1886 GL_TEXTURE_2D, | 1885 GL_TEXTURE_2D, |
1887 resource_provider->memory_efficient_texture_format()); | 1886 resource_provider->memory_efficient_texture_format()); |
1888 } | 1887 } |
1889 direct_raster_worker_pool_ = DirectRasterWorkerPool::Create( | 1888 direct_raster_worker_pool_ = DirectRasterWorkerPool::Create( |
1890 proxy_->ImplThreadTaskRunner(), resource_provider, context_provider); | 1889 proxy_->ImplThreadTaskRunner(), resource_provider, context_provider); |
1891 tile_manager_ = | 1890 tile_manager_ = |
1892 TileManager::Create(this, | 1891 TileManager::Create(this, |
| 1892 proxy_->ImplThreadTaskRunner(), |
1893 resource_pool_.get(), | 1893 resource_pool_.get(), |
1894 raster_worker_pool_->AsRasterizer(), | 1894 raster_worker_pool_->AsRasterizer(), |
1895 direct_raster_worker_pool_->AsRasterizer(), | 1895 direct_raster_worker_pool_->AsRasterizer(), |
1896 allow_rasterize_on_demand, | |
1897 rendering_stats_instrumentation_); | 1896 rendering_stats_instrumentation_); |
1898 | 1897 |
1899 UpdateTileManagerMemoryPolicy(ActualManagedMemoryPolicy()); | 1898 UpdateTileManagerMemoryPolicy(ActualManagedMemoryPolicy()); |
1900 need_to_update_visible_tiles_before_draw_ = false; | 1899 need_to_update_visible_tiles_before_draw_ = false; |
1901 } | 1900 } |
1902 | 1901 |
1903 void LayerTreeHostImpl::EnforceZeroBudget(bool zero_budget) { | 1902 void LayerTreeHostImpl::EnforceZeroBudget(bool zero_budget) { |
1904 SetManagedMemoryPolicy(cached_managed_memory_policy_, zero_budget); | 1903 SetManagedMemoryPolicy(cached_managed_memory_policy_, zero_budget); |
1905 } | 1904 } |
1906 | 1905 |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1952 bool use_zero_copy = | 1951 bool use_zero_copy = |
1953 (settings_.use_zero_copy || | 1952 (settings_.use_zero_copy || |
1954 GetRendererCapabilities().using_shared_memory_resources) && | 1953 GetRendererCapabilities().using_shared_memory_resources) && |
1955 GetRendererCapabilities().using_map_image; | 1954 GetRendererCapabilities().using_map_image; |
1956 | 1955 |
1957 // Sync query support is required by one-copy rasterizer. | 1956 // Sync query support is required by one-copy rasterizer. |
1958 bool use_one_copy = settings_.use_one_copy && | 1957 bool use_one_copy = settings_.use_one_copy && |
1959 GetRendererCapabilities().using_map_image && | 1958 GetRendererCapabilities().using_map_image && |
1960 resource_provider->use_sync_query(); | 1959 resource_provider->use_sync_query(); |
1961 | 1960 |
1962 CreateAndSetTileManager( | 1961 CreateAndSetTileManager(resource_provider.get(), |
1963 resource_provider.get(), | 1962 output_surface->context_provider().get(), |
1964 output_surface->context_provider().get(), | 1963 use_zero_copy, |
1965 use_zero_copy, | 1964 use_one_copy); |
1966 use_one_copy, | |
1967 GetRendererCapabilities().allow_rasterize_on_demand); | |
1968 } | 1965 } |
1969 | 1966 |
1970 // Initialize vsync parameters to sane values. | 1967 // Initialize vsync parameters to sane values. |
1971 const base::TimeDelta display_refresh_interval = | 1968 const base::TimeDelta display_refresh_interval = |
1972 base::TimeDelta::FromMicroseconds(base::Time::kMicrosecondsPerSecond / | 1969 base::TimeDelta::FromMicroseconds(base::Time::kMicrosecondsPerSecond / |
1973 settings_.refresh_rate); | 1970 settings_.refresh_rate); |
1974 CommitVSyncParameters(base::TimeTicks(), display_refresh_interval); | 1971 CommitVSyncParameters(base::TimeTicks(), display_refresh_interval); |
1975 | 1972 |
1976 // TODO(brianderson): Don't use a hard-coded parent draw time. | 1973 // TODO(brianderson): Don't use a hard-coded parent draw time. |
1977 base::TimeDelta parent_draw_time = | 1974 base::TimeDelta parent_draw_time = |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2030 direct_raster_worker_pool_.reset(); | 2027 direct_raster_worker_pool_.reset(); |
2031 staging_resource_pool_.reset(); | 2028 staging_resource_pool_.reset(); |
2032 resource_provider_->InitializeSoftware(); | 2029 resource_provider_->InitializeSoftware(); |
2033 | 2030 |
2034 bool skip_gl_renderer = true; | 2031 bool skip_gl_renderer = true; |
2035 CreateAndSetRenderer( | 2032 CreateAndSetRenderer( |
2036 output_surface_.get(), resource_provider_.get(), skip_gl_renderer); | 2033 output_surface_.get(), resource_provider_.get(), skip_gl_renderer); |
2037 | 2034 |
2038 EnforceZeroBudget(true); | 2035 EnforceZeroBudget(true); |
2039 DCHECK(GetRendererCapabilities().using_map_image); | 2036 DCHECK(GetRendererCapabilities().using_map_image); |
2040 CreateAndSetTileManager(resource_provider_.get(), | 2037 CreateAndSetTileManager(resource_provider_.get(), NULL, true, false); |
2041 NULL, | |
2042 true, | |
2043 false, | |
2044 GetRendererCapabilities().allow_rasterize_on_demand); | |
2045 DCHECK(tile_manager_); | 2038 DCHECK(tile_manager_); |
2046 | 2039 |
2047 client_->SetNeedsCommitOnImplThread(); | 2040 client_->SetNeedsCommitOnImplThread(); |
2048 } | 2041 } |
2049 | 2042 |
2050 void LayerTreeHostImpl::SetViewportSize(const gfx::Size& device_viewport_size) { | 2043 void LayerTreeHostImpl::SetViewportSize(const gfx::Size& device_viewport_size) { |
2051 if (device_viewport_size == device_viewport_size_) | 2044 if (device_viewport_size == device_viewport_size_) |
2052 return; | 2045 return; |
2053 | 2046 |
2054 if (pending_tree_) | 2047 if (pending_tree_) |
(...skipping 1064 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3119 swap_promise_monitor_.erase(monitor); | 3112 swap_promise_monitor_.erase(monitor); |
3120 } | 3113 } |
3121 | 3114 |
3122 void LayerTreeHostImpl::NotifySwapPromiseMonitorsOfSetNeedsRedraw() { | 3115 void LayerTreeHostImpl::NotifySwapPromiseMonitorsOfSetNeedsRedraw() { |
3123 std::set<SwapPromiseMonitor*>::iterator it = swap_promise_monitor_.begin(); | 3116 std::set<SwapPromiseMonitor*>::iterator it = swap_promise_monitor_.begin(); |
3124 for (; it != swap_promise_monitor_.end(); it++) | 3117 for (; it != swap_promise_monitor_.end(); it++) |
3125 (*it)->OnSetNeedsRedrawOnImpl(); | 3118 (*it)->OnSetNeedsRedrawOnImpl(); |
3126 } | 3119 } |
3127 | 3120 |
3128 } // namespace cc | 3121 } // namespace cc |
OLD | NEW |