aboutsummaryrefslogtreecommitdiffhomepage
path: root/include
diff options
context:
space:
mode:
authorGravatar Robert Phillips <robertphillips@google.com>2018-07-16 13:33:53 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-07-17 11:38:10 +0000
commit94fee93c9b23bd1a32604753da8bef755d6c8a95 (patch)
treeacad655e303bbf931f391ce76d5d034476d7b608 /include
parent9c98576bceffc721a71550ea9c0942d9a008da3b (diff)
Reduce arbitrary opList splitting when sorting
Change-Id: I49a47672600f72dc46f27462a2c344e77a06a659 Reviewed-on: https://skia-review.googlesource.com/141243 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Robert Phillips <robertphillips@google.com>
Diffstat (limited to 'include')
-rw-r--r--include/private/GrOpList.h21
1 files changed, 10 insertions, 11 deletions
diff --git a/include/private/GrOpList.h b/include/private/GrOpList.h
index 0d5a1a245a..a4e541c81d 100644
--- a/include/private/GrOpList.h
+++ b/include/private/GrOpList.h
@@ -67,15 +67,7 @@ public:
/*
* Does this opList depend on 'dependedOn'?
*/
- bool dependsOn(GrOpList* dependedOn) const {
- for (int i = 0; i < fDependencies.count(); ++i) {
- if (fDependencies[i] == dependedOn) {
- return true;
- }
- }
-
- return false;
- }
+ bool dependsOn(const GrOpList* dependedOn) const;
/*
* Safely cast this GrOpList to a GrTextureOpList (if possible).
@@ -120,6 +112,13 @@ protected:
private:
friend class GrDrawingManager; // for resetFlag, TopoSortTraits & gatherProxyIntervals
+ void addDependency(GrOpList* dependedOn);
+ void addDependent(GrOpList* dependent);
+ SkDEBUGCODE(bool isDependedent(const GrOpList* dependent) const);
+ SkDEBUGCODE(void validate() const);
+
+ void closeThoseWhoDependOnMe(const GrCaps&);
+
// Remove all Ops which reference proxies that have not been instantiated.
virtual void purgeOpsWithUninstantiatedProxies() = 0;
@@ -174,13 +173,13 @@ private:
virtual void onPrepare(GrOpFlushState* flushState) = 0;
virtual bool onExecute(GrOpFlushState* flushState) = 0;
- void addDependency(GrOpList* dependedOn);
-
uint32_t fUniqueID;
uint32_t fFlags;
// 'this' GrOpList relies on the output of the GrOpLists in 'fDependencies'
SkSTArray<1, GrOpList*, true> fDependencies;
+ // 'this' GrOpList's output is relied on by the GrOpLists in 'fDependents'
+ SkSTArray<1, GrOpList*, true> fDependents;
typedef SkRefCnt INHERITED;
};