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

Commit 87bd09d1 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "SF: fix a bug when render frame rate range is lower then supported"...

Merge "SF: fix a bug when render frame rate range is lower then supported" into udc-qpr-dev am: 28bb2a11

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/24167794



Change-Id: I4ddafc0ac4509aab45bc8a46230d7bd1e7b9cbec
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents f9f54892 28bb2a11
Loading
Loading
Loading
Loading
+12 −3
Original line number Diff line number Diff line
@@ -1221,10 +1221,19 @@ void RefreshRateSelector::constructAvailableRefreshRates() {
                    (supportsFrameRateOverride() || ranges.render.includes(mode.getFps()));
        };

        const auto frameRateModes = createFrameRateModes(filterModes, ranges.render);
        LOG_ALWAYS_FATAL_IF(frameRateModes.empty(),
                            "No matching frame rate modes for %s range. policy: %s", rangeName,
        auto frameRateModes = createFrameRateModes(filterModes, ranges.render);
        if (frameRateModes.empty()) {
            ALOGW("No matching frame rate modes for %s range. policy: %s", rangeName,
                  policy->toString().c_str());
            // TODO(b/292105422): Ideally DisplayManager should not send render ranges smaller than
            // the min supported. See b/292047939.
            //  For not we just ignore the render ranges.
            frameRateModes = createFrameRateModes(filterModes, {});
        }
        LOG_ALWAYS_FATAL_IF(frameRateModes.empty(),
                            "No matching frame rate modes for %s range even after ignoring the "
                            "render range. policy: %s",
                            rangeName, policy->toString().c_str());

        const auto stringifyModes = [&] {
            std::string str;
+15 −0
Original line number Diff line number Diff line
@@ -3042,5 +3042,20 @@ TEST_P(RefreshRateSelectorTest, frameRateNotInRange) {
    EXPECT_FRAME_RATE_MODE(kMode60, 60_Hz, selector.getBestScoredFrameRate(layers).frameRateMode);
}

TEST_P(RefreshRateSelectorTest, frameRateIsLowerThanMinSupported) {
    if (GetParam() != Config::FrameRateOverride::Enabled) {
        return;
    }

    auto selector = createSelector(kModes_60_90, kModeId60);

    constexpr Fps kMin = RefreshRateSelector::kMinSupportedFrameRate;
    constexpr FpsRanges kLowerThanMin = {{60_Hz, 90_Hz}, {kMin / 2, kMin / 2}};

    EXPECT_EQ(SetPolicyResult::Changed,
              selector.setDisplayManagerPolicy(
                      {DisplayModeId(kModeId60), kLowerThanMin, kLowerThanMin}));
}

} // namespace
} // namespace android::scheduler