From 91da8560eb5d410b912e2b6c573c55695200dd96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Molinari?= Date: Wed, 14 Aug 2024 21:04:08 +0200 Subject: [PATCH] gl-renderer: Leave FBOs bound in init utilities on success MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This avoids having to re-bind them in functions that reuse them immediately afterwards and does not affect any other parts of code. Signed-off-by: Loïc Molinari --- libweston/renderer-gl/gl-renderer.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/libweston/renderer-gl/gl-renderer.c b/libweston/renderer-gl/gl-renderer.c index 07e38ae77..3aea2fcdd 100644 --- a/libweston/renderer-gl/gl-renderer.c +++ b/libweston/renderer-gl/gl-renderer.c @@ -633,8 +633,8 @@ timeline_submit_render_sync(struct gl_renderer *gr, wl_list_insert(&go->timeline_render_point_list, &trp->link); } -/* Initialise a pair of framebuffer and renderbuffer objects. Use gl_fbo_fini() - * to finalise. +/* Initialise a pair of framebuffer and renderbuffer objects. The framebuffer + * object is left bound on success. Use gl_fbo_fini() to finalise. */ static bool gl_fbo_init(GLenum internal_format, @@ -654,7 +654,6 @@ gl_fbo_init(GLenum internal_format, glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, rb); status = glCheckFramebufferStatus(GL_FRAMEBUFFER); - glBindFramebuffer(GL_FRAMEBUFFER, 0); glBindRenderbuffer(GL_RENDERBUFFER, 0); if (status != GL_FRAMEBUFFER_COMPLETE) { weston_log("Error: FBO incomplete.\n"); @@ -684,7 +683,8 @@ gl_fbo_fini(GLuint *fb, } /* Initialise a pair of framebuffer and renderbuffer objects to render into an - * EGL image. Use gl_fbo_fini() to finalise. + * EGL image. The framebuffer object is left bound on success. Use gl_fbo_fini() + * to finalise. */ static bool gl_fbo_image_init(struct gl_renderer *gr, @@ -703,7 +703,6 @@ gl_fbo_image_init(struct gl_renderer *gr, glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, rb); status = glCheckFramebufferStatus(GL_FRAMEBUFFER); - glBindFramebuffer(GL_FRAMEBUFFER, 0); glBindRenderbuffer(GL_RENDERBUFFER, 0); if (status != GL_FRAMEBUFFER_COMPLETE) { weston_log("Error: FBO incomplete.\n"); @@ -721,7 +720,8 @@ gl_fbo_image_init(struct gl_renderer *gr, } /* Initialise a pair of framebuffer and texture objects to render into a - * texture. Use gl_fbo_texture_fini() to finalise. + * texture. The framebuffer object is left bound on success. Use + * gl_fbo_texture_fini() to finalise. */ static bool gl_fbo_texture_init(GLenum internal_format, @@ -745,7 +745,6 @@ gl_fbo_texture_init(GLenum internal_format, glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, tex, 0); status = glCheckFramebufferStatus(GL_FRAMEBUFFER); - glBindFramebuffer(GL_FRAMEBUFFER, 0); if (status != GL_FRAMEBUFFER_COMPLETE) { weston_log("Error: FBO incomplete.\n"); goto error; @@ -3965,8 +3964,6 @@ gl_renderer_surface_copy_content(struct weston_surface *surface, weston_log("Failed to init FBO\n"); goto fbo_init_error; } - glBindFramebuffer(GL_FRAMEBUFFER, fbo); - glBindRenderbuffer(GL_RENDERBUFFER, rb); glViewport(0, 0, cw, ch); glDisable(GL_BLEND);