summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libkms++/encoder.cpp18
-rw-r--r--libkms++/encoder.h1
2 files changed, 19 insertions, 0 deletions
diff --git a/libkms++/encoder.cpp b/libkms++/encoder.cpp
index 81eba71..6f79e4f 100644
--- a/libkms++/encoder.cpp
+++ b/libkms++/encoder.cpp
@@ -18,6 +18,18 @@ struct EncoderPriv
drmModeEncoderPtr drm_encoder;
};
+static const map<int, string> encoder_types = {
+#define DEF_ENC(c) { DRM_MODE_ENCODER_##c, #c }
+ DEF_ENC(NONE),
+ DEF_ENC(DAC),
+ DEF_ENC(TMDS),
+ DEF_ENC(LVDS),
+ DEF_ENC(TVDAC),
+ DEF_ENC(VIRTUAL),
+ DEF_ENC(DSI),
+#undef DEF_ENC
+};
+
Encoder::Encoder(Card &card, uint32_t id)
:DrmObject(card, id, DRM_MODE_OBJECT_ENCODER)
{
@@ -63,4 +75,10 @@ vector<Crtc*> Encoder::get_possible_crtcs() const
return crtcs;
}
+
+const string& Encoder::get_encoder_type() const
+{
+ return encoder_types.at(m_priv->drm_encoder->encoder_type);
+}
+
}
diff --git a/libkms++/encoder.h b/libkms++/encoder.h
index 77e4e3e..609e136 100644
--- a/libkms++/encoder.h
+++ b/libkms++/encoder.h
@@ -17,6 +17,7 @@ public:
Crtc* get_crtc() const;
std::vector<Crtc*> get_possible_crtcs() const;
+ const std::string& get_encoder_type() const;
private:
Encoder(Card& card, uint32_t id);
~Encoder();