Move all debug flags in a single place.
This change also adds a new memory usage flag. When turned on, the
following is printed after every frame:
D/OpenGLRenderer( 3723): Current memory usage / total memory usage (bytes):
D/OpenGLRenderer( 3723): TextureCache 3766680 / 20971520
D/OpenGLRenderer( 3723): LayerCache 3538944 / 8388608
D/OpenGLRenderer( 3723): GradientCache 135168 / 524288
D/OpenGLRenderer( 3723): PathCache 41180 / 4194304
D/OpenGLRenderer( 3723): TextDropShadowCache 0 / 2097152
D/OpenGLRenderer( 3723): FontRenderer 0 262144 / 262144
D/OpenGLRenderer( 3723): FontRenderer 1 262144 / 262144
D/OpenGLRenderer( 3723): FontRenderer 2 262144 / 262144
D/OpenGLRenderer( 3723): Other:
D/OpenGLRenderer( 3723): FboCache 2 / 12
D/OpenGLRenderer( 3723): PatchCache 31 / 512
D/OpenGLRenderer( 3723): Total memory usage:
D/OpenGLRenderer( 3723): 8268404 bytes, 7.89 MB
This should help tracking possibe memory issues.
Change-Id: I83f483ca1d2dbef904829bce368e33fe5503e8d6
diff --git a/libs/hwui/Caches.cpp b/libs/hwui/Caches.cpp
index 93c5b34..248e054 100644
--- a/libs/hwui/Caches.cpp
+++ b/libs/hwui/Caches.cpp
@@ -16,6 +16,8 @@
#define LOG_TAG "OpenGLRenderer"
+#include <utils/Log.h>
+
#include "Caches.h"
namespace android {
@@ -54,6 +56,41 @@
}
///////////////////////////////////////////////////////////////////////////////
+// Debug
+///////////////////////////////////////////////////////////////////////////////
+
+void Caches::dumpMemoryUsage() {
+ LOGD("Current memory usage / total memory usage (bytes):");
+ LOGD(" TextureCache %8d / %8d", textureCache.getSize(), textureCache.getMaxSize());
+ LOGD(" LayerCache %8d / %8d", layerCache.getSize(), layerCache.getMaxSize());
+ LOGD(" GradientCache %8d / %8d", gradientCache.getSize(), gradientCache.getMaxSize());
+ LOGD(" PathCache %8d / %8d", pathCache.getSize(), pathCache.getMaxSize());
+ LOGD(" TextDropShadowCache %8d / %8d", dropShadowCache.getSize(),
+ dropShadowCache.getMaxSize());
+ for (uint32_t i = 0; i < fontRenderer.getFontRendererCount(); i++) {
+ const uint32_t size = fontRenderer.getFontRendererSize(i);
+ LOGD(" FontRenderer %d %8d / %8d", i, size, size);
+ }
+ LOGD("Other:");
+ LOGD(" FboCache %8d / %8d", fboCache.getSize(), fboCache.getMaxSize());
+ LOGD(" PatchCache %8d / %8d", patchCache.getSize(), patchCache.getMaxSize());
+
+ uint32_t total = 0;
+ total += textureCache.getSize();
+ total += layerCache.getSize();
+ total += gradientCache.getSize();
+ total += pathCache.getSize();
+ total += dropShadowCache.getSize();
+ for (uint32_t i = 0; i < fontRenderer.getFontRendererCount(); i++) {
+ total += fontRenderer.getFontRendererSize(i);
+ }
+
+ LOGD("Total memory usage:");
+ LOGD(" %d bytes, %.2f MB", total, total / 1024.0f / 1024.0f);
+ LOGD("\n");
+}
+
+///////////////////////////////////////////////////////////////////////////////
// VBO
///////////////////////////////////////////////////////////////////////////////