diff --git a/src/imagination/vulkan/pvr_hw_pass.c b/src/imagination/vulkan/pvr_hw_pass.c index f3e9be87ca5..47c549429a1 100644 --- a/src/imagination/vulkan/pvr_hw_pass.c +++ b/src/imagination/vulkan/pvr_hw_pass.c @@ -2495,9 +2495,8 @@ VkResult pvr_create_renderpass_hwsetup( __typeof__(*subpass_map), pass->subpass_count); - if (!vk_multialloc_zalloc(&ma, alloc, VK_SYSTEM_ALLOCATION_SCOPE_OBJECT)) { + if (!vk_multialloc_zalloc(&ma, alloc, VK_SYSTEM_ALLOCATION_SCOPE_OBJECT)) return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY); - } hw_setup->surface_allocate = surface_allocate; hw_setup->subpass_map = subpass_map; @@ -2516,6 +2515,7 @@ VkResult pvr_create_renderpass_hwsetup( if (!vk_multialloc_zalloc(&ma_ctx, alloc, VK_SYSTEM_ALLOCATION_SCOPE_COMMAND)) { + vk_free(alloc, hw_setup); return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY); } diff --git a/src/imagination/vulkan/pvr_pass.c b/src/imagination/vulkan/pvr_pass.c index ddcbbabc2bc..fd731be7c4b 100644 --- a/src/imagination/vulkan/pvr_pass.c +++ b/src/imagination/vulkan/pvr_pass.c @@ -674,16 +674,16 @@ VkResult pvr_CreateRenderPass2(VkDevice _device, pass, hw_render, &load_op); + if (result != VK_SUCCESS) + goto err_load_op_destroy; + + result = + pvr_generate_load_op_shader(device, pAllocator, hw_render, load_op); if (result != VK_SUCCESS) { vk_free2(&device->vk.alloc, pAllocator, load_op); goto err_load_op_destroy; } - result = - pvr_generate_load_op_shader(device, pAllocator, hw_render, load_op); - if (result != VK_SUCCESS) - goto err_load_op_destroy; - hw_render->load_op = load_op; }