Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1082)

Unified Diff: dm/DMTask.h

Issue 853883004: Revert of Sketch DM refactor. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « dm/DMSrcSink.cpp ('k') | dm/DMTask.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: dm/DMTask.h
diff --git a/dm/DMTask.h b/dm/DMTask.h
new file mode 100644
index 0000000000000000000000000000000000000000..3f41b497ba6f6840c8292ebe54acf17f3e34c998
--- /dev/null
+++ b/dm/DMTask.h
@@ -0,0 +1,74 @@
+#ifndef DMTask_DEFINED
+#define DMTask_DEFINED
+
+#include "DMGpuSupport.h"
+#include "DMReporter.h"
+#include "SkRunnable.h"
+#include "SkTaskGroup.h"
+#include "SkTime.h"
+
+// DM will run() these tasks on one of two threadpools.
+// Subclasses can call fail() to mark this task as failed, or make any number of spawnChild() calls
+// to kick off dependent tasks.
+//
+// Tasks delete themselves when run.
+
+namespace DM {
+
+class TaskRunner;
+
+class CpuTask;
+
+class Task {
+public:
+ virtual bool shouldSkip() const = 0;
+ virtual SkString name() const = 0;
+
+ // Returns the number of parents above this task.
+ // Top-level tasks return 0, their children 1, and so on.
+ int depth() const { return fDepth; }
+
+protected:
+ Task(Reporter* reporter, TaskRunner* taskRunner);
+ Task(const Task& parent);
+ virtual ~Task();
+
+ void start();
+ void fail(const char* msg = NULL);
+ void finish();
+
+ void reallySpawnChild(CpuTask* task); // For now we don't allow GPU child tasks.
+
+private:
+ Reporter* fReporter; // Unowned.
+ TaskRunner* fTaskRunner; // Unowned.
+ int fDepth;
+ SkMSec fStart;
+};
+
+class CpuTask : public Task, public SkRunnable {
+public:
+ CpuTask(Reporter* reporter, TaskRunner* taskRunner);
+ CpuTask(const Task& parent);
+ virtual ~CpuTask() {}
+
+ void run() SK_OVERRIDE;
+ virtual void draw() = 0;
+
+ void spawnChild(CpuTask* task);
+};
+
+class GpuTask : public Task {
+ public:
+ GpuTask(Reporter* reporter, TaskRunner* taskRunner);
+ virtual ~GpuTask() {}
+
+ void run(GrContextFactory*);
+ virtual void draw(GrContextFactory*) = 0;
+
+ void spawnChild(CpuTask* task);
+};
+
+} // namespace DM
+
+#endif // DMTask_DEFINED
« no previous file with comments | « dm/DMSrcSink.cpp ('k') | dm/DMTask.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698