etnaviv: factor out shader screen related init/deint

This is a prep step for the next changes.

Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16172>
This commit is contained in:
Christian Gmeiner 2022-02-01 14:45:42 +01:00 committed by Marge Bot
parent 4d7c11aa8d
commit a427a7f5d4
3 changed files with 28 additions and 4 deletions

View File

@ -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);

View File

@ -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);
}

View File

@ -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