summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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();