Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(80)

Side by Side Diff: cc/trees/layer_tree_host_impl.cc

Issue 287643004: Re-land: cc: Examine layers to determine if we're ready to activate. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase and address review feedback Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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
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
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
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
OLDNEW
« cc/layers/picture_layer_impl_unittest.cc ('K') | « cc/trees/layer_tree_host_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698