[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/SurfaceFlinger.h b/services/surfaceflinger/SurfaceFlinger.h
index f5a695b..fa65803 100644
--- a/services/surfaceflinger/SurfaceFlinger.h
+++ b/services/surfaceflinger/SurfaceFlinger.h
@@ -462,6 +462,8 @@
};
using ActiveModeInfo = DisplayDevice::ActiveModeInfo;
+ using KernelIdleTimerController =
+ ::android::scheduler::RefreshRateConfigs::KernelIdleTimerController;
enum class BootStage {
BOOTLOADER,
@@ -685,6 +687,14 @@
void triggerOnFrameRateOverridesChanged() override;
// Toggles the kernel idle timer on or off depending the policy decisions around refresh rates.
void toggleKernelIdleTimer() REQUIRES(mStateLock);
+ // Get the controller and timeout that will help decide how the kernel idle timer will be
+ // configured and what value to use as the timeout.
+ std::pair<std::optional<KernelIdleTimerController>, std::chrono::milliseconds>
+ getKernelIdleTimerProperties(DisplayId) REQUIRES(mStateLock);
+ // Updates the kernel idle timer either through HWC or through sysprop
+ // depending on which controller is provided
+ void updateKernelIdleTimer(std::chrono::milliseconds timeoutMs, KernelIdleTimerController,
+ PhysicalDisplayId) REQUIRES(mStateLock);
// Keeps track of whether the kernel idle timer is currently enabled, so we don't have to
// make calls to sys prop each time.
bool mKernelIdleTimerEnabled = false;