Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9da482ba authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Add tracepoints for monitoring HWUI's (persistent) ShaderCache" into...

Merge "Add tracepoints for monitoring HWUI's (persistent) ShaderCache" into tm-dev am: 78020a01 am: 9c77cf50

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



Change-Id: I1a5bc59dee0d429c99615b337cea032016eea22c
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents e8075590 9c77cf50
Loading
Loading
Loading
Loading
+33 −2
Original line number Diff line number Diff line
@@ -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;