From a427a7f5d4e1507b9fac7dc964c186c746925cf0 Mon Sep 17 00:00:00 2001 From: Christian Gmeiner Date: Tue, 1 Feb 2022 14:45:42 +0100 Subject: [PATCH] etnaviv: factor out shader screen related init/deint This is a prep step for the next changes. Signed-off-by: Christian Gmeiner Reviewed-by: Philipp Zabel Part-of: --- 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