| Index: content/renderer/categorized_worker_pool.cc
|
| diff --git a/content/renderer/raster_worker_pool.cc b/content/renderer/categorized_worker_pool.cc
|
| similarity index 81%
|
| rename from content/renderer/raster_worker_pool.cc
|
| rename to content/renderer/categorized_worker_pool.cc
|
| index 8c50e01b3b973bb989c8ace4a570f6289b814d5c..41814b4bcd324b2c0f2af1d20b45cc570a4afb35 100644
|
| --- a/content/renderer/raster_worker_pool.cc
|
| +++ b/content/renderer/categorized_worker_pool.cc
|
| @@ -2,7 +2,7 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "content/renderer/raster_worker_pool.h"
|
| +#include "content/renderer/categorized_worker_pool.h"
|
|
|
| #include <string>
|
| #include <utility>
|
| @@ -17,15 +17,16 @@
|
| namespace content {
|
| namespace {
|
|
|
| -// A thread which forwards to RasterWorkerPool::Run with the runnable
|
| +// A thread which forwards to CategorizedWorkerPool::Run with the runnable
|
| // categories.
|
| -class RasterWorkerPoolThread : public base::SimpleThread {
|
| +class CategorizedWorkerPoolThread : public base::SimpleThread {
|
| public:
|
| - RasterWorkerPoolThread(const std::string& name_prefix,
|
| - const Options& options,
|
| - RasterWorkerPool* pool,
|
| - std::vector<cc::TaskCategory> categories,
|
| - base::ConditionVariable* has_ready_to_run_tasks_cv)
|
| + CategorizedWorkerPoolThread(
|
| + const std::string& name_prefix,
|
| + const Options& options,
|
| + CategorizedWorkerPool* pool,
|
| + std::vector<cc::TaskCategory> categories,
|
| + base::ConditionVariable* has_ready_to_run_tasks_cv)
|
| : SimpleThread(name_prefix, options),
|
| pool_(pool),
|
| categories_(categories),
|
| @@ -34,18 +35,18 @@ class RasterWorkerPoolThread : public base::SimpleThread {
|
| void Run() override { pool_->Run(categories_, has_ready_to_run_tasks_cv_); }
|
|
|
| private:
|
| - RasterWorkerPool* const pool_;
|
| + CategorizedWorkerPool* const pool_;
|
| const std::vector<cc::TaskCategory> categories_;
|
| base::ConditionVariable* const has_ready_to_run_tasks_cv_;
|
| };
|
|
|
| } // namespace
|
|
|
| -// A sequenced task runner which posts tasks to a RasterWorkerPool.
|
| -class RasterWorkerPool::RasterWorkerPoolSequencedTaskRunner
|
| +// A sequenced task runner which posts tasks to a CategorizedWorkerPool.
|
| +class CategorizedWorkerPool::CategorizedWorkerPoolSequencedTaskRunner
|
| : public base::SequencedTaskRunner {
|
| public:
|
| - explicit RasterWorkerPoolSequencedTaskRunner(
|
| + explicit CategorizedWorkerPoolSequencedTaskRunner(
|
| cc::TaskGraphRunner* task_graph_runner)
|
| : task_graph_runner_(task_graph_runner),
|
| namespace_token_(task_graph_runner->GetNamespaceToken()) {}
|
| @@ -95,7 +96,7 @@ class RasterWorkerPool::RasterWorkerPoolSequencedTaskRunner
|
| }
|
|
|
| private:
|
| - ~RasterWorkerPoolSequencedTaskRunner() override {
|
| + ~CategorizedWorkerPoolSequencedTaskRunner() override {
|
| task_graph_runner_->WaitForTasksToFinishRunning(namespace_token_);
|
| task_graph_runner_->CollectCompletedTasks(namespace_token_,
|
| &completed_tasks_);
|
| @@ -117,14 +118,14 @@ class RasterWorkerPool::RasterWorkerPoolSequencedTaskRunner
|
| cc::Task::Vector completed_tasks_;
|
| };
|
|
|
| -RasterWorkerPool::RasterWorkerPool()
|
| +CategorizedWorkerPool::CategorizedWorkerPool()
|
| : namespace_token_(GetNamespaceToken()),
|
| has_ready_to_run_foreground_tasks_cv_(&lock_),
|
| has_ready_to_run_background_tasks_cv_(&lock_),
|
| has_namespaces_with_finished_running_tasks_cv_(&lock_),
|
| shutdown_(false) {}
|
|
|
| -void RasterWorkerPool::Start(int num_threads) {
|
| +void CategorizedWorkerPool::Start(int num_threads) {
|
| DCHECK(threads_.empty());
|
|
|
| // Start |num_threads| threads for foreground work, including nonconcurrent
|
| @@ -134,7 +135,7 @@ void RasterWorkerPool::Start(int num_threads) {
|
| foreground_categories.push_back(cc::TASK_CATEGORY_FOREGROUND);
|
|
|
| for (int i = 0; i < num_threads; i++) {
|
| - std::unique_ptr<base::SimpleThread> thread(new RasterWorkerPoolThread(
|
| + std::unique_ptr<base::SimpleThread> thread(new CategorizedWorkerPoolThread(
|
| base::StringPrintf("CompositorTileWorker%u",
|
| static_cast<unsigned>(threads_.size() + 1))
|
| .c_str(),
|
| @@ -154,14 +155,14 @@ void RasterWorkerPool::Start(int num_threads) {
|
| thread_options.set_priority(base::ThreadPriority::BACKGROUND);
|
| #endif
|
|
|
| - std::unique_ptr<base::SimpleThread> thread(new RasterWorkerPoolThread(
|
| + std::unique_ptr<base::SimpleThread> thread(new CategorizedWorkerPoolThread(
|
| "CompositorTileWorkerBackground", thread_options, this,
|
| background_categories, &has_ready_to_run_background_tasks_cv_));
|
| thread->Start();
|
| threads_.push_back(std::move(thread));
|
| }
|
|
|
| -void RasterWorkerPool::Shutdown() {
|
| +void CategorizedWorkerPool::Shutdown() {
|
| WaitForTasksToFinishRunning(namespace_token_);
|
| CollectCompletedTasks(namespace_token_, &completed_tasks_);
|
| // Shutdown raster threads.
|
| @@ -185,7 +186,7 @@ void RasterWorkerPool::Shutdown() {
|
| }
|
|
|
| // Overridden from base::TaskRunner:
|
| -bool RasterWorkerPool::PostDelayedTask(
|
| +bool CategorizedWorkerPool::PostDelayedTask(
|
| const tracked_objects::Location& from_here,
|
| const base::Closure& task,
|
| base::TimeDelta delay) {
|
| @@ -218,12 +219,13 @@ bool RasterWorkerPool::PostDelayedTask(
|
| return true;
|
| }
|
|
|
| -bool RasterWorkerPool::RunsTasksOnCurrentThread() const {
|
| +bool CategorizedWorkerPool::RunsTasksOnCurrentThread() const {
|
| return true;
|
| }
|
|
|
| -void RasterWorkerPool::Run(const std::vector<cc::TaskCategory>& categories,
|
| - base::ConditionVariable* has_ready_to_run_tasks_cv) {
|
| +void CategorizedWorkerPool::Run(
|
| + const std::vector<cc::TaskCategory>& categories,
|
| + base::ConditionVariable* has_ready_to_run_tasks_cv) {
|
| base::AutoLock lock(lock_);
|
|
|
| while (true) {
|
| @@ -243,7 +245,7 @@ void RasterWorkerPool::Run(const std::vector<cc::TaskCategory>& categories,
|
| }
|
| }
|
|
|
| -void RasterWorkerPool::FlushForTesting() {
|
| +void CategorizedWorkerPool::FlushForTesting() {
|
| base::AutoLock lock(lock_);
|
|
|
| while (!work_queue_.HasFinishedRunningTasksInAllNamespaces()) {
|
| @@ -252,21 +254,21 @@ void RasterWorkerPool::FlushForTesting() {
|
| }
|
|
|
| scoped_refptr<base::SequencedTaskRunner>
|
| -RasterWorkerPool::CreateSequencedTaskRunner() {
|
| - return new RasterWorkerPoolSequencedTaskRunner(this);
|
| +CategorizedWorkerPool::CreateSequencedTaskRunner() {
|
| + return new CategorizedWorkerPoolSequencedTaskRunner(this);
|
| }
|
|
|
| -RasterWorkerPool::~RasterWorkerPool() {}
|
| +CategorizedWorkerPool::~CategorizedWorkerPool() {}
|
|
|
| -cc::NamespaceToken RasterWorkerPool::GetNamespaceToken() {
|
| +cc::NamespaceToken CategorizedWorkerPool::GetNamespaceToken() {
|
| base::AutoLock lock(lock_);
|
| return work_queue_.GetNamespaceToken();
|
| }
|
|
|
| -void RasterWorkerPool::ScheduleTasks(cc::NamespaceToken token,
|
| - cc::TaskGraph* graph) {
|
| +void CategorizedWorkerPool::ScheduleTasks(cc::NamespaceToken token,
|
| + cc::TaskGraph* graph) {
|
| TRACE_EVENT2("disabled-by-default-cc.debug",
|
| - "RasterWorkerPool::ScheduleTasks", "num_nodes",
|
| + "CategorizedWorkerPool::ScheduleTasks", "num_nodes",
|
| graph->nodes.size(), "num_edges", graph->edges.size());
|
| {
|
| base::AutoLock lock(lock_);
|
| @@ -274,8 +276,9 @@ void RasterWorkerPool::ScheduleTasks(cc::NamespaceToken token,
|
| }
|
| }
|
|
|
| -void RasterWorkerPool::ScheduleTasksWithLockAcquired(cc::NamespaceToken token,
|
| - cc::TaskGraph* graph) {
|
| +void CategorizedWorkerPool::ScheduleTasksWithLockAcquired(
|
| + cc::NamespaceToken token,
|
| + cc::TaskGraph* graph) {
|
| DCHECK(token.IsValid());
|
| DCHECK(!cc::TaskGraphWorkQueue::DependencyMismatch(graph));
|
| DCHECK(!shutdown_);
|
| @@ -286,9 +289,10 @@ void RasterWorkerPool::ScheduleTasksWithLockAcquired(cc::NamespaceToken token,
|
| SignalHasReadyToRunTasksWithLockAcquired();
|
| }
|
|
|
| -void RasterWorkerPool::WaitForTasksToFinishRunning(cc::NamespaceToken token) {
|
| +void CategorizedWorkerPool::WaitForTasksToFinishRunning(
|
| + cc::NamespaceToken token) {
|
| TRACE_EVENT0("disabled-by-default-cc.debug",
|
| - "RasterWorkerPool::WaitForTasksToFinishRunning");
|
| + "CategorizedWorkerPool::WaitForTasksToFinishRunning");
|
|
|
| DCHECK(token.IsValid());
|
|
|
| @@ -310,11 +314,11 @@ void RasterWorkerPool::WaitForTasksToFinishRunning(cc::NamespaceToken token) {
|
| }
|
| }
|
|
|
| -void RasterWorkerPool::CollectCompletedTasks(
|
| +void CategorizedWorkerPool::CollectCompletedTasks(
|
| cc::NamespaceToken token,
|
| cc::Task::Vector* completed_tasks) {
|
| TRACE_EVENT0("disabled-by-default-cc.debug",
|
| - "RasterWorkerPool::CollectCompletedTasks");
|
| + "CategorizedWorkerPool::CollectCompletedTasks");
|
|
|
| {
|
| base::AutoLock lock(lock_);
|
| @@ -322,14 +326,14 @@ void RasterWorkerPool::CollectCompletedTasks(
|
| }
|
| }
|
|
|
| -void RasterWorkerPool::CollectCompletedTasksWithLockAcquired(
|
| +void CategorizedWorkerPool::CollectCompletedTasksWithLockAcquired(
|
| cc::NamespaceToken token,
|
| cc::Task::Vector* completed_tasks) {
|
| DCHECK(token.IsValid());
|
| work_queue_.CollectCompletedTasks(token, completed_tasks);
|
| }
|
|
|
| -bool RasterWorkerPool::RunTaskWithLockAcquired(
|
| +bool CategorizedWorkerPool::RunTaskWithLockAcquired(
|
| const std::vector<cc::TaskCategory>& categories) {
|
| for (const auto& category : categories) {
|
| if (ShouldRunTaskForCategoryWithLockAcquired(category)) {
|
| @@ -340,7 +344,7 @@ bool RasterWorkerPool::RunTaskWithLockAcquired(
|
| return false;
|
| }
|
|
|
| -void RasterWorkerPool::RunTaskInCategoryWithLockAcquired(
|
| +void CategorizedWorkerPool::RunTaskInCategoryWithLockAcquired(
|
| cc::TaskCategory category) {
|
| TRACE_EVENT0("toplevel", "TaskGraphRunner::RunTask");
|
|
|
| @@ -366,7 +370,7 @@ void RasterWorkerPool::RunTaskInCategoryWithLockAcquired(
|
| has_namespaces_with_finished_running_tasks_cv_.Signal();
|
| }
|
|
|
| -bool RasterWorkerPool::ShouldRunTaskForCategoryWithLockAcquired(
|
| +bool CategorizedWorkerPool::ShouldRunTaskForCategoryWithLockAcquired(
|
| cc::TaskCategory category) {
|
| lock_.AssertAcquired();
|
|
|
| @@ -399,7 +403,7 @@ bool RasterWorkerPool::ShouldRunTaskForCategoryWithLockAcquired(
|
| return true;
|
| }
|
|
|
| -void RasterWorkerPool::SignalHasReadyToRunTasksWithLockAcquired() {
|
| +void CategorizedWorkerPool::SignalHasReadyToRunTasksWithLockAcquired() {
|
| lock_.AssertAcquired();
|
|
|
| if (ShouldRunTaskForCategoryWithLockAcquired(cc::TASK_CATEGORY_FOREGROUND) ||
|
| @@ -413,15 +417,15 @@ void RasterWorkerPool::SignalHasReadyToRunTasksWithLockAcquired() {
|
| }
|
| }
|
|
|
| -RasterWorkerPool::ClosureTask::ClosureTask(const base::Closure& closure)
|
| +CategorizedWorkerPool::ClosureTask::ClosureTask(const base::Closure& closure)
|
| : closure_(closure) {}
|
|
|
| // Overridden from cc::Task:
|
| -void RasterWorkerPool::ClosureTask::RunOnWorkerThread() {
|
| +void CategorizedWorkerPool::ClosureTask::RunOnWorkerThread() {
|
| closure_.Run();
|
| closure_.Reset();
|
| }
|
|
|
| -RasterWorkerPool::ClosureTask::~ClosureTask() {}
|
| +CategorizedWorkerPool::ClosureTask::~ClosureTask() {}
|
|
|
| } // namespace content
|
|
|