| #ifndef DMTaskRunner_DEFINED |
| #define DMTaskRunner_DEFINED |
| |
| #include "DMGpuSupport.h" |
| #include "SkThreadPool.h" |
| #include "SkTypes.h" |
| |
| // TaskRunner runs Tasks on one of two threadpools depending on the need for a GrContextFactory. |
| // It's typically a good idea to run fewer GPU threads than CPU threads (go nuts with those). |
| |
| namespace DM { |
| |
| class CpuTask; |
| class GpuTask; |
| |
| class TaskRunner : SkNoncopyable { |
| public: |
| explicit TaskRunner(int cpuThreads, int gpuThreads); |
| |
| void add(CpuTask* task); |
| void addNext(CpuTask* task); |
| void add(GpuTask* task); |
| void wait(); |
| |
| private: |
| SkTThreadPool<void> fCpu; |
| SkTThreadPool<GrContextFactory> fGpu; |
| }; |
| |
| } // namespace DM |
| |
| #endif // DMTaskRunner_DEFINED |