From 764d6a0b7441796806a8fb8f10b79f009d5afb36 Mon Sep 17 00:00:00 2001 From: Tomi Valkeinen Date: Thu, 3 Dec 2020 11:31:24 +0200 Subject: crtc: add legacy gamma set Signed-off-by: Tomi Valkeinen --- kms++/inc/kms++/crtc.h | 3 ++- kms++/src/crtc.cpp | 18 +++++++++++++++++- py/pykms/pykmsbase.cpp | 4 +++- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/kms++/inc/kms++/crtc.h b/kms++/inc/kms++/crtc.h index 1ba8a07..cf64a86 100644 --- a/kms++/inc/kms++/crtc.h +++ b/kms++/inc/kms++/crtc.h @@ -39,7 +39,8 @@ public: uint32_t height() const; int mode_valid() const; Videomode mode() const; - int gamma_size() const; + int legacy_gamma_size() const; + void legacy_gamma_set(std::vector> v); private: Crtc(Card& card, uint32_t id, uint32_t idx); diff --git a/kms++/src/crtc.cpp b/kms++/src/crtc.cpp index 6dc4333..1c1888f 100644 --- a/kms++/src/crtc.cpp +++ b/kms++/src/crtc.cpp @@ -173,9 +173,25 @@ Videomode Crtc::mode() const return drm_mode_to_video_mode(m_priv->drm_crtc->mode); } -int Crtc::gamma_size() const +int Crtc::legacy_gamma_size() const { return m_priv->drm_crtc->gamma_size; } +void Crtc::legacy_gamma_set(vector> v) +{ + uint32_t len = v.size(); + uint16_t red[len]; + uint16_t green[len]; + uint16_t blue[len]; + + for (uint32_t i = 0; i < len; ++i) { + red[i] = get<0>(v[i]); + green[i] = get<1>(v[i]); + blue[i] = get<2>(v[i]); + } + + drmModeCrtcSetGamma(card().fd(), id(), len, red, green, blue); +} + } // namespace kms diff --git a/py/pykms/pykmsbase.cpp b/py/pykms/pykmsbase.cpp index 43c2dfd..a963843 100644 --- a/py/pykms/pykmsbase.cpp +++ b/py/pykms/pykmsbase.cpp @@ -96,7 +96,9 @@ void init_pykmsbase(py::module& m) .def_property_readonly("mode", &Crtc::mode) .def_property_readonly("mode_valid", &Crtc::mode_valid) .def("__repr__", [](const Crtc& o) { return ""; }) - .def("refresh", &Crtc::refresh); + .def("refresh", &Crtc::refresh) + .def("legacy_gamma_size", &Crtc::legacy_gamma_size) + .def("legacy_gamma_set", &Crtc::legacy_gamma_set); py::class_>(m, "Encoder") .def("refresh", &Encoder::refresh); -- cgit v1.2.3