Hi Kotory,
Can you provide compilable source code to reproduce the issue?
From the images provided, there looks to be an offset issue.
Generally you can export allocated memory via vkAllocateMemory with extension VkExportMemoryAllocateInfo, specifying the export type as VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT
See: https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkExportMemoryAllocateInfoKHR.html
Then multiple instances can query for the file descriptor via vkGetMemoryFdKHR
See: https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkGetMemoryFdKHR.html
Using that File Descriptor the instances can then import the memory allocated previously by calling vkAllocateMemory with extension VkImportMemoryFdInfoKHR, which accepts the File Descriptor as a parameter
See: https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImportMemoryFdInfoKHR.html
You will have to add additional logic which looks at every VKImage creation called in your instances (A,B) to query your server (S) to synchronize allocation offsets, but via this extension it should be doable to bind multiple VKImages to the same memory location.
Thanks,
Owen