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

Commit 01a3b158 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 tm-dev am: 78020a01

parents 3b76964f 78020a01
Loading
Loading
Loading
Loading
+33 −2
Original line number Original line Diff line number Diff line
@@ -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;