Skip to content

Commit a8dc965

Browse files
author
Rachel Lee
committed
Revert "Skip primaryRangeIsSingleRate check for ARR"
This reverts commit 861e347. Reason for revert: The policy is being ignored. Also see doc http://docs/document/d/1Bu4AMHFZ3UMVHM_-jyp2ogu-oEaeBy0EgKcoMbkCM1w?tab=t.0 Test: atest libsurfaceflinger_unittest Change-Id: I7a80540ff4cc398d0764d3af53bfea77731b01a8
1 parent bd2be80 commit a8dc965

2 files changed

Lines changed: 2 additions & 142 deletions

File tree

services/surfaceflinger/Scheduler/RefreshRateSelector.cpp

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -770,17 +770,13 @@ auto RefreshRateSelector::getRankedFrameRatesLocked(const std::vector<LayerRequi
770770
const bool inPrimaryPhysicalRange =
771771
policy->primaryRanges.physical.includes(modePtr->getPeakFps());
772772
const bool inPrimaryRenderRange = policy->primaryRanges.render.includes(fps);
773-
if (!mIsVrrDevice.load() &&
774-
((policy->primaryRangeIsSingleRate() && !inPrimaryPhysicalRange) ||
773+
if (((policy->primaryRangeIsSingleRate() && !inPrimaryPhysicalRange) ||
775774
!inPrimaryRenderRange) &&
776775
!(layer.focused &&
777776
(layer.vote == LayerVoteType::ExplicitDefault ||
778777
layer.vote == LayerVoteType::ExplicitExact))) {
779778
// Only focused layers with ExplicitDefault frame rate settings are allowed to score
780779
// refresh rates outside the primary range.
781-
ALOGV("%s ignores %s (primaryRangeIsSingleRate). Current mode = %s",
782-
formatLayerInfo(layer, weight).c_str(), to_string(*modePtr).c_str(),
783-
to_string(activeMode).c_str());
784780
continue;
785781
}
786782

@@ -904,8 +900,7 @@ auto RefreshRateSelector::getRankedFrameRatesLocked(const std::vector<LayerRequi
904900
to_string(descending.front().frameRateMode.fps).c_str());
905901
return {descending, kNoSignals};
906902
} else {
907-
ALOGV("%s (primaryRangeIsSingleRate)",
908-
to_string(ranking.front().frameRateMode.fps).c_str());
903+
ALOGV("primaryRangeIsSingleRate");
909904
SFTRACE_FORMAT_INSTANT("%s (primaryRangeIsSingleRate)",
910905
to_string(ranking.front().frameRateMode.fps).c_str());
911906
return {ranking, kNoSignals};
@@ -1041,14 +1036,12 @@ auto RefreshRateSelector::getFrameRateOverrides(const std::vector<LayerRequireme
10411036

10421037
// Layers with ExplicitExactOrMultiple expect touch boost
10431038
if (globalSignals.touch && hasExplicitExactOrMultiple) {
1044-
ALOGV("%s: Skipping for touch (input signal): uid=%d", __func__, uid);
10451039
continue;
10461040
}
10471041

10481042
// Mirrors getRankedFrameRates. If there is no ExplicitDefault, expect touch boost and
10491043
// skip frame rate override.
10501044
if (hasHighHint && !hasExplicitDefault) {
1051-
ALOGV("%s: Skipping for touch (HighHint): uid=%d", __func__, uid);
10521045
continue;
10531046
}
10541047

@@ -1072,9 +1065,6 @@ auto RefreshRateSelector::getFrameRateOverrides(const std::vector<LayerRequireme
10721065
constexpr bool isSeamlessSwitch = true;
10731066
const auto layerScore = calculateLayerScoreLocked(*layer, fps, isSeamlessSwitch);
10741067
score += layer->weight * layerScore;
1075-
ALOGV("%s: %s gives %s fps score of %.4f", __func__,
1076-
formatLayerInfo(*layer, layer->weight).c_str(), to_string(fps).c_str(),
1077-
layerScore);
10781068
}
10791069
}
10801070

@@ -1329,8 +1319,6 @@ void RefreshRateSelector::updateDisplayModes(DisplayModes modes, DisplayModeId a
13291319
LOG_ALWAYS_FATAL_IF(!activeModeOpt);
13301320
mActiveModeOpt = FrameRateMode{activeModeOpt->get()->getPeakFps(),
13311321
ftl::as_non_null(activeModeOpt->get())};
1332-
mIsVrrDevice = FlagManager::getInstance().vrr_config() &&
1333-
activeModeOpt->get()->getVrrConfig().has_value();
13341322

13351323
const auto sortedModes = sortByRefreshRate(mDisplayModes);
13361324
mMinRefreshRateModeIt = sortedModes.front();

services/surfaceflinger/tests/unittests/RefreshRateSelectorTest.cpp

Lines changed: 0 additions & 128 deletions
Original file line numberDiff line numberDiff line change
@@ -308,42 +308,6 @@ class RefreshRateSelectorTest : public testing::TestWithParam<Config::FrameRateO
308308
<< " category=" << ftl::enum_string(testCase.frameRateCategory);
309309
}
310310
}
311-
312-
template <class T>
313-
std::vector<LayerRequirement> createLayers(const std::initializer_list<T>& surfaceVotes) {
314-
std::vector<LayerRequirement> layers;
315-
for (auto surfaceVote : surfaceVotes) {
316-
ALOGI("**** %s: Adding layers for %s: (desiredFrameRate=%s, voteType=%s), "
317-
"(frameRateCategory=%s)",
318-
__func__, surfaceVote.name.c_str(),
319-
to_string(surfaceVote.desiredFrameRate).c_str(),
320-
ftl::enum_string(surfaceVote.voteType).c_str(),
321-
ftl::enum_string(surfaceVote.frameRateCategory).c_str());
322-
323-
if (surfaceVote.desiredFrameRate.isValid()) {
324-
std::stringstream ss;
325-
ss << surfaceVote.name << " (" << surfaceVote.weight << "): ExplicitDefault ("
326-
<< to_string(surfaceVote.desiredFrameRate) << ")";
327-
LayerRequirement layer = {.name = ss.str(),
328-
.vote = surfaceVote.voteType,
329-
.desiredRefreshRate = surfaceVote.desiredFrameRate,
330-
.weight = surfaceVote.weight};
331-
layers.push_back(layer);
332-
}
333-
334-
if (surfaceVote.frameRateCategory != FrameRateCategory::Default) {
335-
std::stringstream ss;
336-
ss << surfaceVote.name << " (" << surfaceVote.weight << "): ExplicitCategory ("
337-
<< ftl::enum_string(surfaceVote.frameRateCategory) << ")";
338-
LayerRequirement layer = {.name = ss.str(),
339-
.vote = LayerVoteType::ExplicitCategory,
340-
.frameRateCategory = surfaceVote.frameRateCategory,
341-
.weight = surfaceVote.weight};
342-
layers.push_back(layer);
343-
}
344-
}
345-
return layers;
346-
}
347311
};
348312

349313
RefreshRateSelectorTest::RefreshRateSelectorTest() {
@@ -1812,98 +1776,6 @@ TEST_P(RefreshRateSelectorTest, getBestFrameRateMode_withFrameRateCategoryMultiL
18121776
selector);
18131777
}
18141778

1815-
TEST_P(RefreshRateSelectorTest, getBestFrameRateMode_multiSurface_arr) {
1816-
if (GetParam() != Config::FrameRateOverride::Enabled) {
1817-
return;
1818-
}
1819-
1820-
SET_FLAG_FOR_TEST(flags::vrr_config, true);
1821-
1822-
auto selector = createSelector(kVrrMode_120, kModeId120);
1823-
1824-
// Switch the policy to be more like an ARR device (primary range is a single rate).
1825-
constexpr FpsRange k120_120Hz = {120_Hz, 120_Hz};
1826-
constexpr FpsRange k0_120Hz = {0_Hz, 120_Hz};
1827-
constexpr FpsRanges kPrimaryRanges = {/*physical*/ k120_120Hz,
1828-
/*render*/ k120_120Hz};
1829-
constexpr FpsRanges kAppRequestRanges = {/*physical*/ k120_120Hz,
1830-
/*render*/ k0_120Hz};
1831-
EXPECT_EQ(SetPolicyResult::Changed,
1832-
selector.setDisplayManagerPolicy(
1833-
{/*defaultMode*/ kModeId120, kPrimaryRanges, kAppRequestRanges}));
1834-
1835-
// Surface can translate to multiple layers in SF scheduler due to category and frame rate
1836-
// value.
1837-
struct SurfaceVote {
1838-
// Params
1839-
std::string name = "";
1840-
Fps desiredFrameRate = 0_Hz;
1841-
LayerVoteType voteType = LayerVoteType::ExplicitDefault;
1842-
FrameRateCategory frameRateCategory = FrameRateCategory::Default;
1843-
float weight = 1.f;
1844-
};
1845-
1846-
auto layers = createLayers(
1847-
std::initializer_list<SurfaceVote>{{.name = "60 fixed source",
1848-
.desiredFrameRate = 60_Hz,
1849-
.voteType = LayerVoteType::ExplicitExactOrMultiple,
1850-
.weight = 0.27f},
1851-
{.name = "1 fixed source + NoPreference",
1852-
.desiredFrameRate = 1_Hz,
1853-
.voteType = LayerVoteType::ExplicitExactOrMultiple,
1854-
.frameRateCategory =
1855-
FrameRateCategory::NoPreference}});
1856-
auto actualRankedFrameRates = selector.getRankedFrameRates(layers);
1857-
EXPECT_EQ(60_Hz, actualRankedFrameRates.ranking.front().frameRateMode.fps);
1858-
1859-
layers = createLayers(
1860-
std::initializer_list<SurfaceVote>{{.name = "60 fixed source",
1861-
.desiredFrameRate = 60_Hz,
1862-
.voteType = LayerVoteType::ExplicitExactOrMultiple,
1863-
.weight = 0.27f},
1864-
{.name = "1 fixed source + Normal",
1865-
.desiredFrameRate = 1_Hz,
1866-
.voteType = LayerVoteType::ExplicitExactOrMultiple,
1867-
.frameRateCategory = FrameRateCategory::Normal}});
1868-
actualRankedFrameRates = selector.getRankedFrameRates(layers);
1869-
EXPECT_EQ(60_Hz, actualRankedFrameRates.ranking.front().frameRateMode.fps);
1870-
1871-
layers = createLayers(std::initializer_list<SurfaceVote>{
1872-
{.name = "30 fixed source + NoPreference",
1873-
.desiredFrameRate = 30_Hz,
1874-
.voteType = LayerVoteType::ExplicitExactOrMultiple,
1875-
.frameRateCategory = FrameRateCategory::NoPreference}});
1876-
actualRankedFrameRates = selector.getRankedFrameRates(layers);
1877-
EXPECT_EQ(30_Hz, actualRankedFrameRates.ranking.front().frameRateMode.fps);
1878-
1879-
layers = createLayers(std::initializer_list<SurfaceVote>{
1880-
{.name = "1 fixed source + NoPreference",
1881-
.desiredFrameRate = 1_Hz,
1882-
.voteType = LayerVoteType::ExplicitExactOrMultiple,
1883-
.frameRateCategory = FrameRateCategory::NoPreference}});
1884-
actualRankedFrameRates = selector.getRankedFrameRates(layers);
1885-
// Result affected by RefreshRateSelector.kMinSupportedFrameRate.
1886-
EXPECT_EQ(20_Hz, actualRankedFrameRates.ranking.front().frameRateMode.fps);
1887-
1888-
layers = createLayers(std::initializer_list<SurfaceVote>{
1889-
{.name = "24 fixed source + NoPreference",
1890-
.desiredFrameRate = 24_Hz,
1891-
.voteType = LayerVoteType::ExplicitExactOrMultiple,
1892-
.frameRateCategory = FrameRateCategory::NoPreference}});
1893-
actualRankedFrameRates = selector.getRankedFrameRates(layers);
1894-
EXPECT_EQ(24_Hz, actualRankedFrameRates.ranking.front().frameRateMode.fps);
1895-
1896-
layers = createLayers(std::initializer_list<SurfaceVote>{
1897-
{.name = "23.976 fixed source + NoPreference",
1898-
.desiredFrameRate = 23.976_Hz,
1899-
.voteType = LayerVoteType::ExplicitExactOrMultiple,
1900-
.frameRateCategory = FrameRateCategory::NoPreference}});
1901-
actualRankedFrameRates = selector.getRankedFrameRates(layers);
1902-
// Chooses 120 unless certain threshold is set, see tests test23976Chooses120 and
1903-
// test23976Chooses60IfThresholdIs120.
1904-
EXPECT_EQ(120_Hz, actualRankedFrameRates.ranking.front().frameRateMode.fps);
1905-
}
1906-
19071779
TEST_P(RefreshRateSelectorTest, getBestFrameRateMode_withFrameRateCategory_60_120) {
19081780
auto selector = createSelector(makeModes(kMode60, kMode120), kModeId60);
19091781

0 commit comments

Comments
 (0)