From 17d180891f1e237ea5d25835999a8b23a6e7946d Mon Sep 17 00:00:00 2001 From: Tomi Valkeinen Date: Sat, 11 Jun 2016 20:17:35 +0300 Subject: rename dirs --- kms++/plane.cpp | 105 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 kms++/plane.cpp (limited to 'kms++/plane.cpp') diff --git a/kms++/plane.cpp b/kms++/plane.cpp new file mode 100644 index 0000000..46cd3e6 --- /dev/null +++ b/kms++/plane.cpp @@ -0,0 +1,105 @@ +#include +#include +#include +#include +#include +#include +#include + +#include "kms++.h" + +using namespace std; + +namespace kms +{ + +struct PlanePriv +{ + drmModePlanePtr drm_plane; +}; + +Plane::Plane(Card &card, uint32_t id, uint32_t idx) + :DrmPropObject(card, id, DRM_MODE_OBJECT_PLANE, idx) +{ + m_priv = new PlanePriv(); + m_priv->drm_plane = drmModeGetPlane(this->card().fd(), this->id()); + assert(m_priv->drm_plane); +} + +Plane::~Plane() +{ + drmModeFreePlane(m_priv->drm_plane); + delete m_priv; +} + +bool Plane::supports_crtc(Crtc* crtc) const +{ + return m_priv->drm_plane->possible_crtcs & (1 << crtc->idx()); +} + +bool Plane::supports_format(PixelFormat fmt) const +{ + auto p = m_priv->drm_plane; + + for (unsigned i = 0; i < p->count_formats; ++i) + if ((uint32_t)fmt == p->formats[i]) + return true; + + return false; +} + +PlaneType Plane::plane_type() const +{ + if (card().has_has_universal_planes()) + return (PlaneType)get_prop_value("type"); + else + return PlaneType::Overlay; +} + +vector Plane::get_formats() const +{ + auto p = m_priv->drm_plane; + vector r; + + for (unsigned i = 0; i < p->count_formats; ++i) + r.push_back((PixelFormat) p->formats[i]); + + return r; +} + +uint32_t Plane::crtc_id() const +{ + return m_priv->drm_plane->crtc_id; +} + +uint32_t Plane::fb_id() const +{ + return m_priv->drm_plane->fb_id; +} + +uint32_t Plane::crtc_x() const +{ + return m_priv->drm_plane->crtc_x; +} + +uint32_t Plane::crtc_y() const +{ + return m_priv->drm_plane->crtc_y; +} + +uint32_t Plane::x() const +{ + return m_priv->drm_plane->x; +} + +uint32_t Plane::y() const +{ + return m_priv->drm_plane->y; +} + +uint32_t Plane::gamma_size() const +{ + return m_priv->drm_plane->gamma_size; +} + +} -- cgit v1.2.3