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

Side by Side Diff: cc/resources/image_raster_worker_pool.cc

Issue 144463012: cc: Reuse the same TaskGraph and completed tasks vector. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: update comments Created 6 years, 10 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/resources/image_raster_worker_pool.h ('k') | cc/resources/pixel_buffer_raster_worker_pool.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/resources/image_raster_worker_pool.h" 5 #include "cc/resources/image_raster_worker_pool.h"
6 6
7 #include "base/debug/trace_event.h" 7 #include "base/debug/trace_event.h"
8 #include "base/values.h" 8 #include "base/values.h"
9 #include "cc/debug/traced_value.h" 9 #include "cc/debug/traced_value.h"
10 #include "cc/resources/resource.h" 10 #include "cc/resources/resource.h"
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 53
54 RasterWorkerPool::SetRasterTasks(queue); 54 RasterWorkerPool::SetRasterTasks(queue);
55 55
56 if (!raster_tasks_pending_) 56 if (!raster_tasks_pending_)
57 TRACE_EVENT_ASYNC_BEGIN0("cc", "ScheduledTasks", this); 57 TRACE_EVENT_ASYNC_BEGIN0("cc", "ScheduledTasks", this);
58 58
59 raster_tasks_pending_ = true; 59 raster_tasks_pending_ = true;
60 raster_tasks_required_for_activation_pending_ = true; 60 raster_tasks_required_for_activation_pending_ = true;
61 61
62 unsigned priority = kRasterTaskPriorityBase; 62 unsigned priority = kRasterTaskPriorityBase;
63 internal::TaskGraph graph; 63
64 graph_.Reset();
64 65
65 scoped_refptr<internal::WorkerPoolTask> 66 scoped_refptr<internal::WorkerPoolTask>
66 new_raster_required_for_activation_finished_task( 67 new_raster_required_for_activation_finished_task(
67 CreateRasterRequiredForActivationFinishedTask( 68 CreateRasterRequiredForActivationFinishedTask(
68 raster_tasks_required_for_activation().size())); 69 raster_tasks_required_for_activation().size()));
69 scoped_refptr<internal::WorkerPoolTask> new_raster_finished_task( 70 scoped_refptr<internal::WorkerPoolTask> new_raster_finished_task(
70 CreateRasterFinishedTask()); 71 CreateRasterFinishedTask());
71 72
72 size_t raster_required_for_activation_finished_dependency_count = 0u; 73 size_t raster_required_for_activation_finished_dependency_count = 0u;
73 size_t raster_finished_dependency_count = 0u; 74 size_t raster_finished_dependency_count = 0u;
74 75
75 RasterTaskVector gpu_raster_tasks; 76 RasterTaskVector gpu_raster_tasks;
76 77
77 for (RasterTaskVector::const_iterator it = raster_tasks().begin(); 78 for (RasterTaskVector::const_iterator it = raster_tasks().begin();
78 it != raster_tasks().end(); 79 it != raster_tasks().end();
79 ++it) { 80 ++it) {
80 internal::RasterWorkerPoolTask* task = it->get(); 81 internal::RasterWorkerPoolTask* task = it->get();
81 DCHECK(!task->HasCompleted()); 82 DCHECK(!task->HasCompleted());
82 83
83 if (task->use_gpu_rasterization()) { 84 if (task->use_gpu_rasterization()) {
84 gpu_raster_tasks.push_back(task); 85 gpu_raster_tasks.push_back(task);
85 continue; 86 continue;
86 } 87 }
87 88
88 if (IsRasterTaskRequiredForActivation(task)) { 89 if (IsRasterTaskRequiredForActivation(task)) {
89 ++raster_required_for_activation_finished_dependency_count; 90 ++raster_required_for_activation_finished_dependency_count;
90 graph.edges.push_back(internal::TaskGraph::Edge( 91 graph_.edges.push_back(internal::TaskGraph::Edge(
91 task, new_raster_required_for_activation_finished_task.get())); 92 task, new_raster_required_for_activation_finished_task.get()));
92 } 93 }
93 94
94 InsertNodeForRasterTask(&graph, task, task->dependencies(), priority++); 95 InsertNodeForRasterTask(&graph_, task, task->dependencies(), priority++);
95 96
96 ++raster_finished_dependency_count; 97 ++raster_finished_dependency_count;
97 graph.edges.push_back( 98 graph_.edges.push_back(
98 internal::TaskGraph::Edge(task, new_raster_finished_task.get())); 99 internal::TaskGraph::Edge(task, new_raster_finished_task.get()));
99 } 100 }
100 101
101 InsertNodeForTask(&graph, 102 InsertNodeForTask(&graph_,
102 new_raster_required_for_activation_finished_task.get(), 103 new_raster_required_for_activation_finished_task.get(),
103 kRasterRequiredForActivationFinishedTaskPriority, 104 kRasterRequiredForActivationFinishedTaskPriority,
104 raster_required_for_activation_finished_dependency_count); 105 raster_required_for_activation_finished_dependency_count);
105 InsertNodeForTask(&graph, 106 InsertNodeForTask(&graph_,
106 new_raster_finished_task.get(), 107 new_raster_finished_task.get(),
107 kRasterFinishedTaskPriority, 108 kRasterFinishedTaskPriority,
108 raster_finished_dependency_count); 109 raster_finished_dependency_count);
109 110
110 SetTaskGraph(&graph); 111 SetTaskGraph(&graph_);
111 112
112 set_raster_finished_task(new_raster_finished_task); 113 set_raster_finished_task(new_raster_finished_task);
113 set_raster_required_for_activation_finished_task( 114 set_raster_required_for_activation_finished_task(
114 new_raster_required_for_activation_finished_task); 115 new_raster_required_for_activation_finished_task);
115 116
116 if (!gpu_raster_tasks.empty()) 117 if (!gpu_raster_tasks.empty())
117 RunGpuRasterTasks(gpu_raster_tasks); 118 RunGpuRasterTasks(gpu_raster_tasks);
118 119
119 TRACE_EVENT_ASYNC_STEP_INTO1( 120 TRACE_EVENT_ASYNC_STEP_INTO1(
120 "cc", 121 "cc",
121 "ScheduledTasks", 122 "ScheduledTasks",
122 this, 123 this,
123 "rasterizing", 124 "rasterizing",
124 "state", 125 "state",
125 TracedValue::FromValue(StateAsValue().release())); 126 TracedValue::FromValue(StateAsValue().release()));
126 } 127 }
127 128
128 unsigned ImageRasterWorkerPool::GetResourceTarget() const { 129 unsigned ImageRasterWorkerPool::GetResourceTarget() const {
129 return texture_target_; 130 return texture_target_;
130 } 131 }
131 132
132 ResourceFormat ImageRasterWorkerPool::GetResourceFormat() const { 133 ResourceFormat ImageRasterWorkerPool::GetResourceFormat() const {
133 return resource_provider()->best_texture_format(); 134 return resource_provider()->best_texture_format();
134 } 135 }
135 136
136 void ImageRasterWorkerPool::CheckForCompletedTasks() { 137 void ImageRasterWorkerPool::CheckForCompletedTasks() {
137 TRACE_EVENT0("cc", "ImageRasterWorkerPool::CheckForCompletedTasks"); 138 TRACE_EVENT0("cc", "ImageRasterWorkerPool::CheckForCompletedTasks");
138 139
139 internal::Task::Vector completed_tasks; 140 CollectCompletedWorkerPoolTasks(&completed_tasks_);
140 CollectCompletedWorkerPoolTasks(&completed_tasks); 141 for (internal::Task::Vector::const_iterator it = completed_tasks_.begin();
141 142 it != completed_tasks_.end();
142 for (internal::Task::Vector::const_iterator it = completed_tasks.begin();
143 it != completed_tasks.end();
144 ++it) { 143 ++it) {
145 internal::WorkerPoolTask* task = 144 internal::WorkerPoolTask* task =
146 static_cast<internal::WorkerPoolTask*>(it->get()); 145 static_cast<internal::WorkerPoolTask*>(it->get());
147 146
148 task->WillComplete(); 147 task->WillComplete();
149 task->CompleteOnOriginThread(this); 148 task->CompleteOnOriginThread(this);
150 task->DidComplete(); 149 task->DidComplete();
151 150
152 task->RunReplyOnOriginThread(); 151 task->RunReplyOnOriginThread();
153 } 152 }
153 completed_tasks_.clear();
154 154
155 CheckForCompletedGpuRasterTasks(); 155 CheckForCompletedGpuRasterTasks();
156 } 156 }
157 157
158 void* ImageRasterWorkerPool::AcquireBufferForRaster( 158 void* ImageRasterWorkerPool::AcquireBufferForRaster(
159 internal::RasterWorkerPoolTask* task, 159 internal::RasterWorkerPoolTask* task,
160 int* stride) { 160 int* stride) {
161 // Acquire image for resource. 161 // Acquire image for resource.
162 resource_provider()->AcquireImage(task->resource()->id()); 162 resource_provider()->AcquireImage(task->resource()->id());
163 163
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 scoped_ptr<base::Value> ImageRasterWorkerPool::StateAsValue() const { 197 scoped_ptr<base::Value> ImageRasterWorkerPool::StateAsValue() const {
198 scoped_ptr<base::DictionaryValue> state(new base::DictionaryValue); 198 scoped_ptr<base::DictionaryValue> state(new base::DictionaryValue);
199 199
200 state->SetBoolean("tasks_required_for_activation_pending", 200 state->SetBoolean("tasks_required_for_activation_pending",
201 raster_tasks_required_for_activation_pending_); 201 raster_tasks_required_for_activation_pending_);
202 state->Set("scheduled_state", ScheduledStateAsValue().release()); 202 state->Set("scheduled_state", ScheduledStateAsValue().release());
203 return state.PassAs<base::Value>(); 203 return state.PassAs<base::Value>();
204 } 204 }
205 205
206 } // namespace cc 206 } // namespace cc
OLDNEW
« no previous file with comments | « cc/resources/image_raster_worker_pool.h ('k') | cc/resources/pixel_buffer_raster_worker_pool.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698