panvk: Don't leak vertex shader program descriptors

Vertex shaders can have up to three different program descriptors. Free
all of them in panvk_shader_destroy().

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Mary Guillemard <mary.guillemard@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31382>
This commit is contained in:
Boris Brezillon 2024-09-27 15:07:07 +02:00 committed by Marge Bot
parent bea7c59113
commit ce14681ebf

View file

@ -775,7 +775,13 @@ panvk_shader_destroy(struct vk_device *vk_dev, struct vk_shader *vk_shader,
panvk_pool_free_mem(&dev->mempools.exec, shader->rsd);
panvk_pool_free_mem(&dev->mempools.exec, shader->desc_info.others.map);
#else
panvk_pool_free_mem(&dev->mempools.exec, shader->spd);
if (shader->info.stage != MESA_SHADER_VERTEX) {
panvk_pool_free_mem(&dev->mempools.exec, shader->spd);
} else {
panvk_pool_free_mem(&dev->mempools.exec, shader->spds.var);
panvk_pool_free_mem(&dev->mempools.exec, shader->spds.pos_points);
panvk_pool_free_mem(&dev->mempools.exec, shader->spds.pos_triangles);
}
#endif
free((void *)shader->bin_ptr);