From: Tomi Valkeinen Date: Fri, 2 Oct 2015 18:27:55 +0000 (+0300) Subject: Add ExtFramebuffer X-Git-Url: https://git.ti.com/gitweb?p=android%2Fexternal-libkmsxx.git;a=commitdiff_plain;h=2984c032ccef081c350f306c96e3c923126657c8;ds=sidebyside Add ExtFramebuffer Add ExtFramebuffer for cases where the buffer have been allocated externally. --- diff --git a/libkms++/decls.h b/libkms++/decls.h index 1415f1f..f9753f2 100644 --- a/libkms++/decls.h +++ b/libkms++/decls.h @@ -9,6 +9,7 @@ class Crtc; class Encoder; class Framebuffer; class DumbFramebuffer; +class ExtFramebuffer; class DrmObject; class Plane; class Property; diff --git a/libkms++/extframebuffer.cpp b/libkms++/extframebuffer.cpp new file mode 100644 index 0000000..de9d737 --- /dev/null +++ b/libkms++/extframebuffer.cpp @@ -0,0 +1,35 @@ + +#include +#include +#include +#include +#include + +#include "kms++.h" + +using namespace std; + +namespace kms +{ + +ExtFramebuffer::ExtFramebuffer(Card& card, uint32_t width, uint32_t height, uint32_t depth, uint32_t bpp, uint32_t stride, uint32_t handle) + :Framebuffer(card, width, height) +{ + uint32_t id; + int r = drmModeAddFB(card.fd(), width, height, depth, bpp, stride, handle, &id); + if (r) + throw invalid_argument("fob"); + m_id = id; +} + +ExtFramebuffer::~ExtFramebuffer() +{ + drmModeRmFB(card().fd(), id()); +} + +void ExtFramebuffer::print_short() const +{ + printf("Framebuffer %d\n", id()); +} + +} diff --git a/libkms++/extframebuffer.h b/libkms++/extframebuffer.h new file mode 100644 index 0000000..cc0863a --- /dev/null +++ b/libkms++/extframebuffer.h @@ -0,0 +1,21 @@ +#pragma once + +#include "framebuffer.h" + +namespace kms +{ + +class ExtFramebuffer : public Framebuffer +{ +public: + ExtFramebuffer(Card& card, uint32_t width, uint32_t height, uint32_t depth, uint32_t bpp, uint32_t stride, uint32_t handle); + virtual ~ExtFramebuffer(); + + void print_short() const; + +private: + uint32_t m_pitch; + uint32_t m_bpp; + uint32_t m_depth; +}; +} diff --git a/libkms++/kms++.h b/libkms++/kms++.h index c446a9e..c518a47 100644 --- a/libkms++/kms++.h +++ b/libkms++/kms++.h @@ -7,6 +7,7 @@ #include "encoder.h" #include "framebuffer.h" #include "dumbframebuffer.h" +#include "extframebuffer.h" #include "plane.h" #include "property.h" #include "pipeline.h"