[PATCH hwc v2 07/18] drm_hwcomposer: Add display field to Drmencoder
Alexandru Gheorghe
alexandru-cosmin.gheorghe at arm.com
Wed Apr 11 15:22:18 UTC 2018
In the current implementation TryEncoderForDisplay just looks
at the crtc linked to the display, if that's not assigned to
a display it means the encoder could be used, otherwise iterate
to the list of possible_crtcs and find one which is not used.
This logic works fine when you have just one encoder connected to a
crtc but with two or more, like is the case when we attach a writeback
connector, we need to know if we already assigned the encoder to a
display.
Signed-off-by: Alexandru Gheorghe <alexandru-cosmin.gheorghe at arm.com>
---
drmencoder.cpp | 14 ++++++++++++++
drmencoder.h | 4 ++++
2 files changed, 18 insertions(+)
diff --git a/drmencoder.cpp b/drmencoder.cpp
index 3d762f3..1da7ec3 100644
--- a/drmencoder.cpp
+++ b/drmencoder.cpp
@@ -27,6 +27,7 @@ DrmEncoder::DrmEncoder(drmModeEncoderPtr e, DrmCrtc *current_crtc,
const std::vector<DrmCrtc *> &possible_crtcs)
: id_(e->encoder_id),
crtc_(current_crtc),
+ display_(-1),
possible_crtcs_(possible_crtcs) {
}
@@ -40,5 +41,18 @@ DrmCrtc *DrmEncoder::crtc() const {
void DrmEncoder::set_crtc(DrmCrtc *crtc) {
crtc_ = crtc;
+ set_display(crtc->display());
+}
+
+int DrmEncoder::display() const {
+ return display_;
+}
+
+void DrmEncoder::set_display(int display) {
+ display_ = display;
+}
+
+bool DrmEncoder::can_bind(int display) const {
+ return display_ == -1 || display_ == display;
}
}
diff --git a/drmencoder.h b/drmencoder.h
index 58ccbfb..7e06691 100644
--- a/drmencoder.h
+++ b/drmencoder.h
@@ -36,6 +36,9 @@ class DrmEncoder {
DrmCrtc *crtc() const;
void set_crtc(DrmCrtc *crtc);
+ bool can_bind(int display) const;
+ void set_display(int display);
+ int display() const;
const std::vector<DrmCrtc *> &possible_crtcs() const {
return possible_crtcs_;
@@ -44,6 +47,7 @@ class DrmEncoder {
private:
uint32_t id_;
DrmCrtc *crtc_;
+ int display_;
std::vector<DrmCrtc *> possible_crtcs_;
};
--
2.7.4
More information about the dri-devel
mailing list