From ce14681ebf5b314a9b82a57c978f845472fad7fd Mon Sep 17 00:00:00 2001 From: Boris Brezillon Date: Fri, 27 Sep 2024 15:07:07 +0200 Subject: [PATCH] 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 Reviewed-by: Mary Guillemard Part-of: --- src/panfrost/vulkan/panvk_vX_shader.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/panfrost/vulkan/panvk_vX_shader.c b/src/panfrost/vulkan/panvk_vX_shader.c index fa610b76bf4..e373e4da5f4 100644 --- a/src/panfrost/vulkan/panvk_vX_shader.c +++ b/src/panfrost/vulkan/panvk_vX_shader.c @@ -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);