summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShiyong Li <shiyongli@google.com>2023-04-25 18:08:21 +0000
committerShiyong Li <shiyongli@google.com>2023-04-25 18:14:22 +0000
commit8582373b324ca932f4e583aa5caf742123e629f0 (patch)
tree214d4759a3111c184bd22ae4bdf2b0264dffeb44
parent1d1544b52c5c156b82dc31ae4be6ae62efb2d661 (diff)
downloadcommon-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.cpp13
-rw-r--r--libhwc2.1/libdevice/ExynosDisplay.h2
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();