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
 ///////////////////////////////////////////////////////////////////////////////