aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoman Stratiienko <roman.o.stratiienko@globallogic.com>2022-04-01 19:26:30 +0300
committerRoman Stratiienko <roman.o.stratiienko@globallogic.com>2022-04-16 12:02:38 +0300
commitccaf51614ffacc853fd957a7a38d2177895534fc (patch)
tree02ef3a3b4c56e945fa36599db599aa88b92ba60d
parentd0494d9b80977f2f9a21db6932119211a27fe8d5 (diff)
downloaddrm_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.cpp33
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);