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

Unified Diff: cc/resources/gpu_raster_worker_pool.cc

Issue 733773005: cc: GPU rasterize tiles synchronously in PrepareToDraw (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Pull BuildRasterQueue out of AssignGpuMemoryToTiles. Created 6 years, 1 month 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/resources/gpu_raster_worker_pool.h ('k') | cc/resources/one_copy_raster_worker_pool.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/resources/gpu_raster_worker_pool.cc
diff --git a/cc/resources/gpu_raster_worker_pool.cc b/cc/resources/gpu_raster_worker_pool.cc
index d29855ad5c150c92cf64791e607c50fb14cb7043..971c4a09218113a642d9a298d570f060f24724af 100644
--- a/cc/resources/gpu_raster_worker_pool.cc
+++ b/cc/resources/gpu_raster_worker_pool.cc
@@ -124,6 +124,29 @@ void GpuRasterWorkerPool::Shutdown() {
task_graph_runner_->WaitForTasksToFinishRunning(namespace_token_);
}
+void GpuRasterWorkerPool::RunTasks(RasterTaskQueue* queue) {
+ ScopedGpuRaster gpu_raster(context_provider_);
+
+ for (auto& item : queue->items) {
+ RasterTask* task = item.task;
+ DCHECK(!task->HasCompleted());
+
+ task->WillSchedule();
+ task->ScheduleOnOriginThread(this);
+ task->DidSchedule();
+
+ task->WillRun();
+ task->RunOnWorkerThread();
+ task->DidRun();
+
+ completed_tasks_.push_back(task);
+ }
+
+ multi_picture_draw_.draw();
+
+ CompleteTasks(completed_tasks_);
+}
+
void GpuRasterWorkerPool::ScheduleTasks(RasterTaskQueue* queue) {
TRACE_EVENT0("cc", "GpuRasterWorkerPool::ScheduleTasks");
@@ -191,16 +214,19 @@ void GpuRasterWorkerPool::CheckForCompletedTasks() {
task_graph_runner_->CollectCompletedTasks(namespace_token_,
&completed_tasks_);
- for (Task::Vector::const_iterator it = completed_tasks_.begin();
- it != completed_tasks_.end();
- ++it) {
- RasterizerTask* task = static_cast<RasterizerTask*>(it->get());
+ CompleteTasks(completed_tasks_);
+ completed_tasks_.clear();
vmiura 2014/11/20 01:48:42 Since CompleteTasks() calls completed_tasks_.clear
ernstm 2014/11/20 01:57:01 Done.
+}
+
+void GpuRasterWorkerPool::CompleteTasks(const Task::Vector& tasks) {
+ for (auto& task : tasks) {
+ RasterTask* raster_task = static_cast<RasterTask*>(task.get());
- task->WillComplete();
- task->CompleteOnOriginThread(this);
- task->DidComplete();
+ raster_task->WillComplete();
+ raster_task->CompleteOnOriginThread(this);
+ raster_task->DidComplete();
- task->RunReplyOnOriginThread();
+ raster_task->RunReplyOnOriginThread();
}
completed_tasks_.clear();
}
« no previous file with comments | « cc/resources/gpu_raster_worker_pool.h ('k') | cc/resources/one_copy_raster_worker_pool.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698