fuchsia: Create mutable-format sysmem external images.
If we create an image importing VMOs from BufferCollection, the formats
used in clients may be slightly different (e.g. R8G8B8A8_UNORM in
Flutter vs. R8G8B8A8_SRGB in Scenic), which caused graphical artifacts
on some platforms.
This change enforces all sysmem-backed images use flag
VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT to explicitly support multiple
formats.
Fixed: fxbug.dev/70232
Change-Id: I40702f8d695feeab2329e4a47fd55560cb94fa37
diff --git a/system/vulkan_enc/ResourceTracker.cpp b/system/vulkan_enc/ResourceTracker.cpp
index 407d9a4..26bc76f 100644
--- a/system/vulkan_enc/ResourceTracker.cpp
+++ b/system/vulkan_enc/ResourceTracker.cpp
@@ -4008,6 +4008,10 @@
}
isSysmemBackedMemory = true;
}
+
+ if (isSysmemBackedMemory) {
+ localCreateInfo.flags |= VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT;
+ }
#endif
VkResult res;