summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPekka Paalanen <pekka.paalanen@collabora.com>2021-02-10 13:15:29 +0200
committerPekka Paalanen <pekka.paalanen@collabora.com>2021-02-25 14:36:46 +0200
commita8c4dfead5515f40e117fed518ff55572e0fc056 (patch)
treeb2558508b4d3de28c50b2e55432c0fa7f8beba94
parent40c26a0b7c3cb7aaafeafadeba2c50fda162417d (diff)
downloadweston-a8c4dfead5515f40e117fed518ff55572e0fc056.tar.gz
gl-renderer: log shader deletions too
This is useful for seeing that the shader program garbage collection works in a future patch. Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
-rw-r--r--libweston/renderer-gl/gl-renderer-internal.h2
-rw-r--r--libweston/renderer-gl/gl-renderer.c4
-rw-r--r--libweston/renderer-gl/gl-shaders.c26
3 files changed, 21 insertions, 11 deletions
diff --git a/libweston/renderer-gl/gl-renderer-internal.h b/libweston/renderer-gl/gl-renderer-internal.h
index 9c309f4e..9e032ac7 100644
--- a/libweston/renderer-gl/gl-renderer-internal.h
+++ b/libweston/renderer-gl/gl-renderer-internal.h
@@ -197,7 +197,7 @@ int
gl_renderer_setup_egl_extensions(struct weston_compositor *ec);
void
-gl_shader_destroy(struct gl_shader *shader);
+gl_shader_destroy(struct gl_renderer *gr, struct gl_shader *shader);
struct gl_shader *
gl_shader_create(struct gl_renderer *gr,
diff --git a/libweston/renderer-gl/gl-renderer.c b/libweston/renderer-gl/gl-renderer.c
index e4f9da37..ed5632d2 100644
--- a/libweston/renderer-gl/gl-renderer.c
+++ b/libweston/renderer-gl/gl-renderer.c
@@ -3513,10 +3513,10 @@ gl_renderer_destroy(struct weston_compositor *ec)
gr->unbind_display(gr->egl_display, ec->wl_display);
wl_list_for_each_safe(shader, next_shader, &gr->shader_list, link)
- gl_shader_destroy(shader);
+ gl_shader_destroy(gr, shader);
if (gr->fallback_shader)
- gl_shader_destroy(gr->fallback_shader);
+ gl_shader_destroy(gr, gr->fallback_shader);
/* Work around crash in egl_dri2.c's dri2_make_current() - when does this apply? */
eglMakeCurrent(gr->egl_display,
diff --git a/libweston/renderer-gl/gl-shaders.c b/libweston/renderer-gl/gl-shaders.c
index 079cded5..5f0c6e18 100644
--- a/libweston/renderer-gl/gl-shaders.c
+++ b/libweston/renderer-gl/gl-shaders.c
@@ -106,14 +106,6 @@ dump_program_with_line_numbers(int count, const char **sources)
free(dumpstr);
}
-void
-gl_shader_destroy(struct gl_shader *shader)
-{
- glDeleteProgram(shader->program);
- wl_list_remove(&shader->link);
- free(shader);
-}
-
static GLuint
compile_shader(GLenum type, int count, const char **sources)
{
@@ -257,6 +249,24 @@ error_vertex:
return NULL;
}
+void
+gl_shader_destroy(struct gl_renderer *gr, struct gl_shader *shader)
+{
+ char *desc;
+
+ if (weston_log_scope_is_enabled(gr->shader_scope)) {
+ desc = create_shader_description_string(&shader->key);
+ weston_log_scope_printf(gr->shader_scope,
+ "Deleting shader program for: %s\n",
+ desc);
+ free(desc);
+ }
+
+ glDeleteProgram(shader->program);
+ wl_list_remove(&shader->link);
+ free(shader);
+}
+
int
gl_shader_requirements_cmp(const struct gl_shader_requirements *a,
const struct gl_shader_requirements *b)