Intel Working On A VirtIO DMA-BUF Driver For Multi-GPUs, Virtualized Environments
Intel engineers have been working on "Vdmabuf" as a VirtIO-based DMA-BUF driver for the Linux kernel. This driver is intended for their growing multi-GPU use-cases and also in cases of GPU virtualization where wanting to transfer contents seamlessly to the host for display purposes.
The virtual DMA-BUF driver has been flying under a "request for comments" flag and will certainly become important with Intel's growing discrete GPU efforts and GPU virtualization not only for desktop users but also in the servers/cloud for copy-free buffer sharing.
The patch cover letter sums up this new driver well:
The Virtual Dmabuf or Virtio based Dmabuf (Vdmabuf) driver can be used to "transfer" a page-backed dmabuf created in the Guest to the Host without making any copies. This is mostly accomplished by recreating the dmabuf on the Host using the PFNs and other meta-data shared by the guest. A use-case where this driver would be a good fit is a multi-GPU system (perhaps one discrete and one integrated) where one of the GPUs does not have access to the display/connectors/outputs. This could be an embedded system design decision or a restriction made at the firmware/BIOS level or perhaps the device is setup in UPT (Universal Passthrough) mode. When such a GPU is passthrough'd to a Guest OS, this driver can help in transferring the scanout buffer(s) (rendered using the native rendering stack) to the Host for the purpose of displaying them. Or, quite simply, this driver can be used to transfer a dmabuf created by an application running on the Guest to another application running on the Host.
For now this Vdmabuf driver is under review on dri-devel.