From 05cc861d51149c719bcef145365e89a00ddb6cde Mon Sep 17 00:00:00 2001 From: Tomi Valkeinen Date: Sun, 14 Aug 2016 11:10:34 +0300 Subject: AtomicReq: add add_display() helper --- kms++/inc/kms++/atomicreq.h | 3 +++ kms++/src/atomicreq.cpp | 25 +++++++++++++++++++++++++ 2 files changed, 28 insertions(+) (limited to 'kms++') diff --git a/kms++/inc/kms++/atomicreq.h b/kms++/inc/kms++/atomicreq.h index a9f779d..a678b54 100644 --- a/kms++/inc/kms++/atomicreq.h +++ b/kms++/inc/kms++/atomicreq.h @@ -24,6 +24,9 @@ public: void add(DrmPropObject *ob, const std::string& prop, uint64_t value); void add(DrmPropObject *ob, const std::map& values); + void add_display(Connector* conn, Crtc* crtc, Blob* videomode, + Plane* primary, Framebuffer* fb); + int test(bool allow_modeset = false); int commit(void* data, bool allow_modeset = false); int commit_sync(bool allow_modeset = false); diff --git a/kms++/src/atomicreq.cpp b/kms++/src/atomicreq.cpp index f2809af..28128f2 100644 --- a/kms++/src/atomicreq.cpp +++ b/kms++/src/atomicreq.cpp @@ -60,6 +60,31 @@ void AtomicReq::add(kms::DrmPropObject* ob, const map& values) add(ob, kvp.first, kvp.second); } +void AtomicReq::add_display(Connector* conn, Crtc* crtc, Blob* videomode, Plane* primary, Framebuffer* fb) +{ + add(conn, { + { "CRTC_ID", crtc->id() }, + }); + + add(crtc, { + { "ACTIVE", 1 }, + { "MODE_ID", videomode->id() }, + }); + + add(primary, { + { "FB_ID", fb->id() }, + { "CRTC_ID", crtc->id() }, + { "SRC_X", 0 << 16 }, + { "SRC_Y", 0 << 16 }, + { "SRC_W", fb->width() << 16 }, + { "SRC_H", fb->height() << 16 }, + { "CRTC_X", 0 }, + { "CRTC_Y", 0 }, + { "CRTC_W", fb->width() }, + { "CRTC_H", fb->height() }, + }); +} + int AtomicReq::test(bool allow_modeset) { uint32_t flags = DRM_MODE_ATOMIC_TEST_ONLY; -- cgit v1.2.3