@@ -4667,5 +4667,47 @@ TEST_P(RefreshRateSelectorTest, renderFrameRatesForVrr) {
46674667 EXPECT_EQ (120_Hz, primaryRefreshRates[i].modePtr ->getPeakFps ());
46684668 }
46694669}
4670+
4671+ TEST_P (RefreshRateSelectorTest, getSupportedFrameRates) {
4672+ if (GetParam () != Config::FrameRateOverride::Enabled) {
4673+ return ;
4674+ }
4675+
4676+ auto selector = createSelector (kModes_60_90 , kModeId90 );
4677+ const FpsRange range60 = {0_Hz, 60_Hz};
4678+ EXPECT_EQ (SetPolicyResult::Changed,
4679+ selector.setDisplayManagerPolicy (
4680+ {kModeId60 , {range60, range60}, {range60, range60}}));
4681+
4682+ // Irrespective of the policy we get the full range of possible frame rates
4683+ const std::vector<float > expected = {90 .0f , 60 .0f , 45 .0f , 30 .0f , 22 .5f , 20 .0f };
4684+
4685+ const auto allSupportedFrameRates = selector.getSupportedFrameRates ();
4686+ ASSERT_EQ (expected.size (), allSupportedFrameRates.size ());
4687+ for (size_t i = 0 ; i < expected.size (); i++) {
4688+ EXPECT_EQ (expected[i], allSupportedFrameRates[i])
4689+ << " expected " << expected[i] << " received " << allSupportedFrameRates[i];
4690+ }
4691+ }
4692+
4693+ TEST_P (RefreshRateSelectorTest, getSupportedFrameRatesArr) {
4694+ if (GetParam () != Config::FrameRateOverride::Enabled) {
4695+ return ;
4696+ }
4697+
4698+ SET_FLAG_FOR_TEST (flags::vrr_config, true );
4699+ const auto selector = createSelector (kVrrMode_120 , kModeId120 );
4700+
4701+ const std::vector<float > expected = {120 .0f , 80 .0f , 60 .0f , 48 .0f , 40 .0f , 34 .285f ,
4702+ 30 .0f , 26 .666f , 24 .0f , 21 .818f , 20 .0f };
4703+
4704+ const auto allSupportedFrameRates = selector.getSupportedFrameRates ();
4705+ ASSERT_EQ (expected.size (), allSupportedFrameRates.size ());
4706+ constexpr float kEpsilon = 0 .001f ;
4707+ for (size_t i = 0 ; i < expected.size (); i++) {
4708+ EXPECT_TRUE (std::abs (expected[i] - allSupportedFrameRates[i]) <= kEpsilon )
4709+ << " expected " << expected[i] << " received " << allSupportedFrameRates[i];
4710+ }
4711+ }
46704712} // namespace
46714713} // namespace android::scheduler
0 commit comments