Print detailed memory usage of Skia for dumpsys gfxinfo
Bug: 74435803
Test: adb shell dumpsys gfxinfo [package_name]
Change-Id: I1f2bcab500fb47c5e0b50c7459d4a876b063916b
diff --git a/libs/hwui/renderthread/CacheManager.cpp b/libs/hwui/renderthread/CacheManager.cpp
index 907f2d2..32d4c77 100644
--- a/libs/hwui/renderthread/CacheManager.cpp
+++ b/libs/hwui/renderthread/CacheManager.cpp
@@ -20,10 +20,12 @@
#include "Properties.h"
#include "RenderThread.h"
#include "pipeline/skia/ShaderCache.h"
+#include "pipeline/skia/SkiaMemoryTracer.h"
#include "renderstate/RenderState.h"
#include <GrContextOptions.h>
#include <SkExecutor.h>
+#include <SkGraphics.h>
#include <gui/Surface.h>
#include <math.h>
#include <set>
@@ -178,12 +180,29 @@
return;
}
- size_t bytesCached;
- mGrContext->getResourceCacheUsage(nullptr, &bytesCached);
+ log.appendFormat("Font Cache (CPU):\n");
+ log.appendFormat(" Size: %.2f kB \n", SkGraphics::GetFontCacheUsed() / 1024.0f);
+ log.appendFormat(" Glyph Count: %d \n", SkGraphics::GetFontCacheCountUsed());
- log.appendFormat("Caches:\n");
+ log.appendFormat("CPU Caches:\n");
+ std::vector<skiapipeline::ResourcePair> cpuResourceMap = {
+ {"skia/sk_resource_cache/bitmap_", "Bitmaps"},
+ {"skia/sk_resource_cache/rrect-blur_", "Masks"},
+ {"skia/sk_resource_cache/rects-blur_", "Masks"},
+ {"skia/sk_resource_cache/tessellated", "Shadows"},
+ };
+ skiapipeline::SkiaMemoryTracer cpuTracer(cpuResourceMap, false);
+ SkGraphics::DumpMemoryStatistics(&cpuTracer);
+ cpuTracer.logOutput(log);
+
+ log.appendFormat("GPU Caches:\n");
+ skiapipeline::SkiaMemoryTracer gpuTracer("category", true);
+ mGrContext->dumpMemoryStatistics(&gpuTracer);
+ gpuTracer.logOutput(log);
+
+ log.appendFormat("Other Caches:\n");
log.appendFormat(" Current / Maximum\n");
- log.appendFormat(" VectorDrawableAtlas %6.2f kB / %6.2f kB (entries = %zu)\n", 0.0f, 0.0f,
+ log.appendFormat(" VectorDrawableAtlas %6.2f kB / %6.2f KB (entries = %zu)\n", 0.0f, 0.0f,
(size_t)0);
if (renderState) {
@@ -200,14 +219,12 @@
layer->getHeight());
layerMemoryTotal += layer->getWidth() * layer->getHeight() * 4;
}
- log.appendFormat(" Layers Total %6.2f kB (numLayers = %zu)\n",
+ log.appendFormat(" Layers Total %6.2f KB (numLayers = %zu)\n",
layerMemoryTotal / 1024.0f, renderState->mActiveLayers.size());
}
- log.appendFormat("Total memory usage:\n");
- log.appendFormat(" %zu bytes, %.2f MB (%.2f MB is purgeable)\n", bytesCached,
- bytesCached / 1024.0f / 1024.0f,
- mGrContext->getResourceCachePurgeableBytes() / 1024.0f / 1024.0f);
+ log.appendFormat("Total GPU memory usage:\n");
+ gpuTracer.logTotals(log);
}
} /* namespace renderthread */