diff options
author | Roman Stratiienko <roman.o.stratiienko@globallogic.com> | 2022-01-13 16:37:27 +0200 |
---|---|---|
committer | Roman Stratiienko <roman.o.stratiienko@globallogic.com> | 2022-01-13 16:43:57 +0200 |
commit | d37b3082999fa61bb108d4d6156c1941db3f7f3f (patch) | |
tree | bc1ed214fda16bf01c4e97d04a4525139d0b896b /compositor | |
parent | 0137f867df27c22224cd74dec6b4a264040f74be (diff) | |
download | drm_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.cpp | 16 | ||||
-rw-r--r-- | compositor/DrmDisplayCompositor.h | 2 |
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; |