From 8b9a6329a3f723fbc59e09b992eef93135d2a328 Mon Sep 17 00:00:00 2001 From: Laurent Pinchart Date: Thu, 6 Aug 2020 04:00:56 +0300 Subject: dumbfb: Add support tri- or quadri-planar buffers The DumbFrameBuffer class supports up to 4 planes, as required by the DRM/KMS API, but only considers planes 0 and 1 when constructing the buffer. Fix it. Signed-off-by: Laurent Pinchart --- kms++/src/dumbframebuffer.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/kms++/src/dumbframebuffer.cpp b/kms++/src/dumbframebuffer.cpp index 3448fb1..18f3f15 100644 --- a/kms++/src/dumbframebuffer.cpp +++ b/kms++/src/dumbframebuffer.cpp @@ -56,9 +56,18 @@ DumbFramebuffer::DumbFramebuffer(Card& card, uint32_t width, uint32_t height, Pi } /* create framebuffer object for the dumb-buffer */ - uint32_t bo_handles[4] = { m_planes[0].handle, m_planes[1].handle }; - uint32_t pitches[4] = { m_planes[0].stride, m_planes[1].stride }; - uint32_t offsets[4] = { m_planes[0].offset, m_planes[1].offset }; + uint32_t bo_handles[4] = { + m_planes[0].handle, m_planes[1].handle, + m_planes[2].handle, m_planes[3].handle, + }; + uint32_t pitches[4] = { + m_planes[0].stride, m_planes[1].stride, + m_planes[2].stride, m_planes[3].stride, + }; + uint32_t offsets[4] = { + m_planes[0].offset, m_planes[1].offset, + m_planes[2].offset, m_planes[3].offset, + }; uint32_t id; r = drmModeAddFB2(card.fd(), width, height, (uint32_t)format, bo_handles, pitches, offsets, &id, 0); -- cgit v1.2.3