| #ifndef DMTaskRunner_DEFINED |
| #define DMTaskRunner_DEFINED |
| |
| #include "SkThreadPool.h" |
| #include "SkTypes.h" |
| |
| // TaskRunner runs Tasks on one of two threadpools depending on the Task's usesGpu() method. |
| // This lets us drive the GPU with a small number of threads (e.g. 2 or 4 can be faster than 1) |
| // while not swamping it with requests from the full fleet of threads that CPU-bound tasks run on. |
| |
| namespace DM { |
| |
| class Task; |
| |
| class TaskRunner : SkNoncopyable { |
| public: |
| TaskRunner(int cputhreads, int gpuThreads); |
| |
| void add(Task* task); |
| void wait(); |
| |
| private: |
| SkThreadPool fMain, fGpu; |
| }; |
| |
| } // namespace DM |
| |
| #endif // DMTaskRunner_DEFINED |