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

Side by Side Diff: cc/resources/one_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/one_copy_raster_worker_pool.h ('k') | cc/resources/raster_worker_pool_perftest.cc » ('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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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_copy_raster_worker_pool.h" 5 #include "cc/resources/one_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_pool.h" 14 #include "cc/resources/resource_pool.h"
15 #include "cc/resources/scoped_resource.h" 15 #include "cc/resources/scoped_resource.h"
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
77 uint8_t* buffer_; 77 uint8_t* buffer_;
78 int stride_; 78 int stride_;
79 SkBitmap bitmap_; 79 SkBitmap bitmap_;
80 80
81 DISALLOW_COPY_AND_ASSIGN(RasterBufferImpl); 81 DISALLOW_COPY_AND_ASSIGN(RasterBufferImpl);
82 }; 82 };
83 83
84 } // namespace 84 } // namespace
85 85
86 // static 86 // static
87 scoped_ptr<RasterWorkerPool> ImageCopyRasterWorkerPool::Create( 87 scoped_ptr<RasterWorkerPool> OneCopyRasterWorkerPool::Create(
88 base::SequencedTaskRunner* task_runner, 88 base::SequencedTaskRunner* task_runner,
89 TaskGraphRunner* task_graph_runner, 89 TaskGraphRunner* task_graph_runner,
90 ContextProvider* context_provider, 90 ContextProvider* context_provider,
91 ResourceProvider* resource_provider, 91 ResourceProvider* resource_provider,
92 ResourcePool* resource_pool) { 92 ResourcePool* resource_pool) {
93 return make_scoped_ptr<RasterWorkerPool>( 93 return make_scoped_ptr<RasterWorkerPool>(
94 new ImageCopyRasterWorkerPool(task_runner, 94 new OneCopyRasterWorkerPool(task_runner,
95 task_graph_runner, 95 task_graph_runner,
96 context_provider, 96 context_provider,
97 resource_provider, 97 resource_provider,
98 resource_pool)); 98 resource_pool));
99 } 99 }
100 100
101 ImageCopyRasterWorkerPool::ImageCopyRasterWorkerPool( 101 OneCopyRasterWorkerPool::OneCopyRasterWorkerPool(
102 base::SequencedTaskRunner* task_runner, 102 base::SequencedTaskRunner* task_runner,
103 TaskGraphRunner* task_graph_runner, 103 TaskGraphRunner* task_graph_runner,
104 ContextProvider* context_provider, 104 ContextProvider* context_provider,
105 ResourceProvider* resource_provider, 105 ResourceProvider* resource_provider,
106 ResourcePool* resource_pool) 106 ResourcePool* resource_pool)
107 : task_runner_(task_runner), 107 : task_runner_(task_runner),
108 task_graph_runner_(task_graph_runner), 108 task_graph_runner_(task_graph_runner),
109 namespace_token_(task_graph_runner->GetNamespaceToken()), 109 namespace_token_(task_graph_runner->GetNamespaceToken()),
110 context_provider_(context_provider), 110 context_provider_(context_provider),
111 resource_provider_(resource_provider), 111 resource_provider_(resource_provider),
112 resource_pool_(resource_pool), 112 resource_pool_(resource_pool),
113 raster_finished_weak_ptr_factory_(this) { 113 raster_finished_weak_ptr_factory_(this) {
114 DCHECK(context_provider_); 114 DCHECK(context_provider_);
115 } 115 }
116 116
117 ImageCopyRasterWorkerPool::~ImageCopyRasterWorkerPool() { 117 OneCopyRasterWorkerPool::~OneCopyRasterWorkerPool() {
118 } 118 }
119 119
120 Rasterizer* ImageCopyRasterWorkerPool::AsRasterizer() { return this; } 120 Rasterizer* OneCopyRasterWorkerPool::AsRasterizer() {
121 return this;
122 }
121 123
122 void ImageCopyRasterWorkerPool::SetClient(RasterizerClient* client) { 124 void OneCopyRasterWorkerPool::SetClient(RasterizerClient* client) {
123 client_ = client; 125 client_ = client;
124 } 126 }
125 127
126 void ImageCopyRasterWorkerPool::Shutdown() { 128 void OneCopyRasterWorkerPool::Shutdown() {
127 TRACE_EVENT0("cc", "ImageCopyRasterWorkerPool::Shutdown"); 129 TRACE_EVENT0("cc", "OneCopyRasterWorkerPool::Shutdown");
128 130
129 TaskGraph empty; 131 TaskGraph empty;
130 task_graph_runner_->ScheduleTasks(namespace_token_, &empty); 132 task_graph_runner_->ScheduleTasks(namespace_token_, &empty);
131 task_graph_runner_->WaitForTasksToFinishRunning(namespace_token_); 133 task_graph_runner_->WaitForTasksToFinishRunning(namespace_token_);
132 } 134 }
133 135
134 void ImageCopyRasterWorkerPool::ScheduleTasks(RasterTaskQueue* queue) { 136 void OneCopyRasterWorkerPool::ScheduleTasks(RasterTaskQueue* queue) {
135 TRACE_EVENT0("cc", "ImageCopyRasterWorkerPool::ScheduleTasks"); 137 TRACE_EVENT0("cc", "OneCopyRasterWorkerPool::ScheduleTasks");
136 138
137 if (raster_pending_.none()) 139 if (raster_pending_.none())
138 TRACE_EVENT_ASYNC_BEGIN0("cc", "ScheduledTasks", this); 140 TRACE_EVENT_ASYNC_BEGIN0("cc", "ScheduledTasks", this);
139 141
140 // Mark all task sets as pending. 142 // Mark all task sets as pending.
141 raster_pending_.set(); 143 raster_pending_.set();
142 144
143 unsigned priority = kRasterTaskPriorityBase; 145 unsigned priority = kRasterTaskPriorityBase;
144 146
145 graph_.Reset(); 147 graph_.Reset();
146 148
147 // Cancel existing OnRasterFinished callbacks. 149 // Cancel existing OnRasterFinished callbacks.
148 raster_finished_weak_ptr_factory_.InvalidateWeakPtrs(); 150 raster_finished_weak_ptr_factory_.InvalidateWeakPtrs();
149 151
150 scoped_refptr<RasterizerTask> new_raster_finished_tasks[kNumberOfTaskSets]; 152 scoped_refptr<RasterizerTask> new_raster_finished_tasks[kNumberOfTaskSets];
151 153
152 size_t task_count[kNumberOfTaskSets] = {0}; 154 size_t task_count[kNumberOfTaskSets] = {0};
153 155
154 for (TaskSet task_set = 0; task_set < kNumberOfTaskSets; ++task_set) { 156 for (TaskSet task_set = 0; task_set < kNumberOfTaskSets; ++task_set) {
155 new_raster_finished_tasks[task_set] = CreateRasterFinishedTask( 157 new_raster_finished_tasks[task_set] = CreateRasterFinishedTask(
156 task_runner_.get(), 158 task_runner_.get(),
157 base::Bind(&ImageCopyRasterWorkerPool::OnRasterFinished, 159 base::Bind(&OneCopyRasterWorkerPool::OnRasterFinished,
158 raster_finished_weak_ptr_factory_.GetWeakPtr(), 160 raster_finished_weak_ptr_factory_.GetWeakPtr(),
159 task_set)); 161 task_set));
160 } 162 }
161 163
162 resource_pool_->CheckBusyResources(); 164 resource_pool_->CheckBusyResources();
163 165
164 for (RasterTaskQueue::Item::Vector::const_iterator it = queue->items.begin(); 166 for (RasterTaskQueue::Item::Vector::const_iterator it = queue->items.begin();
165 it != queue->items.end(); 167 it != queue->items.end();
166 ++it) { 168 ++it) {
167 const RasterTaskQueue::Item& item = *it; 169 const RasterTaskQueue::Item& item = *it;
(...skipping 26 matching lines...) Expand all
194 std::copy(new_raster_finished_tasks, 196 std::copy(new_raster_finished_tasks,
195 new_raster_finished_tasks + kNumberOfTaskSets, 197 new_raster_finished_tasks + kNumberOfTaskSets,
196 raster_finished_tasks_); 198 raster_finished_tasks_);
197 199
198 resource_pool_->ReduceResourceUsage(); 200 resource_pool_->ReduceResourceUsage();
199 201
200 TRACE_EVENT_ASYNC_STEP_INTO1( 202 TRACE_EVENT_ASYNC_STEP_INTO1(
201 "cc", "ScheduledTasks", this, "rasterizing", "state", StateAsValue()); 203 "cc", "ScheduledTasks", this, "rasterizing", "state", StateAsValue());
202 } 204 }
203 205
204 void ImageCopyRasterWorkerPool::CheckForCompletedTasks() { 206 void OneCopyRasterWorkerPool::CheckForCompletedTasks() {
205 TRACE_EVENT0("cc", "ImageCopyRasterWorkerPool::CheckForCompletedTasks"); 207 TRACE_EVENT0("cc", "OneCopyRasterWorkerPool::CheckForCompletedTasks");
206 208
207 task_graph_runner_->CollectCompletedTasks(namespace_token_, 209 task_graph_runner_->CollectCompletedTasks(namespace_token_,
208 &completed_tasks_); 210 &completed_tasks_);
209 for (Task::Vector::const_iterator it = completed_tasks_.begin(); 211 for (Task::Vector::const_iterator it = completed_tasks_.begin();
210 it != completed_tasks_.end(); 212 it != completed_tasks_.end();
211 ++it) { 213 ++it) {
212 RasterizerTask* task = static_cast<RasterizerTask*>(it->get()); 214 RasterizerTask* task = static_cast<RasterizerTask*>(it->get());
213 215
214 task->WillComplete(); 216 task->WillComplete();
215 task->CompleteOnOriginThread(this); 217 task->CompleteOnOriginThread(this);
216 task->DidComplete(); 218 task->DidComplete();
217 219
218 task->RunReplyOnOriginThread(); 220 task->RunReplyOnOriginThread();
219 } 221 }
220 completed_tasks_.clear(); 222 completed_tasks_.clear();
221 223
222 context_provider_->ContextGL()->ShallowFlushCHROMIUM(); 224 context_provider_->ContextGL()->ShallowFlushCHROMIUM();
223 } 225 }
224 226
225 scoped_ptr<RasterBuffer> ImageCopyRasterWorkerPool::AcquireBufferForRaster( 227 scoped_ptr<RasterBuffer> OneCopyRasterWorkerPool::AcquireBufferForRaster(
226 const Resource* resource) { 228 const Resource* resource) {
227 DCHECK_EQ(resource->format(), resource_pool_->resource_format()); 229 DCHECK_EQ(resource->format(), resource_pool_->resource_format());
228 return make_scoped_ptr<RasterBuffer>( 230 return make_scoped_ptr<RasterBuffer>(
229 new RasterBufferImpl(resource_provider_, resource_pool_, resource)); 231 new RasterBufferImpl(resource_provider_, resource_pool_, resource));
230 } 232 }
231 233
232 void ImageCopyRasterWorkerPool::ReleaseBufferForRaster( 234 void OneCopyRasterWorkerPool::ReleaseBufferForRaster(
233 scoped_ptr<RasterBuffer> buffer) { 235 scoped_ptr<RasterBuffer> buffer) {
234 // Nothing to do here. RasterBufferImpl destructor cleans up after itself. 236 // Nothing to do here. RasterBufferImpl destructor cleans up after itself.
235 } 237 }
236 238
237 void ImageCopyRasterWorkerPool::OnRasterFinished(TaskSet task_set) { 239 void OneCopyRasterWorkerPool::OnRasterFinished(TaskSet task_set) {
238 TRACE_EVENT1("cc", 240 TRACE_EVENT1(
239 "ImageCopyRasterWorkerPool::OnRasterFinished", 241 "cc", "OneCopyRasterWorkerPool::OnRasterFinished", "task_set", task_set);
240 "task_set",
241 task_set);
242 242
243 DCHECK(raster_pending_[task_set]); 243 DCHECK(raster_pending_[task_set]);
244 raster_pending_[task_set] = false; 244 raster_pending_[task_set] = false;
245 if (raster_pending_.any()) { 245 if (raster_pending_.any()) {
246 TRACE_EVENT_ASYNC_STEP_INTO1( 246 TRACE_EVENT_ASYNC_STEP_INTO1(
247 "cc", "ScheduledTasks", this, "rasterizing", "state", StateAsValue()); 247 "cc", "ScheduledTasks", this, "rasterizing", "state", StateAsValue());
248 } else { 248 } else {
249 TRACE_EVENT_ASYNC_END0("cc", "ScheduledTasks", this); 249 TRACE_EVENT_ASYNC_END0("cc", "ScheduledTasks", this);
250 } 250 }
251 client_->DidFinishRunningTasks(task_set); 251 client_->DidFinishRunningTasks(task_set);
252 } 252 }
253 253
254 scoped_refptr<base::debug::ConvertableToTraceFormat> 254 scoped_refptr<base::debug::ConvertableToTraceFormat>
255 ImageCopyRasterWorkerPool::StateAsValue() const { 255 OneCopyRasterWorkerPool::StateAsValue() const {
256 scoped_refptr<base::debug::TracedValue> state = 256 scoped_refptr<base::debug::TracedValue> state =
257 new base::debug::TracedValue(); 257 new base::debug::TracedValue();
258 258
259 state->BeginArray("tasks_pending"); 259 state->BeginArray("tasks_pending");
260 for (TaskSet task_set = 0; task_set < kNumberOfTaskSets; ++task_set) 260 for (TaskSet task_set = 0; task_set < kNumberOfTaskSets; ++task_set)
261 state->AppendBoolean(raster_pending_[task_set]); 261 state->AppendBoolean(raster_pending_[task_set]);
262 state->EndArray(); 262 state->EndArray();
263 state->BeginDictionary("staging_state"); 263 state->BeginDictionary("staging_state");
264 StagingStateAsValueInto(state.get()); 264 StagingStateAsValueInto(state.get());
265 state->EndDictionary(); 265 state->EndDictionary();
266 266
267 return state; 267 return state;
268 } 268 }
269 void ImageCopyRasterWorkerPool::StagingStateAsValueInto( 269 void OneCopyRasterWorkerPool::StagingStateAsValueInto(
270 base::debug::TracedValue* staging_state) const { 270 base::debug::TracedValue* staging_state) const {
271 staging_state->SetInteger("staging_resource_count", 271 staging_state->SetInteger("staging_resource_count",
272 resource_pool_->total_resource_count()); 272 resource_pool_->total_resource_count());
273 staging_state->SetInteger("bytes_used_for_staging_resources", 273 staging_state->SetInteger("bytes_used_for_staging_resources",
274 resource_pool_->total_memory_usage_bytes()); 274 resource_pool_->total_memory_usage_bytes());
275 staging_state->SetInteger("pending_copy_count", 275 staging_state->SetInteger("pending_copy_count",
276 resource_pool_->total_resource_count() - 276 resource_pool_->total_resource_count() -
277 resource_pool_->acquired_resource_count()); 277 resource_pool_->acquired_resource_count());
278 staging_state->SetInteger("bytes_pending_copy", 278 staging_state->SetInteger("bytes_pending_copy",
279 resource_pool_->total_memory_usage_bytes() - 279 resource_pool_->total_memory_usage_bytes() -
280 resource_pool_->acquired_memory_usage_bytes()); 280 resource_pool_->acquired_memory_usage_bytes());
281 } 281 }
282 282
283 } // namespace cc 283 } // namespace cc
OLDNEW
« no previous file with comments | « cc/resources/one_copy_raster_worker_pool.h ('k') | cc/resources/raster_worker_pool_perftest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698