Add debug memory tracking to SkiaGLPipeline
Test: Sample output is below
D/OpenGLRenderer: Resource Cache Usage:
D/OpenGLRenderer: 32 items out of 8192 maximum items
D/OpenGLRenderer: 4635572 bytes (4.42 MB) out of 96.00 MB maximum
This is less verbose than OpenGL memory debug output for
two reasons:
(1) SkiaGL has less caches.
(2) SkiaGL does not support printing on cache additions/evictions.
This seems like more of an internal debugging tool rather than
a user-facing debug feature. I think it's best to leave this
unimplemented until we find that it might be useful.
BUG:32370375
Change-Id: Ib063f1c2a7f88e9840341b1001d227f556d88f26
This commit is contained in:
@@ -95,6 +95,11 @@ bool SkiaOpenGLPipeline::draw(const Frame& frame, const SkRect& screenDirty,
|
||||
profileCanvas->flush();
|
||||
}
|
||||
|
||||
// Log memory statistics
|
||||
if (CC_UNLIKELY(Properties::debugLevel != kDebugDisabled)) {
|
||||
dumpResourceCacheUsage();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -253,6 +253,20 @@ void SkiaPipeline::renderFrame(const LayerUpdateQueue& layers, const SkRect& cli
|
||||
canvas->flush();
|
||||
}
|
||||
|
||||
void SkiaPipeline::dumpResourceCacheUsage() const {
|
||||
int resources, maxResources;
|
||||
size_t bytes, maxBytes;
|
||||
mRenderThread.getGrContext()->getResourceCacheUsage(&resources, &bytes);
|
||||
mRenderThread.getGrContext()->getResourceCacheLimits(&maxResources, &maxBytes);
|
||||
|
||||
SkString log("Resource Cache Usage:\n");
|
||||
log.appendf("%8d items out of %d maximum items\n", resources, maxResources);
|
||||
log.appendf("%8zu bytes (%.2f MB) out of %.2f MB maximum\n",
|
||||
bytes, bytes * (1.0f / (1024.0f * 1024.0f)), maxBytes * (1.0f / (1024.0f * 1024.0f)));
|
||||
|
||||
ALOGD("%s", log.c_str());
|
||||
}
|
||||
|
||||
} /* namespace skiapipeline */
|
||||
} /* namespace uirenderer */
|
||||
} /* namespace android */
|
||||
|
||||
@@ -96,7 +96,10 @@ public:
|
||||
mSpotShadowAlpha = lightInfo.spotShadowAlpha;
|
||||
mLightCenter = lightGeometry.center;
|
||||
}
|
||||
|
||||
protected:
|
||||
void dumpResourceCacheUsage() const;
|
||||
|
||||
renderthread::RenderThread& mRenderThread;
|
||||
|
||||
private:
|
||||
|
||||
@@ -81,6 +81,11 @@ bool SkiaVulkanPipeline::draw(const Frame& frame, const SkRect& screenDirty,
|
||||
profileCanvas->flush();
|
||||
}
|
||||
|
||||
// Log memory statistics
|
||||
if (CC_UNLIKELY(Properties::debugLevel != kDebugDisabled)) {
|
||||
dumpResourceCacheUsage();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user