From 0250925f07937e38a0b50a73b11aec82a982e3f4 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Thu, 25 Aug 2022 14:33:35 +0200 Subject: [PATCH] radv: destroy the pipeline layout if creating a library failed It should be properly cleaned. Signed-off-by: Samuel Pitoiset Reviewed-By: Mike Blumenkrantz Part-of: --- src/amd/vulkan/radv_pipeline.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/amd/vulkan/radv_pipeline.c b/src/amd/vulkan/radv_pipeline.c index a7581013081..282acd52003 100644 --- a/src/amd/vulkan/radv_pipeline.c +++ b/src/amd/vulkan/radv_pipeline.c @@ -6972,7 +6972,7 @@ radv_graphics_lib_pipeline_init(struct radv_graphics_lib_pipeline *pipeline, result = radv_pipeline_import_graphics_info(&pipeline->base, state, pipeline_layout, pCreateInfo, imported_flags); if (result != VK_SUCCESS) - return result; + goto fail; radv_pipeline_layout_hash(pipeline_layout); @@ -6997,11 +6997,15 @@ radv_graphics_lib_pipeline_init(struct radv_graphics_lib_pipeline *pipeline, pCreateInfo->pStages, pCreateInfo->stageCount, flags, NULL, creation_feedback, NULL, NULL, &pipeline->base.last_vgt_api_stage); - if (result != VK_SUCCESS) - return result; + if (result != VK_SUCCESS && result != VK_PIPELINE_COMPILE_REQUIRED) + goto fail; } return VK_SUCCESS; + +fail: + radv_pipeline_layout_finish(device, pipeline_layout); + return result; } static VkResult