diff options
author | Shiyong Li <shiyongli@google.com> | 2023-04-25 18:08:21 +0000 |
---|---|---|
committer | Shiyong Li <shiyongli@google.com> | 2023-04-25 18:14:22 +0000 |
commit | 8582373b324ca932f4e583aa5caf742123e629f0 (patch) | |
tree | 214d4759a3111c184bd22ae4bdf2b0264dffeb44 | |
parent | 1d1544b52c5c156b82dc31ae4be6ae62efb2d661 (diff) | |
download | common-8582373b324ca932f4e583aa5caf742123e629f0.tar.gz |
libhwc2.1: add getRefreshRate() and getVsyncPeriod() functions
Bug: 250979028
Change-Id: I66c9fbc05b42c6376ec852ee1555b2655ea9635b
Signed-off-by: Shiyong Li <shiyongli@google.com>
-rw-r--r-- | libhwc2.1/libdevice/ExynosDisplay.cpp | 13 | ||||
-rw-r--r-- | libhwc2.1/libdevice/ExynosDisplay.h | 2 |
2 files changed, 15 insertions, 0 deletions
diff --git a/libhwc2.1/libdevice/ExynosDisplay.cpp b/libhwc2.1/libdevice/ExynosDisplay.cpp index d050dee..7d23696 100644 --- a/libhwc2.1/libdevice/ExynosDisplay.cpp +++ b/libhwc2.1/libdevice/ExynosDisplay.cpp @@ -6284,3 +6284,16 @@ void ExynosDisplay::updateRefreshRateIndicator() { return; mRefreshRateIndicatorHandler->handleSysfsEvent(); } + +VsyncPeriodNanos ExynosDisplay::getVsyncPeriod(const int32_t config) { + const auto &it = mDisplayConfigs.find(config); + if (it == mDisplayConfigs.end()) return 0; + return mDisplayConfigs[config].vsyncPeriod; +} + +uint32_t ExynosDisplay::getRefreshRate(const int32_t config) { + VsyncPeriodNanos period = getVsyncPeriod(config); + if (!period) return 0; + constexpr float nsecsPerSec = std::chrono::nanoseconds(1s).count(); + return round(nsecsPerSec / period * 0.1f) * 10; +} diff --git a/libhwc2.1/libdevice/ExynosDisplay.h b/libhwc2.1/libdevice/ExynosDisplay.h index 65dd936..41c6a93 100644 --- a/libhwc2.1/libdevice/ExynosDisplay.h +++ b/libhwc2.1/libdevice/ExynosDisplay.h @@ -1290,6 +1290,8 @@ class ExynosDisplay { float opRate = mOperationRateManager ? mOperationRateManager->getOperationRate() : 0; return static_cast<uint32_t>(std::round(opRate ?: mPeakRefreshRate)); } + VsyncPeriodNanos getVsyncPeriod(const int32_t config); + uint32_t getRefreshRate(const int32_t config); // check if there are any dimmed layers bool isMixedComposition(); |