Hello, This patch series is a prototype that attemps to solve the display performance problem inherent to the virtio-gpu protocol when VIRGL support isn't available on the host side. The first patch is the latest version (I found) of the virtio-gpu protocol specification patch from Gerd Hoffmann. I have included it verbatim. The second patch is an extension to the virtio-gpu protocol to allow memory for buffers to be allocated by the host and mapped to the guest, in an attempt to remove a full-frame memcpy() for each page flip. I haven't finished implementing this specification in QEMU and the Linux kernel virtio-gpu driver yet, so it remains untested for now. One problem remains to be solved, as the specification doesn't document how the host-allocated backing storage can be mapped to the guest. I plan to experiment with KVM_SET_USER_MEMORY_REGION, but adding random memory regions to guests at runtime isn't a good idea as the guest memory space is mostly managed by the guest. One possible solution would be to declare a large device memory range (through a separate PCI BAR or mmio memory range) that would be initially unpopulated, and map the buffers in that range. Whether that option is viable remains to be analyzed, but feedback would already be welcome. Gerd Hoffmann (1): Add virtio gpu device specification. Laurent Pinchart (1): virtio-gpu: Support host-allocated backing storage content.tex | 2 + virtio-gpu.tex | 529 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 531 insertions(+) create mode 100644 virtio-gpu.tex -- Regards, Laurent Pinchart