diff --git a/impeller/renderer/backend/vulkan/formats_vk.h b/impeller/renderer/backend/vulkan/formats_vk.h index da2aa616eea19..1791e9b8123b7 100644 --- a/impeller/renderer/backend/vulkan/formats_vk.h +++ b/impeller/renderer/backend/vulkan/formats_vk.h @@ -466,7 +466,7 @@ constexpr vk::AttachmentDescription CreateAttachmentDescription( switch (kind) { case AttachmentKind::kColor: vk_attachment.initialLayout = current_layout; - vk_attachment.finalLayout = vk::ImageLayout::eColorAttachmentOptimal; + vk_attachment.finalLayout = vk::ImageLayout::eGeneral; break; case AttachmentKind::kDepth: case AttachmentKind::kStencil: diff --git a/impeller/renderer/backend/vulkan/render_pass_vk.cc b/impeller/renderer/backend/vulkan/render_pass_vk.cc index 9806fb675a460..001ae3c1fea8a 100644 --- a/impeller/renderer/backend/vulkan/render_pass_vk.cc +++ b/impeller/renderer/backend/vulkan/render_pass_vk.cc @@ -49,6 +49,8 @@ static vk::AttachmentDescription CreateAttachmentDescription( if (desc.storage_mode == StorageMode::kDeviceTransient) { store_action = StoreAction::kDontCare; + } else if (resolve_texture) { + store_action = StoreAction::kStore; } const auto attachment_desc = @@ -93,9 +95,8 @@ SharedHandleVK RenderPassVK::CreateVKRenderPass( vk::ImageLayout::eColorAttachmentOptimal}; attachments.emplace_back(CreateAttachmentDescription(color)); if (color.resolve_texture) { - resolve_refs[bind_point] = - vk::AttachmentReference{static_cast(attachments.size()), - vk::ImageLayout::eColorAttachmentOptimal}; + resolve_refs[bind_point] = vk::AttachmentReference{ + static_cast(attachments.size()), vk::ImageLayout::eGeneral}; attachments.emplace_back(CreateAttachmentDescription(color, true)); } }