e7cafb65c164677b58ae6b3bb91deff16ae5d539
[android/external-libkmsxx.git] / libkms++ / dumbframebuffer.h
1 #pragma once
3 #include "framebuffer.h"
5 namespace kms
6 {
7 class DumbFramebuffer : public Framebuffer
8 {
9 public:
10         DumbFramebuffer(Card& card, uint32_t width, uint32_t height, const char* fourcc);
11         virtual ~DumbFramebuffer();
13         void print_short() const;
15         uint32_t format() const { return m_format; }
17         uint8_t* map(unsigned plane) const { return m_planes[plane].map; }
18         uint32_t stride(unsigned plane) const { return m_planes[plane].stride; }
19         uint32_t size(unsigned plane) const { return m_planes[plane].size; }
21         void clear();
23 private:
24         struct FramebufferPlane {
25                 uint32_t handle;
26                 uint32_t size;
27                 uint32_t stride;
28                 uint8_t *map;
29         };
31         void Create(uint32_t width, uint32_t height, uint32_t format);
32         void Destroy();
34         unsigned m_num_planes;
35         struct FramebufferPlane m_planes[4];
37         uint32_t m_format;
38 };
39 }