From da1be46e240020674ae392ced3c6bf85e9ecd157 Mon Sep 17 00:00:00 2001 From: Robert Phillips Date: Fri, 27 Jul 2018 07:18:06 -0400 Subject: Add more optional debugging printouts for resource allocation Change-Id: I84e9d2cc8862d366fab3f9142fee5b8ed981bed7 Reviewed-on: https://skia-review.googlesource.com/143705 Reviewed-by: Greg Daniel Commit-Queue: Robert Phillips --- src/gpu/GrResourceAllocator.cpp | 11 +++++++++++ src/gpu/GrResourceAllocator.h | 22 ++++++++++++++++++++++ 2 files changed, 33 insertions(+) (limited to 'src') diff --git a/src/gpu/GrResourceAllocator.cpp b/src/gpu/GrResourceAllocator.cpp index 199acefe7a..8cc695f4e7 100644 --- a/src/gpu/GrResourceAllocator.cpp +++ b/src/gpu/GrResourceAllocator.cpp @@ -18,6 +18,17 @@ #include "GrTextureProxy.h" #include "GrUninstantiateProxyTracker.h" +#if GR_TRACK_INTERVAL_CREATION +uint32_t GrResourceAllocator::Interval::CreateUniqueID() { + static int32_t gUniqueID = SK_InvalidUniqueID; + uint32_t id; + do { + id = static_cast(sk_atomic_inc(&gUniqueID) + 1); + } while (id == SK_InvalidUniqueID); + return id; +} +#endif + void GrResourceAllocator::Interval::assign(sk_sp s) { SkASSERT(!fAssignedSurface); fAssignedSurface = s; diff --git a/src/gpu/GrResourceAllocator.h b/src/gpu/GrResourceAllocator.h index f383ee4653..fc3d031165 100644 --- a/src/gpu/GrResourceAllocator.h +++ b/src/gpu/GrResourceAllocator.h @@ -22,6 +22,9 @@ class GrUninstantiateProxyTracker; // Print out explicit allocation information #define GR_ALLOCATION_SPEW 0 +// Print out information about interval creation +#define GR_TRACK_INTERVAL_CREATION 0 + /* * The ResourceAllocator explicitly distributes GPU resources at flush time. It operates by * being given the usage intervals of the various proxies. It keeps these intervals in a singly @@ -112,6 +115,11 @@ private: , fEnd(end) , fNext(nullptr) { SkASSERT(proxy); +#if GR_TRACK_INTERVAL_CREATION + fUniqueID = CreateUniqueID(); + SkDebugf("New intvl %d: proxyID: %d [ %d, %d ]\n", + fUniqueID, proxy->uniqueID().asUInt(), start, end); +#endif } void resetTo(GrSurfaceProxy* proxy, unsigned int start, unsigned int end) { @@ -122,6 +130,11 @@ private: fStart = start; fEnd = end; fNext = nullptr; +#if GR_TRACK_INTERVAL_CREATION + fUniqueID = CreateUniqueID(); + SkDebugf("New intvl %d: proxyID: %d [ %d, %d ]\n", + fUniqueID, proxy->uniqueID().asUInt(), start, end); +#endif } ~Interval() { @@ -140,6 +153,9 @@ private: void extendEnd(unsigned int newEnd) { if (newEnd > fEnd) { fEnd = newEnd; +#if GR_TRACK_INTERVAL_CREATION + SkDebugf("intvl %d: extending from %d to %d\n", fUniqueID, fEnd, newEnd); +#endif } } @@ -160,6 +176,12 @@ private: unsigned int fStart; unsigned int fEnd; Interval* fNext; + +#if GR_TRACK_INTERVAL_CREATION + uint32_t fUniqueID; + + uint32_t CreateUniqueID(); +#endif }; class IntervalList { -- cgit v1.2.3