diff options
author | Peiyong Lin <lpy@google.com> | 2018-07-02 11:00:54 -0700 |
---|---|---|
committer | Peiyong Lin <lpy@google.com> | 2018-07-02 11:49:37 -0700 |
commit | 8193497f4f3e2ed3ec21ea5489f38c2317147e2f (patch) | |
tree | fc9b0b6be2cb6374f47e1caccc4a71e46e92880b | |
parent | d98772df34a16478aa330ccfe29b529cf7eb4249 (diff) | |
download | native-8193497f4f3e2ed3ec21ea5489f38c2317147e2f.tar.gz |
[SurfaceFlinger] Avoid querying Power HAL until switching color mode.
Previously, SurfaceFlinger would query Power HAL speculatively at the first
time color mode is set when device is booted. Howerver, Power HAL is not
necessary started before SurfaceFlinger and it's not necessary to query Power
HAL when color mode is not switched. As a result, the boot time is very long
because SurfaceFlinger needs to wait for Power HAL to start. Thus, in this
patch, we avoid querying Power HAL until color mode is switched, which won't
happen until we enter wide-color-gamut Apps.
BUG: 110112323
BUG: 111009852
Test: Build, flash and boot device, check hardware.power output with adb logcat
Change-Id: Ia581461ba7861784bff35cac6fbeca9bac92b8fa
-rw-r--r-- | services/surfaceflinger/DisplayHardware/PowerAdvisor.cpp | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/services/surfaceflinger/DisplayHardware/PowerAdvisor.cpp b/services/surfaceflinger/DisplayHardware/PowerAdvisor.cpp index 0e4ad91045..12bbae207b 100644 --- a/services/surfaceflinger/DisplayHardware/PowerAdvisor.cpp +++ b/services/surfaceflinger/DisplayHardware/PowerAdvisor.cpp @@ -45,13 +45,12 @@ void PowerAdvisor::setExpensiveRenderingExpected(hwc2_display_t displayId, bool mExpensiveDisplays.erase(displayId); } - const sp<V1_3::IPower> powerHal = getPowerHal(); - if (powerHal == nullptr) { - return; - } - const bool expectsExpensiveRendering = !mExpensiveDisplays.empty(); if (mNotifiedExpensiveRendering != expectsExpensiveRendering) { + const sp<V1_3::IPower> powerHal = getPowerHal(); + if (powerHal == nullptr) { + return; + } auto ret = powerHal->powerHintAsync_1_3(PowerHint::EXPENSIVE_RENDERING, expectsExpensiveRendering); // If Power HAL 1.3 was available previously but now fails, |