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

Commit 36426fa5 authored by Rachel Lee's avatar Rachel Lee
Browse files

Fix 59.94 fps content to choose 60 Hz mode.

Let's set the kMinMultiplier higher because in general pull-down is
preferred over frame drops.

Test: atest RefreshRateSelectorTest
Fixes: 264925222
Change-Id: Ib7454d6b2c064385bc325192034fe0a1d7322bd7
parent 3e76a50f
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -308,7 +308,7 @@ float RefreshRateSelector::calculateNonExactMatchingLayerScoreLocked(const Layer
        // significantly faster than the display rate, at it would cause a significant frame drop.
        // It is more appropriate to choose a higher display rate even if
        // a pull-down will be required.
        constexpr float kMinMultiplier = 0.25f;
        constexpr float kMinMultiplier = 0.75f;
        if (multiplier >= kMinMultiplier &&
            isFractionalPairOrMultiple(refreshRate, layer.desiredRefreshRate)) {
            return kScoreForFractionalPairs;
+18 −0
Original line number Diff line number Diff line
@@ -1455,6 +1455,24 @@ TEST_P(RefreshRateSelectorTest,
        lr.name = "ExplicitExactOrMultiple 29.97 Hz";
        EXPECT_EQ(kModeId60Frac, selector.getBestFrameRateMode(layers)->getId());
    }

    // Test that 29.97 will choose 30 if 59.94 is not supported
    {
        auto selector = createSelector(makeModes(kMode30, kMode60), kModeId60);

        lr.desiredRefreshRate = 29.97_Hz;
        lr.name = "ExplicitExactOrMultiple 29.97 Hz";
        EXPECT_EQ(kModeId30, selector.getBestFrameRateMode(layers)->getId());
    }

    // Test that 59.94 will choose 60 if 59.94 is not supported
    {
        auto selector = createSelector(makeModes(kMode60, kMode30Frac, kMode30), kModeId60);

        lr.desiredRefreshRate = 59.94_Hz;
        lr.name = "ExplicitExactOrMultiple 59.94 Hz";
        EXPECT_EQ(kModeId60, selector.getBestFrameRateMode(layers)->getId());
    }
}

TEST_P(RefreshRateSelectorTest, getBestFrameRateMode_ExplicitExact_WithFractionalRefreshRates) {