Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <assert.h>
- #include <string.h>
- #include <unistd.h>
- #include <kms++/kms++.h>
- #include <kms++util/resourcemanager.h>
- int main () {
- kms::Card card("/dev/dri/card4");
- assert(card.has_has_universal_planes());
- assert(card.has_atomic());
- kms::ResourceManager resmgr(card);
- kms::Connector* connector = card.get_connector(44);
- assert(connector != nullptr);
- connector = resmgr.reserve_connector(connector);
- assert(connector != nullptr);
- assert(connector->connected());
- kms::Crtc* crtc = resmgr.reserve_crtc(connector);
- assert(crtc != nullptr);
- kms::Videomode mode = connector->get_default_mode();
- std::unique_ptr<kms::Blob> modeblob = mode.to_blob(card);
- kms::Plane* plane = resmgr.reserve_generic_plane(crtc);
- assert(plane != nullptr);
- kms::DumbFramebuffer fb(card, mode.hdisplay, mode.vdisplay, kms::PixelFormat::XRGB8888);
- memset(fb.map(0), 0xff, fb.size(0));
- kms::AtomicReq req(card);
- req.add(connector, {
- { "CRTC_ID", crtc->id() },
- });
- req.add(crtc, {
- { "ACTIVE", 1 },
- { "MODE_ID", modeblob->id() },
- });
- req.add(plane, {
- { "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() },
- });
- req.commit_sync(true);
- sleep(10);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement