1#ifndef DMTaskRunner_DEFINED 2#define DMTaskRunner_DEFINED 3 4#include "DMGpuSupport.h" 5#include "SkThreadPool.h" 6#include "SkTypes.h" 7 8// TaskRunner runs Tasks on one of two threadpools depending on the need for a GrContextFactory. 9// It's typically a good idea to run fewer GPU threads than CPU threads (go nuts with those). 10 11namespace DM { 12 13class CpuTask; 14class GpuTask; 15 16class TaskRunner : SkNoncopyable { 17public: 18 explicit TaskRunner(int cpuThreads, int gpuThreads); 19 20 void add(CpuTask* task); 21 void addNext(CpuTask* task); 22 void add(GpuTask* task); 23 void wait(); 24 25private: 26 SkTThreadPool<void> fCpu; 27 SkTThreadPool<GrContextFactory> fGpu; 28}; 29 30} // namespace DM 31 32#endif // DMTaskRunner_DEFINED 33