summaryrefslogtreecommitdiff
path: root/src/render/Renderbuffer.cpp
diff options
context:
space:
mode:
authorTom Englund <tomenglund26@gmail.com>2026-01-03 15:13:01 +0100
committerGitHub <noreply@github.com>2026-01-03 15:13:01 +0100
commitfab3370254691cdcd67f474405217ff1529e25a4 (patch)
tree852810b3c8c037c332f4e05ba83397471e763df6 /src/render/Renderbuffer.cpp
parentee67278038b5b6597172b2a3ee9d57f6ad0eafc7 (diff)
renderer: minor framebuffer and renderbuffer changes (#12831)
* framebuffer: dont release if format or size changes we dont have to release and recreate both the texture and framebuffer if size or format changes, we can just bind the texture and call glTexImage2D with the new format and size. * framebuffer: set the alloced viewport size if monitor size mismatch with the allocated m_size its going to set a mismatched viewport and cause rendering issues. and if they are mismatching there is a missing alloc call. * renderbuffer: cleanup unneded binds the renderbuffer is attached to the fbo and trying to rebind it in bind() is causing unnecessery state changes, just bind the fbo. add safeguard in the destructor, the constructor can return early on failure and leave m_rbo empty or m_image as EGL_NO_IMAGE_KHR.
Diffstat (limited to 'src/render/Renderbuffer.cpp')
-rw-r--r--src/render/Renderbuffer.cpp13
1 files changed, 5 insertions, 8 deletions
diff --git a/src/render/Renderbuffer.cpp b/src/render/Renderbuffer.cpp
index d7a77b74..bb638e20 100644
--- a/src/render/Renderbuffer.cpp
+++ b/src/render/Renderbuffer.cpp
@@ -16,9 +16,12 @@ CRenderbuffer::~CRenderbuffer() {
unbind();
m_framebuffer.release();
- glDeleteRenderbuffers(1, &m_rbo);
- g_pHyprOpenGL->m_proc.eglDestroyImageKHR(g_pHyprOpenGL->m_eglDisplay, m_image);
+ if (m_rbo)
+ glDeleteRenderbuffers(1, &m_rbo);
+
+ if (m_image != EGL_NO_IMAGE_KHR)
+ g_pHyprOpenGL->m_proc.eglDestroyImageKHR(g_pHyprOpenGL->m_eglDisplay, m_image);
}
CRenderbuffer::CRenderbuffer(SP<Aquamarine::IBuffer> buffer, uint32_t format) : m_hlBuffer(buffer), m_drmFormat(format) {
@@ -58,16 +61,10 @@ bool CRenderbuffer::good() {
}
void CRenderbuffer::bind() {
- glBindRenderbuffer(GL_RENDERBUFFER, m_rbo);
- bindFB();
-}
-
-void CRenderbuffer::bindFB() {
m_framebuffer.bind();
}
void CRenderbuffer::unbind() {
- glBindRenderbuffer(GL_RENDERBUFFER, 0);
m_framebuffer.unbind();
}