From 64b2241a4ccf677e9d8fb61705c79e3be17cf488 Mon Sep 17 00:00:00 2001 From: Aaron Clarke Date: Wed, 19 Apr 2023 15:29:02 -0700 Subject: [PATCH 1/2] [impeller] fixed flake where blit wasn't tracking its texture --- impeller/renderer/backend/vulkan/blit_command_vk.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/impeller/renderer/backend/vulkan/blit_command_vk.cc b/impeller/renderer/backend/vulkan/blit_command_vk.cc index 863695074457e..6eda652d3e51c 100644 --- a/impeller/renderer/backend/vulkan/blit_command_vk.cc +++ b/impeller/renderer/backend/vulkan/blit_command_vk.cc @@ -190,6 +190,10 @@ bool BlitGenerateMipmapCommandVK::Encode(CommandEncoderVK& encoder) const { const auto& image = src.GetImage(); const auto& cmd = encoder.GetCommandBuffer(); + if (!encoder.Track(texture)) { + return false; + } + // Transition the base mip level to transfer-src layout so we can read from // it and transition the rest to dst-optimal since they are going to be // written to. From a5b8a184549d0806a5b44db61b08487dc4857d98 Mon Sep 17 00:00:00 2001 From: Aaron Clarke Date: Wed, 19 Apr 2023 16:29:29 -0700 Subject: [PATCH 2/2] added tracking to other blit commands --- impeller/renderer/backend/vulkan/blit_command_vk.cc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/impeller/renderer/backend/vulkan/blit_command_vk.cc b/impeller/renderer/backend/vulkan/blit_command_vk.cc index 6eda652d3e51c..1c45c3411deb9 100644 --- a/impeller/renderer/backend/vulkan/blit_command_vk.cc +++ b/impeller/renderer/backend/vulkan/blit_command_vk.cc @@ -29,6 +29,10 @@ bool BlitCopyTextureToTextureCommandVK::Encode( const auto& src = TextureVK::Cast(*source); const auto& dst = TextureVK::Cast(*destination); + if (!encoder.Track(source) || !encoder.Track(destination)) { + return false; + } + LayoutTransition src_tran; src_tran.cmd_buffer = cmd_buffer; src_tran.new_layout = vk::ImageLayout::eTransferSrcOptimal; @@ -96,6 +100,10 @@ bool BlitCopyTextureToBufferCommandVK::Encode(CommandEncoderVK& encoder) const { // cast source and destination to TextureVK const auto& src = TextureVK::Cast(*source); + if (!encoder.Track(source)) { + return false; + } + LayoutTransition transition; transition.cmd_buffer = cmd_buffer; transition.new_layout = vk::ImageLayout::eTransferSrcOptimal;