是否可以在Vulkan中的实例之间共享framebuffer对象?

时间:2017-11-03 04:39:37

标签: ubuntu framebuffer vulkan

我正在尝试编写一个简单的合成器。 Vulkan是否可以从其他实例访问数据对象(帧缓冲区,图像或缓冲区)。 (即将句柄传递给另一个过程)。我正在使用Ubuntu,我试图在不使用X,Wayland等的情况下这样做。谢谢

1 个答案:

答案 0 :(得分:3)

Vulkan对象被分组为严格的层次结构。用于创建对象的对象拥有它,一般来说,如果您销毁用于创建对象的对象,则无法再使用创建的对象。

例如,vkAllocateMemory需要VkDevice。该内存对象是从该逻辑设备分配的,并且绑定到该逻辑设备。如果该设备被销毁,您将无法再使用它。如果该设备不属于您的应用程序,则也不能使用它。

现在可以说,KHR_external_memory扩展(及其变体系列)允许Vulkan访问设备之间的内存。这甚至可以跨进程工作;您可以使用两个进程来创建使用具有相同VkPhysicalDeviceIDPropertiesKHR::deviceUUID的物理设备的本地逻辑设备。这些逻辑设备可以彼此共享内存,但这需要使用特殊的结构来指示它将被共享。

请注意,此共享仅适用于通过deviceUUID代表同一物理设备的逻辑设备。