diff options
author | 2017-03-31 10:03:45 -0400 | |
---|---|---|
committer | 2017-03-31 16:11:30 +0000 | |
commit | f7a7261b4ac23f97580a8ff6f0307b3c47399b9d (patch) | |
tree | 3d50ff5737ce2dd1f45c05b3de6814ec6a589d59 /include/private/GrAuditTrail.h | |
parent | 9bd301d640ff63c280b202c7dd00bc00a3315ff4 (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.h | 39 |
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); |