From ca7e21bb9400416d5dfee61c9d4748a34057dd0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Molinari?= Date: Wed, 16 Oct 2024 17:54:33 +0200 Subject: [PATCH] gl-renderer: Port wireframe code to new texture utilities MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Loïc Molinari --- libweston/renderer-gl/gl-renderer.c | 34 +++++++++++++---------------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/libweston/renderer-gl/gl-renderer.c b/libweston/renderer-gl/gl-renderer.c index dd0218fd6..770f3fcd5 100644 --- a/libweston/renderer-gl/gl-renderer.c +++ b/libweston/renderer-gl/gl-renderer.c @@ -1936,8 +1936,8 @@ update_wireframe_tex(struct gl_renderer *gr, uint8_t *buffer; if (gr->debug_mode != DEBUG_MODE_WIREFRAME) { - if (gr->wireframe_size) { - glDeleteTextures(1, &gr->wireframe_tex); + if (gr->wireframe_tex) { + gl_texture_fini(&gr->wireframe_tex); gr->wireframe_size = 0; } return; @@ -1951,27 +1951,23 @@ update_wireframe_tex(struct gl_renderer *gr, if (new_size <= gr->wireframe_size) return; + if (gr->wireframe_tex) + gl_texture_fini(&gr->wireframe_tex); + glActiveTexture(GL_TEXTURE0 + TEX_UNIT_WIREFRAME); - if (gr->wireframe_size == 0) { - glGenTextures(1, &gr->wireframe_tex); - glBindTexture(GL_TEXTURE_2D, gr->wireframe_tex); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, - GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, - GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, - GL_LINEAR_MIPMAP_LINEAR); - } else { - glBindTexture(GL_TEXTURE_2D, gr->wireframe_tex); - } + gl_texture_2d_init(gr, (int) log2(new_size) + 1, GL_R8, new_size, 1, + &gr->wireframe_tex); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, + GL_LINEAR_MIPMAP_LINEAR); gr->wireframe_size = new_size; - /* Generate mip chain with a wireframe thickness of 1.0. */ + /* Store mip chain with a wireframe thickness of 1.0. */ buffer = xzalloc(new_size); buffer[0] = 0xff; for (i = 0; new_size; i++, new_size >>= 1) - glTexImage2D(GL_TEXTURE_2D, i, GL_LUMINANCE, new_size, 1, 0, - GL_LUMINANCE, GL_UNSIGNED_BYTE, buffer); + gl_texture_2d_store(gr, i, 0, 0, new_size, 1, GL_RED, + GL_UNSIGNED_BYTE, buffer); free(buffer); glActiveTexture(GL_TEXTURE0); @@ -4376,8 +4372,8 @@ gl_renderer_destroy(struct weston_compositor *ec) if (gr->fallback_shader) gl_shader_destroy(gr, gr->fallback_shader); - if (gr->wireframe_size) - glDeleteTextures(1, &gr->wireframe_tex); + if (gr->wireframe_tex) + gl_texture_fini(&gr->wireframe_tex); /* Work around crash in egl_dri2.c's dri2_make_current() - when does this apply? */ eglMakeCurrent(gr->egl_display,