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

Commit 4b860115 authored by Andy Yu's avatar Andy Yu Committed by Android (Google) Code Review
Browse files

Merge "Add FrameRateOverrideMappings unit test"

parents 4fde5237 d6a36206
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -183,6 +183,11 @@ private:
    std::optional<status_t> mInitError;
};

inline bool operator==(DisplayEventReceiver::Event::FrameRateOverride lhs,
                       DisplayEventReceiver::Event::FrameRateOverride rhs) {
    return (lhs.uid == rhs.uid) && std::abs(lhs.frameRateHz - rhs.frameRateHz) < 0.001f;
}

// ----------------------------------------------------------------------------
}; // namespace android

+7 −1
Original line number Diff line number Diff line
@@ -51,7 +51,8 @@ std::optional<Fps> FrameRateOverrideMappings::getFrameRateOverrideForUid(
    return std::nullopt;
}

std::vector<FrameRateOverride> FrameRateOverrideMappings::getAllFrameRateOverrides() {
std::vector<FrameRateOverride> FrameRateOverrideMappings::getAllFrameRateOverrides(
        bool supportsFrameRateOverrideByContent) {
    std::lock_guard lock(mFrameRateOverridesLock);
    std::vector<FrameRateOverride> overrides;
    overrides.reserve(std::max({mFrameRateOverridesFromGameManager.size(),
@@ -67,6 +68,11 @@ std::vector<FrameRateOverride> FrameRateOverrideMappings::getAllFrameRateOverrid
            overrides.emplace_back(FrameRateOverride{uid, frameRate.getValue()});
        }
    }

    if (!supportsFrameRateOverrideByContent) {
        return overrides;
    }

    for (const auto& [uid, frameRate] : mFrameRateOverridesByContent) {
        if (std::find_if(overrides.begin(), overrides.end(),
                         [uid = uid](auto i) { return i.uid == uid; }) == overrides.end()) {
+2 −1
Original line number Diff line number Diff line
@@ -32,7 +32,8 @@ public:
    std::optional<Fps> getFrameRateOverrideForUid(uid_t uid,
                                                  bool supportsFrameRateOverrideByContent) const
            EXCLUDES(mFrameRateOverridesLock);
    std::vector<FrameRateOverride> getAllFrameRateOverrides() EXCLUDES(mFrameRateOverridesLock);
    std::vector<FrameRateOverride> getAllFrameRateOverrides(bool supportsFrameRateOverrideByContent)
            EXCLUDES(mFrameRateOverridesLock);
    void dump(std::string& result) const;
    bool updateFrameRateOverridesByContent(const UidToFrameRateOverride& frameRateOverrides)
            EXCLUDES(mFrameRateOverridesLock);
+8 −4
Original line number Diff line number Diff line
@@ -263,8 +263,12 @@ void Scheduler::onScreenReleased(ConnectionHandle handle) {
}

void Scheduler::onFrameRateOverridesChanged(ConnectionHandle handle, PhysicalDisplayId displayId) {
    const auto refreshRateConfigs = holdRefreshRateConfigs();
    const bool supportsFrameRateOverrideByContent =
            refreshRateConfigs->supportsFrameRateOverrideByContent();

    std::vector<FrameRateOverride> overrides =
            mFrameRateOverrideMappings.getAllFrameRateOverrides();
            mFrameRateOverrideMappings.getAllFrameRateOverrides(supportsFrameRateOverrideByContent);

    android::EventThread* thread;
    {
@@ -682,10 +686,10 @@ void Scheduler::dumpVsync(std::string& out) const {

bool Scheduler::updateFrameRateOverrides(GlobalSignals consideredSignals, Fps displayRefreshRate) {
    const auto refreshRateConfigs = holdRefreshRateConfigs();
    if (!refreshRateConfigs->supportsFrameRateOverrideByContent()) {
        return false;
    }

    // we always update mFrameRateOverridesByContent here
    // supportsFrameRateOverridesByContent will be checked
    // when getting FrameRateOverrides from mFrameRateOverrideMappings
    if (!consideredSignals.idle) {
        const auto frameRateOverrides =
                refreshRateConfigs->getFrameRateOverrides(mPolicy.contentRequirements,
+1 −0
Original line number Diff line number Diff line
@@ -80,6 +80,7 @@ cc_test {
        "FpsReporterTest.cpp",
        "FpsTest.cpp",
        "FramebufferSurfaceTest.cpp",
        "FrameRateOverrideMappingsTest.cpp",
        "FrameTimelineTest.cpp",
        "GameModeTest.cpp",
        "HWComposerTest.cpp",
Loading