aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Robert Phillips <robertphillips@google.com>2018-07-27 07:18:06 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-07-27 13:35:22 +0000
commitda1be46e240020674ae392ced3c6bf85e9ecd157 (patch)
treee381cbfdf20ad5b7a62e74610c5565ec32a98df1 /src
parent2739ab0986a6c5e7ae460dfd58539f9aef262d53 (diff)
Add more optional debugging printouts for resource allocation
Change-Id: I84e9d2cc8862d366fab3f9142fee5b8ed981bed7 Reviewed-on: https://skia-review.googlesource.com/143705 Reviewed-by: Greg Daniel <egdaniel@google.com> Commit-Queue: Robert Phillips <robertphillips@google.com>
Diffstat (limited to 'src')
-rw-r--r--src/gpu/GrResourceAllocator.cpp11
-rw-r--r--src/gpu/GrResourceAllocator.h22
2 files changed, 33 insertions, 0 deletions
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<uint32_t>(sk_atomic_inc(&gUniqueID) + 1);
+ } while (id == SK_InvalidUniqueID);
+ return id;
+}
+#endif
+
void GrResourceAllocator::Interval::assign(sk_sp<GrSurface> 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 {