Loading services/surfaceflinger/Scheduler/RefreshRateSelector.cpp +12 −3 Original line number Diff line number Diff line Loading @@ -1221,10 +1221,19 @@ void RefreshRateSelector::constructAvailableRefreshRates() { (supportsFrameRateOverride() || ranges.render.includes(mode.getFps())); }; const auto frameRateModes = createFrameRateModes(filterModes, ranges.render); LOG_ALWAYS_FATAL_IF(frameRateModes.empty(), "No matching frame rate modes for %s range. policy: %s", rangeName, auto frameRateModes = createFrameRateModes(filterModes, ranges.render); if (frameRateModes.empty()) { ALOGW("No matching frame rate modes for %s range. policy: %s", rangeName, policy->toString().c_str()); // TODO(b/292105422): Ideally DisplayManager should not send render ranges smaller than // the min supported. See b/292047939. // For not we just ignore the render ranges. frameRateModes = createFrameRateModes(filterModes, {}); } LOG_ALWAYS_FATAL_IF(frameRateModes.empty(), "No matching frame rate modes for %s range even after ignoring the " "render range. policy: %s", rangeName, policy->toString().c_str()); const auto stringifyModes = [&] { std::string str; Loading services/surfaceflinger/tests/unittests/RefreshRateSelectorTest.cpp +15 −0 Original line number Diff line number Diff line Loading @@ -3042,5 +3042,20 @@ TEST_P(RefreshRateSelectorTest, frameRateNotInRange) { EXPECT_FRAME_RATE_MODE(kMode60, 60_Hz, selector.getBestScoredFrameRate(layers).frameRateMode); } TEST_P(RefreshRateSelectorTest, frameRateIsLowerThanMinSupported) { if (GetParam() != Config::FrameRateOverride::Enabled) { return; } auto selector = createSelector(kModes_60_90, kModeId60); constexpr Fps kMin = RefreshRateSelector::kMinSupportedFrameRate; constexpr FpsRanges kLowerThanMin = {{60_Hz, 90_Hz}, {kMin / 2, kMin / 2}}; EXPECT_EQ(SetPolicyResult::Changed, selector.setDisplayManagerPolicy( {DisplayModeId(kModeId60), kLowerThanMin, kLowerThanMin})); } } // namespace } // namespace android::scheduler Loading
services/surfaceflinger/Scheduler/RefreshRateSelector.cpp +12 −3 Original line number Diff line number Diff line Loading @@ -1221,10 +1221,19 @@ void RefreshRateSelector::constructAvailableRefreshRates() { (supportsFrameRateOverride() || ranges.render.includes(mode.getFps())); }; const auto frameRateModes = createFrameRateModes(filterModes, ranges.render); LOG_ALWAYS_FATAL_IF(frameRateModes.empty(), "No matching frame rate modes for %s range. policy: %s", rangeName, auto frameRateModes = createFrameRateModes(filterModes, ranges.render); if (frameRateModes.empty()) { ALOGW("No matching frame rate modes for %s range. policy: %s", rangeName, policy->toString().c_str()); // TODO(b/292105422): Ideally DisplayManager should not send render ranges smaller than // the min supported. See b/292047939. // For not we just ignore the render ranges. frameRateModes = createFrameRateModes(filterModes, {}); } LOG_ALWAYS_FATAL_IF(frameRateModes.empty(), "No matching frame rate modes for %s range even after ignoring the " "render range. policy: %s", rangeName, policy->toString().c_str()); const auto stringifyModes = [&] { std::string str; Loading
services/surfaceflinger/tests/unittests/RefreshRateSelectorTest.cpp +15 −0 Original line number Diff line number Diff line Loading @@ -3042,5 +3042,20 @@ TEST_P(RefreshRateSelectorTest, frameRateNotInRange) { EXPECT_FRAME_RATE_MODE(kMode60, 60_Hz, selector.getBestScoredFrameRate(layers).frameRateMode); } TEST_P(RefreshRateSelectorTest, frameRateIsLowerThanMinSupported) { if (GetParam() != Config::FrameRateOverride::Enabled) { return; } auto selector = createSelector(kModes_60_90, kModeId60); constexpr Fps kMin = RefreshRateSelector::kMinSupportedFrameRate; constexpr FpsRanges kLowerThanMin = {{60_Hz, 90_Hz}, {kMin / 2, kMin / 2}}; EXPECT_EQ(SetPolicyResult::Changed, selector.setDisplayManagerPolicy( {DisplayModeId(kModeId60), kLowerThanMin, kLowerThanMin})); } } // namespace } // namespace android::scheduler