aboutsummaryrefslogtreecommitdiffhomepage
path: root/include/private/GrAuditTrail.h
diff options
context:
space:
mode:
authorGravatar Robert Phillips <robertphillips@google.com>2017-03-31 10:03:45 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-03-31 16:11:30 +0000
commitf7a7261b4ac23f97580a8ff6f0307b3c47399b9d (patch)
tree3d50ff5737ce2dd1f45c05b3de6814ec6a589d59 /include/private/GrAuditTrail.h
parent9bd301d640ff63c280b202c7dd00bc00a3315ff4 (diff)
Add tracking of unique proxyID beside unique renderTargetID in auditTrail and clearOp
Split out of: https://skia-review.googlesource.com/c/10284/ (Omnibus: Remove GrSurface-derived classes from ops) Change-Id: I5845a47d94decc455ec3b1f0a5876b1c82aa32e8 Reviewed-on: https://skia-review.googlesource.com/10750 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Robert Phillips <robertphillips@google.com>
Diffstat (limited to 'include/private/GrAuditTrail.h')
-rw-r--r--include/private/GrAuditTrail.h39
1 files changed, 28 insertions, 11 deletions
diff --git a/include/private/GrAuditTrail.h b/include/private/GrAuditTrail.h
index f1ae494c9b..9fdae30f8f 100644
--- a/include/private/GrAuditTrail.h
+++ b/include/private/GrAuditTrail.h
@@ -10,6 +10,7 @@
#include "GrConfig.h"
#include "GrGpuResource.h"
+#include "GrRenderTargetProxy.h"
#include "SkRect.h"
#include "SkString.h"
#include "SkTArray.h"
@@ -80,7 +81,9 @@ public:
fCurrentStackTrace.push_back(SkString(framename));
}
- void addOp(const GrOp*, GrGpuResource::UniqueID renderTargetID);
+ void addOp(const GrOp*,
+ GrGpuResource::UniqueID resourceID,
+ GrRenderTargetProxy::UniqueID proxyID);
void opsCombined(const GrOp* consumer, const GrOp* consumed);
@@ -103,14 +106,23 @@ public:
// We could just return our internal bookkeeping struct if copying the data out becomes
// a performance issue, but until then its nice to decouple
struct OpInfo {
- SkRect fBounds;
- // TODO: switch over to GrSurfaceProxy::UniqueID
- GrGpuResource::UniqueID fRenderTargetUniqueID;
+ // Will the resourceID comparison yield the same decision as the proxyID comparison?
+ bool sameDecision(GrGpuResource::UniqueID resourceUniqueID,
+ GrSurfaceProxy::UniqueID proxyUniqueID) const {
+ return (fResourceUniqueID == resourceUniqueID) ==
+ (fProxyUniqueID == proxyUniqueID);
+ }
+
struct Op {
- int fClientID;
+ int fClientID;
SkRect fBounds;
};
- SkTArray<Op> fOps;
+
+ SkRect fBounds;
+ // MDB TODO: remove fResourceUniqueID
+ GrGpuResource::UniqueID fResourceUniqueID;
+ GrSurfaceProxy::UniqueID fProxyUniqueID;
+ SkTArray<Op> fOps;
};
void getBoundsByClientID(SkTArray<OpInfo>* outInfo, int clientID);
@@ -136,11 +148,16 @@ private:
typedef SkTArray<Op*> Ops;
struct OpNode {
- OpNode(const GrGpuResource::UniqueID& id) : fRenderTargetUniqueID(id) {}
+ OpNode(const GrGpuResource::UniqueID& resourceID, const GrSurfaceProxy::UniqueID& proxyID)
+ : fResourceUniqueID(resourceID)
+ , fProxyUniqueID(proxyID) {
+ }
SkString toJson() const;
+
SkRect fBounds;
- Ops fChildren;
- const GrGpuResource::UniqueID fRenderTargetUniqueID;
+ Ops fChildren;
+ const GrGpuResource::UniqueID fResourceUniqueID;
+ const GrSurfaceProxy::UniqueID fProxyUniqueID;
};
typedef SkTArray<std::unique_ptr<OpNode>, true> OpList;
@@ -172,8 +189,8 @@ private:
#define GR_AUDIT_TRAIL_RESET(audit_trail) \
//GR_AUDIT_TRAIL_INVOKE_GUARD(audit_trail, fullReset);
-#define GR_AUDIT_TRAIL_ADD_OP(audit_trail, op, rt_id) \
- GR_AUDIT_TRAIL_INVOKE_GUARD(audit_trail, addOp, op, rt_id);
+#define GR_AUDIT_TRAIL_ADD_OP(audit_trail, op, resource_id, proxy_id) \
+ GR_AUDIT_TRAIL_INVOKE_GUARD(audit_trail, addOp, op, resource_id, proxy_id);
#define GR_AUDIT_TRAIL_OPS_RESULT_COMBINED(audit_trail, combineWith, op) \
GR_AUDIT_TRAIL_INVOKE_GUARD(audit_trail, opsCombined, combineWith, op);