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