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

Side by Side Diff: dm/DMTask.h

Issue 788243008: Sketch DM refactor. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: better failure messages, disable a few things temporarily to try to go green 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 unified diff | Download patch
« no previous file with comments | « dm/DMSrcSink.cpp ('k') | dm/DMTask.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 #ifndef DMTask_DEFINED
2 #define DMTask_DEFINED
3
4 #include "DMGpuSupport.h"
5 #include "DMReporter.h"
6 #include "SkRunnable.h"
7 #include "SkTaskGroup.h"
8 #include "SkTime.h"
9
10 // DM will run() these tasks on one of two threadpools.
11 // Subclasses can call fail() to mark this task as failed, or make any number of spawnChild() calls
12 // to kick off dependent tasks.
13 //
14 // Tasks delete themselves when run.
15
16 namespace DM {
17
18 class TaskRunner;
19
20 class CpuTask;
21
22 class Task {
23 public:
24 virtual bool shouldSkip() const = 0;
25 virtual SkString name() const = 0;
26
27 // Returns the number of parents above this task.
28 // Top-level tasks return 0, their children 1, and so on.
29 int depth() const { return fDepth; }
30
31 protected:
32 Task(Reporter* reporter, TaskRunner* taskRunner);
33 Task(const Task& parent);
34 virtual ~Task();
35
36 void start();
37 void fail(const char* msg = NULL);
38 void finish();
39
40 void reallySpawnChild(CpuTask* task); // For now we don't allow GPU child t asks.
41
42 private:
43 Reporter* fReporter; // Unowned.
44 TaskRunner* fTaskRunner; // Unowned.
45 int fDepth;
46 SkMSec fStart;
47 };
48
49 class CpuTask : public Task, public SkRunnable {
50 public:
51 CpuTask(Reporter* reporter, TaskRunner* taskRunner);
52 CpuTask(const Task& parent);
53 virtual ~CpuTask() {}
54
55 void run() SK_OVERRIDE;
56 virtual void draw() = 0;
57
58 void spawnChild(CpuTask* task);
59 };
60
61 class GpuTask : public Task {
62 public:
63 GpuTask(Reporter* reporter, TaskRunner* taskRunner);
64 virtual ~GpuTask() {}
65
66 void run(GrContextFactory*);
67 virtual void draw(GrContextFactory*) = 0;
68
69 void spawnChild(CpuTask* task);
70 };
71
72 } // namespace DM
73
74 #endif // DMTask_DEFINED
OLDNEW
« 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