aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/render/Renderbuffer.hpp
blob: ff06bd5ae864595eaf969c9bce8247f8cae5fddd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#pragma once

#include "../helpers/signal/Signal.hpp"
#include "../helpers/memory/Memory.hpp"
#include "Framebuffer.hpp"
#include <aquamarine/buffer/Buffer.hpp>

class CMonitor;

class CRenderbuffer {
  public:
    CRenderbuffer(SP<Aquamarine::IBuffer> buffer, uint32_t format);
    ~CRenderbuffer();

    bool                    good();
    void                    bind();
    void                    bindFB();
    void                    unbind();
    CFramebuffer*           getFB();
    uint32_t                getFormat();

    WP<Aquamarine::IBuffer> m_pHLBuffer;

  private:
    void*        m_iImage = nullptr;
    GLuint       m_iRBO   = 0;
    CFramebuffer m_sFramebuffer;
    uint32_t     m_uDrmFormat = 0;
    bool         m_bGood      = false;

    struct {
        CHyprSignalListener destroyBuffer;
    } listeners;
};