diff options
Diffstat (limited to 'libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterface.cpp')
-rw-r--r-- | libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterface.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterface.cpp b/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterface.cpp index dbb11bd..e436663 100644 --- a/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterface.cpp +++ b/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterface.cpp @@ -920,11 +920,12 @@ int32_t ExynosDisplayDrmInterface::getDisplayConfigs( /* key: (width<<32 | height) */ std::map<uint64_t, uint32_t> groupIds; uint32_t groupId = 0; - uint32_t min_vsync_period = UINT_MAX; + float peakRr = -1; for (const DrmMode &mode : mDrmConnector->modes()) { displayConfigs_t configs; - configs.vsyncPeriod = nsecsPerSec/ mode.v_refresh(); + float rr = mode.v_refresh(); + configs.vsyncPeriod = nsecsPerSec / rr; configs.width = mode.h_display(); configs.height = mode.v_display(); uint64_t key = ((uint64_t)configs.width<<32) | configs.height; @@ -941,14 +942,15 @@ int32_t ExynosDisplayDrmInterface::getDisplayConfigs( configs.Xdpi = mm_width ? (mode.h_display() * kUmPerInch) / mm_width : -1; // Dots per 1000 inches configs.Ydpi = mm_height ? (mode.v_display() * kUmPerInch) / mm_height : -1; - // find min vsync period - if (configs.vsyncPeriod <= min_vsync_period) min_vsync_period = configs.vsyncPeriod; + // find peak rr + if (rr > peakRr) + peakRr = rr; mExynosDisplay->mDisplayConfigs.insert(std::make_pair(mode.id(), configs)); ALOGD("config group(%d), w(%d), h(%d), vsync(%d), xdpi(%d), ydpi(%d)", configs.groupId, configs.width, configs.height, configs.vsyncPeriod, configs.Xdpi, configs.Ydpi); } - mExynosDisplay->setMinDisplayVsyncPeriod(min_vsync_period); + mExynosDisplay->setPeakRefreshRate(peakRr); } uint32_t num_modes = static_cast<uint32_t>(mDrmConnector->modes().size()); |