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

Side by Side Diff: cc/resources/pixel_buffer_tile_task_worker_pool.cc

Issue 943813002: cc: Add TaskGraphRunner sub-namespaces with task concurrency limits. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/pixel_buffer_tile_task_worker_pool.h" 5 #include "cc/resources/pixel_buffer_tile_task_worker_pool.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/containers/stack_container.h" 9 #include "base/containers/stack_container.h"
10 #include "base/strings/stringprintf.h" 10 #include "base/strings/stringprintf.h"
(...skipping 540 matching lines...) Expand 10 before | Expand all | Expand 10 after
551 } 551 }
552 552
553 // Update |bytes_pending_upload| now that task has cleared all 553 // Update |bytes_pending_upload| now that task has cleared all
554 // throttling limits. 554 // throttling limits.
555 bytes_pending_upload = new_bytes_pending_upload; 555 bytes_pending_upload = new_bytes_pending_upload;
556 556
557 DCHECK(state.type == RasterTaskState::UNSCHEDULED || 557 DCHECK(state.type == RasterTaskState::UNSCHEDULED ||
558 state.type == RasterTaskState::SCHEDULED); 558 state.type == RasterTaskState::SCHEDULED);
559 state.type = RasterTaskState::SCHEDULED; 559 state.type = RasterTaskState::SCHEDULED;
560 560
561 InsertNodesForRasterTask(&graph_, task, task->dependencies(), priority++); 561 InsertNodesForRasterTask(&graph_, task, task->dependencies(), priority++,
562 kDefaultSubNamespace, kDefaultMaxConcurrentTasks);
562 563
563 ++scheduled_raster_task_count; 564 ++scheduled_raster_task_count;
564 for (TaskSet task_set = 0; task_set < kNumberOfTaskSets; ++task_set) { 565 for (TaskSet task_set = 0; task_set < kNumberOfTaskSets; ++task_set) {
565 if (item.task_sets[task_set]) 566 if (item.task_sets[task_set])
566 tasks[task_set].container().push_back(task); 567 tasks[task_set].container().push_back(task);
567 } 568 }
568 } 569 }
569 570
570 // Cancel existing OnTaskSetFinished callbacks. 571 // Cancel existing OnTaskSetFinished callbacks.
571 task_set_finished_weak_ptr_factory_.InvalidateWeakPtrs(); 572 task_set_finished_weak_ptr_factory_.InvalidateWeakPtrs();
(...skipping 10 matching lines...) Expand all
582 if (!did_throttle_raster_tasks[task_set] && 583 if (!did_throttle_raster_tasks[task_set] &&
583 should_notify_client_if_no_tasks_are_pending_[task_set]) { 584 should_notify_client_if_no_tasks_are_pending_[task_set]) {
584 new_task_set_finished_tasks[task_set] = CreateTaskSetFinishedTask( 585 new_task_set_finished_tasks[task_set] = CreateTaskSetFinishedTask(
585 task_runner_.get(), 586 task_runner_.get(),
586 base::Bind(&PixelBufferTileTaskWorkerPool::OnTaskSetFinished, 587 base::Bind(&PixelBufferTileTaskWorkerPool::OnTaskSetFinished,
587 task_set_finished_weak_ptr_factory_.GetWeakPtr(), 588 task_set_finished_weak_ptr_factory_.GetWeakPtr(),
588 task_set)); 589 task_set));
589 task_set_finished_tasks_pending_[task_set] = true; 590 task_set_finished_tasks_pending_[task_set] = true;
590 InsertNodeForTask(&graph_, new_task_set_finished_tasks[task_set].get(), 591 InsertNodeForTask(&graph_, new_task_set_finished_tasks[task_set].get(),
591 kTaskSetFinishedTaskPriorityBase + task_set, 592 kTaskSetFinishedTaskPriorityBase + task_set,
592 scheduled_task_counts[task_set]); 593 scheduled_task_counts[task_set], kDefaultSubNamespace,
594 kDefaultMaxConcurrentTasks);
593 for (RasterTaskVector::ContainerType::const_iterator it = 595 for (RasterTaskVector::ContainerType::const_iterator it =
594 tasks[task_set].container().begin(); 596 tasks[task_set].container().begin();
595 it != tasks[task_set].container().end(); ++it) { 597 it != tasks[task_set].container().end(); ++it) {
596 graph_.edges.push_back( 598 graph_.edges.push_back(
597 TaskGraph::Edge(*it, new_task_set_finished_tasks[task_set].get())); 599 TaskGraph::Edge(*it, new_task_set_finished_tasks[task_set].get()));
598 } 600 }
599 } 601 }
600 } 602 }
601 603
602 DCHECK_LE(scheduled_raster_task_count, PendingRasterTaskCount()); 604 DCHECK_LE(scheduled_raster_task_count, PendingRasterTaskCount());
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
721 void PixelBufferTileTaskWorkerPool::ThrottleStateAsValueInto( 723 void PixelBufferTileTaskWorkerPool::ThrottleStateAsValueInto(
722 base::trace_event::TracedValue* throttle_state) const { 724 base::trace_event::TracedValue* throttle_state) const {
723 throttle_state->SetInteger("bytes_available_for_upload", 725 throttle_state->SetInteger("bytes_available_for_upload",
724 max_bytes_pending_upload_ - bytes_pending_upload_); 726 max_bytes_pending_upload_ - bytes_pending_upload_);
725 throttle_state->SetInteger("bytes_pending_upload", bytes_pending_upload_); 727 throttle_state->SetInteger("bytes_pending_upload", bytes_pending_upload_);
726 throttle_state->SetInteger("scheduled_raster_task_count", 728 throttle_state->SetInteger("scheduled_raster_task_count",
727 scheduled_raster_task_count_); 729 scheduled_raster_task_count_);
728 } 730 }
729 731
730 } // namespace cc 732 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698