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