Add MappedFramebuffer
[android/external-libkmsxx.git] / kms++ / inc / kms++ / dumbframebuffer.h
1 #pragma once
3 #include "mappedframebuffer.h"
4 #include "pixelformats.h"
6 namespace kms
7 {
9 class DumbFramebuffer : public MappedFramebuffer
10 {
11 public:
12         DumbFramebuffer(Card& card, uint32_t width, uint32_t height, const std::string& fourcc);
13         DumbFramebuffer(Card& card, uint32_t width, uint32_t height, PixelFormat format);
14         virtual ~DumbFramebuffer();
16         uint32_t width() const { return Framebuffer::width(); }
17         uint32_t height() const { return Framebuffer::height(); }
19         PixelFormat format() const { return m_format; }
20         unsigned num_planes() const { return m_num_planes; }
22         uint32_t handle(unsigned plane) const { return m_planes[plane].handle; }
23         uint32_t stride(unsigned plane) const { return m_planes[plane].stride; }
24         uint32_t size(unsigned plane) const { return m_planes[plane].size; }
25         uint32_t offset(unsigned plane) const { return m_planes[plane].offset; }
26         uint8_t* map(unsigned plane);
27         int prime_fd(unsigned plane);
29 private:
30         struct FramebufferPlane {
31                 uint32_t handle;
32                 int prime_fd;
33                 uint32_t size;
34                 uint32_t stride;
35                 uint32_t offset;
36                 uint8_t *map;
37         };
39         void Create();
40         void Destroy();
42         unsigned m_num_planes;
43         struct FramebufferPlane m_planes[4];
45         PixelFormat m_format;
46 };
47 }