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

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: address review feeback 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 570 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
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
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
OLDNEW
« cc/resources/tile_manager.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