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

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: task completion callback 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 ec65214c15ee9232bb7ef71b283ec727ab98a89e..10860d727bf6fd032b92d2fafca5599de4b12c28 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),
@@ -118,7 +119,7 @@ PixelBufferRasterWorkerPool::~PixelBufferRasterWorkerPool() {
void PixelBufferRasterWorkerPool::Shutdown() {
shutdown_ = true;
RasterWorkerPool::Shutdown();
- RasterWorkerPool::CheckForCompletedTasks();
+ CheckForCompletedWorkerTasks();
CheckForCompletedUploads();
check_for_completed_raster_tasks_callback_.Cancel();
check_for_completed_raster_tasks_pending_ = false;
@@ -151,6 +152,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();
@@ -158,6 +160,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);
@@ -201,7 +208,7 @@ void PixelBufferRasterWorkerPool::ScheduleTasks(RasterTask::Queue* queue) {
// Check for completed tasks when ScheduleTasks() is called as
// priorities might have changed and this maximizes the number
// of top priority tasks that are scheduled.
- RasterWorkerPool::CheckForCompletedTasks();
+ CheckForCompletedWorkerTasks();
CheckForCompletedUploads();
FlushUploads();
@@ -214,6 +221,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()));
@@ -383,7 +392,7 @@ void PixelBufferRasterWorkerPool::CheckForCompletedRasterTasks() {
check_for_completed_raster_tasks_callback_.Cancel();
check_for_completed_raster_tasks_pending_ = false;
- RasterWorkerPool::CheckForCompletedTasks();
+ CheckForCompletedWorkerTasks();
CheckForCompletedUploads();
FlushUploads();
@@ -592,6 +601,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