aboutsummaryrefslogtreecommitdiff
path: root/compositor
diff options
context:
space:
mode:
authorRoman Stratiienko <roman.o.stratiienko@globallogic.com>2022-01-13 16:37:27 +0200
committerRoman Stratiienko <roman.o.stratiienko@globallogic.com>2022-01-13 16:43:57 +0200
commitd37b3082999fa61bb108d4d6156c1941db3f7f3f (patch)
treebc1ed214fda16bf01c4e97d04a4525139d0b896b /compositor
parent0137f867df27c22224cd74dec6b4a264040f74be (diff)
downloaddrm_hwcomposer-d37b3082999fa61bb108d4d6156c1941db3f7f3f.tar.gz
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 <roman.o.stratiienko@globallogic.com>
Diffstat (limited to 'compositor')
-rw-r--r--compositor/DrmDisplayCompositor.cpp16
-rw-r--r--compositor/DrmDisplayCompositor.h2
2 files changed, 18 insertions, 0 deletions
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;