[SF] Kernel idle timer configuration
This change configures the kernel idle timer using the composer3 HAL APIs.
BUG: 198808492
Test: atest libsurfaceflinger_unittest
Change-Id: I7de140c3094cb84c8efe782c19c98e126cb4c60b
diff --git a/services/surfaceflinger/Scheduler/RefreshRateConfigs.cpp b/services/surfaceflinger/Scheduler/RefreshRateConfigs.cpp
index 15e30b3..65c8613 100644
--- a/services/surfaceflinger/Scheduler/RefreshRateConfigs.cpp
+++ b/services/surfaceflinger/Scheduler/RefreshRateConfigs.cpp
@@ -670,9 +670,9 @@
}
void RefreshRateConfigs::initializeIdleTimer() {
- if (mConfig.idleTimerTimeoutMs > 0) {
+ if (mConfig.idleTimerTimeout > 0ms) {
mIdleTimer.emplace(
- "IdleTimer", std::chrono::milliseconds(mConfig.idleTimerTimeoutMs),
+ "IdleTimer", mConfig.idleTimerTimeout,
[this] {
std::scoped_lock lock(mIdleTimerCallbacksMutex);
if (const auto callbacks = getIdleTimerCallbacks()) {
@@ -963,12 +963,24 @@
base::StringAppendF(&result, "Supports Frame Rate Override By Content: %s\n",
mSupportsFrameRateOverrideByContent ? "yes" : "no");
- base::StringAppendF(&result, "Idle timer: (%s) %s\n",
- mConfig.supportKernelIdleTimer ? "kernel" : "platform",
- mIdleTimer ? mIdleTimer->dump().c_str() : "off");
+ base::StringAppendF(&result, "Idle timer: ");
+ if (mConfig.kernelIdleTimerController.has_value()) {
+ if (mConfig.kernelIdleTimerController == KernelIdleTimerController::Sysprop) {
+ base::StringAppendF(&result, "(kernel(sysprop))");
+ } else {
+ base::StringAppendF(&result, "(kernel(hwc))");
+ }
+ } else {
+ base::StringAppendF(&result, "(platform)");
+ }
+ base::StringAppendF(&result, " %s\n", mIdleTimer ? mIdleTimer->dump().c_str() : "off");
result.append("\n");
}
+std::chrono::milliseconds RefreshRateConfigs::getIdleTimerTimeout() {
+ return mConfig.idleTimerTimeout;
+}
+
} // namespace android::scheduler
// TODO(b/129481165): remove the #pragma below and fix conversion issues