Merge "Add tracepoints for monitoring HWUI's (persistent) ShaderCache" into tm-dev am: 78020a0196 am: 9c77cf5084
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18149799 Change-Id: I59b3d8262998fcdd5bc7f98c9303a38011db84f4 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user