@@ -139,20 +139,17 @@ sk_sp<DlImage> EmbedderExternalTextureVulkan::ResolveTextureImpeller(
139139 return nullptr ;
140140 }
141141
142- const auto & impeller_context =
142+ auto & impeller_context =
143143 impeller::ContextVK::Cast (*aiks_context->GetContext ());
144-
145144 auto texture_source = std::make_shared<EmbedderExternalTextureSourceVulkan>(
146145 aiks_context->GetContext (), texture_desc.get ());
147-
148146 auto texture = std::make_shared<impeller::TextureVK>(
149147 aiks_context->GetContext (), texture_source);
150148 // Transition the layout to shader read.
151149 {
152150 auto buffer = impeller_context.CreateCommandBuffer ();
153151 impeller::CommandBufferVK& buffer_vk =
154152 impeller::CommandBufferVK::Cast (*buffer);
155-
156153 impeller::BarrierVK barrier;
157154 barrier.cmd_buffer = buffer_vk.GetCommandBuffer ();
158155 barrier.src_access = impeller::vk::AccessFlagBits::eColorAttachmentWrite |
@@ -162,17 +159,16 @@ sk_sp<DlImage> EmbedderExternalTextureVulkan::ResolveTextureImpeller(
162159 impeller::vk::PipelineStageFlagBits::eTransfer;
163160 barrier.dst_access = impeller::vk::AccessFlagBits::eShaderRead;
164161 barrier.dst_stage = impeller::vk::PipelineStageFlagBits::eFragmentShader;
165-
166162 barrier.new_layout = impeller::vk::ImageLayout::eShaderReadOnlyOptimal;
167163
168- if (!texture_source ->SetLayout (barrier). ok ( )) {
164+ if (!texture ->SetLayout (barrier)) {
169165 return nullptr ;
170166 }
171167 if (!impeller_context.GetCommandQueue ()->Submit ({buffer}).ok ()) {
172168 return nullptr ;
173169 }
174170 }
175-
171+ impeller_context. DisposeThreadLocalCachedResources ();
176172 return impeller::DlImageImpeller::Make (texture);
177173}
178174
0 commit comments