| 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 |