Home | History | Annotate | Download | only in dm
      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