Skip to content

Commit d2a0e72

Browse files
author
ramindani
committed
SF: Adds support for getSuggestedFrameRate api
BUG: 361433796 Flag: com.android.server.display.feature.flags.enable_get_suggested_frame_rate Test: atest android.display.cts.DisplayTest Change-Id: I491fe7ef1793cf7c3e7d919db2b7d6e7e41d3c20
1 parent 8204da2 commit d2a0e72

3 files changed

Lines changed: 18 additions & 2 deletions

File tree

services/surfaceflinger/Scheduler/RefreshRateSelector.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1638,9 +1638,9 @@ std::chrono::milliseconds RefreshRateSelector::getIdleTimerTimeout() {
16381638
FpsRange RefreshRateSelector::getFrameRateCategoryRange(FrameRateCategory category) {
16391639
switch (category) {
16401640
case FrameRateCategory::High:
1641-
return FpsRange{90_Hz, 120_Hz};
1641+
return FpsRange{kFrameRateCategoryRateHigh, 120_Hz};
16421642
case FrameRateCategory::Normal:
1643-
return FpsRange{60_Hz, 120_Hz};
1643+
return FpsRange{kFrameRateCategoryRateNormal, 120_Hz};
16441644
case FrameRateCategory::Low:
16451645
return FpsRange{48_Hz, 120_Hz};
16461646
case FrameRateCategory::HighHint:

services/surfaceflinger/Scheduler/RefreshRateSelector.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,12 @@ class RefreshRateSelector {
5252
// The lowest Render Frame Rate that will ever be selected
5353
static constexpr Fps kMinSupportedFrameRate = 20_Hz;
5454

55+
// Start range for FrameRateCategory Normal and High.
56+
static constexpr Fps kFrameRateCategoryRateHigh = 90_Hz;
57+
static constexpr Fps kFrameRateCategoryRateNormal = 60_Hz;
58+
static constexpr std::pair<Fps, Fps> kFrameRateCategoryRates = {kFrameRateCategoryRateNormal,
59+
kFrameRateCategoryRateHigh};
60+
5561
class Policy {
5662
static constexpr int kAllowGroupSwitchingDefault = false;
5763

@@ -433,6 +439,8 @@ class RefreshRateSelector {
433439

434440
bool isVrrDevice() const;
435441

442+
std::pair<Fps, Fps> getFrameRateCategoryRates() const { return kFrameRateCategoryRates; }
443+
436444
private:
437445
friend struct TestableRefreshRateSelector;
438446

services/surfaceflinger/SurfaceFlinger.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@
9292
#include <ui/DisplayStatInfo.h>
9393
#include <ui/DisplayState.h>
9494
#include <ui/DynamicDisplayInfo.h>
95+
#include <ui/FrameRateCategoryRate.h>
9596
#include <ui/GraphicBufferAllocator.h>
9697
#include <ui/HdrRenderTypeUtils.h>
9798
#include <ui/LayerStack.h>
@@ -1217,6 +1218,10 @@ void SurfaceFlinger::getDynamicDisplayInfoInternal(ui::DynamicDisplayInfo*& info
12171218
info->activeDisplayModeId = ftl::to_underlying(mode.modePtr->getId());
12181219
info->renderFrameRate = mode.fps.getValue();
12191220
info->hasArrSupport = mode.modePtr->getVrrConfig() && FlagManager::getInstance().vrr_config();
1221+
1222+
const auto [normal, high] = display->refreshRateSelector().getFrameRateCategoryRates();
1223+
ui::FrameRateCategoryRate frameRateCategoryRate(normal.getValue(), high.getValue());
1224+
info->frameRateCategoryRate = frameRateCategoryRate;
12201225
info->activeColorMode = display->getCompositionDisplay()->getState().colorMode;
12211226
info->hdrCapabilities = filterOut4k30(display->getHdrCapabilities());
12221227

@@ -8598,6 +8603,9 @@ void SurfaceComposerAIDL::getDynamicDisplayInfoInternal(ui::DynamicDisplayInfo&
85988603
outInfo->activeDisplayModeId = info.activeDisplayModeId;
85998604
outInfo->renderFrameRate = info.renderFrameRate;
86008605
outInfo->hasArrSupport = info.hasArrSupport;
8606+
gui::FrameRateCategoryRate& frameRateCategoryRate = outInfo->frameRateCategoryRate;
8607+
frameRateCategoryRate.normal = info.frameRateCategoryRate.getNormal();
8608+
frameRateCategoryRate.high = info.frameRateCategoryRate.getHigh();
86018609

86028610
outInfo->supportedColorModes.clear();
86038611
outInfo->supportedColorModes.reserve(info.supportedColorModes.size());

0 commit comments

Comments
 (0)