From 43e03aacfa211eb56037b68da66e79b162491c1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Date: Mon, 19 Jul 2021 18:13:09 +0200 Subject: framebuffer: Support partial flushing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Noralf Trønnes --- kms++/inc/kms++/framebuffer.h | 1 + kms++/src/framebuffer.cpp | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/kms++/inc/kms++/framebuffer.h b/kms++/inc/kms++/framebuffer.h index 6f77b98..1bd477c 100644 --- a/kms++/inc/kms++/framebuffer.h +++ b/kms++/inc/kms++/framebuffer.h @@ -41,6 +41,7 @@ public: uint32_t width() const override { return m_width; } uint32_t height() const override { return m_height; } + void flush(uint32_t x, uint32_t y, uint32_t width, uint32_t height); void flush(); protected: diff --git a/kms++/src/framebuffer.cpp b/kms++/src/framebuffer.cpp index f1cba3b..72e1a73 100644 --- a/kms++/src/framebuffer.cpp +++ b/kms++/src/framebuffer.cpp @@ -34,6 +34,17 @@ Framebuffer::Framebuffer(Card& card, uint32_t id) card.m_framebuffers.push_back(this); } +void Framebuffer::flush(uint32_t x, uint32_t y, uint32_t width, uint32_t height) +{ + drmModeClip clip{}; + clip.x1 = x; + clip.y1 = y; + clip.x2 = x + width; + clip.y2 = y + height; + + drmModeDirtyFB(card().fd(), id(), &clip, 1); +} + void Framebuffer::flush() { drmModeClip clip{}; -- cgit v1.2.3 From 60586e12ad31a7241fd531eee0e41ef20625f7e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Date: Mon, 19 Jul 2021 18:17:54 +0200 Subject: py: Framebuffer: Add flush and __repr__ MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Noralf Trønnes --- py/pykms/pykmsbase.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/py/pykms/pykmsbase.cpp b/py/pykms/pykmsbase.cpp index 382ef6f..b3ada1b 100644 --- a/py/pykms/pykmsbase.cpp +++ b/py/pykms/pykmsbase.cpp @@ -148,6 +148,9 @@ void init_pykmsbase(py::module& m) .def("offset", &Framebuffer::offset) .def("fd", &Framebuffer::prime_fd) + .def("flush", (void (Framebuffer::*)(void)) & Framebuffer::flush) + .def("flush", (void (Framebuffer::*)(uint32_t x, uint32_t y, uint32_t width, uint32_t height)) & Framebuffer::flush) + // XXX pybind11 doesn't support a base object (DrmObject) with custom holder-type, // and a subclass with standard holder-type. // So we just copy the DrmObject members here. @@ -161,6 +164,7 @@ void init_pykmsbase(py::module& m) py::keep_alive<1, 2>()) // Keep Card alive until this is destructed .def(py::init(), py::keep_alive<1, 2>()) // Keep Card alive until this is destructed + .def("__repr__", [](const DumbFramebuffer& o) { return ""; }) ; py::class_(m, "DmabufFramebuffer") @@ -168,6 +172,7 @@ void init_pykmsbase(py::module& m) py::keep_alive<1, 2>()) // Keep Card alive until this is destructed .def(py::init, vector, vector>(), py::keep_alive<1, 2>()) // Keep Card alive until this is destructed + .def("__repr__", [](const DmabufFramebuffer& o) { return ""; }) ; py::enum_(m, "PixelFormat") -- cgit v1.2.3 From a85e41d3ca9b4db2271198a757059a3df6a3b32e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Date: Mon, 19 Jul 2021 18:18:46 +0200 Subject: py: Card: Add .properties MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Noralf Trønnes --- py/pykms/pykmsbase.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/py/pykms/pykmsbase.cpp b/py/pykms/pykmsbase.cpp index b3ada1b..53ea8c7 100644 --- a/py/pykms/pykmsbase.cpp +++ b/py/pykms/pykmsbase.cpp @@ -46,6 +46,10 @@ void init_pykmsbase(py::module& m) return convert_vector(self->get_planes()); }) + .def_property_readonly("properties", [](Card* self) { + return convert_vector(self->get_properties()); + }) + .def_property_readonly("has_atomic", &Card::has_atomic) .def("get_prop", (Property * (Card::*)(uint32_t) const) & Card::get_prop) -- cgit v1.2.3 From 3d2cde2851e7631ad3454d8371f74e2bc2e7f206 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Date: Mon, 19 Jul 2021 18:20:58 +0200 Subject: py: Property: Add type, enums, values, and __repr__ MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Also add PropertyType which is used by the type property. Signed-off-by: Noralf Trønnes --- py/pykms/pykmsbase.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/py/pykms/pykmsbase.cpp b/py/pykms/pykmsbase.cpp index 53ea8c7..088d267 100644 --- a/py/pykms/pykmsbase.cpp +++ b/py/pykms/pykmsbase.cpp @@ -120,7 +120,20 @@ void init_pykmsbase(py::module& m) py::class_>(m, "Property") .def_property_readonly("name", &Property::name) - .def_property_readonly("enums", &Property::get_enums); + .def_property_readonly("type", &Property::type) + .def_property_readonly("enums", &Property::get_enums) + .def_property_readonly("values", &Property::get_values) + .def("__repr__", [](const Property& o) { return ""; }) + ; + + py::enum_(m, "PropertyType") + .value("Range", PropertyType::Range) + .value("Enum", PropertyType::Enum) + .value("Blob", PropertyType::Blob) + .value("Bitmask", PropertyType::Bitmask) + .value("Object", PropertyType::Object) + .value("SignedRange", PropertyType::SignedRange) + ; py::class_(m, "Blob") .def(py::init([](Card& card, py::buffer buf) { -- cgit v1.2.3