| Index: cc/resources/raster_worker_pool.cc
|
| diff --git a/cc/resources/raster_worker_pool.cc b/cc/resources/raster_worker_pool.cc
|
| index 30f684a31c701090cbbfc4ebc56ef5478d45e3bc..d6cbe673cfbca226dbaff41b3525344aea091809 100644
|
| --- a/cc/resources/raster_worker_pool.cc
|
| +++ b/cc/resources/raster_worker_pool.cc
|
| @@ -450,6 +450,15 @@ class RasterRequiredForActivationFinishedWorkerPoolTaskImpl
|
| RasterRequiredForActivationFinishedWorkerPoolTaskImpl);
|
| };
|
|
|
| +class RasterTaskGraphRunner : public internal::TaskGraphRunner {
|
| + public:
|
| + RasterTaskGraphRunner()
|
| + : internal::TaskGraphRunner(RasterWorkerPool::GetNumRasterThreads(),
|
| + "CompositorRaster") {}
|
| +};
|
| +base::LazyInstance<RasterTaskGraphRunner>::Leaky g_task_graph_runner =
|
| + LAZY_INSTANCE_INITIALIZER;
|
| +
|
| const int kDefaultNumRasterThreads = 1;
|
|
|
| int g_num_raster_threads = 0;
|
| @@ -554,12 +563,15 @@ void RasterWorkerPool::RasterTask::Reset() { internal_ = NULL; }
|
|
|
| RasterWorkerPool::RasterTask::~RasterTask() {}
|
|
|
| +// This allows an external rasterize on-demand system to run raster tasks
|
| +// with highest priority using the same task graph runner instance.
|
| +unsigned RasterWorkerPool::kOnDemandRasterTaskPriority = 0u;
|
| // Task priorities that make sure raster finished tasks run before any
|
| // remaining raster tasks.
|
| -unsigned RasterWorkerPool::kRasterFinishedTaskPriority = 1u;
|
| +unsigned RasterWorkerPool::kRasterFinishedTaskPriority = 2u;
|
| unsigned RasterWorkerPool::kRasterRequiredForActivationFinishedTaskPriority =
|
| - 0u;
|
| -unsigned RasterWorkerPool::kRasterTaskPriorityBase = 2u;
|
| + 1u;
|
| +unsigned RasterWorkerPool::kRasterTaskPriorityBase = 3u;
|
|
|
| RasterWorkerPool::RasterWorkerPool(internal::TaskGraphRunner* task_graph_runner,
|
| ResourceProvider* resource_provider,
|
| @@ -590,6 +602,11 @@ int RasterWorkerPool::GetNumRasterThreads() {
|
| }
|
|
|
| // static
|
| +internal::TaskGraphRunner* RasterWorkerPool::GetTaskGraphRunner() {
|
| + return g_task_graph_runner.Pointer();
|
| +}
|
| +
|
| +// static
|
| RasterWorkerPool::RasterTask RasterWorkerPool::CreateRasterTask(
|
| const Resource* resource,
|
| PicturePileImpl* picture_pile,
|
|
|