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

Commit 57cee762 authored by John Reck's avatar John Reck
Browse files

Fix rate limiting comparison

Also tweak deferred cleanup for persistent processes to reduce
total memory usage.

Bug: 275486055
Test: watching gfxinfo of sysui
Change-Id: Id679a43062941c096d437b76aebe1a5a9ca0b404
parent de9ac4dc
Loading
Loading
Loading
Loading
+3 −0
Original line number Original line Diff line number Diff line
@@ -28,7 +28,10 @@ namespace android::uirenderer {
constexpr static MemoryPolicy sDefaultMemoryPolicy;
constexpr static MemoryPolicy sDefaultMemoryPolicy;
constexpr static MemoryPolicy sPersistentOrSystemPolicy{
constexpr static MemoryPolicy sPersistentOrSystemPolicy{
        .contextTimeout = 10_s,
        .contextTimeout = 10_s,
        .minimumResourceRetention = 1_s,
        .maximumResourceRetention = 10_s,
        .useAlternativeUiHidden = true,
        .useAlternativeUiHidden = true,
        .purgeScratchOnly = false,
};
};
constexpr static MemoryPolicy sLowRamPolicy{
constexpr static MemoryPolicy sLowRamPolicy{
        .useAlternativeUiHidden = true,
        .useAlternativeUiHidden = true,
+2 −0
Original line number Original line Diff line number Diff line
@@ -53,6 +53,8 @@ struct MemoryPolicy {
    // The minimum amount of time to hold onto items in the resource cache
    // The minimum amount of time to hold onto items in the resource cache
    // The actual time used will be the max of this & when frames were actually rendered
    // The actual time used will be the max of this & when frames were actually rendered
    nsecs_t minimumResourceRetention = 10_s;
    nsecs_t minimumResourceRetention = 10_s;
    // The maximum amount of time to hold onto items in the resource cache
    nsecs_t maximumResourceRetention = 100000_s;
    // If false, use only TRIM_UI_HIDDEN to drive background cache limits;
    // If false, use only TRIM_UI_HIDDEN to drive background cache limits;
    // If true, use all signals (such as all contexts are stopped) to drive the limits
    // If true, use all signals (such as all contexts are stopped) to drive the limits
    bool useAlternativeUiHidden = true;
    bool useAlternativeUiHidden = true;
+3 −2
Original line number Original line Diff line number Diff line
@@ -277,12 +277,13 @@ void CacheManager::onThreadIdle() {


    const nsecs_t now = systemTime(CLOCK_MONOTONIC);
    const nsecs_t now = systemTime(CLOCK_MONOTONIC);
    // Rate limiting
    // Rate limiting
    if ((now - mLastDeferredCleanup) < 25_ms) {
    if ((now - mLastDeferredCleanup) > 25_ms) {
        mLastDeferredCleanup = now;
        mLastDeferredCleanup = now;
        const nsecs_t frameCompleteNanos = mFrameCompletions[0];
        const nsecs_t frameCompleteNanos = mFrameCompletions[0];
        const nsecs_t frameDiffNanos = now - frameCompleteNanos;
        const nsecs_t frameDiffNanos = now - frameCompleteNanos;
        const nsecs_t cleanupMillis =
        const nsecs_t cleanupMillis =
                ns2ms(std::max(frameDiffNanos, mMemoryPolicy.minimumResourceRetention));
                ns2ms(std::clamp(frameDiffNanos, mMemoryPolicy.minimumResourceRetention,
                                 mMemoryPolicy.maximumResourceRetention));
        mGrContext->performDeferredCleanup(std::chrono::milliseconds(cleanupMillis),
        mGrContext->performDeferredCleanup(std::chrono::milliseconds(cleanupMillis),
                                           mMemoryPolicy.purgeScratchOnly);
                                           mMemoryPolicy.purgeScratchOnly);
    }
    }