| // Copyright 2013 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CC_RESOURCES_TILE_TASK_WORKER_POOL_H_ |
| #define CC_RESOURCES_TILE_TASK_WORKER_POOL_H_ |
| |
| #include "base/threading/platform_thread.h" |
| #include "cc/resources/tile_task_runner.h" |
| #include "ui/gfx/geometry/rect.h" |
| #include "ui/gfx/geometry/size.h" |
| |
| namespace base { |
| class SequencedTaskRunner; |
| } |
| |
| namespace cc { |
| class RasterSource; |
| class RenderingStatsInstrumentation; |
| |
| class CC_EXPORT TileTaskWorkerPool { |
| public: |
| static unsigned kBenchmarkTaskPriority; |
| static unsigned kTaskSetFinishedTaskPriority; |
| static unsigned kTileTaskPriorityBase; |
| |
| TileTaskWorkerPool(); |
| virtual ~TileTaskWorkerPool(); |
| |
| // Set the number of threads to use for the global TaskGraphRunner instance. |
| // This can only be called once and must be called prior to |
| // GetNumWorkerThreads(). |
| static void SetNumWorkerThreads(int num_threads); |
| |
| // Returns the number of threads used for the global TaskGraphRunner instance. |
| static int GetNumWorkerThreads(); |
| |
| // Set the priority of worker threads. |
| static void SetWorkerThreadPriority(base::ThreadPriority priority); |
| |
| // Returns a pointer to the global TaskGraphRunner instance. |
| static TaskGraphRunner* GetTaskGraphRunner(); |
| |
| // Utility function that can be used to create a "Task set finished" task that |
| // posts |callback| to |task_runner| when run. |
| static scoped_refptr<TileTask> CreateTaskSetFinishedTask( |
| base::SequencedTaskRunner* task_runner, |
| const base::Closure& callback); |
| |
| // Utility function that can be used to call ::ScheduleOnOriginThread() for |
| // each task in |graph|. |
| static void ScheduleTasksOnOriginThread(TileTaskClient* client, |
| TaskGraph* graph); |
| |
| // Utility function that can be used to build a task graph. Inserts a node |
| // that represents |task| in |graph|. See TaskGraph definition for valid |
| // |priority| values. |
| static void InsertNodeForTask(TaskGraph* graph, |
| TileTask* task, |
| unsigned priority, |
| size_t dependencies); |
| |
| // Utility function that can be used to build a task graph. Inserts nodes that |
| // represent |task| and all its image decode dependencies in |graph|. |
| static void InsertNodesForRasterTask( |
| TaskGraph* graph, |
| RasterTask* task, |
| const ImageDecodeTask::Vector& decode_tasks, |
| unsigned priority); |
| |
| // Utility function that will create a temporary bitmap and copy pixels to |
| // |memory| when necessary. |
| static void PlaybackToMemory(void* memory, |
| ResourceFormat format, |
| const gfx::Size& size, |
| int stride, |
| const RasterSource* raster_source, |
| const gfx::Rect& rect, |
| float scale); |
| |
| // Type-checking downcast routine. |
| virtual TileTaskRunner* AsTileTaskRunner() = 0; |
| }; |
| |
| } // namespace cc |
| |
| #endif // CC_RESOURCES_TILE_TASK_WORKER_POOL_H_ |