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

Unified Diff: cc/resources/pixel_buffer_raster_worker_pool.cc

Issue 110883015: Add preliminary support for hw-accelerated tile rasterization. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: complete gpu tasks at appropriate time Created 7 years 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
Index: cc/resources/pixel_buffer_raster_worker_pool.cc
diff --git a/cc/resources/pixel_buffer_raster_worker_pool.cc b/cc/resources/pixel_buffer_raster_worker_pool.cc
index 011e5147e066e4c3e294aceb14ae22bc0b931f31..d72e5a4b12c64e63b6f9e537ef485e8de45a2dcf 100644
--- a/cc/resources/pixel_buffer_raster_worker_pool.cc
+++ b/cc/resources/pixel_buffer_raster_worker_pool.cc
@@ -91,9 +91,10 @@ bool WasCanceled(const internal::RasterWorkerPoolTask* task) {
PixelBufferRasterWorkerPool::PixelBufferRasterWorkerPool(
ResourceProvider* resource_provider,
+ ContextProvider* context_provider,
size_t num_threads,
size_t max_transfer_buffer_usage_bytes)
- : RasterWorkerPool(resource_provider, num_threads),
+ : RasterWorkerPool(resource_provider, context_provider, num_threads),
shutdown_(false),
scheduled_raster_task_count_(0),
bytes_pending_upload_(0),
@@ -149,6 +150,7 @@ void PixelBufferRasterWorkerPool::ScheduleTasks(RasterTask::Queue* queue) {
// Build new pixel buffer task set.
TaskMap new_pixel_buffer_tasks;
+ RasterTaskVector gpu_raster_tasks;
for (RasterTaskVector::const_iterator it = raster_tasks().begin();
it != raster_tasks().end(); ++it) {
internal::RasterWorkerPoolTask* task = it->get();
@@ -156,6 +158,11 @@ void PixelBufferRasterWorkerPool::ScheduleTasks(RasterTask::Queue* queue) {
DCHECK(!task->HasCompleted());
DCHECK(!task->WasCanceled());
+ if (task->use_gpu_rasterization()) {
+ gpu_raster_tasks.push_back(task);
+ continue;
+ }
+
new_pixel_buffer_tasks[task] = pixel_buffer_tasks_[task];
pixel_buffer_tasks_.erase(task);
@@ -212,6 +219,8 @@ void PixelBufferRasterWorkerPool::ScheduleTasks(RasterTask::Queue* queue) {
check_for_completed_raster_tasks_pending_ = false;
ScheduleCheckForCompletedRasterTasks();
+ RunGpuRasterTasks(&gpu_raster_tasks);
+
TRACE_EVENT_ASYNC_STEP_INTO1(
"cc", "ScheduledTasks", this, StateName(),
"state", TracedValue::FromValue(StateAsValue().release()));
@@ -584,6 +593,7 @@ void PixelBufferRasterWorkerPool::OnRasterTaskCompleted(
"was_canceled", was_canceled,
"needs_upload", needs_upload);
+ DCHECK(!task->use_gpu_rasterization());
DCHECK(pixel_buffer_tasks_.find(task.get()) != pixel_buffer_tasks_.end());
// Balanced with MapPixelBuffer() call in ScheduleMoreTasks().

Powered by Google App Engine
This is Rietveld 408576698