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

Commit 28bb2a11 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

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

parents 309f714a 0cfcc70e
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