Add IMappedFramebuffer and remove MappedBuffer
authorTomi Valkeinen <tomi.valkeinen@ti.com>
Tue, 15 Mar 2016 09:46:09 +0000 (11:46 +0200)
committerTomi Valkeinen <tomi.valkeinen@ti.com>
Tue, 15 Mar 2016 09:57:49 +0000 (11:57 +0200)
libkms++/dumbframebuffer.h
libkms++/framebuffer.h
libkmstest/colorbar.cpp
libkmstest/cpuframebuffer.cpp [moved from libkmstest/mappedbuffer.cpp with 91% similarity]
libkmstest/cpuframebuffer.h [new file with mode: 0644]
libkmstest/kmstest.h
libkmstest/mappedbuffer.h [deleted file]
libkmstest/testpat.cpp
tests/fbtestpat.cpp

index 226a8dcf24d4d61017532cfc565defde28a928a3..6b3ee648c4987c3fc890dde8b35473d650da5880 100644 (file)
@@ -5,13 +5,16 @@
 
 namespace kms
 {
-class DumbFramebuffer : public Framebuffer
+class DumbFramebuffer : public Framebuffer, public IMappedFramebuffer
 {
 public:
        DumbFramebuffer(Card& card, uint32_t width, uint32_t height, const std::string& fourcc);
        DumbFramebuffer(Card& card, uint32_t width, uint32_t height, PixelFormat format);
        virtual ~DumbFramebuffer();
 
+       uint32_t width() const { return Framebuffer::width(); }
+       uint32_t height() const { return Framebuffer::height(); }
+
        PixelFormat format() const { return m_format; }
        unsigned num_planes() const { return m_num_planes; }
 
index 77a6c3291e81075b29731941df658634024980e2..25659c69c66e30b6ec7c06b5e22fb6411b7c3209 100644 (file)
@@ -1,6 +1,7 @@
 #pragma once
 
 #include "drmobject.h"
+#include "pixelformats.h"
 
 namespace kms
 {
@@ -19,4 +20,21 @@ private:
        uint32_t m_width;
        uint32_t m_height;
 };
+
+class IMappedFramebuffer {
+public:
+       virtual ~IMappedFramebuffer() { }
+
+       virtual uint32_t width() const = 0;
+       virtual uint32_t height() const = 0;
+
+       virtual PixelFormat format() const = 0;
+       virtual unsigned num_planes() const = 0;
+
+       virtual uint32_t stride(unsigned plane) const = 0;
+       virtual uint32_t size(unsigned plane) const = 0;
+       virtual uint32_t offset(unsigned plane) const = 0;
+       virtual uint8_t* map(unsigned plane) = 0;
+};
+
 }
index 811b81ca4f95ea7cecb856c2d78ac9003c6dc160..9daf4d6e43e7d2cf9327e980b28b3970ec5510a9 100644 (file)
@@ -37,7 +37,7 @@ static const uint16_t colors16[] = {
        colors32[11].rgb565(),
 };
 
-static void drm_draw_color_bar_rgb888(DumbFramebuffer& buf, int old_xpos, int xpos, int width)
+static void drm_draw_color_bar_rgb888(IMappedFramebuffer& buf, int old_xpos, int xpos, int width)
 {
        for (unsigned y = 0; y < buf.height(); ++y) {
                RGB bcol = colors32[y * ARRAY_SIZE(colors32) / buf.height()];
@@ -53,7 +53,7 @@ static void drm_draw_color_bar_rgb888(DumbFramebuffer& buf, int old_xpos, int xp
        }
 }
 
-static void drm_draw_color_bar_rgb565(DumbFramebuffer& buf, int old_xpos, int xpos, int width)
+static void drm_draw_color_bar_rgb565(IMappedFramebuffer& buf, int old_xpos, int xpos, int width)
 {
        static_assert(ARRAY_SIZE(colors32) == ARRAY_SIZE(colors16), "bad colors arrays");
 
@@ -71,7 +71,7 @@ static void drm_draw_color_bar_rgb565(DumbFramebuffer& buf, int old_xpos, int xp
        }
 }
 
-static void drm_draw_color_bar_semiplanar_yuv(DumbFramebuffer& buf, int old_xpos, int xpos, int width)
+static void drm_draw_color_bar_semiplanar_yuv(IMappedFramebuffer& buf, int old_xpos, int xpos, int width)
 {
        const uint8_t colors[] = {
                0xff,
@@ -99,7 +99,7 @@ static void drm_draw_color_bar_semiplanar_yuv(DumbFramebuffer& buf, int old_xpos
        }
 }
 
-void draw_color_bar(DumbFramebuffer& buf, int old_xpos, int xpos, int width)
+void draw_color_bar(IMappedFramebuffer& buf, int old_xpos, int xpos, int width)
 {
        switch (buf.format()) {
        case PixelFormat::NV12:
similarity index 91%
rename from libkmstest/mappedbuffer.cpp
rename to libkmstest/cpuframebuffer.cpp
index 40d5f37ac0987003d7a5977cd4a3ff6d41ca12e2..3a9e52de2791ba3a3e8a70d0707b0c69ad02592e 100644 (file)
@@ -1,6 +1,6 @@
 #include <map>
 
-#include "mappedbuffer.h"
+#include "cpuframebuffer.h"
 
 using namespace std;
 
@@ -37,7 +37,7 @@ static const map<PixelFormat, FormatInfo> format_info_array = {
        { PixelFormat::ABGR8888, { 1, { { 32, 1, 1 } }, } },
 };
 
-MappedCPUBuffer::MappedCPUBuffer(uint32_t width, uint32_t height, PixelFormat format)
+CPUFramebuffer::CPUFramebuffer(uint32_t width, uint32_t height, PixelFormat format)
        : m_width(width), m_height(height), m_format(format)
 {
        const FormatInfo& format_info = format_info_array.at(m_format);
@@ -55,7 +55,7 @@ MappedCPUBuffer::MappedCPUBuffer(uint32_t width, uint32_t height, PixelFormat fo
        }
 }
 
-MappedCPUBuffer::~MappedCPUBuffer()
+CPUFramebuffer::~CPUFramebuffer()
 {
        for (unsigned i = 0; i < m_num_planes; ++i) {
                FramebufferPlane& plane = m_planes[i];
diff --git a/libkmstest/cpuframebuffer.h b/libkmstest/cpuframebuffer.h
new file mode 100644 (file)
index 0000000..d2073bc
--- /dev/null
@@ -0,0 +1,44 @@
+#pragma once
+
+#include "kms++.h"
+
+namespace kms
+{
+
+class CPUFramebuffer : public IMappedFramebuffer {
+public:
+       CPUFramebuffer(uint32_t width, uint32_t height, PixelFormat format);
+
+       virtual ~CPUFramebuffer();
+
+       CPUFramebuffer(const CPUFramebuffer& other) = delete;
+       CPUFramebuffer& operator=(const CPUFramebuffer& other) = delete;
+
+       uint32_t width() const { return m_width; }
+       uint32_t height() const { return m_height; }
+
+       PixelFormat format() const { return m_format; }
+       unsigned num_planes() const { return m_num_planes; }
+
+       uint32_t stride(unsigned plane) const { return m_planes[plane].stride; }
+       uint32_t size(unsigned plane) const { return m_planes[plane].size; }
+       uint32_t offset(unsigned plane) const { return m_planes[plane].offset; }
+       uint8_t* map(unsigned plane) { return m_planes[plane].map; }
+
+private:
+       struct FramebufferPlane {
+               uint32_t size;
+               uint32_t stride;
+               uint32_t offset;
+               uint8_t *map;
+       };
+
+       uint32_t m_width;
+       uint32_t m_height;
+       PixelFormat m_format;
+
+       unsigned m_num_planes;
+       struct FramebufferPlane m_planes[4];
+};
+
+}
index 0564ab5a2ab47399bdbaafa8ed7148c1c6948b3b..aed40fe9fb2c07634a9d96b959116db78dff4447 100644 (file)
@@ -1,17 +1,15 @@
 #pragma once
 
 #include "color.h"
+#include "framebuffer.h"
 
 namespace kms
 {
-class MappedBuffer;
-class DumbFramebuffer;
+class IMappedFramebuffer;
 
-void draw_color_bar(kms::DumbFramebuffer& buf, int old_xpos, int xpos, int width);
+void draw_color_bar(IMappedFramebuffer& buf, int old_xpos, int xpos, int width);
 
-void draw_test_pattern(MappedBuffer& fb);
-void draw_test_pattern(DumbFramebuffer &fb);
+void draw_test_pattern(IMappedFramebuffer &fb);
 
-void draw_rect(MappedBuffer &fb, uint32_t x, uint32_t y, uint32_t w, uint32_t h, RGB color);
-void draw_rect(DumbFramebuffer &fb, uint32_t x, uint32_t y, uint32_t w, uint32_t h, RGB color);
+void draw_rect(IMappedFramebuffer &fb, uint32_t x, uint32_t y, uint32_t w, uint32_t h, RGB color);
 }
diff --git a/libkmstest/mappedbuffer.h b/libkmstest/mappedbuffer.h
deleted file mode 100644 (file)
index 7c1215c..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-#pragma once
-
-#include "kms++.h"
-
-namespace kms
-{
-
-class MappedBuffer {
-public:
-       MappedBuffer()
-       {
-       }
-
-       virtual ~MappedBuffer()
-       {
-       }
-
-       virtual uint32_t width() const = 0;
-       virtual uint32_t height() const = 0;
-
-       virtual PixelFormat format() const = 0;
-       virtual unsigned num_planes() const = 0;
-
-       virtual uint32_t stride(unsigned plane) const = 0;
-       virtual uint32_t size(unsigned plane) const = 0;
-       virtual uint32_t offset(unsigned plane) const = 0;
-       virtual uint8_t* map(unsigned plane) = 0;
-};
-
-class MappedDumbBuffer : public MappedBuffer {
-public:
-       MappedDumbBuffer(DumbFramebuffer& dumbfb)
-               : m_fb(dumbfb)
-       {
-
-       }
-
-       virtual ~MappedDumbBuffer()
-       {
-
-       }
-
-       uint32_t width() const { return m_fb.width(); }
-       uint32_t height() const { return m_fb.height(); }
-
-       PixelFormat format() const { return m_fb.format(); }
-       unsigned num_planes() const { return m_fb.num_planes(); }
-
-       uint32_t stride(unsigned plane) const { return m_fb.stride(plane); }
-       uint32_t size(unsigned plane) const { return m_fb.size(plane); }
-       uint32_t offset(unsigned plane) const { return m_fb.offset(plane); }
-       uint8_t* map(unsigned plane) { return m_fb.map(plane); }
-
-private:
-       DumbFramebuffer& m_fb;
-};
-
-class MappedCPUBuffer : public MappedBuffer {
-public:
-       MappedCPUBuffer(uint32_t width, uint32_t height, PixelFormat format);
-
-       virtual ~MappedCPUBuffer();
-
-       MappedCPUBuffer(const MappedCPUBuffer& other) = delete;
-       MappedCPUBuffer& operator=(const MappedCPUBuffer& other) = delete;
-
-       uint32_t width() const { return m_width; }
-       uint32_t height() const { return m_height; }
-
-       PixelFormat format() const { return m_format; }
-       unsigned num_planes() const { return m_num_planes; }
-
-       uint32_t stride(unsigned plane) const { return m_planes[plane].stride; }
-       uint32_t size(unsigned plane) const { return m_planes[plane].size; }
-       uint32_t offset(unsigned plane) const { return m_planes[plane].offset; }
-       uint8_t* map(unsigned plane) { return m_planes[plane].map; }
-
-
-private:
-       struct FramebufferPlane {
-               uint32_t size;
-               uint32_t stride;
-               uint32_t offset;
-               uint8_t *map;
-       };
-
-       uint32_t m_width;
-       uint32_t m_height;
-       PixelFormat m_format;
-
-       unsigned m_num_planes;
-       struct FramebufferPlane m_planes[4];
-};
-
-}
index 059c1bcd2fe067b9b2023f88cf79a6ed0d9a9c62..c0541bba3839d063cdce7b376b2f9aed05b763ce 100644 (file)
 
 #include "kms++.h"
 #include "test.h"
-#include "mappedbuffer.h"
+#include "cpuframebuffer.h"
 
 #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
 
 namespace kms
 {
-static void draw_rgb_pixel(MappedBuffer& buf, unsigned x, unsigned y, RGB color)
+static void draw_rgb_pixel(IMappedFramebuffer& buf, unsigned x, unsigned y, RGB color)
 {
        switch (buf.format()) {
        case PixelFormat::XRGB8888:
@@ -47,7 +47,7 @@ static void draw_rgb_pixel(MappedBuffer& buf, unsigned x, unsigned y, RGB color)
        }
 }
 
-static void draw_yuv422_macropixel(MappedBuffer& buf, unsigned x, unsigned y, YUV yuv1, YUV yuv2)
+static void draw_yuv422_macropixel(IMappedFramebuffer& buf, unsigned x, unsigned y, YUV yuv1, YUV yuv2)
 {
        ASSERT((x & 1) == 0);
 
@@ -92,7 +92,7 @@ static void draw_yuv422_macropixel(MappedBuffer& buf, unsigned x, unsigned y, YU
        }
 }
 
-static void draw_yuv420_macropixel(MappedBuffer& buf, unsigned x, unsigned y,
+static void draw_yuv420_macropixel(IMappedFramebuffer& buf, unsigned x, unsigned y,
                                   YUV yuv1, YUV yuv2, YUV yuv3, YUV yuv4)
 {
        ASSERT((x & 1) == 0);
@@ -134,7 +134,7 @@ static void draw_yuv420_macropixel(MappedBuffer& buf, unsigned x, unsigned y,
        }
 }
 
-static RGB get_test_pattern_pixel(MappedBuffer& fb, unsigned x, unsigned y)
+static RGB get_test_pattern_pixel(IMappedFramebuffer& fb, unsigned x, unsigned y)
 {
        const unsigned w = fb.width();
        const unsigned h = fb.height();
@@ -215,7 +215,7 @@ static RGB get_test_pattern_pixel(MappedBuffer& fb, unsigned x, unsigned y)
        }
 }
 
-static void draw_test_pattern_impl(MappedBuffer& fb)
+static void draw_test_pattern_impl(IMappedFramebuffer& fb)
 {
        unsigned x, y;
        unsigned w = fb.width();
@@ -267,13 +267,7 @@ static void draw_test_pattern_impl(MappedBuffer& fb)
        }
 }
 
-void draw_test_pattern(DumbFramebuffer &fb)
-{
-       MappedDumbBuffer mfb(fb);
-       draw_test_pattern(mfb);
-}
-
-void draw_test_pattern(MappedBuffer &fb)
+void draw_test_pattern(IMappedFramebuffer &fb)
 {
 #ifdef DRAW_PERF_PRINT
        using namespace std::chrono;
@@ -291,7 +285,7 @@ void draw_test_pattern(MappedBuffer &fb)
 #endif
 }
 
-void draw_rect(MappedBuffer &fb, uint32_t x, uint32_t y, uint32_t w, uint32_t h, RGB color)
+void draw_rect(IMappedFramebuffer &fb, uint32_t x, uint32_t y, uint32_t w, uint32_t h, RGB color)
 {
        for (unsigned i = x; i < x + w; ++i) {
                for (unsigned j = y; j < y + h; ++j) {
@@ -300,10 +294,4 @@ void draw_rect(MappedBuffer &fb, uint32_t x, uint32_t y, uint32_t w, uint32_t h,
        }
 }
 
-void draw_rect(DumbFramebuffer &fb, uint32_t x, uint32_t y, uint32_t w, uint32_t h, RGB color)
-{
-       MappedDumbBuffer mfb(fb);
-       draw_rect(mfb, x, y, w, h, color);
-}
-
 }
index 529a688c725c9b3fa45f93c526061573fdacb976..a29ae24d89488284d3a8d5818bf30725ade8e40a 100644 (file)
@@ -12,7 +12,7 @@
 #include <linux/fb.h>
 
 #include "test.h"
-#include "mappedbuffer.h"
+#include "cpuframebuffer.h"
 
 using namespace kms;
 
@@ -41,7 +41,7 @@ int main(int argc, char** argv)
 
        FAIL_IF(ptr == MAP_FAILED, "mmap failed");
 
-       MappedCPUBuffer buf(var.xres_virtual, var.yres_virtual, PixelFormat::XRGB8888);
+       CPUFramebuffer buf(var.xres_virtual, var.yres_virtual, PixelFormat::XRGB8888);
 
        printf("%s: res %dx%d, virtual %dx%d, line_len %d\n",
               fbdev,