summaryrefslogtreecommitdiff
path: root/libs/hwui/renderthread/CacheManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libs/hwui/renderthread/CacheManager.cpp')
-rw-r--r--libs/hwui/renderthread/CacheManager.cpp35
1 files changed, 26 insertions, 9 deletions
diff --git a/libs/hwui/renderthread/CacheManager.cpp b/libs/hwui/renderthread/CacheManager.cpp
index 907f2d2d398f..32d4c77c5fc3 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 @@ void CacheManager::dumpMemoryUsage(String8& log, const RenderState* renderState)
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 @@ void CacheManager::dumpMemoryUsage(String8& log, const RenderState* renderState)
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 */