diff options
author | Roman Stratiienko <roman.o.stratiienko@globallogic.com> | 2022-04-01 19:26:30 +0300 |
---|---|---|
committer | Roman Stratiienko <roman.o.stratiienko@globallogic.com> | 2022-04-16 12:02:38 +0300 |
commit | ccaf51614ffacc853fd957a7a38d2177895534fc (patch) | |
tree | 02ef3a3b4c56e945fa36599db599aa88b92ba60d | |
parent | d0494d9b80977f2f9a21db6932119211a27fe8d5 (diff) | |
download | drm_hwcomposer-ccaf51614ffacc853fd957a7a38d2177895534fc.tar.gz |
drm_hwcomposer: Fix SetPowerMode() VTS tests for headless mode
Test: atest VtsHalGraphicsComposerV2_1TargetTest
Signed-off-by: Roman Stratiienko <roman.o.stratiienko@globallogic.com>
-rw-r--r-- | hwc2_device/HwcDisplay.cpp | 33 |
1 files changed, 19 insertions, 14 deletions
diff --git a/hwc2_device/HwcDisplay.cpp b/hwc2_device/HwcDisplay.cpp index 0f957a7..48e0624 100644 --- a/hwc2_device/HwcDisplay.cpp +++ b/hwc2_device/HwcDisplay.cpp @@ -633,11 +633,8 @@ HWC2::Error HwcDisplay::SetOutputBuffer(buffer_handle_t /*buffer*/, } HWC2::Error HwcDisplay::SetPowerMode(int32_t mode_in) { - if (IsInHeadlessMode()) { - return HWC2::Error::None; - } - auto mode = static_cast<HWC2::PowerMode>(mode_in); + AtomicCommitArgs a_args{}; switch (mode) { @@ -645,22 +642,30 @@ HWC2::Error HwcDisplay::SetPowerMode(int32_t mode_in) { a_args.active = false; break; case HWC2::PowerMode::On: - /* - * Setting the display to active before we have a composition - * can break some drivers, so skip setting a_args.active to - * true, as the next composition frame will implicitly activate - * the display - */ - return GetPipe().atomic_state_manager->ActivateDisplayUsingDPMS() == 0 - ? HWC2::Error::None - : HWC2::Error::BadParameter; + a_args.active = true; break; case HWC2::PowerMode::Doze: case HWC2::PowerMode::DozeSuspend: return HWC2::Error::Unsupported; default: - ALOGI("Power mode %d is unsupported\n", mode); + ALOGE("Incorrect power mode value (%d)\n", mode); return HWC2::Error::BadParameter; + } + + if (IsInHeadlessMode()) { + return HWC2::Error::None; + } + + if (a_args.active) { + /* + * Setting the display to active before we have a composition + * can break some drivers, so skip setting a_args.active to + * true, as the next composition frame will implicitly activate + * the display + */ + return GetPipe().atomic_state_manager->ActivateDisplayUsingDPMS() == 0 + ? HWC2::Error::None + : HWC2::Error::BadParameter; }; int err = GetPipe().atomic_state_manager->ExecuteAtomicCommit(a_args); |