| Index: dm/DMTaskRunner.h
|
| diff --git a/dm/DMTaskRunner.h b/dm/DMTaskRunner.h
|
| index 5d7b320d6cc653bf238267fd93b9db5e9cac7619..8af1b63719af1ec23d639316c7ca20c4d7471b25 100644
|
| --- a/dm/DMTaskRunner.h
|
| +++ b/dm/DMTaskRunner.h
|
| @@ -1,12 +1,12 @@
|
| #ifndef DMTaskRunner_DEFINED
|
| #define DMTaskRunner_DEFINED
|
|
|
| +#include "GrContextFactory.h"
|
| #include "SkThreadPool.h"
|
| #include "SkTypes.h"
|
|
|
| -// TaskRunner runs Tasks on one of two threadpools depending on the Task's usesGpu() method.
|
| -// This lets us drive the GPU with a small number of threads (e.g. 2 or 4 can be faster than 1)
|
| -// while not swamping it with requests from the full fleet of threads that CPU-bound tasks run on.
|
| +// TaskRunner runs Tasks on one of two threadpools depending on the Task's usesGpu() method. This
|
| +// lets us drive the GPU from a single thread while parallelizing CPU-bound work.
|
|
|
| namespace DM {
|
|
|
| @@ -14,13 +14,17 @@ class Task;
|
|
|
| class TaskRunner : SkNoncopyable {
|
| public:
|
| - TaskRunner(int cputhreads, int gpuThreads);
|
| + explicit TaskRunner(int cputhreads);
|
|
|
| void add(Task* task);
|
| void wait();
|
|
|
| + // This can only be safely called from a GPU task's draw() method.
|
| + GrContextFactory* getGrContextFactory() const { return fGrContextFactory; }
|
| +
|
| private:
|
| SkThreadPool fMain, fGpu;
|
| + GrContextFactory* fGrContextFactory; // Created and destroyed on fGpu threadpool.
|
| };
|
|
|
| } // namespace DM
|
|
|