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 |