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 11 namespace DM { 12 13 class CpuTask; 14 class GpuTask; 15 16 class TaskRunner : SkNoncopyable { 17 public: 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 25 private: 26 SkTThreadPool<void> fCpu; 27 SkTThreadPool<GrContextFactory> fGpu; 28 }; 29 30 } // namespace DM 31 32 #endif // DMTaskRunner_DEFINED 33