Index: dm/DMTaskRunner.h |
diff --git a/dm/DMTaskRunner.h b/dm/DMTaskRunner.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..5d7b320d6cc653bf238267fd93b9db5e9cac7619 |
--- /dev/null |
+++ b/dm/DMTaskRunner.h |
@@ -0,0 +1,28 @@ |
+#ifndef DMTaskRunner_DEFINED |
+#define DMTaskRunner_DEFINED |
+ |
+#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. |
+ |
+namespace DM { |
+ |
+class Task; |
+ |
+class TaskRunner : SkNoncopyable { |
+public: |
+ TaskRunner(int cputhreads, int gpuThreads); |
+ |
+ void add(Task* task); |
+ void wait(); |
+ |
+private: |
+ SkThreadPool fMain, fGpu; |
+}; |
+ |
+} // namespace DM |
+ |
+#endif // DMTaskRunner_DEFINED |