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 1222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1233 | 1233 |
1234 void LayerTreeHostImpl::DidInitializeVisibleTile() { | 1234 void LayerTreeHostImpl::DidInitializeVisibleTile() { |
1235 if (client_ && !client_->IsInsideDraw()) | 1235 if (client_ && !client_->IsInsideDraw()) |
1236 client_->DidInitializeVisibleTileOnImplThread(); | 1236 client_->DidInitializeVisibleTileOnImplThread(); |
1237 } | 1237 } |
1238 | 1238 |
1239 void LayerTreeHostImpl::NotifyReadyToActivate() { | 1239 void LayerTreeHostImpl::NotifyReadyToActivate() { |
1240 client_->NotifyReadyToActivate(); | 1240 client_->NotifyReadyToActivate(); |
1241 } | 1241 } |
1242 | 1242 |
1243 void LayerTreeHostImpl::NotifyTileInitialized(const Tile* tile) { | 1243 void LayerTreeHostImpl::NotifyTileStateChanged(const Tile* tile) { |
1244 TRACE_EVENT0("cc", "LayerTreeHostImpl::NotifyTileInitialized"); | 1244 TRACE_EVENT0("cc", "LayerTreeHostImpl::NotifyTileStateChanged"); |
1245 | 1245 |
1246 if (active_tree_) { | 1246 if (active_tree_) { |
1247 LayerImpl* layer_impl = | 1247 LayerImpl* layer_impl = |
1248 active_tree_->FindActiveTreeLayerById(tile->layer_id()); | 1248 active_tree_->FindActiveTreeLayerById(tile->layer_id()); |
1249 if (layer_impl) | 1249 if (layer_impl) |
1250 layer_impl->NotifyTileInitialized(tile); | 1250 layer_impl->NotifyTileStateChanged(tile); |
1251 } | 1251 } |
1252 | 1252 |
1253 if (pending_tree_) { | 1253 if (pending_tree_) { |
1254 LayerImpl* layer_impl = | 1254 LayerImpl* layer_impl = |
1255 pending_tree_->FindPendingTreeLayerById(tile->layer_id()); | 1255 pending_tree_->FindPendingTreeLayerById(tile->layer_id()); |
1256 if (layer_impl) | 1256 if (layer_impl) |
1257 layer_impl->NotifyTileInitialized(tile); | 1257 layer_impl->NotifyTileStateChanged(tile); |
1258 } | 1258 } |
1259 } | 1259 } |
1260 | 1260 |
1261 void LayerTreeHostImpl::SetMemoryPolicy(const ManagedMemoryPolicy& policy) { | 1261 void LayerTreeHostImpl::SetMemoryPolicy(const ManagedMemoryPolicy& policy) { |
1262 SetManagedMemoryPolicy(policy, zero_budget_); | 1262 SetManagedMemoryPolicy(policy, zero_budget_); |
1263 } | 1263 } |
1264 | 1264 |
1265 void LayerTreeHostImpl::SetTreeActivationCallback( | 1265 void LayerTreeHostImpl::SetTreeActivationCallback( |
1266 const base::Closure& callback) { | 1266 const base::Closure& callback) { |
1267 DCHECK(proxy_->IsImplThread()); | 1267 DCHECK(proxy_->IsImplThread()); |
(...skipping 572 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1840 active_tree_->set_needs_update_draw_properties(); | 1840 active_tree_->set_needs_update_draw_properties(); |
1841 if (pending_tree_) | 1841 if (pending_tree_) |
1842 pending_tree_->set_needs_update_draw_properties(); | 1842 pending_tree_->set_needs_update_draw_properties(); |
1843 client_->UpdateRendererCapabilitiesOnImplThread(); | 1843 client_->UpdateRendererCapabilitiesOnImplThread(); |
1844 } | 1844 } |
1845 | 1845 |
1846 void LayerTreeHostImpl::CreateAndSetTileManager( | 1846 void LayerTreeHostImpl::CreateAndSetTileManager( |
1847 ResourceProvider* resource_provider, | 1847 ResourceProvider* resource_provider, |
1848 ContextProvider* context_provider, | 1848 ContextProvider* context_provider, |
1849 bool use_zero_copy, | 1849 bool use_zero_copy, |
1850 bool use_one_copy, | 1850 bool use_one_copy) { |
1851 bool allow_rasterize_on_demand) { | |
1852 DCHECK(settings_.impl_side_painting); | 1851 DCHECK(settings_.impl_side_painting); |
1853 DCHECK(resource_provider); | 1852 DCHECK(resource_provider); |
1854 DCHECK(proxy_->ImplThreadTaskRunner()); | 1853 DCHECK(proxy_->ImplThreadTaskRunner()); |
1855 | 1854 |
1856 transfer_buffer_memory_limit_ = | 1855 transfer_buffer_memory_limit_ = |
1857 GetMaxTransferBufferUsageBytes(context_provider); | 1856 GetMaxTransferBufferUsageBytes(context_provider); |
1858 | 1857 |
1859 if (use_zero_copy) { | 1858 if (use_zero_copy) { |
1860 resource_pool_ = | 1859 resource_pool_ = |
1861 ResourcePool::Create(resource_provider, | 1860 ResourcePool::Create(resource_provider, |
(...skipping 27 matching lines...) Expand all Loading... |
1889 transfer_buffer_memory_limit_); | 1888 transfer_buffer_memory_limit_); |
1890 resource_pool_ = ResourcePool::Create( | 1889 resource_pool_ = ResourcePool::Create( |
1891 resource_provider, | 1890 resource_provider, |
1892 GL_TEXTURE_2D, | 1891 GL_TEXTURE_2D, |
1893 resource_provider->memory_efficient_texture_format()); | 1892 resource_provider->memory_efficient_texture_format()); |
1894 } | 1893 } |
1895 direct_raster_worker_pool_ = DirectRasterWorkerPool::Create( | 1894 direct_raster_worker_pool_ = DirectRasterWorkerPool::Create( |
1896 proxy_->ImplThreadTaskRunner(), resource_provider, context_provider); | 1895 proxy_->ImplThreadTaskRunner(), resource_provider, context_provider); |
1897 tile_manager_ = | 1896 tile_manager_ = |
1898 TileManager::Create(this, | 1897 TileManager::Create(this, |
| 1898 proxy_->ImplThreadTaskRunner(), |
1899 resource_pool_.get(), | 1899 resource_pool_.get(), |
1900 raster_worker_pool_->AsRasterizer(), | 1900 raster_worker_pool_->AsRasterizer(), |
1901 direct_raster_worker_pool_->AsRasterizer(), | 1901 direct_raster_worker_pool_->AsRasterizer(), |
1902 allow_rasterize_on_demand, | |
1903 rendering_stats_instrumentation_); | 1902 rendering_stats_instrumentation_); |
1904 | 1903 |
1905 UpdateTileManagerMemoryPolicy(ActualManagedMemoryPolicy()); | 1904 UpdateTileManagerMemoryPolicy(ActualManagedMemoryPolicy()); |
1906 need_to_update_visible_tiles_before_draw_ = false; | 1905 need_to_update_visible_tiles_before_draw_ = false; |
1907 } | 1906 } |
1908 | 1907 |
1909 void LayerTreeHostImpl::EnforceZeroBudget(bool zero_budget) { | 1908 void LayerTreeHostImpl::EnforceZeroBudget(bool zero_budget) { |
1910 SetManagedMemoryPolicy(cached_managed_memory_policy_, zero_budget); | 1909 SetManagedMemoryPolicy(cached_managed_memory_policy_, zero_budget); |
1911 } | 1910 } |
1912 | 1911 |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1958 bool use_zero_copy = | 1957 bool use_zero_copy = |
1959 (settings_.use_zero_copy || | 1958 (settings_.use_zero_copy || |
1960 GetRendererCapabilities().using_shared_memory_resources) && | 1959 GetRendererCapabilities().using_shared_memory_resources) && |
1961 GetRendererCapabilities().using_map_image; | 1960 GetRendererCapabilities().using_map_image; |
1962 | 1961 |
1963 // Sync query support is required by one-copy rasterizer. | 1962 // Sync query support is required by one-copy rasterizer. |
1964 bool use_one_copy = settings_.use_one_copy && | 1963 bool use_one_copy = settings_.use_one_copy && |
1965 GetRendererCapabilities().using_map_image && | 1964 GetRendererCapabilities().using_map_image && |
1966 resource_provider->use_sync_query(); | 1965 resource_provider->use_sync_query(); |
1967 | 1966 |
1968 CreateAndSetTileManager( | 1967 CreateAndSetTileManager(resource_provider.get(), |
1969 resource_provider.get(), | 1968 output_surface->context_provider().get(), |
1970 output_surface->context_provider().get(), | 1969 use_zero_copy, |
1971 use_zero_copy, | 1970 use_one_copy); |
1972 use_one_copy, | |
1973 GetRendererCapabilities().allow_rasterize_on_demand); | |
1974 } | 1971 } |
1975 | 1972 |
1976 // Initialize vsync parameters to sane values. | 1973 // Initialize vsync parameters to sane values. |
1977 const base::TimeDelta display_refresh_interval = | 1974 const base::TimeDelta display_refresh_interval = |
1978 base::TimeDelta::FromMicroseconds(base::Time::kMicrosecondsPerSecond / | 1975 base::TimeDelta::FromMicroseconds(base::Time::kMicrosecondsPerSecond / |
1979 settings_.refresh_rate); | 1976 settings_.refresh_rate); |
1980 CommitVSyncParameters(base::TimeTicks(), display_refresh_interval); | 1977 CommitVSyncParameters(base::TimeTicks(), display_refresh_interval); |
1981 | 1978 |
1982 // TODO(brianderson): Don't use a hard-coded parent draw time. | 1979 // TODO(brianderson): Don't use a hard-coded parent draw time. |
1983 base::TimeDelta parent_draw_time = | 1980 base::TimeDelta parent_draw_time = |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2036 direct_raster_worker_pool_.reset(); | 2033 direct_raster_worker_pool_.reset(); |
2037 staging_resource_pool_.reset(); | 2034 staging_resource_pool_.reset(); |
2038 resource_provider_->InitializeSoftware(); | 2035 resource_provider_->InitializeSoftware(); |
2039 | 2036 |
2040 bool skip_gl_renderer = true; | 2037 bool skip_gl_renderer = true; |
2041 CreateAndSetRenderer( | 2038 CreateAndSetRenderer( |
2042 output_surface_.get(), resource_provider_.get(), skip_gl_renderer); | 2039 output_surface_.get(), resource_provider_.get(), skip_gl_renderer); |
2043 | 2040 |
2044 EnforceZeroBudget(true); | 2041 EnforceZeroBudget(true); |
2045 DCHECK(GetRendererCapabilities().using_map_image); | 2042 DCHECK(GetRendererCapabilities().using_map_image); |
2046 CreateAndSetTileManager(resource_provider_.get(), | 2043 CreateAndSetTileManager(resource_provider_.get(), NULL, true, false); |
2047 NULL, | |
2048 true, | |
2049 false, | |
2050 GetRendererCapabilities().allow_rasterize_on_demand); | |
2051 DCHECK(tile_manager_); | 2044 DCHECK(tile_manager_); |
2052 | 2045 |
2053 client_->SetNeedsCommitOnImplThread(); | 2046 client_->SetNeedsCommitOnImplThread(); |
2054 } | 2047 } |
2055 | 2048 |
2056 void LayerTreeHostImpl::SetViewportSize(const gfx::Size& device_viewport_size) { | 2049 void LayerTreeHostImpl::SetViewportSize(const gfx::Size& device_viewport_size) { |
2057 if (device_viewport_size == device_viewport_size_) | 2050 if (device_viewport_size == device_viewport_size_) |
2058 return; | 2051 return; |
2059 | 2052 |
2060 if (pending_tree_) | 2053 if (pending_tree_) |
(...skipping 1062 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3123 swap_promise_monitor_.erase(monitor); | 3116 swap_promise_monitor_.erase(monitor); |
3124 } | 3117 } |
3125 | 3118 |
3126 void LayerTreeHostImpl::NotifySwapPromiseMonitorsOfSetNeedsRedraw() { | 3119 void LayerTreeHostImpl::NotifySwapPromiseMonitorsOfSetNeedsRedraw() { |
3127 std::set<SwapPromiseMonitor*>::iterator it = swap_promise_monitor_.begin(); | 3120 std::set<SwapPromiseMonitor*>::iterator it = swap_promise_monitor_.begin(); |
3128 for (; it != swap_promise_monitor_.end(); it++) | 3121 for (; it != swap_promise_monitor_.end(); it++) |
3129 (*it)->OnSetNeedsRedrawOnImpl(); | 3122 (*it)->OnSetNeedsRedrawOnImpl(); |
3130 } | 3123 } |
3131 | 3124 |
3132 } // namespace cc | 3125 } // namespace cc |
OLD | NEW |