更有效的VirtIO DRM驱动程序导入扫描缓冲区从其他设备
英特尔工程师今天发布的补丁允许从其他设备导入虚拟化空间中使用的VirtIO DRM驱动程序的扫描缓冲区。从其他设备/驱动程序导入扫描缓冲区可以通过避免多余的拷贝来更有效地使用。
今天发布了一组七个补丁,允许从其他带有VirtIO DRM的设备导入扫描缓冲区。对于QEMU DMA-BUF支持,这意味着在编码和流式传输到远程客户端用于其他用例之前,当扫描缓冲区在主机上本地显示并且已经在vRAM中时,可以避免复制扫描缓冲区。
英特尔工程师Vivek Kasireddy用这些VirtIO DRM补丁解释道:
“从其他设备导入虚拟GPU扫描缓冲区(通过prime)意味着我们将为分配给Guest VM的无头GPU添加一个磁头,或者为传递给Guest的常规GPU设备添加额外的磁头。在这些情况下,Guest合成器可以使用主GPU渲染扫描缓冲区,并让辅助GPU (virtio-gpu)导入扫描缓冲区以显示。
这样做的主要优点是,导入的扫描缓冲区既可以在主机上本地显示(例如,使用Qemu + GTK UI),也可以编码并流式传输到远程客户端(例如,Qemu + Spice UI)。请注意,由于Qemu使用udmabuf驱动程序,因此在显示扫描缓冲区时不会复制扫描缓冲区。这应该是可能的,即使它可能驻留在设备内存,如VRAM。
本系列可以支持的特定用例是在运行Weston或其他具有“附加设备”特性的来宾排字器时。/weston——drm-device=card1——additional-devices=card0)。
在上述场景中,card1可以是dGPU或iGPU, card0将是仅KMS模式下的virtual -gpu。然而,当card1是一个GPU VF,需要与主机上的GPU PF共享扫描缓冲区(以零复制的方式)时,这个补丁系列可能特别有用。或者,当扫描缓冲区需要在任何两个GPU设备之间共享时(假设其中一个分配给Guest VM),只要它们是P2P DMA兼容的,它也可以很有用。”
These VirtIO DRM driver patches are now undergoing review as another useful improvement to benefit the open-source virtualization stack.