dumbfb: Add support tri- or quadri-planar buffers
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Thu, 6 Aug 2020 02:18:01 +0000 (05:18 +0300)
committerTomi Valkeinen <tomi.valkeinen@ti.com>
Mon, 10 Aug 2020 06:44:48 +0000 (09:44 +0300)
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 <laurent.pinchart@ideasonboard.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
kms++/src/dumbframebuffer.cpp

index 3448fb1..18f3f15 100644 (file)
@@ -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);