我正在尝试编写一个简单的合成器。 Vulkan是否可以从其他实例访问数据对象(帧缓冲区,图像或缓冲区)。 (即将句柄传递给另一个过程)。我正在使用Ubuntu,我试图在不使用X,Wayland等的情况下这样做。谢谢
答案 0 :(得分:3)
Vulkan对象被分组为严格的层次结构。用于创建对象的对象拥有它,一般来说,如果您销毁用于创建对象的对象,则无法再使用创建的对象。
例如,vkAllocateMemory
需要VkDevice
。该内存对象是从该逻辑设备分配的,并且绑定到该逻辑设备。如果该设备被销毁,您将无法再使用它。如果该设备不属于您的应用程序,则也不能使用它。
现在可以说,KHR_external_memory
扩展(及其变体系列)允许Vulkan访问设备之间的内存。这甚至可以跨进程工作;您可以使用两个进程来创建使用具有相同VkPhysicalDeviceIDPropertiesKHR::deviceUUID
的物理设备的本地逻辑设备。这些逻辑设备可以彼此共享内存,但这需要使用特殊的结构来指示它将被共享。
请注意,此共享仅适用于通过deviceUUID
代表同一物理设备的逻辑设备。