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

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

Issue 362073002: cc: Remove all traces of SkPicture cloning. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 4 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
« no previous file with comments | « cc/trees/layer_tree_host_impl.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 204 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 LayerTreeHostImpl::LayerTreeHostImpl( 215 LayerTreeHostImpl::LayerTreeHostImpl(
216 const LayerTreeSettings& settings, 216 const LayerTreeSettings& settings,
217 LayerTreeHostImplClient* client, 217 LayerTreeHostImplClient* client,
218 Proxy* proxy, 218 Proxy* proxy,
219 RenderingStatsInstrumentation* rendering_stats_instrumentation, 219 RenderingStatsInstrumentation* rendering_stats_instrumentation,
220 SharedBitmapManager* manager, 220 SharedBitmapManager* manager,
221 int id) 221 int id)
222 : client_(client), 222 : client_(client),
223 proxy_(proxy), 223 proxy_(proxy),
224 use_gpu_rasterization_(false), 224 use_gpu_rasterization_(false),
225 on_demand_task_graph_runner_(NULL),
226 input_handler_client_(NULL), 225 input_handler_client_(NULL),
227 did_lock_scrolling_layer_(false), 226 did_lock_scrolling_layer_(false),
228 should_bubble_scrolls_(false), 227 should_bubble_scrolls_(false),
229 wheel_scrolling_(false), 228 wheel_scrolling_(false),
230 scroll_affects_scroll_handler_(false), 229 scroll_affects_scroll_handler_(false),
231 scroll_layer_id_when_mouse_over_scrollbar_(0), 230 scroll_layer_id_when_mouse_over_scrollbar_(0),
232 tile_priorities_dirty_(false), 231 tile_priorities_dirty_(false),
233 root_layer_scroll_offset_delegate_(NULL), 232 root_layer_scroll_offset_delegate_(NULL),
234 settings_(settings), 233 settings_(settings),
235 visible_(true), 234 visible_(true),
(...skipping 1748 matching lines...) Expand 10 before | Expand all | Expand 10 after
1984 if (use_gpu_rasterization_ && context_provider) { 1983 if (use_gpu_rasterization_ && context_provider) {
1985 resource_pool_ = 1984 resource_pool_ =
1986 ResourcePool::Create(resource_provider_.get(), 1985 ResourcePool::Create(resource_provider_.get(),
1987 GL_TEXTURE_2D, 1986 GL_TEXTURE_2D,
1988 resource_provider_->best_texture_format()); 1987 resource_provider_->best_texture_format());
1989 1988
1990 raster_worker_pool_ = 1989 raster_worker_pool_ =
1991 GpuRasterWorkerPool::Create(proxy_->ImplThreadTaskRunner(), 1990 GpuRasterWorkerPool::Create(proxy_->ImplThreadTaskRunner(),
1992 context_provider, 1991 context_provider,
1993 resource_provider_.get()); 1992 resource_provider_.get());
1994 on_demand_task_graph_runner_ = &synchronous_task_graph_runner_;
1995 } else if (UseOneCopyTextureUpload() && context_provider) { 1993 } else if (UseOneCopyTextureUpload() && context_provider) {
1996 // We need to create a staging resource pool when using copy rasterizer. 1994 // We need to create a staging resource pool when using copy rasterizer.
1997 staging_resource_pool_ = 1995 staging_resource_pool_ =
1998 ResourcePool::Create(resource_provider_.get(), 1996 ResourcePool::Create(resource_provider_.get(),
1999 GetMapImageTextureTarget(context_provider), 1997 GetMapImageTextureTarget(context_provider),
2000 resource_provider_->best_texture_format()); 1998 resource_provider_->best_texture_format());
2001 resource_pool_ = 1999 resource_pool_ =
2002 ResourcePool::Create(resource_provider_.get(), 2000 ResourcePool::Create(resource_provider_.get(),
2003 GL_TEXTURE_2D, 2001 GL_TEXTURE_2D,
2004 resource_provider_->best_texture_format()); 2002 resource_provider_->best_texture_format());
2005 2003
2006 raster_worker_pool_ = ImageCopyRasterWorkerPool::Create( 2004 raster_worker_pool_ = ImageCopyRasterWorkerPool::Create(
2007 proxy_->ImplThreadTaskRunner(), 2005 proxy_->ImplThreadTaskRunner(),
2008 RasterWorkerPool::GetTaskGraphRunner(), 2006 RasterWorkerPool::GetTaskGraphRunner(),
2009 context_provider, 2007 context_provider,
2010 resource_provider_.get(), 2008 resource_provider_.get(),
2011 staging_resource_pool_.get()); 2009 staging_resource_pool_.get());
2012 on_demand_task_graph_runner_ = RasterWorkerPool::GetTaskGraphRunner();
2013 } else if (!UseZeroCopyTextureUpload() && context_provider) { 2010 } else if (!UseZeroCopyTextureUpload() && context_provider) {
2014 resource_pool_ = ResourcePool::Create( 2011 resource_pool_ = ResourcePool::Create(
2015 resource_provider_.get(), 2012 resource_provider_.get(),
2016 GL_TEXTURE_2D, 2013 GL_TEXTURE_2D,
2017 resource_provider_->memory_efficient_texture_format()); 2014 resource_provider_->memory_efficient_texture_format());
2018 2015
2019 raster_worker_pool_ = PixelBufferRasterWorkerPool::Create( 2016 raster_worker_pool_ = PixelBufferRasterWorkerPool::Create(
2020 proxy_->ImplThreadTaskRunner(), 2017 proxy_->ImplThreadTaskRunner(),
2021 RasterWorkerPool::GetTaskGraphRunner(), 2018 RasterWorkerPool::GetTaskGraphRunner(),
2022 context_provider, 2019 context_provider,
2023 resource_provider_.get(), 2020 resource_provider_.get(),
2024 transfer_buffer_memory_limit_); 2021 transfer_buffer_memory_limit_);
2025 on_demand_task_graph_runner_ = RasterWorkerPool::GetTaskGraphRunner();
2026 } else { 2022 } else {
2027 resource_pool_ = 2023 resource_pool_ =
2028 ResourcePool::Create(resource_provider_.get(), 2024 ResourcePool::Create(resource_provider_.get(),
2029 GetMapImageTextureTarget(context_provider), 2025 GetMapImageTextureTarget(context_provider),
2030 resource_provider_->best_texture_format()); 2026 resource_provider_->best_texture_format());
2031 2027
2032 raster_worker_pool_ = 2028 raster_worker_pool_ =
2033 ImageRasterWorkerPool::Create(proxy_->ImplThreadTaskRunner(), 2029 ImageRasterWorkerPool::Create(proxy_->ImplThreadTaskRunner(),
2034 RasterWorkerPool::GetTaskGraphRunner(), 2030 RasterWorkerPool::GetTaskGraphRunner(),
2035 resource_provider_.get()); 2031 resource_provider_.get());
2036 on_demand_task_graph_runner_ = RasterWorkerPool::GetTaskGraphRunner();
2037 } 2032 }
2038 2033
2039 tile_manager_ = 2034 tile_manager_ =
2040 TileManager::Create(this, 2035 TileManager::Create(this,
2041 proxy_->ImplThreadTaskRunner(), 2036 proxy_->ImplThreadTaskRunner(),
2042 resource_pool_.get(), 2037 resource_pool_.get(),
2043 raster_worker_pool_->AsRasterizer(), 2038 raster_worker_pool_->AsRasterizer(),
2044 rendering_stats_instrumentation_); 2039 rendering_stats_instrumentation_);
2045 2040
2046 UpdateTileManagerMemoryPolicy(ActualManagedMemoryPolicy()); 2041 UpdateTileManagerMemoryPolicy(ActualManagedMemoryPolicy());
2047 need_to_update_visible_tiles_before_draw_ = false; 2042 need_to_update_visible_tiles_before_draw_ = false;
2048 on_demand_task_namespace_ = on_demand_task_graph_runner_->GetNamespaceToken();
2049 } 2043 }
2050 2044
2051 void LayerTreeHostImpl::DestroyTileManager() { 2045 void LayerTreeHostImpl::DestroyTileManager() {
2052 tile_manager_.reset(); 2046 tile_manager_.reset();
2053 resource_pool_.reset(); 2047 resource_pool_.reset();
2054 staging_resource_pool_.reset(); 2048 staging_resource_pool_.reset();
2055 raster_worker_pool_.reset(); 2049 raster_worker_pool_.reset();
2056 } 2050 }
2057 2051
2058 bool LayerTreeHostImpl::UsePendingTreeForSync() const { 2052 bool LayerTreeHostImpl::UsePendingTreeForSync() const {
(...skipping 902 matching lines...) Expand 10 before | Expand all | Expand 10 after
2961 active_tree_->set_sent_page_scale_delta(scroll_info->page_scale_delta); 2955 active_tree_->set_sent_page_scale_delta(scroll_info->page_scale_delta);
2962 scroll_info->swap_promises.swap(swap_promises_for_main_thread_scroll_update_); 2956 scroll_info->swap_promises.swap(swap_promises_for_main_thread_scroll_update_);
2963 2957
2964 return scroll_info.Pass(); 2958 return scroll_info.Pass();
2965 } 2959 }
2966 2960
2967 void LayerTreeHostImpl::SetFullRootLayerDamage() { 2961 void LayerTreeHostImpl::SetFullRootLayerDamage() {
2968 SetViewportDamage(gfx::Rect(DrawViewportSize())); 2962 SetViewportDamage(gfx::Rect(DrawViewportSize()));
2969 } 2963 }
2970 2964
2971 void LayerTreeHostImpl::RunOnDemandRasterTask(Task* on_demand_raster_task) {
2972 DCHECK(on_demand_task_graph_runner_);
2973
2974 // Construct a task graph that contains this single raster task.
2975 TaskGraph graph;
2976 graph.nodes.push_back(
2977 TaskGraph::Node(on_demand_raster_task,
2978 RasterWorkerPool::kOnDemandRasterTaskPriority,
2979 0u));
2980
2981 // Schedule task and wait for task graph runner to finish running it.
2982 on_demand_task_graph_runner_->ScheduleTasks(on_demand_task_namespace_,
2983 &graph);
2984
2985 if (on_demand_task_graph_runner_ == &synchronous_task_graph_runner_)
2986 on_demand_task_graph_runner_->RunUntilIdle();
2987
2988 on_demand_task_graph_runner_->WaitForTasksToFinishRunning(
2989 on_demand_task_namespace_);
2990
2991 // Collect task now that it has finished running.
2992 Task::Vector completed_tasks;
2993 on_demand_task_graph_runner_->CollectCompletedTasks(on_demand_task_namespace_,
2994 &completed_tasks);
2995 DCHECK_EQ(1u, completed_tasks.size());
2996 DCHECK_EQ(completed_tasks[0], on_demand_raster_task);
2997 }
2998
2999 void LayerTreeHostImpl::ScrollViewportBy(gfx::Vector2dF scroll_delta) { 2965 void LayerTreeHostImpl::ScrollViewportBy(gfx::Vector2dF scroll_delta) {
3000 DCHECK(InnerViewportScrollLayer()); 2966 DCHECK(InnerViewportScrollLayer());
3001 LayerImpl* scroll_layer = OuterViewportScrollLayer() 2967 LayerImpl* scroll_layer = OuterViewportScrollLayer()
3002 ? OuterViewportScrollLayer() 2968 ? OuterViewportScrollLayer()
3003 : InnerViewportScrollLayer(); 2969 : InnerViewportScrollLayer();
3004 2970
3005 gfx::Vector2dF unused_delta = scroll_layer->ScrollBy(scroll_delta); 2971 gfx::Vector2dF unused_delta = scroll_layer->ScrollBy(scroll_delta);
3006 2972
3007 if (!unused_delta.IsZero() && (scroll_layer == OuterViewportScrollLayer())) 2973 if (!unused_delta.IsZero() && (scroll_layer == OuterViewportScrollLayer()))
3008 InnerViewportScrollLayer()->ScrollBy(unused_delta); 2974 InnerViewportScrollLayer()->ScrollBy(unused_delta);
(...skipping 403 matching lines...) Expand 10 before | Expand all | Expand 10 after
3412 } 3378 }
3413 3379
3414 void LayerTreeHostImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) { 3380 void LayerTreeHostImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) {
3415 std::vector<PictureLayerImpl*>::iterator it = 3381 std::vector<PictureLayerImpl*>::iterator it =
3416 std::find(picture_layers_.begin(), picture_layers_.end(), layer); 3382 std::find(picture_layers_.begin(), picture_layers_.end(), layer);
3417 DCHECK(it != picture_layers_.end()); 3383 DCHECK(it != picture_layers_.end());
3418 picture_layers_.erase(it); 3384 picture_layers_.erase(it);
3419 } 3385 }
3420 3386
3421 } // namespace cc 3387 } // namespace cc
OLDNEW
« no previous file with comments | « 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