Revert "SF: change the min supported frame rate to 1Hz"
This reverts commit 1bcf5292d51d432842d603c56fc9f519ee58687f.
Reason for revert: Fixing the original bug (b/261520501) in a different way that doesn't create a long list of refresh rates divisors
Change-Id: I94f5e0a77cc5cec64190d9ca7de2931e4216d005
diff --git a/services/surfaceflinger/Scheduler/RefreshRateSelector.h b/services/surfaceflinger/Scheduler/RefreshRateSelector.h
index 14d08f8..4f5842a 100644
--- a/services/surfaceflinger/Scheduler/RefreshRateSelector.h
+++ b/services/surfaceflinger/Scheduler/RefreshRateSelector.h
@@ -61,7 +61,7 @@
std::chrono::nanoseconds(800us).count();
// The lowest Render Frame Rate that will ever be selected
- static constexpr Fps kMinSupportedFrameRate = 1_Hz;
+ static constexpr Fps kMinSupportedFrameRate = 20_Hz;
class Policy {
static constexpr int kAllowGroupSwitchingDefault = false;
diff --git a/services/surfaceflinger/tests/unittests/RefreshRateSelectorTest.cpp b/services/surfaceflinger/tests/unittests/RefreshRateSelectorTest.cpp
index 79d02dd..a3b3c4c 100644
--- a/services/surfaceflinger/tests/unittests/RefreshRateSelectorTest.cpp
+++ b/services/surfaceflinger/tests/unittests/RefreshRateSelectorTest.cpp
@@ -141,12 +141,6 @@
RefreshRateSelectorTest();
~RefreshRateSelectorTest();
- // Represents the number of refresh rates possible
- // from 1_Hz to 90_hz, including fractional rates.
- static constexpr size_t kTotalRefreshRates120 = 120;
- // Represents the number of refresh rates possible
- // from 1_Hz to 120_hz, including fractional rates.
- static constexpr size_t kTotalRefreshRates216 = 216;
static constexpr DisplayModeId kModeId60{0};
static constexpr DisplayModeId kModeId90{1};
static constexpr DisplayModeId kModeId72{2};
@@ -1135,12 +1129,7 @@
return {{90_Hz, kMode90}, {60_Hz, kMode60}, {45_Hz, kMode90}, {30_Hz, kMode30}};
}
}();
-
- if (GetParam() == Config::FrameRateOverride::Enabled) {
- ASSERT_EQ(kTotalRefreshRates120, refreshRates.size());
- } else {
- ASSERT_EQ(expectedRefreshRates.size(), refreshRates.size());
- }
+ ASSERT_EQ(expectedRefreshRates.size(), refreshRates.size());
for (size_t i = 0; i < expectedRefreshRates.size(); ++i) {
EXPECT_EQ(expectedRefreshRates[i], refreshRates[i].frameRateMode)
@@ -1166,18 +1155,10 @@
case Config::FrameRateOverride::AppOverride:
return {{30_Hz, kMode30}, {60_Hz, kMode60}, {90_Hz, kMode90}};
case Config::FrameRateOverride::Enabled:
- return {{1_Hz, kMode30},
- {1.011_Hz, kMode90},
- {1.016_Hz, kMode60},
- {1.022_Hz, kMode90}};
+ return {{30_Hz, kMode30}, {45_Hz, kMode90}, {60_Hz, kMode60}, {90_Hz, kMode90}};
}
}();
-
- if (GetParam() == Config::FrameRateOverride::Enabled) {
- ASSERT_EQ(kTotalRefreshRates120, refreshRates.size());
- } else {
- ASSERT_EQ(expectedRefreshRates.size(), refreshRates.size());
- }
+ ASSERT_EQ(expectedRefreshRates.size(), refreshRates.size());
for (size_t i = 0; i < expectedRefreshRates.size(); ++i) {
EXPECT_EQ(expectedRefreshRates[i], refreshRates[i].frameRateMode)
@@ -1269,12 +1250,7 @@
{30_Hz, kMode60}, {22.5_Hz, kMode90}, {20_Hz, kMode60}};
}
}();
-
- if (GetParam() == Config::FrameRateOverride::Enabled) {
- ASSERT_EQ(kTotalRefreshRates120, refreshRates.size());
- } else {
- ASSERT_EQ(expectedRefreshRates.size(), refreshRates.size());
- }
+ ASSERT_EQ(expectedRefreshRates.size(), refreshRates.size());
for (size_t i = 0; i < expectedRefreshRates.size(); ++i) {
EXPECT_EQ(expectedRefreshRates[i], refreshRates[i].frameRateMode)
@@ -1288,11 +1264,7 @@
selector.getRankedRefreshRatesAsPair({}, {.powerOnImminent = true});
EXPECT_TRUE(signals.powerOnImminent);
- if (GetParam() == Config::FrameRateOverride::Enabled) {
- ASSERT_EQ(kTotalRefreshRates120, refreshRates.size());
- } else {
- ASSERT_EQ(expectedRefreshRates.size(), refreshRates.size());
- }
+ ASSERT_EQ(expectedRefreshRates.size(), refreshRates.size());
for (size_t i = 0; i < expectedRefreshRates.size(); ++i) {
EXPECT_EQ(expectedRefreshRates[i], refreshRates[i].frameRateMode)
@@ -1312,11 +1284,7 @@
selector.getRankedRefreshRatesAsPair(layers, {.powerOnImminent = true});
EXPECT_TRUE(signals.powerOnImminent);
- if (GetParam() == Config::FrameRateOverride::Enabled) {
- ASSERT_EQ(kTotalRefreshRates120, refreshRates.size());
- } else {
- ASSERT_EQ(expectedRefreshRates.size(), refreshRates.size());
- }
+ ASSERT_EQ(expectedRefreshRates.size(), refreshRates.size());
for (size_t i = 0; i < expectedRefreshRates.size(); ++i) {
EXPECT_EQ(expectedRefreshRates[i], refreshRates[i].frameRateMode)
@@ -1341,12 +1309,7 @@
{30_Hz, kMode60}, {22.5_Hz, kMode90}, {20_Hz, kMode60}};
}
}();
-
- if (GetParam() == Config::FrameRateOverride::Enabled) {
- ASSERT_EQ(kTotalRefreshRates120, refreshRates.size());
- } else {
- ASSERT_EQ(expectedRefreshRates.size(), refreshRates.size());
- }
+ ASSERT_EQ(expectedRefreshRates.size(), refreshRates.size());
for (size_t i = 0; i < expectedRefreshRates.size(); ++i) {
EXPECT_EQ(expectedRefreshRates[i], refreshRates[i].frameRateMode)
@@ -1599,11 +1562,7 @@
}();
auto actualRanking = selector.getRankedFrameRates(layers, {}).ranking;
- if (GetParam() == Config::FrameRateOverride::Enabled) {
- ASSERT_EQ(kTotalRefreshRates216, actualRanking.size());
- } else {
- ASSERT_EQ(expectedRanking.size(), actualRanking.size());
- }
+ ASSERT_EQ(expectedRanking.size(), actualRanking.size());
for (size_t i = 0; i < expectedRanking.size(); ++i) {
EXPECT_EQ(expectedRanking[i], actualRanking[i].frameRateMode)
@@ -1645,11 +1604,7 @@
}();
actualRanking = selector.getRankedFrameRates(layers, {}).ranking;
- if (GetParam() == Config::FrameRateOverride::Enabled) {
- ASSERT_EQ(kTotalRefreshRates216, actualRanking.size());
- } else {
- ASSERT_EQ(expectedRanking.size(), actualRanking.size());
- }
+ ASSERT_EQ(expectedRanking.size(), actualRanking.size());
for (size_t i = 0; i < expectedRanking.size(); ++i) {
EXPECT_EQ(expectedRanking[i], actualRanking[i].frameRateMode)
@@ -1689,11 +1644,7 @@
}();
actualRanking = selector.getRankedFrameRates(layers, {}).ranking;
- if (GetParam() == Config::FrameRateOverride::Enabled) {
- ASSERT_EQ(kTotalRefreshRates216, actualRanking.size());
- } else {
- ASSERT_EQ(expectedRanking.size(), actualRanking.size());
- }
+ ASSERT_EQ(expectedRanking.size(), actualRanking.size());
for (size_t i = 0; i < expectedRanking.size(); ++i) {
EXPECT_EQ(expectedRanking[i], actualRanking[i].frameRateMode)
@@ -1736,11 +1687,7 @@
}();
actualRanking = selector.getRankedFrameRates(layers, {}).ranking;
- if (GetParam() == Config::FrameRateOverride::Enabled) {
- ASSERT_EQ(kTotalRefreshRates216, actualRanking.size());
- } else {
- ASSERT_EQ(expectedRanking.size(), actualRanking.size());
- }
+ ASSERT_EQ(expectedRanking.size(), actualRanking.size());
for (size_t i = 0; i < expectedRanking.size(); ++i) {
EXPECT_EQ(expectedRanking[i], actualRanking[i].frameRateMode)
@@ -2370,8 +2317,7 @@
}
// b/190578904
-TEST_P(RefreshRateSelectorTest,
- getBestFrameRateMode_withCloseRefreshRates_LayerVoteType_Heuristic) {
+TEST_P(RefreshRateSelectorTest, getBestFrameRateMode_withCloseRefreshRates) {
if (g_noSlowTests) {
GTEST_SKIP();
}
@@ -2400,101 +2346,8 @@
for (int fps = kMinRefreshRate; fps < kMaxRefreshRate; fps++) {
const auto refreshRate = Fps::fromValue(static_cast<float>(fps));
testRefreshRate(refreshRate, LayerVoteType::Heuristic);
- }
-}
-TEST_P(RefreshRateSelectorTest,
- getBestFrameRateMode_withCloseRefreshRates_LayerVoteType_ExplicitDefault) {
- if (g_noSlowTests) {
- GTEST_SKIP();
- }
-
- const int kMinRefreshRate = RefreshRateSelector::kMinSupportedFrameRate.getIntValue();
- constexpr int kMaxRefreshRate = 240;
-
- DisplayModes displayModes;
- for (int fps = kMinRefreshRate; fps < kMaxRefreshRate; fps++) {
- const DisplayModeId modeId(fps);
- displayModes.try_emplace(modeId,
- createDisplayMode(modeId,
- Fps::fromValue(static_cast<float>(fps))));
- }
-
- const auto selector = createSelector(std::move(displayModes), DisplayModeId(kMinRefreshRate));
-
- std::vector<LayerRequirement> layers = {{.weight = 1.f}};
- const auto testRefreshRate = [&](Fps fps, LayerVoteType vote) {
- layers[0].desiredRefreshRate = fps;
- layers[0].vote = vote;
- EXPECT_EQ(fps.getIntValue(), selector.getBestFrameRateMode(layers)->getFps().getIntValue())
- << "Failed for " << ftl::enum_string(vote);
- };
-
- for (int fps = kMinRefreshRate; fps < kMaxRefreshRate; fps++) {
- const auto refreshRate = Fps::fromValue(static_cast<float>(fps));
testRefreshRate(refreshRate, LayerVoteType::ExplicitDefault);
- }
-}
-TEST_P(RefreshRateSelectorTest,
- getBestFrameRateMode_withCloseRefreshRates_LayerVoteType_ExplicitExactOrMultiple) {
- if (g_noSlowTests) {
- GTEST_SKIP();
- }
-
- const int kMinRefreshRate = RefreshRateSelector::kMinSupportedFrameRate.getIntValue();
- constexpr int kMaxRefreshRate = 240;
-
- DisplayModes displayModes;
- for (int fps = kMinRefreshRate; fps < kMaxRefreshRate; fps++) {
- const DisplayModeId modeId(fps);
- displayModes.try_emplace(modeId,
- createDisplayMode(modeId,
- Fps::fromValue(static_cast<float>(fps))));
- }
-
- const auto selector = createSelector(std::move(displayModes), DisplayModeId(kMinRefreshRate));
-
- std::vector<LayerRequirement> layers = {{.weight = 1.f}};
- const auto testRefreshRate = [&](Fps fps, LayerVoteType vote) {
- layers[0].desiredRefreshRate = fps;
- layers[0].vote = vote;
- EXPECT_EQ(fps.getIntValue(), selector.getBestFrameRateMode(layers)->getFps().getIntValue())
- << "Failed for " << ftl::enum_string(vote);
- };
-
- for (int fps = kMinRefreshRate; fps < kMaxRefreshRate; fps++) {
- const auto refreshRate = Fps::fromValue(static_cast<float>(fps));
testRefreshRate(refreshRate, LayerVoteType::ExplicitExactOrMultiple);
- }
-}
-TEST_P(RefreshRateSelectorTest,
- getBestFrameRateMode_withCloseRefreshRates_LayerVoteType_ExplicitExact) {
- if (g_noSlowTests) {
- GTEST_SKIP();
- }
-
- const int kMinRefreshRate = RefreshRateSelector::kMinSupportedFrameRate.getIntValue();
- constexpr int kMaxRefreshRate = 240;
-
- DisplayModes displayModes;
- for (int fps = kMinRefreshRate; fps < kMaxRefreshRate; fps++) {
- const DisplayModeId modeId(fps);
- displayModes.try_emplace(modeId,
- createDisplayMode(modeId,
- Fps::fromValue(static_cast<float>(fps))));
- }
-
- const auto selector = createSelector(std::move(displayModes), DisplayModeId(kMinRefreshRate));
-
- std::vector<LayerRequirement> layers = {{.weight = 1.f}};
- const auto testRefreshRate = [&](Fps fps, LayerVoteType vote) {
- layers[0].desiredRefreshRate = fps;
- layers[0].vote = vote;
- EXPECT_EQ(fps.getIntValue(), selector.getBestFrameRateMode(layers)->getFps().getIntValue())
- << "Failed for " << ftl::enum_string(vote);
- };
-
- for (int fps = kMinRefreshRate; fps < kMaxRefreshRate; fps++) {
- const auto refreshRate = Fps::fromValue(static_cast<float>(fps));
testRefreshRate(refreshRate, LayerVoteType::ExplicitExact);
}
}
@@ -2954,18 +2807,13 @@
{90_Hz, 90_Hz},
{120_Hz, 120_Hz}};
case Config::FrameRateOverride::Enabled:
- return {{1_Hz, 30_Hz}, {1.008_Hz, 120_Hz}, {1.011_Hz, 90_Hz},
- {1.014_Hz, 72_Hz}, {1.016_Hz, 60_Hz}, {1.022_Hz, 90_Hz},
- {1.0256_Hz, 120_Hz}, {1.028_Hz, 72_Hz}};
+ return {{30_Hz, 30_Hz}, {36_Hz, 72_Hz}, {40_Hz, 120_Hz}, {45_Hz, 90_Hz},
+ {60_Hz, 60_Hz}, {72_Hz, 72_Hz}, {90_Hz, 90_Hz}, {120_Hz, 120_Hz}};
}
}();
const auto& primaryRefreshRates = selector.getPrimaryFrameRates();
- if (GetParam() == Config::FrameRateOverride::Enabled) {
- ASSERT_EQ(kTotalRefreshRates216, primaryRefreshRates.size());
- } else {
- ASSERT_EQ(expected.size(), primaryRefreshRates.size());
- }
+ ASSERT_EQ(expected.size(), primaryRefreshRates.size());
for (size_t i = 0; i < expected.size(); i++) {
const auto [expectedRenderRate, expectedRefreshRate] = expected[i];