diff options
| author | 2021-02-23 01:32:32 +0000 | |
|---|---|---|
| committer | 2021-02-23 01:32:32 +0000 | |
| commit | 4ab66f469c72a352fe78656cf8faa7c2a118a7ce (patch) | |
| tree | c6cf6511bcdf385c0bf168a28a9359854b631a8f | |
| parent | a8109d468ad5beb766e385ae213398ad0c97c23b (diff) | |
| parent | beba6f0a81de3145552713c2aee75c34fa0a8cdb (diff) | |
Merge "SurfaceFlinger: Add ClientCache dumps" into sc-dev
| -rw-r--r-- | services/surfaceflinger/ClientCache.cpp | 16 | ||||
| -rw-r--r-- | services/surfaceflinger/ClientCache.h | 2 | ||||
| -rw-r--r-- | services/surfaceflinger/SurfaceFlinger.cpp | 2 |
3 files changed, 20 insertions, 0 deletions
diff --git a/services/surfaceflinger/ClientCache.cpp b/services/surfaceflinger/ClientCache.cpp index a5be01c75c..2ae49fa6bb 100644 --- a/services/surfaceflinger/ClientCache.cpp +++ b/services/surfaceflinger/ClientCache.cpp @@ -25,6 +25,8 @@ namespace android { +using base::StringAppendF; + ANDROID_SINGLETON_STATIC_INSTANCE(ClientCache); ClientCache::ClientCache() : mDeathRecipient(new CacheDeathRecipient) {} @@ -203,4 +205,18 @@ void ClientCache::CacheDeathRecipient::binderDied(const wp<IBinder>& who) { ClientCache::getInstance().removeProcess(who); } +void ClientCache::dump(std::string& result) { + std::lock_guard lock(mMutex); + for (auto i : mBuffers) { + const sp<IBinder>& cacheOwner = i.second.first; + StringAppendF(&result," Cache owner: %p\n", cacheOwner.get()); + auto &buffers = i.second.second; + for (auto& [id, clientCacheBuffer] : buffers) { + StringAppendF(&result, "\t ID: %d, Width/Height: %d,%d\n", (int)id, + (int)clientCacheBuffer.buffer->getWidth(), + (int)clientCacheBuffer.buffer->getHeight()); + } + } +} + }; // namespace android diff --git a/services/surfaceflinger/ClientCache.h b/services/surfaceflinger/ClientCache.h index d7af7c0e97..0d597c8e05 100644 --- a/services/surfaceflinger/ClientCache.h +++ b/services/surfaceflinger/ClientCache.h @@ -53,6 +53,8 @@ public: void unregisterErasedRecipient(const client_cache_t& cacheId, const wp<ErasedRecipient>& recipient); + void dump(std::string& result); + private: std::mutex mMutex; diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index da8360edaf..4ee759f0b0 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -4812,6 +4812,8 @@ void SurfaceFlinger::dumpAllLocked(const DumpArgs& args, std::string& result) co getRenderEngine().dump(result); + result.append("ClientCache state:\n"); + ClientCache::getInstance().dump(result); DebugEGLImageTracker::getInstance()->dump(result); if (const auto display = getDefaultDisplayDeviceLocked()) { |