zink: split out generic shader destruction for reuse
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22577>
This commit is contained in:

committed by
Marge Bot

parent
9f6eec03e0
commit
b2ecafd1ac
@@ -4967,6 +4967,23 @@ zink_shader_finalize(struct pipe_screen *pscreen, void *nirptr)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
zink_shader_free(struct zink_screen *screen, struct zink_shader *shader)
|
||||||
|
{
|
||||||
|
_mesa_set_destroy(shader->programs, NULL);
|
||||||
|
util_queue_fence_wait(&shader->precompile.fence);
|
||||||
|
util_queue_fence_destroy(&shader->precompile.fence);
|
||||||
|
zink_descriptor_shader_deinit(screen, shader);
|
||||||
|
if (shader->precompile.mod)
|
||||||
|
VKSCR(DestroyShaderModule)(screen->dev, shader->precompile.mod, NULL);
|
||||||
|
if (shader->precompile.gpl)
|
||||||
|
VKSCR(DestroyPipeline)(screen->dev, shader->precompile.gpl, NULL);
|
||||||
|
blob_finish(&shader->blob);
|
||||||
|
ralloc_free(shader->spirv);
|
||||||
|
free(shader->precompile.bindings);
|
||||||
|
ralloc_free(shader);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
zink_gfx_shader_free(struct zink_screen *screen, struct zink_shader *shader)
|
zink_gfx_shader_free(struct zink_screen *screen, struct zink_shader *shader)
|
||||||
{
|
{
|
||||||
@@ -5047,18 +5064,7 @@ zink_gfx_shader_free(struct zink_screen *screen, struct zink_shader *shader)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_mesa_set_destroy(shader->programs, NULL);
|
zink_shader_free(screen, shader);
|
||||||
util_queue_fence_wait(&shader->precompile.fence);
|
|
||||||
util_queue_fence_destroy(&shader->precompile.fence);
|
|
||||||
zink_descriptor_shader_deinit(screen, shader);
|
|
||||||
if (shader->precompile.mod)
|
|
||||||
VKSCR(DestroyShaderModule)(screen->dev, shader->precompile.mod, NULL);
|
|
||||||
if (shader->precompile.gpl)
|
|
||||||
VKSCR(DestroyPipeline)(screen->dev, shader->precompile.gpl, NULL);
|
|
||||||
blob_finish(&shader->blob);
|
|
||||||
ralloc_free(shader->spirv);
|
|
||||||
free(shader->precompile.bindings);
|
|
||||||
ralloc_free(shader);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -79,6 +79,8 @@ zink_shader_create(struct zink_screen *screen, struct nir_shader *nir,
|
|||||||
char *
|
char *
|
||||||
zink_shader_finalize(struct pipe_screen *pscreen, void *nirptr);
|
zink_shader_finalize(struct pipe_screen *pscreen, void *nirptr);
|
||||||
|
|
||||||
|
void
|
||||||
|
zink_shader_free(struct zink_screen *screen, struct zink_shader *shader);
|
||||||
void
|
void
|
||||||
zink_gfx_shader_free(struct zink_screen *screen, struct zink_shader *shader);
|
zink_gfx_shader_free(struct zink_screen *screen, struct zink_shader *shader);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user