diff --git a/.pick_status.json b/.pick_status.json index 7bbcb54a3e2..cf3e26d3c4b 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -94,7 +94,7 @@ "description": "nvk: Unref shaders on pipeline free", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "d6a1e29ccdc12461495e01b7dc0b510a9bb84c3d", "notes": null diff --git a/src/nouveau/vulkan/nvk_pipeline.c b/src/nouveau/vulkan/nvk_pipeline.c index 2a467448553..6d16a3544b6 100644 --- a/src/nouveau/vulkan/nvk_pipeline.c +++ b/src/nouveau/vulkan/nvk_pipeline.c @@ -32,6 +32,11 @@ nvk_pipeline_free(struct nvk_device *dev, struct nvk_pipeline *pipeline, const VkAllocationCallbacks *pAllocator) { + for (uint32_t s = 0; s < ARRAY_SIZE(pipeline->shaders); s++) { + if (pipeline->shaders[s] != NULL) + vk_pipeline_cache_object_unref(&dev->vk, &pipeline->shaders[s]->base); + } + vk_object_free(&dev->vk, pAllocator, pipeline); }