Merge "Add tracepoints for monitoring HWUI's (persistent) ShaderCache" into tm-dev am: 78020a0196 am: 9c77cf5084 am: 05400067af

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18149799

Change-Id: I5a92560323259adbee7ea0883cf4bb84b51784e6
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
TreeHugger Robot
2022-05-06 15:57:10 +00:00
committed by Automerger Merge Worker

View File

@@ -139,12 +139,43 @@ sk_sp<SkData> ShaderCache::load(const SkData& key) {
return SkData::MakeFromMalloc(valueBuffer, valueSize);
}
namespace {
// Helper for BlobCache::set to trace the result.
void set(BlobCache* cache, const void* key, size_t keySize, const void* value, size_t valueSize) {
switch (cache->set(key, keySize, value, valueSize)) {
case BlobCache::InsertResult::kInserted:
// This is what we expect/hope. It means the cache is large enough.
return;
case BlobCache::InsertResult::kDidClean: {
ATRACE_FORMAT("ShaderCache: evicted an entry to fit {key: %lu value %lu}!", keySize,
valueSize);
return;
}
case BlobCache::InsertResult::kNotEnoughSpace: {
ATRACE_FORMAT("ShaderCache: could not fit {key: %lu value %lu}!", keySize, valueSize);
return;
}
case BlobCache::InsertResult::kInvalidValueSize:
case BlobCache::InsertResult::kInvalidKeySize: {
ATRACE_FORMAT("ShaderCache: invalid size {key: %lu value %lu}!", keySize, valueSize);
return;
}
case BlobCache::InsertResult::kKeyTooBig:
case BlobCache::InsertResult::kValueTooBig:
case BlobCache::InsertResult::kCombinedTooBig: {
ATRACE_FORMAT("ShaderCache: entry too big: {key: %lu value %lu}!", keySize, valueSize);
return;
}
}
}
} // namespace
void ShaderCache::saveToDiskLocked() {
ATRACE_NAME("ShaderCache::saveToDiskLocked");
if (mInitialized && mBlobCache && mSavePending) {
if (mIDHash.size()) {
auto key = sIDKey;
mBlobCache->set(&key, sizeof(key), mIDHash.data(), mIDHash.size());
set(mBlobCache.get(), &key, sizeof(key), mIDHash.data(), mIDHash.size());
}
mBlobCache->writeToFile();
}
@@ -187,7 +218,7 @@ void ShaderCache::store(const SkData& key, const SkData& data) {
mNewPipelineCacheSize = -1;
mTryToStorePipelineCache = true;
}
bc->set(key.data(), keySize, value, valueSize);
set(bc, key.data(), keySize, value, valueSize);
if (!mSavePending && mDeferredSaveDelay > 0) {
mSavePending = true;