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

Commit 1d173043 authored by Ady Abraham's avatar Ady Abraham
Browse files

Revert "SF: change the min supported frame rate to 1Hz"

This reverts commit 1bcf5292.

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
parent 02ceef72
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -61,7 +61,7 @@ public:
            std::chrono::nanoseconds(800us).count();
            std::chrono::nanoseconds(800us).count();


    // The lowest Render Frame Rate that will ever be selected
    // The lowest Render Frame Rate that will ever be selected
    static constexpr Fps kMinSupportedFrameRate = 1_Hz;
    static constexpr Fps kMinSupportedFrameRate = 20_Hz;


    class Policy {
    class Policy {
        static constexpr int kAllowGroupSwitchingDefault = false;
        static constexpr int kAllowGroupSwitchingDefault = false;
+15 −167
Original line number Original line Diff line number Diff line
@@ -141,12 +141,6 @@ protected:
    RefreshRateSelectorTest();
    RefreshRateSelectorTest();
    ~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 kModeId60{0};
    static constexpr DisplayModeId kModeId90{1};
    static constexpr DisplayModeId kModeId90{1};
    static constexpr DisplayModeId kModeId72{2};
    static constexpr DisplayModeId kModeId72{2};
@@ -1135,12 +1129,7 @@ TEST_P(RefreshRateSelectorTest, getMaxRefreshRatesByPolicy) {
                return {{90_Hz, kMode90}, {60_Hz, kMode60}, {45_Hz, kMode90}, {30_Hz, kMode30}};
                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) {
    for (size_t i = 0; i < expectedRefreshRates.size(); ++i) {
        EXPECT_EQ(expectedRefreshRates[i], refreshRates[i].frameRateMode)
        EXPECT_EQ(expectedRefreshRates[i], refreshRates[i].frameRateMode)
@@ -1166,18 +1155,10 @@ TEST_P(RefreshRateSelectorTest, getMinRefreshRatesByPolicy) {
            case Config::FrameRateOverride::AppOverride:
            case Config::FrameRateOverride::AppOverride:
                return {{30_Hz, kMode30}, {60_Hz, kMode60}, {90_Hz, kMode90}};
                return {{30_Hz, kMode30}, {60_Hz, kMode60}, {90_Hz, kMode90}};
            case Config::FrameRateOverride::Enabled:
            case Config::FrameRateOverride::Enabled:
                return {{1_Hz, kMode30},
                return {{30_Hz, kMode30}, {45_Hz, kMode90}, {60_Hz, kMode60}, {90_Hz, kMode90}};
                        {1.011_Hz, kMode90},
                        {1.016_Hz, kMode60},
                        {1.022_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) {
    for (size_t i = 0; i < expectedRefreshRates.size(); ++i) {
        EXPECT_EQ(expectedRefreshRates[i], refreshRates[i].frameRateMode)
        EXPECT_EQ(expectedRefreshRates[i], refreshRates[i].frameRateMode)
@@ -1269,12 +1250,7 @@ TEST_P(RefreshRateSelectorTest, powerOnImminentConsidered) {
                        {30_Hz, kMode60}, {22.5_Hz, kMode90}, {20_Hz, kMode60}};
                        {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) {
    for (size_t i = 0; i < expectedRefreshRates.size(); ++i) {
        EXPECT_EQ(expectedRefreshRates[i], refreshRates[i].frameRateMode)
        EXPECT_EQ(expectedRefreshRates[i], refreshRates[i].frameRateMode)
@@ -1288,11 +1264,7 @@ TEST_P(RefreshRateSelectorTest, powerOnImminentConsidered) {
            selector.getRankedRefreshRatesAsPair({}, {.powerOnImminent = true});
            selector.getRankedRefreshRatesAsPair({}, {.powerOnImminent = true});
    EXPECT_TRUE(signals.powerOnImminent);
    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) {
    for (size_t i = 0; i < expectedRefreshRates.size(); ++i) {
        EXPECT_EQ(expectedRefreshRates[i], refreshRates[i].frameRateMode)
        EXPECT_EQ(expectedRefreshRates[i], refreshRates[i].frameRateMode)
@@ -1312,11 +1284,7 @@ TEST_P(RefreshRateSelectorTest, powerOnImminentConsidered) {
            selector.getRankedRefreshRatesAsPair(layers, {.powerOnImminent = true});
            selector.getRankedRefreshRatesAsPair(layers, {.powerOnImminent = true});
    EXPECT_TRUE(signals.powerOnImminent);
    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) {
    for (size_t i = 0; i < expectedRefreshRates.size(); ++i) {
        EXPECT_EQ(expectedRefreshRates[i], refreshRates[i].frameRateMode)
        EXPECT_EQ(expectedRefreshRates[i], refreshRates[i].frameRateMode)
@@ -1341,12 +1309,7 @@ TEST_P(RefreshRateSelectorTest, powerOnImminentConsidered) {
                        {30_Hz, kMode60}, {22.5_Hz, kMode90}, {20_Hz, kMode60}};
                        {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) {
    for (size_t i = 0; i < expectedRefreshRates.size(); ++i) {
        EXPECT_EQ(expectedRefreshRates[i], refreshRates[i].frameRateMode)
        EXPECT_EQ(expectedRefreshRates[i], refreshRates[i].frameRateMode)
@@ -1599,11 +1562,7 @@ TEST_P(RefreshRateSelectorTest, testDisplayModeOrdering) {
    }();
    }();


    auto actualRanking = selector.getRankedFrameRates(layers, {}).ranking;
    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) {
    for (size_t i = 0; i < expectedRanking.size(); ++i) {
        EXPECT_EQ(expectedRanking[i], actualRanking[i].frameRateMode)
        EXPECT_EQ(expectedRanking[i], actualRanking[i].frameRateMode)
@@ -1645,11 +1604,7 @@ TEST_P(RefreshRateSelectorTest, testDisplayModeOrdering) {
    }();
    }();
    actualRanking = selector.getRankedFrameRates(layers, {}).ranking;
    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) {
    for (size_t i = 0; i < expectedRanking.size(); ++i) {
        EXPECT_EQ(expectedRanking[i], actualRanking[i].frameRateMode)
        EXPECT_EQ(expectedRanking[i], actualRanking[i].frameRateMode)
@@ -1689,11 +1644,7 @@ TEST_P(RefreshRateSelectorTest, testDisplayModeOrdering) {
    }();
    }();
    actualRanking = selector.getRankedFrameRates(layers, {}).ranking;
    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) {
    for (size_t i = 0; i < expectedRanking.size(); ++i) {
        EXPECT_EQ(expectedRanking[i], actualRanking[i].frameRateMode)
        EXPECT_EQ(expectedRanking[i], actualRanking[i].frameRateMode)
@@ -1736,11 +1687,7 @@ TEST_P(RefreshRateSelectorTest, testDisplayModeOrdering) {
    }();
    }();
    actualRanking = selector.getRankedFrameRates(layers, {}).ranking;
    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) {
    for (size_t i = 0; i < expectedRanking.size(); ++i) {
        EXPECT_EQ(expectedRanking[i], actualRanking[i].frameRateMode)
        EXPECT_EQ(expectedRanking[i], actualRanking[i].frameRateMode)
@@ -2370,8 +2317,7 @@ TEST_P(RefreshRateSelectorTest, getBestFrameRateMode_FractionalRefreshRates_Exac
}
}


// b/190578904
// b/190578904
TEST_P(RefreshRateSelectorTest,
TEST_P(RefreshRateSelectorTest, getBestFrameRateMode_withCloseRefreshRates) {
       getBestFrameRateMode_withCloseRefreshRates_LayerVoteType_Heuristic) {
    if (g_noSlowTests) {
    if (g_noSlowTests) {
        GTEST_SKIP();
        GTEST_SKIP();
    }
    }
@@ -2400,101 +2346,8 @@ TEST_P(RefreshRateSelectorTest,
    for (int fps = kMinRefreshRate; fps < kMaxRefreshRate; fps++) {
    for (int fps = kMinRefreshRate; fps < kMaxRefreshRate; fps++) {
        const auto refreshRate = Fps::fromValue(static_cast<float>(fps));
        const auto refreshRate = Fps::fromValue(static_cast<float>(fps));
        testRefreshRate(refreshRate, LayerVoteType::Heuristic);
        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);
        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);
        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);
        testRefreshRate(refreshRate, LayerVoteType::ExplicitExact);
    }
    }
}
}
@@ -2954,18 +2807,13 @@ TEST_P(RefreshRateSelectorTest, renderFrameRates) {
                        {90_Hz, 90_Hz},
                        {90_Hz, 90_Hz},
                        {120_Hz, 120_Hz}};
                        {120_Hz, 120_Hz}};
            case Config::FrameRateOverride::Enabled:
            case Config::FrameRateOverride::Enabled:
                return {{1_Hz, 30_Hz},       {1.008_Hz, 120_Hz}, {1.011_Hz, 90_Hz},
                return {{30_Hz, 30_Hz}, {36_Hz, 72_Hz}, {40_Hz, 120_Hz}, {45_Hz, 90_Hz},
                        {1.014_Hz, 72_Hz},   {1.016_Hz, 60_Hz},  {1.022_Hz, 90_Hz},
                        {60_Hz, 60_Hz}, {72_Hz, 72_Hz}, {90_Hz, 90_Hz},  {120_Hz, 120_Hz}};
                        {1.0256_Hz, 120_Hz}, {1.028_Hz, 72_Hz}};
        }
        }
    }();
    }();


    const auto& primaryRefreshRates = selector.getPrimaryFrameRates();
    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++) {
    for (size_t i = 0; i < expected.size(); i++) {
        const auto [expectedRenderRate, expectedRefreshRate] = expected[i];
        const auto [expectedRenderRate, expectedRefreshRate] = expected[i];