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

Commit 4bda6bfa authored by Matt Sarett's avatar Matt Sarett
Browse files

Add debug memory tracking to SkiaGLPipeline

Test: Sample output is below

D/OpenGLRenderer: Resource Cache Usage:
D/OpenGLRenderer:       32 items out of 8192 maximum items
D/OpenGLRenderer:  4635572 bytes (4.42 MB) out of 96.00 MB maximum

This is less verbose than OpenGL memory debug output for
two reasons:
(1) SkiaGL has less caches.
(2) SkiaGL does not support printing on cache additions/evictions.
    This seems like more of an internal debugging tool rather than
    a user-facing debug feature.  I think it's best to leave this
    unimplemented until we find that it might be useful.

BUG:32370375

Change-Id: Ib063f1c2a7f88e9840341b1001d227f556d88f26
parent a7fcb2bc
Loading
Loading
Loading
Loading
+5 −0
Original line number Original line Diff line number Diff line
@@ -95,6 +95,11 @@ bool SkiaOpenGLPipeline::draw(const Frame& frame, const SkRect& screenDirty,
        profileCanvas->flush();
        profileCanvas->flush();
    }
    }


    // Log memory statistics
    if (CC_UNLIKELY(Properties::debugLevel != kDebugDisabled)) {
        dumpResourceCacheUsage();
    }

    return true;
    return true;
}
}


+14 −0
Original line number Original line Diff line number Diff line
@@ -253,6 +253,20 @@ void SkiaPipeline::renderFrame(const LayerUpdateQueue& layers, const SkRect& cli
    canvas->flush();
    canvas->flush();
}
}


void SkiaPipeline::dumpResourceCacheUsage() const {
    int resources, maxResources;
    size_t bytes, maxBytes;
    mRenderThread.getGrContext()->getResourceCacheUsage(&resources, &bytes);
    mRenderThread.getGrContext()->getResourceCacheLimits(&maxResources, &maxBytes);

    SkString log("Resource Cache Usage:\n");
    log.appendf("%8d items out of %d maximum items\n", resources, maxResources);
    log.appendf("%8zu bytes (%.2f MB) out of %.2f MB maximum\n",
            bytes, bytes * (1.0f / (1024.0f * 1024.0f)), maxBytes * (1.0f / (1024.0f * 1024.0f)));

    ALOGD("%s", log.c_str());
}

} /* namespace skiapipeline */
} /* namespace skiapipeline */
} /* namespace uirenderer */
} /* namespace uirenderer */
} /* namespace android */
} /* namespace android */
+3 −0
Original line number Original line Diff line number Diff line
@@ -96,7 +96,10 @@ public:
        mSpotShadowAlpha = lightInfo.spotShadowAlpha;
        mSpotShadowAlpha = lightInfo.spotShadowAlpha;
        mLightCenter = lightGeometry.center;
        mLightCenter = lightGeometry.center;
    }
    }

protected:
protected:
    void dumpResourceCacheUsage() const;

    renderthread::RenderThread& mRenderThread;
    renderthread::RenderThread& mRenderThread;


private:
private:
+5 −0
Original line number Original line Diff line number Diff line
@@ -81,6 +81,11 @@ bool SkiaVulkanPipeline::draw(const Frame& frame, const SkRect& screenDirty,
        profileCanvas->flush();
        profileCanvas->flush();
    }
    }


    // Log memory statistics
    if (CC_UNLIKELY(Properties::debugLevel != kDebugDisabled)) {
        dumpResourceCacheUsage();
    }

    return true;
    return true;
}
}