SF Adds powerOnImminent to the GlobalSignals
This helps with moving the refresh rate selection into
RefreshRateConfigs instead of calling from Scheduler.
BUG: 240743471
Test: atest libsurfaceflinger_unittest
Change-Id: I4dba607e82ddb139be3daebe7f5c764fd5ae418c
diff --git a/services/surfaceflinger/tests/unittests/RefreshRateConfigsTest.cpp b/services/surfaceflinger/tests/unittests/RefreshRateConfigsTest.cpp
index 4f20932..5d9b2a8 100644
--- a/services/surfaceflinger/tests/unittests/RefreshRateConfigsTest.cpp
+++ b/services/surfaceflinger/tests/unittests/RefreshRateConfigsTest.cpp
@@ -977,6 +977,32 @@
EXPECT_EQ(kMode90, configs.getBestRefreshRate(layers));
}
+TEST_F(RefreshRateConfigsTest, powerOnImminentConsidered) {
+ RefreshRateConfigs configs(kModes_60_90, kModeId60);
+
+ auto [refreshRate, signals] = configs.getBestRefreshRate({}, {});
+ EXPECT_FALSE(signals.powerOnImminent);
+ EXPECT_EQ(kMode90, refreshRate);
+
+ std::tie(refreshRate, signals) = configs.getBestRefreshRate({}, {.powerOnImminent = true});
+ EXPECT_TRUE(signals.powerOnImminent);
+ EXPECT_EQ(kMode90, refreshRate);
+
+ std::vector<LayerRequirement> layers = {{.weight = 1.f}};
+ auto& lr1 = layers[0];
+ lr1.vote = LayerVoteType::ExplicitExactOrMultiple;
+ lr1.desiredRefreshRate = 60_Hz;
+ lr1.name = "60Hz ExplicitExactOrMultiple";
+
+ std::tie(refreshRate, signals) = configs.getBestRefreshRate(layers, {.powerOnImminent = false});
+ EXPECT_FALSE(signals.powerOnImminent);
+ EXPECT_EQ(kMode60, refreshRate);
+
+ std::tie(refreshRate, signals) = configs.getBestRefreshRate(layers, {.powerOnImminent = true});
+ EXPECT_TRUE(signals.powerOnImminent);
+ EXPECT_EQ(kMode90, refreshRate);
+}
+
TEST_F(RefreshRateConfigsTest, touchConsidered) {
RefreshRateConfigs configs(kModes_60_90, kModeId60);