• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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