drm_hwcomposer: Add supported formats list to DrmPlane
There are some use-cases for checking formats supported by given
plane. drmModePlane already contains reqired data, so it simply could
be saved into DrmPlane, no need to query any additional stuff.
Signed-off-by: Roman Kovalivskyi <roman.kovalivskyi@globallogic.com>
diff --git a/drm/DrmPlane.cpp b/drm/DrmPlane.cpp
index 1fb1316..f994252 100644
--- a/drm/DrmPlane.cpp
+++ b/drm/DrmPlane.cpp
@@ -29,7 +29,10 @@
namespace android {
DrmPlane::DrmPlane(DrmDevice *drm, drmModePlanePtr p)
- : drm_(drm), id_(p->plane_id), possible_crtc_mask_(p->possible_crtcs) {
+ : drm_(drm),
+ id_(p->plane_id),
+ possible_crtc_mask_(p->possible_crtcs),
+ formats_(p->formats, p->formats + p->count_formats) {
}
int DrmPlane::Init() {
@@ -153,6 +156,11 @@
return type_;
}
+bool DrmPlane::IsFormatSupported(uint32_t format) const {
+ return std::find(std::begin(formats_), std::end(formats_), format) !=
+ std::end(formats_);
+}
+
const DrmProperty &DrmPlane::crtc_property() const {
return crtc_property_;
}
diff --git a/drm/DrmPlane.h b/drm/DrmPlane.h
index d2f0601..16731a8 100644
--- a/drm/DrmPlane.h
+++ b/drm/DrmPlane.h
@@ -43,6 +43,8 @@
uint32_t type() const;
+ bool IsFormatSupported(uint32_t format) const;
+
const DrmProperty &crtc_property() const;
const DrmProperty &fb_property() const;
const DrmProperty &crtc_x_property() const;
@@ -67,6 +69,8 @@
uint32_t type_;
+ std::vector<uint32_t> formats_;
+
DrmProperty crtc_property_;
DrmProperty fb_property_;
DrmProperty crtc_x_property_;