Merge "Add tracepoints for monitoring HWUI's (persistent) ShaderCache" into tm-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
78020a0196
@@ -139,12 +139,43 @@ sk_sp<SkData> ShaderCache::load(const SkData& key) {
|
|||||||
return SkData::MakeFromMalloc(valueBuffer, valueSize);
|
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() {
|
void ShaderCache::saveToDiskLocked() {
|
||||||
ATRACE_NAME("ShaderCache::saveToDiskLocked");
|
ATRACE_NAME("ShaderCache::saveToDiskLocked");
|
||||||
if (mInitialized && mBlobCache && mSavePending) {
|
if (mInitialized && mBlobCache && mSavePending) {
|
||||||
if (mIDHash.size()) {
|
if (mIDHash.size()) {
|
||||||
auto key = sIDKey;
|
auto key = sIDKey;
|
||||||
mBlobCache->set(&key, sizeof(key), mIDHash.data(), mIDHash.size());
|
set(mBlobCache.get(), &key, sizeof(key), mIDHash.data(), mIDHash.size());
|
||||||
}
|
}
|
||||||
mBlobCache->writeToFile();
|
mBlobCache->writeToFile();
|
||||||
}
|
}
|
||||||
@@ -187,7 +218,7 @@ void ShaderCache::store(const SkData& key, const SkData& data) {
|
|||||||
mNewPipelineCacheSize = -1;
|
mNewPipelineCacheSize = -1;
|
||||||
mTryToStorePipelineCache = true;
|
mTryToStorePipelineCache = true;
|
||||||
}
|
}
|
||||||
bc->set(key.data(), keySize, value, valueSize);
|
set(bc, key.data(), keySize, value, valueSize);
|
||||||
|
|
||||||
if (!mSavePending && mDeferredSaveDelay > 0) {
|
if (!mSavePending && mDeferredSaveDelay > 0) {
|
||||||
mSavePending = true;
|
mSavePending = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user