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

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

Issue 584393003: cc: Use more explicit names for CHROMIUM_image based rasterizer implementations. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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
« no previous file with comments | « cc/resources/zero_copy_raster_worker_pool.h ('k') | cc/trees/layer_tree_host_impl.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/zero_copy_raster_worker_pool.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/debug/trace_event.h" 9 #include "base/debug/trace_event.h"
10 #include "base/debug/trace_event_argument.h" 10 #include "base/debug/trace_event_argument.h"
11 #include "base/strings/stringprintf.h" 11 #include "base/strings/stringprintf.h"
12 #include "cc/debug/traced_value.h" 12 #include "cc/debug/traced_value.h"
13 #include "cc/resources/raster_buffer.h" 13 #include "cc/resources/raster_buffer.h"
14 #include "cc/resources/resource.h" 14 #include "cc/resources/resource.h"
15 #include "third_party/skia/include/utils/SkNullCanvas.h" 15 #include "third_party/skia/include/utils/SkNullCanvas.h"
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 int stride_; 58 int stride_;
59 uint8_t* buffer_; 59 uint8_t* buffer_;
60 SkBitmap bitmap_; 60 SkBitmap bitmap_;
61 61
62 DISALLOW_COPY_AND_ASSIGN(RasterBufferImpl); 62 DISALLOW_COPY_AND_ASSIGN(RasterBufferImpl);
63 }; 63 };
64 64
65 } // namespace 65 } // namespace
66 66
67 // static 67 // static
68 scoped_ptr<RasterWorkerPool> ImageRasterWorkerPool::Create( 68 scoped_ptr<RasterWorkerPool> ZeroCopyRasterWorkerPool::Create(
69 base::SequencedTaskRunner* task_runner, 69 base::SequencedTaskRunner* task_runner,
70 TaskGraphRunner* task_graph_runner, 70 TaskGraphRunner* task_graph_runner,
71 ResourceProvider* resource_provider) { 71 ResourceProvider* resource_provider) {
72 return make_scoped_ptr<RasterWorkerPool>(new ImageRasterWorkerPool( 72 return make_scoped_ptr<RasterWorkerPool>(new ZeroCopyRasterWorkerPool(
73 task_runner, task_graph_runner, resource_provider)); 73 task_runner, task_graph_runner, resource_provider));
74 } 74 }
75 75
76 ImageRasterWorkerPool::ImageRasterWorkerPool( 76 ZeroCopyRasterWorkerPool::ZeroCopyRasterWorkerPool(
77 base::SequencedTaskRunner* task_runner, 77 base::SequencedTaskRunner* task_runner,
78 TaskGraphRunner* task_graph_runner, 78 TaskGraphRunner* task_graph_runner,
79 ResourceProvider* resource_provider) 79 ResourceProvider* resource_provider)
80 : task_runner_(task_runner), 80 : task_runner_(task_runner),
81 task_graph_runner_(task_graph_runner), 81 task_graph_runner_(task_graph_runner),
82 namespace_token_(task_graph_runner->GetNamespaceToken()), 82 namespace_token_(task_graph_runner->GetNamespaceToken()),
83 resource_provider_(resource_provider), 83 resource_provider_(resource_provider),
84 raster_finished_weak_ptr_factory_(this) {} 84 raster_finished_weak_ptr_factory_(this) {
85 }
85 86
86 ImageRasterWorkerPool::~ImageRasterWorkerPool() {} 87 ZeroCopyRasterWorkerPool::~ZeroCopyRasterWorkerPool() {
88 }
87 89
88 Rasterizer* ImageRasterWorkerPool::AsRasterizer() { return this; } 90 Rasterizer* ZeroCopyRasterWorkerPool::AsRasterizer() {
91 return this;
92 }
89 93
90 void ImageRasterWorkerPool::SetClient(RasterizerClient* client) { 94 void ZeroCopyRasterWorkerPool::SetClient(RasterizerClient* client) {
91 client_ = client; 95 client_ = client;
92 } 96 }
93 97
94 void ImageRasterWorkerPool::Shutdown() { 98 void ZeroCopyRasterWorkerPool::Shutdown() {
95 TRACE_EVENT0("cc", "ImageRasterWorkerPool::Shutdown"); 99 TRACE_EVENT0("cc", "ZeroCopyRasterWorkerPool::Shutdown");
96 100
97 TaskGraph empty; 101 TaskGraph empty;
98 task_graph_runner_->ScheduleTasks(namespace_token_, &empty); 102 task_graph_runner_->ScheduleTasks(namespace_token_, &empty);
99 task_graph_runner_->WaitForTasksToFinishRunning(namespace_token_); 103 task_graph_runner_->WaitForTasksToFinishRunning(namespace_token_);
100 } 104 }
101 105
102 void ImageRasterWorkerPool::ScheduleTasks(RasterTaskQueue* queue) { 106 void ZeroCopyRasterWorkerPool::ScheduleTasks(RasterTaskQueue* queue) {
103 TRACE_EVENT0("cc", "ImageRasterWorkerPool::ScheduleTasks"); 107 TRACE_EVENT0("cc", "ZeroCopyRasterWorkerPool::ScheduleTasks");
104 108
105 if (raster_pending_.none()) 109 if (raster_pending_.none())
106 TRACE_EVENT_ASYNC_BEGIN0("cc", "ScheduledTasks", this); 110 TRACE_EVENT_ASYNC_BEGIN0("cc", "ScheduledTasks", this);
107 111
108 // Mark all task sets as pending. 112 // Mark all task sets as pending.
109 raster_pending_.set(); 113 raster_pending_.set();
110 114
111 unsigned priority = kRasterTaskPriorityBase; 115 unsigned priority = kRasterTaskPriorityBase;
112 116
113 graph_.Reset(); 117 graph_.Reset();
114 118
115 // Cancel existing OnRasterFinished callbacks. 119 // Cancel existing OnRasterFinished callbacks.
116 raster_finished_weak_ptr_factory_.InvalidateWeakPtrs(); 120 raster_finished_weak_ptr_factory_.InvalidateWeakPtrs();
117 121
118 scoped_refptr<RasterizerTask> new_raster_finished_tasks[kNumberOfTaskSets]; 122 scoped_refptr<RasterizerTask> new_raster_finished_tasks[kNumberOfTaskSets];
119 123
120 size_t task_count[kNumberOfTaskSets] = {0}; 124 size_t task_count[kNumberOfTaskSets] = {0};
121 125
122 for (TaskSet task_set = 0; task_set < kNumberOfTaskSets; ++task_set) { 126 for (TaskSet task_set = 0; task_set < kNumberOfTaskSets; ++task_set) {
123 new_raster_finished_tasks[task_set] = CreateRasterFinishedTask( 127 new_raster_finished_tasks[task_set] = CreateRasterFinishedTask(
124 task_runner_.get(), 128 task_runner_.get(),
125 base::Bind(&ImageRasterWorkerPool::OnRasterFinished, 129 base::Bind(&ZeroCopyRasterWorkerPool::OnRasterFinished,
126 raster_finished_weak_ptr_factory_.GetWeakPtr(), 130 raster_finished_weak_ptr_factory_.GetWeakPtr(),
127 task_set)); 131 task_set));
128 } 132 }
129 133
130 for (RasterTaskQueue::Item::Vector::const_iterator it = queue->items.begin(); 134 for (RasterTaskQueue::Item::Vector::const_iterator it = queue->items.begin();
131 it != queue->items.end(); 135 it != queue->items.end();
132 ++it) { 136 ++it) {
133 const RasterTaskQueue::Item& item = *it; 137 const RasterTaskQueue::Item& item = *it;
134 RasterTask* task = item.task; 138 RasterTask* task = item.task;
135 DCHECK(!task->HasCompleted()); 139 DCHECK(!task->HasCompleted());
(...skipping 22 matching lines...) Expand all
158 task_graph_runner_->ScheduleTasks(namespace_token_, &graph_); 162 task_graph_runner_->ScheduleTasks(namespace_token_, &graph_);
159 163
160 std::copy(new_raster_finished_tasks, 164 std::copy(new_raster_finished_tasks,
161 new_raster_finished_tasks + kNumberOfTaskSets, 165 new_raster_finished_tasks + kNumberOfTaskSets,
162 raster_finished_tasks_); 166 raster_finished_tasks_);
163 167
164 TRACE_EVENT_ASYNC_STEP_INTO1( 168 TRACE_EVENT_ASYNC_STEP_INTO1(
165 "cc", "ScheduledTasks", this, "rasterizing", "state", StateAsValue()); 169 "cc", "ScheduledTasks", this, "rasterizing", "state", StateAsValue());
166 } 170 }
167 171
168 void ImageRasterWorkerPool::CheckForCompletedTasks() { 172 void ZeroCopyRasterWorkerPool::CheckForCompletedTasks() {
169 TRACE_EVENT0("cc", "ImageRasterWorkerPool::CheckForCompletedTasks"); 173 TRACE_EVENT0("cc", "ZeroCopyRasterWorkerPool::CheckForCompletedTasks");
170 174
171 task_graph_runner_->CollectCompletedTasks(namespace_token_, 175 task_graph_runner_->CollectCompletedTasks(namespace_token_,
172 &completed_tasks_); 176 &completed_tasks_);
173 for (Task::Vector::const_iterator it = completed_tasks_.begin(); 177 for (Task::Vector::const_iterator it = completed_tasks_.begin();
174 it != completed_tasks_.end(); 178 it != completed_tasks_.end();
175 ++it) { 179 ++it) {
176 RasterizerTask* task = static_cast<RasterizerTask*>(it->get()); 180 RasterizerTask* task = static_cast<RasterizerTask*>(it->get());
177 181
178 task->WillComplete(); 182 task->WillComplete();
179 task->CompleteOnOriginThread(this); 183 task->CompleteOnOriginThread(this);
180 task->DidComplete(); 184 task->DidComplete();
181 185
182 task->RunReplyOnOriginThread(); 186 task->RunReplyOnOriginThread();
183 } 187 }
184 completed_tasks_.clear(); 188 completed_tasks_.clear();
185 } 189 }
186 190
187 scoped_ptr<RasterBuffer> ImageRasterWorkerPool::AcquireBufferForRaster( 191 scoped_ptr<RasterBuffer> ZeroCopyRasterWorkerPool::AcquireBufferForRaster(
188 const Resource* resource) { 192 const Resource* resource) {
189 // RasterBuffer implementation depends on an image having been acquired for 193 // RasterBuffer implementation depends on an image having been acquired for
190 // the resource. 194 // the resource.
191 resource_provider_->AcquireImage(resource->id()); 195 resource_provider_->AcquireImage(resource->id());
192 196
193 return make_scoped_ptr<RasterBuffer>( 197 return make_scoped_ptr<RasterBuffer>(
194 new RasterBufferImpl(resource_provider_, resource)); 198 new RasterBufferImpl(resource_provider_, resource));
195 } 199 }
196 200
197 void ImageRasterWorkerPool::ReleaseBufferForRaster( 201 void ZeroCopyRasterWorkerPool::ReleaseBufferForRaster(
198 scoped_ptr<RasterBuffer> buffer) { 202 scoped_ptr<RasterBuffer> buffer) {
199 // Nothing to do here. RasterBufferImpl destructor cleans up after itself. 203 // Nothing to do here. RasterBufferImpl destructor cleans up after itself.
200 } 204 }
201 205
202 void ImageRasterWorkerPool::OnRasterFinished(TaskSet task_set) { 206 void ZeroCopyRasterWorkerPool::OnRasterFinished(TaskSet task_set) {
203 TRACE_EVENT1( 207 TRACE_EVENT1(
204 "cc", "ImageRasterWorkerPool::OnRasterFinished", "task_set", task_set); 208 "cc", "ZeroCopyRasterWorkerPool::OnRasterFinished", "task_set", task_set);
205 209
206 DCHECK(raster_pending_[task_set]); 210 DCHECK(raster_pending_[task_set]);
207 raster_pending_[task_set] = false; 211 raster_pending_[task_set] = false;
208 if (raster_pending_.any()) { 212 if (raster_pending_.any()) {
209 TRACE_EVENT_ASYNC_STEP_INTO1( 213 TRACE_EVENT_ASYNC_STEP_INTO1(
210 "cc", "ScheduledTasks", this, "rasterizing", "state", StateAsValue()); 214 "cc", "ScheduledTasks", this, "rasterizing", "state", StateAsValue());
211 } else { 215 } else {
212 TRACE_EVENT_ASYNC_END0("cc", "ScheduledTasks", this); 216 TRACE_EVENT_ASYNC_END0("cc", "ScheduledTasks", this);
213 } 217 }
214 client_->DidFinishRunningTasks(task_set); 218 client_->DidFinishRunningTasks(task_set);
215 } 219 }
216 220
217 scoped_refptr<base::debug::ConvertableToTraceFormat> 221 scoped_refptr<base::debug::ConvertableToTraceFormat>
218 ImageRasterWorkerPool::StateAsValue() const { 222 ZeroCopyRasterWorkerPool::StateAsValue() const {
219 scoped_refptr<base::debug::TracedValue> state = 223 scoped_refptr<base::debug::TracedValue> state =
220 new base::debug::TracedValue(); 224 new base::debug::TracedValue();
221 225
222 state->BeginArray("tasks_pending"); 226 state->BeginArray("tasks_pending");
223 for (TaskSet task_set = 0; task_set < kNumberOfTaskSets; ++task_set) 227 for (TaskSet task_set = 0; task_set < kNumberOfTaskSets; ++task_set)
224 state->AppendBoolean(raster_pending_[task_set]); 228 state->AppendBoolean(raster_pending_[task_set]);
225 state->EndArray(); 229 state->EndArray();
226 return state; 230 return state;
227 } 231 }
228 232
229 } // namespace cc 233 } // namespace cc
OLDNEW
« no previous file with comments | « cc/resources/zero_copy_raster_worker_pool.h ('k') | cc/trees/layer_tree_host_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698