diff options
| author | Vaxry <43317083+vaxerski@users.noreply.github.com> | 2024-12-22 17:12:09 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-12-22 17:12:09 +0100 |
| commit | e536b02248f370971716b744968776f6880528be (patch) | |
| tree | 5e5755b7894eb44f9259cfe0e1d97899148a8a60 /src/render/pass/FramebufferElement.cpp | |
| parent | 1cc1a46c2e154a27750b81307040d3bf7ff0f64f (diff) | |
Renderer: rewrite render scheduling (#8683)
This rewrites renderer scheduling. Occlusion is now unified in a new Pass type.
Diffstat (limited to 'src/render/pass/FramebufferElement.cpp')
| -rw-r--r-- | src/render/pass/FramebufferElement.cpp | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/render/pass/FramebufferElement.cpp b/src/render/pass/FramebufferElement.cpp new file mode 100644 index 00000000..268e5589 --- /dev/null +++ b/src/render/pass/FramebufferElement.cpp @@ -0,0 +1,48 @@ +#include "FramebufferElement.hpp" +#include "../OpenGL.hpp" + +CFramebufferElement::CFramebufferElement(const CFramebufferElement::SFramebufferElementData& data_) : data(data_) { + ; +} + +void CFramebufferElement::draw(const CRegion& damage) { + CFramebuffer* fb = nullptr; + + if (data.main) { + switch (data.framebufferID) { + case FB_MONITOR_RENDER_MAIN: fb = g_pHyprOpenGL->m_RenderData.mainFB; break; + case FB_MONITOR_RENDER_CURRENT: fb = g_pHyprOpenGL->m_RenderData.currentFB; break; + case FB_MONITOR_RENDER_OUT: fb = g_pHyprOpenGL->m_RenderData.outFB; break; + } + + if (!fb) { + Debug::log(ERR, "BUG THIS: CFramebufferElement::draw: main but null"); + return; + } + + } else { + switch (data.framebufferID) { + case FB_MONITOR_RENDER_EXTRA_OFFLOAD: fb = &g_pHyprOpenGL->m_RenderData.pCurrentMonData->offloadFB; break; + case FB_MONITOR_RENDER_EXTRA_MIRROR: fb = &g_pHyprOpenGL->m_RenderData.pCurrentMonData->mirrorFB; break; + case FB_MONITOR_RENDER_EXTRA_MIRROR_SWAP: fb = &g_pHyprOpenGL->m_RenderData.pCurrentMonData->mirrorSwapFB; break; + case FB_MONITOR_RENDER_EXTRA_OFF_MAIN: fb = &g_pHyprOpenGL->m_RenderData.pCurrentMonData->offMainFB; break; + case FB_MONITOR_RENDER_EXTRA_MONITOR_MIRROR: fb = &g_pHyprOpenGL->m_RenderData.pCurrentMonData->monitorMirrorFB; break; + case FB_MONITOR_RENDER_EXTRA_BLUR: fb = &g_pHyprOpenGL->m_RenderData.pCurrentMonData->blurFB; break; + } + + if (!fb) { + Debug::log(ERR, "BUG THIS: CFramebufferElement::draw: not main but null"); + return; + } + } + + fb->bind(); +} + +bool CFramebufferElement::needsLiveBlur() { + return false; +} + +bool CFramebufferElement::needsPrecomputeBlur() { + return false; +}
\ No newline at end of file |
