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

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

Issue 334133002: cc: Support on demand raster with ganesh (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: RunOnDemandRasterTask Created 6 years, 6 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 2743 matching lines...) Expand 10 before | Expand all | Expand 10 after
2754 scroll_info->page_scale_delta = active_tree_->page_scale_delta(); 2754 scroll_info->page_scale_delta = active_tree_->page_scale_delta();
2755 active_tree_->set_sent_page_scale_delta(scroll_info->page_scale_delta); 2755 active_tree_->set_sent_page_scale_delta(scroll_info->page_scale_delta);
2756 2756
2757 return scroll_info.Pass(); 2757 return scroll_info.Pass();
2758 } 2758 }
2759 2759
2760 void LayerTreeHostImpl::SetFullRootLayerDamage() { 2760 void LayerTreeHostImpl::SetFullRootLayerDamage() {
2761 SetViewportDamage(gfx::Rect(DrawViewportSize())); 2761 SetViewportDamage(gfx::Rect(DrawViewportSize()));
2762 } 2762 }
2763 2763
2764 void LayerTreeHostImpl::RunOnDemandRasterTask(Task* on_demand_raster_task) {
2765 scoped_ptr<TaskGraphRunner> temp_task_graph_runner_holder;
2766 TaskGraphRunner* task_graph_runner = NULL;
2767 NamespaceToken on_demand_task_namespace;
2768
2769 // Use the TaskGraphRunner on correct thread and get unique namespace token.
2770 if (use_gpu_rasterization_) {
reveman 2014/06/20 00:38:41 Can you remove these use_gpu_rasterization_ checks
boliu 2014/06/20 01:27:06 Another question. If we do this, do we have to wor
reveman 2014/06/20 01:29:21 I don't think we can generate picture-draw-quads w
2771 temp_task_graph_runner_holder.reset(new TaskGraphRunner);
2772 task_graph_runner = temp_task_graph_runner_holder.get();
2773 on_demand_task_namespace = task_graph_runner->GetNamespaceToken();
2774 } else {
2775 task_graph_runner = RasterWorkerPool::GetTaskGraphRunner();
2776 if (!on_demand_task_namespace_.IsValid())
2777 on_demand_task_namespace_ = task_graph_runner->GetNamespaceToken();
2778 on_demand_task_namespace = on_demand_task_namespace_;
2779 }
2780 DCHECK(task_graph_runner);
2781
2782 // Construct a task graph that contains this single raster task.
2783 TaskGraph graph;
2784 graph.nodes.push_back(
2785 TaskGraph::Node(on_demand_raster_task,
2786 RasterWorkerPool::kOnDemandRasterTaskPriority,
2787 0u));
2788
2789 // Schedule task and wait for task graph runner to finish running it.
2790 task_graph_runner->ScheduleTasks(on_demand_task_namespace, &graph);
2791
2792 if (use_gpu_rasterization_) {
boliu 2014/06/20 01:28:16 Also this branch can't move to CreateAndSetTileMan
reveman 2014/06/20 01:32:38 Could it instead be something like the following?
2793 task_graph_runner->RunUntilIdle();
2794 } else {
2795 task_graph_runner->WaitForTasksToFinishRunning(on_demand_task_namespace);
2796 }
2797
2798 // Collect task now that it has finished running.
2799 Task::Vector completed_tasks;
2800 task_graph_runner->CollectCompletedTasks(on_demand_task_namespace,
2801 &completed_tasks);
2802 DCHECK_EQ(1u, completed_tasks.size());
2803 DCHECK_EQ(completed_tasks[0], on_demand_raster_task);
2804 }
2805
2764 void LayerTreeHostImpl::ScrollViewportBy(gfx::Vector2dF scroll_delta) { 2806 void LayerTreeHostImpl::ScrollViewportBy(gfx::Vector2dF scroll_delta) {
2765 DCHECK(InnerViewportScrollLayer()); 2807 DCHECK(InnerViewportScrollLayer());
2766 LayerImpl* scroll_layer = OuterViewportScrollLayer() 2808 LayerImpl* scroll_layer = OuterViewportScrollLayer()
2767 ? OuterViewportScrollLayer() 2809 ? OuterViewportScrollLayer()
2768 : InnerViewportScrollLayer(); 2810 : InnerViewportScrollLayer();
2769 2811
2770 gfx::Vector2dF unused_delta = scroll_layer->ScrollBy(scroll_delta); 2812 gfx::Vector2dF unused_delta = scroll_layer->ScrollBy(scroll_delta);
2771 2813
2772 if (!unused_delta.IsZero() && (scroll_layer == OuterViewportScrollLayer())) 2814 if (!unused_delta.IsZero() && (scroll_layer == OuterViewportScrollLayer()))
2773 InnerViewportScrollLayer()->ScrollBy(unused_delta); 2815 InnerViewportScrollLayer()->ScrollBy(unused_delta);
(...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after
3108 } 3150 }
3109 3151
3110 void LayerTreeHostImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) { 3152 void LayerTreeHostImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) {
3111 std::vector<PictureLayerImpl*>::iterator it = 3153 std::vector<PictureLayerImpl*>::iterator it =
3112 std::find(picture_layers_.begin(), picture_layers_.end(), layer); 3154 std::find(picture_layers_.begin(), picture_layers_.end(), layer);
3113 DCHECK(it != picture_layers_.end()); 3155 DCHECK(it != picture_layers_.end());
3114 picture_layers_.erase(it); 3156 picture_layers_.erase(it);
3115 } 3157 }
3116 3158
3117 } // namespace cc 3159 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698