aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@ti.com>2017-10-20 11:33:53 +0300
committerTomi Valkeinen <tomi.valkeinen@ti.com>2017-10-20 11:34:31 +0300
commitd556f70824727e4e0e4c8b04592b8f3a23733596 (patch)
tree4de49103e6f649735210ecd94fa71a90f92a9c65
parent3da8bff960177bbbd2dc86849846e3b6ec97bc79 (diff)
downloadkmsxx-d556f70824727e4e0e4c8b04592b8f3a23733596.tar.gz
Crtc: add set_mode() which doesn't take a fb
-rw-r--r--kms++/inc/kms++/crtc.h1
-rw-r--r--kms++/src/crtc.cpp22
-rw-r--r--py/pykms/pykmsbase.cpp3
3 files changed, 25 insertions, 1 deletions
diff --git a/kms++/inc/kms++/crtc.h b/kms++/inc/kms++/crtc.h
index c86fc88..ea20ef8 100644
--- a/kms++/inc/kms++/crtc.h
+++ b/kms++/inc/kms++/crtc.h
@@ -18,6 +18,7 @@ public:
const std::vector<Plane*>& get_possible_planes() const { return m_possible_planes; }
+ int set_mode(Connector* conn, const Videomode& mode);
int set_mode(Connector* conn, Framebuffer& fb, const Videomode& mode);
int set_plane(Plane *plane, Framebuffer &fb,
diff --git a/kms++/src/crtc.cpp b/kms++/src/crtc.cpp
index c391f69..f94216f 100644
--- a/kms++/src/crtc.cpp
+++ b/kms++/src/crtc.cpp
@@ -58,6 +58,28 @@ void Crtc::restore_mode(Connector* conn)
conns, 1, &c->mode);
}
+int Crtc::set_mode(Connector* conn, const Videomode& mode)
+{
+ AtomicReq req(card());
+
+ unique_ptr<Blob> blob = mode.to_blob(card());
+
+ req.add(conn, {
+ { "CRTC_ID", this->id() },
+ });
+
+ req.add(this, {
+ { "ACTIVE", 1 },
+ { "MODE_ID", blob->id() },
+ });
+
+ int r = req.commit_sync(true);
+
+ refresh();
+
+ return r;
+}
+
int Crtc::set_mode(Connector* conn, Framebuffer& fb, const Videomode& mode)
{
uint32_t conns[] = { conn->id() };
diff --git a/py/pykms/pykmsbase.cpp b/py/pykms/pykmsbase.cpp
index 258167a..fe4bc46 100644
--- a/py/pykms/pykmsbase.cpp
+++ b/py/pykms/pykmsbase.cpp
@@ -50,7 +50,8 @@ void init_pykmsbase(py::module &m)
;
py::class_<Crtc, Crtc*>(m, "Crtc", py::base<DrmPropObject>())
- .def("set_mode", &Crtc::set_mode)
+ .def("set_mode", (int (Crtc::*)(Connector*, const Videomode&))&Crtc::set_mode)
+ .def("set_mode", (int (Crtc::*)(Connector*, Framebuffer&, const Videomode&))&Crtc::set_mode)
.def("disable_mode", &Crtc::disable_mode)
.def("page_flip",
[](Crtc* self, Framebuffer& fb, uint32_t data)