Mesa (main): etnaviv: factor out shader screen related init/deint

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Jul 1 20:10:17 UTC 2022


Module: Mesa
Branch: main
Commit: a427a7f5d4e1507b9fac7dc964c186c746925cf0
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a427a7f5d4e1507b9fac7dc964c186c746925cf0

Author: Christian Gmeiner <christian.gmeiner at gmail.com>
Date:   Tue Feb  1 14:45:42 2022 +0100

etnaviv: factor out shader screen related init/deint

This is a prep step for the next changes.

Signed-off-by: Christian Gmeiner <christian.gmeiner at gmail.com>
Reviewed-by: Philipp Zabel <p.zabel at pengutronix.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16172>

---

 src/gallium/drivers/etnaviv/etnaviv_screen.c |  6 ++----
 src/gallium/drivers/etnaviv/etnaviv_shader.c | 20 ++++++++++++++++++++
 src/gallium/drivers/etnaviv/etnaviv_shader.h |  6 ++++++
 3 files changed, 28 insertions(+), 4 deletions(-)

diff --git a/src/gallium/drivers/etnaviv/etnaviv_screen.c b/src/gallium/drivers/etnaviv/etnaviv_screen.c
index 175879ce918..67a55caefd0 100644
--- a/src/gallium/drivers/etnaviv/etnaviv_screen.c
+++ b/src/gallium/drivers/etnaviv/etnaviv_screen.c
@@ -88,8 +88,7 @@ etna_screen_destroy(struct pipe_screen *pscreen)
    if (screen->perfmon)
       etna_perfmon_del(screen->perfmon);
 
-   if (screen->compiler)
-      etna_compiler_destroy(screen->compiler);
+   etna_shader_screen_fini(pscreen);
 
    if (screen->pipe)
       etna_pipe_del(screen->pipe);
@@ -1147,8 +1146,7 @@ etna_screen_create(struct etna_device *dev, struct etna_gpu *gpu,
    pscreen->query_dmabuf_modifiers = etna_screen_query_dmabuf_modifiers;
    pscreen->is_dmabuf_modifier_supported = etna_screen_is_dmabuf_modifier_supported;
 
-   screen->compiler = etna_compiler_create(etna_screen_get_name(pscreen));
-   if (!screen->compiler)
+   if (!etna_shader_screen_init(pscreen))
       goto fail;
 
    etna_fence_screen_init(pscreen);
diff --git a/src/gallium/drivers/etnaviv/etnaviv_shader.c b/src/gallium/drivers/etnaviv/etnaviv_shader.c
index 8fabd89b53c..90bd22770e2 100644
--- a/src/gallium/drivers/etnaviv/etnaviv_shader.c
+++ b/src/gallium/drivers/etnaviv/etnaviv_shader.c
@@ -531,3 +531,23 @@ etna_shader_init(struct pipe_context *pctx)
    pctx->bind_vs_state = etna_bind_vs_state;
    pctx->delete_vs_state = etna_delete_shader_state;
 }
+
+bool
+etna_shader_screen_init(struct pipe_screen *pscreen)
+{
+   struct etna_screen *screen = etna_screen(pscreen);
+
+   screen->compiler = etna_compiler_create(pscreen->get_name(pscreen));
+   if (!screen->compiler)
+      return false;
+
+   return true;
+}
+
+void
+etna_shader_screen_fini(struct pipe_screen *pscreen)
+{
+   struct etna_screen *screen = etna_screen(pscreen);
+
+   etna_compiler_destroy(screen->compiler);
+}
diff --git a/src/gallium/drivers/etnaviv/etnaviv_shader.h b/src/gallium/drivers/etnaviv/etnaviv_shader.h
index 726761b0af4..f6cbfa85f7f 100644
--- a/src/gallium/drivers/etnaviv/etnaviv_shader.h
+++ b/src/gallium/drivers/etnaviv/etnaviv_shader.h
@@ -100,4 +100,10 @@ etna_shader_variant(struct etna_shader *shader, struct etna_shader_key key,
 void
 etna_shader_init(struct pipe_context *pctx);
 
+bool
+etna_shader_screen_init(struct pipe_screen *pscreen);
+
+void
+etna_shader_screen_fini(struct pipe_screen *pscreen);
+
 #endif



More information about the mesa-commit mailing list