1 #pragma once
3 #include "drmobject.h"
4 #include "pixelformats.h"
6 namespace kms
7 {
8 class Framebuffer : public DrmObject
9 {
10 public:
11 Framebuffer(Card& card, uint32_t id);
12 virtual ~Framebuffer();
14 uint32_t width() const { return m_width; }
15 uint32_t height() const { return m_height; }
16 protected:
17 Framebuffer(Card& card, int width, int height);
19 private:
20 uint32_t m_width;
21 uint32_t m_height;
22 };
24 class IMappedFramebuffer {
25 public:
26 virtual ~IMappedFramebuffer() { }
28 virtual uint32_t width() const = 0;
29 virtual uint32_t height() const = 0;
31 virtual PixelFormat format() const = 0;
32 virtual unsigned num_planes() const = 0;
34 virtual uint32_t stride(unsigned plane) const = 0;
35 virtual uint32_t size(unsigned plane) const = 0;
36 virtual uint32_t offset(unsigned plane) const = 0;
37 virtual uint8_t* map(unsigned plane) = 0;
38 };
40 }