Index: cc/resources/image_raster_worker_pool.cc |
diff --git a/cc/resources/image_raster_worker_pool.cc b/cc/resources/image_raster_worker_pool.cc |
index d4ba08cc5bacc25ec9a06f55bdd749ed1882916a..55283660035badf1a5737ee2dfd10b04ad64fbb4 100644 |
--- a/cc/resources/image_raster_worker_pool.cc |
+++ b/cc/resources/image_raster_worker_pool.cc |
@@ -15,30 +15,33 @@ namespace cc { |
// static |
scoped_ptr<RasterWorkerPool> ImageRasterWorkerPool::Create( |
ResourceProvider* resource_provider, |
- ContextProvider* context_provider, |
unsigned texture_target) { |
return make_scoped_ptr<RasterWorkerPool>( |
new ImageRasterWorkerPool(GetTaskGraphRunner(), |
resource_provider, |
- context_provider, |
texture_target)); |
} |
ImageRasterWorkerPool::ImageRasterWorkerPool( |
internal::TaskGraphRunner* task_graph_runner, |
ResourceProvider* resource_provider, |
- ContextProvider* context_provider, |
unsigned texture_target) |
- : RasterWorkerPool(task_graph_runner, resource_provider, context_provider), |
+ : RasterWorkerPool(task_graph_runner, resource_provider), |
texture_target_(texture_target), |
raster_tasks_pending_(false), |
raster_tasks_required_for_activation_pending_(false) {} |
ImageRasterWorkerPool::~ImageRasterWorkerPool() {} |
-void ImageRasterWorkerPool::ScheduleTasks(RasterTask::Queue* queue) { |
+void ImageRasterWorkerPool::ScheduleTasks(RasterTaskQueue* queue) { |
TRACE_EVENT0("cc", "ImageRasterWorkerPool::ScheduleTasks"); |
+ DCHECK_EQ(queue->required_for_activation_count, |
+ static_cast<size_t>( |
+ std::count_if(queue->tasks.begin(), |
+ queue->tasks.end(), |
+ RasterTaskQueue::Task::IsRequiredForActivation))); |
+ |
if (!raster_tasks_pending_) |
TRACE_EVENT_ASYNC_BEGIN0("cc", "ScheduledTasks", this); |
@@ -52,32 +55,21 @@ void ImageRasterWorkerPool::ScheduleTasks(RasterTask::Queue* queue) { |
scoped_refptr<internal::WorkerPoolTask> |
new_raster_required_for_activation_finished_task( |
CreateRasterRequiredForActivationFinishedTask( |
- queue->required_for_activation_count())); |
+ queue->required_for_activation_count)); |
scoped_refptr<internal::WorkerPoolTask> new_raster_finished_task( |
CreateRasterFinishedTask()); |
- size_t raster_required_for_activation_finished_dependency_count = 0u; |
alokp
2014/02/14 18:50:59
Are these changes necessary in this patch?
reveman
2014/02/14 23:30:52
No but I think they should be included as the only
|
- size_t raster_finished_dependency_count = 0u; |
- |
- RasterTaskVector gpu_raster_tasks; |
for (RasterTaskQueueIterator it(queue); it; ++it) { |
internal::RasterWorkerPoolTask* task = *it; |
DCHECK(!task->HasCompleted()); |
- if (task->use_gpu_rasterization()) { |
- gpu_raster_tasks.push_back(task); |
- continue; |
- } |
- |
if (it.required_for_activation()) { |
- ++raster_required_for_activation_finished_dependency_count; |
graph_.edges.push_back(internal::TaskGraph::Edge( |
task, new_raster_required_for_activation_finished_task.get())); |
} |
InsertNodeForRasterTask(&graph_, task, task->dependencies(), priority++); |
- ++raster_finished_dependency_count; |
graph_.edges.push_back( |
internal::TaskGraph::Edge(task, new_raster_finished_task.get())); |
} |
@@ -85,11 +77,11 @@ void ImageRasterWorkerPool::ScheduleTasks(RasterTask::Queue* queue) { |
InsertNodeForTask(&graph_, |
new_raster_required_for_activation_finished_task.get(), |
kRasterRequiredForActivationFinishedTaskPriority, |
- raster_required_for_activation_finished_dependency_count); |
+ queue->required_for_activation_count); |
InsertNodeForTask(&graph_, |
new_raster_finished_task.get(), |
kRasterFinishedTaskPriority, |
- raster_finished_dependency_count); |
+ queue->tasks.size()); |
raster_tasks_.Swap(queue); |
@@ -99,9 +91,6 @@ void ImageRasterWorkerPool::ScheduleTasks(RasterTask::Queue* queue) { |
set_raster_required_for_activation_finished_task( |
new_raster_required_for_activation_finished_task); |
- if (!gpu_raster_tasks.empty()) |
- RunGpuRasterTasks(gpu_raster_tasks); |
- |
TRACE_EVENT_ASYNC_STEP_INTO1( |
"cc", |
"ScheduledTasks", |
@@ -136,31 +125,19 @@ void ImageRasterWorkerPool::CheckForCompletedTasks() { |
task->RunReplyOnOriginThread(); |
} |
completed_tasks_.clear(); |
- |
- CheckForCompletedGpuRasterTasks(); |
} |
SkCanvas* ImageRasterWorkerPool::AcquireCanvasForRaster( |
internal::RasterWorkerPoolTask* task) { |
- if (task->use_gpu_rasterization()) |
- return resource_provider()->MapDirectRasterBuffer(task->resource()->id()); |
- |
return resource_provider()->MapImageRasterBuffer(task->resource()->id()); |
} |
void ImageRasterWorkerPool::OnRasterCompleted( |
internal::RasterWorkerPoolTask* task, |
const PicturePileImpl::Analysis& analysis) { |
- if (task->use_gpu_rasterization()) { |
- resource_provider()->UnmapDirectRasterBuffer(task->resource()->id()); |
- return; |
- } |
resource_provider()->UnmapImageRasterBuffer(task->resource()->id()); |
} |
-void ImageRasterWorkerPool::OnImageDecodeCompleted( |
- internal::WorkerPoolTask* task) {} |
- |
void ImageRasterWorkerPool::OnRasterTasksFinished() { |
DCHECK(raster_tasks_pending_); |
raster_tasks_pending_ = false; |