Loading services/surfaceflinger/Scheduler/RefreshRateSelector.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -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; Loading services/surfaceflinger/tests/unittests/RefreshRateSelectorTest.cpp +18 −0 Original line number Diff line number Diff line Loading @@ -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) { Loading Loading
services/surfaceflinger/Scheduler/RefreshRateSelector.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -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; Loading
services/surfaceflinger/tests/unittests/RefreshRateSelectorTest.cpp +18 −0 Original line number Diff line number Diff line Loading @@ -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) { Loading