@@ -928,46 +928,43 @@ MakeImpellerSurfaceFromBackingStore(
928928 }
929929
930930 const auto size = impeller::ISize (config.size .width , config.size .height );
931- const auto color_format = impeller::PixelFormat::kR8G8B8A8UNormInt ;
932-
933- impeller::TextureDescriptor msaa_tex_desc;
934- msaa_tex_desc.storage_mode = impeller::StorageMode::kDeviceTransient ;
935- msaa_tex_desc.type = impeller::TextureType::kTexture2DMultisample ;
936- msaa_tex_desc.sample_count = impeller::SampleCount::kCount4 ;
937- msaa_tex_desc.format = color_format;
938- msaa_tex_desc.size = size;
939- msaa_tex_desc.usage =
940- static_cast <uint64_t >(impeller::TextureUsage::kRenderTarget );
941-
942- auto msaa_tex =
943- aiks_context->GetContext ()->GetResourceAllocator ()->CreateTexture (
944- msaa_tex_desc);
945- if (!msaa_tex) {
946- FML_LOG (ERROR) << " Could not allocate MSAA color texture." ;
947- return std::nullopt ;
948- }
949- msaa_tex->SetLabel (" ImpellerBackingStoreColorMSAA" );
950931
951932 impeller::TextureDescriptor resolve_tex_desc;
952933 resolve_tex_desc.size = size;
953- resolve_tex_desc.format = color_format;
954- resolve_tex_desc.mip_count = 0 ;
955934 resolve_tex_desc.sample_count = impeller::SampleCount::kCount1 ;
956935 resolve_tex_desc.storage_mode = impeller::StorageMode::kDevicePrivate ;
957936 resolve_tex_desc.usage =
958937 static_cast <uint64_t >(impeller::TextureUsage::kRenderTarget ) |
959938 static_cast <uint64_t >(impeller::TextureUsage::kShaderRead );
939+
960940 auto resolve_tex = impeller::WrapTextureMTL (
961941 resolve_tex_desc, metal->texture .texture ,
962942 [callback = metal->texture .destruction_callback ,
963943 user_data = metal->texture .user_data ]() { callback (user_data); });
964-
965944 if (!resolve_tex) {
966945 FML_LOG (ERROR) << " Could not wrap embedder supplied Metal render texture." ;
967946 return std::nullopt ;
968947 }
969948 resolve_tex->SetLabel (" ImpellerBackingStoreResolve" );
970949
950+ impeller::TextureDescriptor msaa_tex_desc;
951+ msaa_tex_desc.storage_mode = impeller::StorageMode::kDeviceTransient ;
952+ msaa_tex_desc.type = impeller::TextureType::kTexture2DMultisample ;
953+ msaa_tex_desc.sample_count = impeller::SampleCount::kCount4 ;
954+ msaa_tex_desc.format = resolve_tex->GetTextureDescriptor ().format ;
955+ msaa_tex_desc.size = size;
956+ msaa_tex_desc.usage =
957+ static_cast <uint64_t >(impeller::TextureUsage::kRenderTarget );
958+
959+ auto msaa_tex =
960+ aiks_context->GetContext ()->GetResourceAllocator ()->CreateTexture (
961+ msaa_tex_desc);
962+ if (!msaa_tex) {
963+ FML_LOG (ERROR) << " Could not allocate MSAA color texture." ;
964+ return std::nullopt ;
965+ }
966+ msaa_tex->SetLabel (" ImpellerBackingStoreColorMSAA" );
967+
971968 impeller::ColorAttachment color0;
972969 color0.texture = msaa_tex;
973970 color0.clear_color = impeller::Color::DarkSlateGray ();
0 commit comments