From d37b3082999fa61bb108d4d6156c1941db3f7f3f Mon Sep 17 00:00:00 2001 From: Roman Stratiienko Date: Thu, 13 Jan 2022 16:37:27 +0200 Subject: drm_hwcomposer: Use DPMS property to configure display pipeline Some of KMS drivers like kirin are sensitive to display pipeline configuration, modern kernel will configure the pipeline correctly when user sets DPMS property. To be more precise current compositor logic will not attach primary plane to the CRTC, while kirin relies on it internally. Signed-off-by: Roman Stratiienko --- compositor/DrmDisplayCompositor.cpp | 16 ++++++++++++++++ compositor/DrmDisplayCompositor.h | 2 ++ 2 files changed, 18 insertions(+) (limited to 'compositor') diff --git a/compositor/DrmDisplayCompositor.cpp b/compositor/DrmDisplayCompositor.cpp index fc95b26..89e7f2d 100644 --- a/compositor/DrmDisplayCompositor.cpp +++ b/compositor/DrmDisplayCompositor.cpp @@ -233,4 +233,20 @@ auto DrmDisplayCompositor::ExecuteAtomicCommit(AtomicCommitArgs &args) -> int { return err; } // namespace android +auto DrmDisplayCompositor::ActivateDisplayUsingDPMS() -> int { + auto *drm = resource_manager_->GetDrmDevice(display_); + auto *connector = drm->GetConnectorForDisplay(display_); + if (connector == nullptr) { + ALOGE("Could not locate connector for display %d", display_); + return -ENODEV; + } + + if (connector->dpms_property()) { + drmModeConnectorSetProperty(drm->fd(), connector->id(), + connector->dpms_property().id(), + DRM_MODE_DPMS_ON); + } + return 0; +} + } // namespace android diff --git a/compositor/DrmDisplayCompositor.h b/compositor/DrmDisplayCompositor.h index a883f94..e7899ed 100644 --- a/compositor/DrmDisplayCompositor.h +++ b/compositor/DrmDisplayCompositor.h @@ -64,6 +64,8 @@ class DrmDisplayCompositor { DrmDisplayCompositor(const DrmDisplayCompositor &) = delete; + auto ActivateDisplayUsingDPMS() -> int; + private: auto CommitFrame(AtomicCommitArgs &args) -> int; -- cgit v1.2.3