diff options
Diffstat (limited to 'kms++/inc/kms++/extframebuffer.h')
-rw-r--r-- | kms++/inc/kms++/extframebuffer.h | 36 |
1 files changed, 17 insertions, 19 deletions
diff --git a/kms++/inc/kms++/extframebuffer.h b/kms++/inc/kms++/extframebuffer.h index 5f0660c..00dc9bf 100644 --- a/kms++/inc/kms++/extframebuffer.h +++ b/kms++/inc/kms++/extframebuffer.h @@ -1,47 +1,45 @@ #pragma once +#include <array> +#include <vector> + #include "framebuffer.h" #include "pixelformats.h" namespace kms { - class ExtFramebuffer : public Framebuffer { public: ExtFramebuffer(Card& card, uint32_t width, uint32_t height, PixelFormat format, - std::vector<uint32_t> handles, std::vector<uint32_t> pitches, std::vector<uint32_t> offsets); - ExtFramebuffer(Card& card, uint32_t width, uint32_t height, PixelFormat format, - std::vector<int> fds, std::vector<uint32_t> pitches, std::vector<uint32_t> offsets); - virtual ~ExtFramebuffer(); + std::vector<uint32_t> handles, std::vector<uint32_t> pitches, std::vector<uint32_t> offsets, std::vector<uint64_t> modifiers = {}); + ~ExtFramebuffer() override; - uint32_t width() const { return Framebuffer::width(); } - uint32_t height() const { return Framebuffer::height(); } + uint32_t width() const override { return Framebuffer::width(); } + uint32_t height() const override { return Framebuffer::height(); } - PixelFormat format() const { return m_format; } - unsigned num_planes() const { return m_num_planes; } + PixelFormat format() const override { return m_format; } + unsigned num_planes() const override { return m_num_planes; } - uint32_t handle(unsigned plane) const { return m_planes[plane].handle; } - 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); - int prime_fd(unsigned plane); + uint32_t handle(unsigned plane) const { return m_planes.at(plane).handle; } + uint32_t stride(unsigned plane) const override { return m_planes.at(plane).stride; } + uint32_t size(unsigned plane) const override { return m_planes.at(plane).size; } + uint32_t offset(unsigned plane) const override { return m_planes.at(plane).offset; } private: struct FramebufferPlane { uint32_t handle; - int prime_fd; uint32_t size; uint32_t stride; uint32_t offset; - uint8_t *map; + uint64_t modifier; + uint8_t* map; }; unsigned m_num_planes; - struct FramebufferPlane m_planes[4]; + std::array<FramebufferPlane, 4> m_planes; PixelFormat m_format; }; -} +} // namespace kms |