aboutsummaryrefslogtreecommitdiffhomepage
path: root/dm/DMTaskRunner.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'dm/DMTaskRunner.cpp')
-rw-r--r--dm/DMTaskRunner.cpp45
1 files changed, 8 insertions, 37 deletions
diff --git a/dm/DMTaskRunner.cpp b/dm/DMTaskRunner.cpp
index bd53ce615a..e0bd977288 100644
--- a/dm/DMTaskRunner.cpp
+++ b/dm/DMTaskRunner.cpp
@@ -3,48 +3,19 @@
namespace DM {
+TaskRunner::TaskRunner(int cpuThreads, int gpuThreads) : fCpu(cpuThreads), fGpu(gpuThreads) {}
-TaskRunner::TaskRunner(int cputhreads)
- : fMain(cputhreads)
- , fGpu(1) {
- // Enqueue a task on the GPU thread to create a GrContextFactory.
- struct Create : public SkRunnable {
- Create(GrContextFactory** ptr) : fPtr(ptr) {}
- void run() SK_OVERRIDE {
- *fPtr = SkNEW(GrContextFactory);
- delete this;
- }
- GrContextFactory** fPtr;
- };
- fGpu.add(SkNEW_ARGS(Create, (&fGrContextFactory)));
-}
+void TaskRunner::add(CpuTask* task) { fCpu.add(task); }
-void TaskRunner::add(Task* task) {
- if (task->usesGpu()) {
- fGpu.add(task);
- } else {
- fMain.add(task);
- }
-}
+void TaskRunner::add(GpuTask* task) { fGpu.add(task); }
void TaskRunner::wait() {
- // Enqueue a task on the GPU thread to destroy the GrContextFactory.
- struct Delete : public SkRunnable {
- Delete(GrContextFactory* ptr) : fPtr(ptr) {}
- void run() SK_OVERRIDE {
- delete fPtr;
- delete this;
- }
- GrContextFactory* fPtr;
- };
- fGpu.add(SkNEW_ARGS(Delete, (fGrContextFactory)));
-
- // These wait calls block until the threadpool is done. We don't allow
- // children to spawn new GPU tasks so we can wait for that first knowing
- // we'll never try to add to it later. Same can't be said of fMain: fGpu
- // and fMain can both add tasks to fMain, so we have to wait for that last.
+ // These wait calls block until each threadpool is done. We don't allow
+ // spawning new child GPU tasks, so we can wait for that first knowing
+ // we'll never try to add to it later. Same can't be said of the CPU pool:
+ // both CPU and GPU tasks can spawn off new CPU work, so we wait for that last.
fGpu.wait();
- fMain.wait();
+ fCpu.wait();
}
} // namespace DM