@@ -1766,6 +1766,43 @@ TEST_P(RefreshRateSelectorTest, getBestFrameRateMode_withFrameRateCategory_60_12
17661766 }
17671767}
17681768
1769+ TEST_P (RefreshRateSelectorTest, getBestFrameRateMode_vrrHighHintTouch_primaryRangeIsSingleRate) {
1770+ if (GetParam () != Config::FrameRateOverride::Enabled) {
1771+ return ;
1772+ }
1773+
1774+ SET_FLAG_FOR_TEST (flags::vrr_config, true );
1775+
1776+ auto selector = createSelector (kVrrMode_120 , kModeId120 );
1777+ selector.setActiveMode (kModeId120 , 60_Hz);
1778+
1779+ // Change primary physical range to be single rate, which on VRR device should not affect
1780+ // fps scoring.
1781+ EXPECT_EQ (SetPolicyResult::Changed,
1782+ selector.setDisplayManagerPolicy ({kModeId120 , {120_Hz, 120_Hz}}));
1783+
1784+ std::vector<LayerRequirement> layers = {{.weight = 1 .f }, {.weight = 1 .f }};
1785+ layers[0 ].vote = LayerVoteType::ExplicitCategory;
1786+ layers[0 ].frameRateCategory = FrameRateCategory::HighHint;
1787+ layers[0 ].name = " ExplicitCategory HighHint" ;
1788+
1789+ auto actualRankedFrameRates = selector.getRankedFrameRates (layers);
1790+ // Expect late touch boost from HighHint.
1791+ EXPECT_EQ (120_Hz, actualRankedFrameRates.ranking .front ().frameRateMode .fps );
1792+ EXPECT_EQ (kModeId120 , actualRankedFrameRates.ranking .front ().frameRateMode .modePtr ->getId ());
1793+ EXPECT_TRUE (actualRankedFrameRates.consideredSignals .touch );
1794+
1795+ layers[1 ].vote = LayerVoteType::ExplicitExactOrMultiple;
1796+ layers[1 ].desiredRefreshRate = 30_Hz;
1797+ layers[1 ].name = " ExplicitExactOrMultiple 30Hz" ;
1798+
1799+ actualRankedFrameRates = selector.getRankedFrameRates (layers);
1800+ // Expect late touch boost from HighHint.
1801+ EXPECT_EQ (120_Hz, actualRankedFrameRates.ranking .front ().frameRateMode .fps );
1802+ EXPECT_EQ (kModeId120 , actualRankedFrameRates.ranking .front ().frameRateMode .modePtr ->getId ());
1803+ EXPECT_TRUE (actualRankedFrameRates.consideredSignals .touch );
1804+ }
1805+
17691806TEST_P (RefreshRateSelectorTest, getBestFrameRateMode_withFrameRateCategory_HighHint) {
17701807 auto selector = createSelector (makeModes (kMode24 , kMode30 , kMode60 , kMode120 ), kModeId60 );
17711808
@@ -1884,7 +1921,7 @@ TEST_P(RefreshRateSelectorTest, getBestFrameRateMode_withFrameRateCategory_HighH
18841921 // Gets touch boost
18851922 EXPECT_EQ (120_Hz, actualRankedFrameRates.ranking .front ().frameRateMode .fps );
18861923 EXPECT_EQ (kModeId120 , actualRankedFrameRates.ranking .front ().frameRateMode .modePtr ->getId ());
1887- EXPECT_FALSE (actualRankedFrameRates.consideredSignals .touch );
1924+ EXPECT_TRUE (actualRankedFrameRates.consideredSignals .touch );
18881925}
18891926
18901927TEST_P (RefreshRateSelectorTest, getBestFrameRateMode_withFrameRateCategory_TouchBoost) {
@@ -1978,7 +2015,7 @@ TEST_P(RefreshRateSelectorTest, getBestFrameRateMode_withFrameRateCategory_Touch
19782015 lr2.name = " Max" ;
19792016 actualRankedFrameRates = selector.getRankedFrameRates (layers, {.touch = true });
19802017 EXPECT_FRAME_RATE_MODE (kMode120 , 120_Hz, actualRankedFrameRates.ranking .front ().frameRateMode );
1981- EXPECT_FALSE (actualRankedFrameRates.consideredSignals .touch );
2018+ EXPECT_TRUE (actualRankedFrameRates.consideredSignals .touch );
19822019
19832020 lr1.vote = LayerVoteType::ExplicitCategory;
19842021 lr1.frameRateCategory = FrameRateCategory::Normal;
0 commit comments