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

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

Merge "Add traces of the size of HWUI shader cache in RAM" into tm-dev am: b8b3c2d6

parents 01a3b158 b8b3c2d6
Loading
Loading
Loading
Loading
+5 −1
Original line number Original line Diff line number Diff line
@@ -136,6 +136,8 @@ sk_sp<SkData> ShaderCache::load(const SkData& key) {
        free(valueBuffer);
        free(valueBuffer);
        return nullptr;
        return nullptr;
    }
    }
    mNumShadersCachedInRam++;
    ATRACE_FORMAT("HWUI RAM cache: %d shaders", mNumShadersCachedInRam);
    return SkData::MakeFromMalloc(valueBuffer, valueSize);
    return SkData::MakeFromMalloc(valueBuffer, valueSize);
}
}


@@ -182,9 +184,11 @@ void ShaderCache::saveToDiskLocked() {
    mSavePending = false;
    mSavePending = false;
}
}


void ShaderCache::store(const SkData& key, const SkData& data) {
void ShaderCache::store(const SkData& key, const SkData& data, const SkString& /*description*/) {
    ATRACE_NAME("ShaderCache::store");
    ATRACE_NAME("ShaderCache::store");
    std::lock_guard<std::mutex> lock(mMutex);
    std::lock_guard<std::mutex> lock(mMutex);
    mNumShadersCachedInRam++;
    ATRACE_FORMAT("HWUI RAM cache: %d shaders", mNumShadersCachedInRam);


    if (!mInitialized) {
    if (!mInitialized) {
        return;
        return;
+8 −1
Original line number Original line Diff line number Diff line
@@ -73,7 +73,7 @@ public:
     * "store" attempts to insert a new key/value blob pair into the cache.
     * "store" attempts to insert a new key/value blob pair into the cache.
     * This will be called by Skia after it compiled a new SKSL shader
     * This will be called by Skia after it compiled a new SKSL shader
     */
     */
    void store(const SkData& key, const SkData& data) override;
    void store(const SkData& key, const SkData& data, const SkString& description) override;


    /**
    /**
     * "onVkFrameFlushed" tries to store Vulkan pipeline cache state.
     * "onVkFrameFlushed" tries to store Vulkan pipeline cache state.
@@ -210,6 +210,13 @@ private:
     */
     */
    static constexpr uint8_t sIDKey = 0;
    static constexpr uint8_t sIDKey = 0;


    /**
     * Most of this class concerns persistent storage for shaders, but it's also
     * interesting to keep track of how many shaders are stored in RAM. This
     * class provides a convenient entry point for that.
     */
    int mNumShadersCachedInRam = 0;

    friend class ShaderCacheTestUtils;  // used for unit testing
    friend class ShaderCacheTestUtils;  // used for unit testing
};
};


+5 −5
Original line number Original line Diff line number Diff line
@@ -140,9 +140,9 @@ TEST(ShaderCacheTest, testWriteAndRead) {
    // write to the in-memory cache without storing on disk and verify we read the same values
    // write to the in-memory cache without storing on disk and verify we read the same values
    sk_sp<SkData> inVS;
    sk_sp<SkData> inVS;
    setShader(inVS, "sassas");
    setShader(inVS, "sassas");
    ShaderCache::get().store(GrProgramDescTest(100), *inVS.get());
    ShaderCache::get().store(GrProgramDescTest(100), *inVS.get(), SkString());
    setShader(inVS, "someVS");
    setShader(inVS, "someVS");
    ShaderCache::get().store(GrProgramDescTest(432), *inVS.get());
    ShaderCache::get().store(GrProgramDescTest(432), *inVS.get(), SkString());
    ASSERT_NE((outVS = ShaderCache::get().load(GrProgramDescTest(100))), sk_sp<SkData>());
    ASSERT_NE((outVS = ShaderCache::get().load(GrProgramDescTest(100))), sk_sp<SkData>());
    ASSERT_TRUE(checkShader(outVS, "sassas"));
    ASSERT_TRUE(checkShader(outVS, "sassas"));
    ASSERT_NE((outVS = ShaderCache::get().load(GrProgramDescTest(432))), sk_sp<SkData>());
    ASSERT_NE((outVS = ShaderCache::get().load(GrProgramDescTest(432))), sk_sp<SkData>());
@@ -166,7 +166,7 @@ TEST(ShaderCacheTest, testWriteAndRead) {


    // change data, store to disk, read back again and verify data has been changed
    // change data, store to disk, read back again and verify data has been changed
    setShader(inVS, "ewData1");
    setShader(inVS, "ewData1");
    ShaderCache::get().store(GrProgramDescTest(432), *inVS.get());
    ShaderCache::get().store(GrProgramDescTest(432), *inVS.get(), SkString());
    ShaderCacheTestUtils::terminate(ShaderCache::get(), true);
    ShaderCacheTestUtils::terminate(ShaderCache::get(), true);
    ShaderCache::get().initShaderDiskCache();
    ShaderCache::get().initShaderDiskCache();
    ASSERT_NE((outVS2 = ShaderCache::get().load(GrProgramDescTest(432))), sk_sp<SkData>());
    ASSERT_NE((outVS2 = ShaderCache::get().load(GrProgramDescTest(432))), sk_sp<SkData>());
@@ -177,7 +177,7 @@ TEST(ShaderCacheTest, testWriteAndRead) {
    std::vector<uint8_t> dataBuffer(dataSize);
    std::vector<uint8_t> dataBuffer(dataSize);
    genRandomData(dataBuffer);
    genRandomData(dataBuffer);
    setShader(inVS, dataBuffer);
    setShader(inVS, dataBuffer);
    ShaderCache::get().store(GrProgramDescTest(432), *inVS.get());
    ShaderCache::get().store(GrProgramDescTest(432), *inVS.get(), SkString());
    ShaderCacheTestUtils::terminate(ShaderCache::get(), true);
    ShaderCacheTestUtils::terminate(ShaderCache::get(), true);
    ShaderCache::get().initShaderDiskCache();
    ShaderCache::get().initShaderDiskCache();
    ASSERT_NE((outVS2 = ShaderCache::get().load(GrProgramDescTest(432))), sk_sp<SkData>());
    ASSERT_NE((outVS2 = ShaderCache::get().load(GrProgramDescTest(432))), sk_sp<SkData>());
@@ -225,7 +225,7 @@ TEST(ShaderCacheTest, testCacheValidation) {
        setShader(data, dataBuffer);
        setShader(data, dataBuffer);


        blob = std::make_pair(key, data);
        blob = std::make_pair(key, data);
        ShaderCache::get().store(*key.get(), *data.get());
        ShaderCache::get().store(*key.get(), *data.get(), SkString());
    }
    }
    ShaderCacheTestUtils::terminate(ShaderCache::get(), true);
    ShaderCacheTestUtils::terminate(ShaderCache::get(), true);