radv: destroy the pipeline layout if creating a library failed
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Thu, 25 Aug 2022 12:33:35 +0000 (14:33 +0200)
committerMarge Bot <emma+marge@anholt.net>
Fri, 26 Aug 2022 13:08:29 +0000 (13:08 +0000)
It should be properly cleaned.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18252>

src/amd/vulkan/radv_pipeline.c

index a758101..282acd5 100644 (file)
@@ -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