Hi all,
We are working to introduce VirtIO GPU and Passthrough GPU support on Xen.
https://lists.xenproject.org/archives/html/xen-devel/2023-03/msg00714.html
Currently, only virgl for VirtIO GPU and Passthrough GPU on PV dom0 can
works on Xen. These series introduce more graphic support for Xen on QEMU
part.
1) Add Venus with QEMU for VirtIO GPU on Xen
Antonio Caggiano made the venus with QEMU on KVM platform below, patch 1 to
11 are inherited from his original work to support the features of
context init, hostmem, resource uuid, and blob resources for Venus. We have
rebase the support to the latest version.
https://www.collabora.com/news-and-blog/blog/2021/11/26/venus-on-qemu-enabling-new-virtual-vulkan-driver/
But on Xen, it still needs to add "-mem-path" function in the QEMU. Because
it requires the memory-backend-memfd support. Please check patch 12 to 16.
With the Venus supported on Xen, we can enable Zink + Venus for OpenGL
rendering on guest domU as well.
2) Add Video hardware accelerate support for virgl
Please check patch 17, that adds get_drm_fd callback to let guest know
hardware accel codec is used.
3) Enable Passthrough GPU on Xen PVH dom0 in QEMU
Please check patch 18, that translate host irq to gsi for PCIe Passthrough
on PVH dom0.
Below are the screenshot of these functions, please take a look.
Venus: https://drive.google.com/file/d/1_lPq6DMwHu1JQv7LUUVRx31dBj0HJYcL/view?usp=share_link
Zink: https://drive.google.com/file/d/1FxLmKu6X7uJOxx1ZzwOm1yA6IL5WMGzd/view?usp=share_link
Passthrough GPU: https://drive.google.com/file/d/17onr5gvDK8KM_LniHTSQEI2hGJZlI09L/view?usp=share_link
Repositories
Kernel: https://git.kernel.org/pub/scm/linux/kernel/git/rui/linux.git/log/?h=upstream-fox-xen
Xen: https://gitlab.com/huangrui123/xen/-/commits/upstream-for-xen
QEMU: https://gitlab.com/huangrui123/qemu/-/commits/upstream-for-xen
Mesa: https://gitlab.freedesktop.org/rui/mesa/-/commits/upstream-for-xen
Virglrenderer: https://gitlab.freedesktop.org/rui/virglrenderer/-/commits/upstream-for-xen
Thanks,
Ray
Antonio Caggiano (8):
virtio-gpu: Handle resource blob commands
virtio-gpu: CONTEXT_INIT feature
virtio-gpu: Unrealize
virtio-gpu: Resource UUID
virtio-gpu: Support Venus capset
virtio-gpu: Initialize Venus
meson: Enable virglrenderer unstable APIs
virtio-gpu: Handle set scanout blob command
Chen Jiqian (1):
xen: translate irq of host pci device to gsi
Dr. David Alan Gilbert (1):
virtio: Add shared memory capability
Gerd Hoffmann (1):
virtio-gpu: hostmem
Honglei Huang (2):
virtio-gpu: fix hw-display-virtio-gpu.so undefined symbol
virtio_gpu_virgl_resource_unmap
virtio-gpu: Add video hardware accelerate support for virgl
Huang Rui (4):
softmmu: Fix the size to map cache with xen for host virtual address
hw/i386/xen/xen-hvm: Introduce xen_ram_block_check function
softmmu: Add ram block check to map the xen ram memory
softmmu: Enable qemu ram allocation with fd for Xen
Robert Beckett (1):
virtio-gpu: make blob scanout use dmabuf fd
hw/display/meson.build | 2 +-
hw/display/trace-events | 1 +
hw/display/virtio-gpu-base.c | 7 +-
hw/display/virtio-gpu-pci.c | 14 +
hw/display/virtio-gpu-virgl.c | 326 +++++++++++++++++++-
hw/display/virtio-gpu.c | 101 +++++-
hw/display/virtio-vga.c | 33 +-
hw/i386/xen/xen-hvm.c | 15 +
hw/virtio/virtio-pci.c | 18 ++
hw/xen/xen-host-pci-device.c | 3 +-
include/hw/virtio/virtio-gpu-bswap.h | 18 ++
include/hw/virtio/virtio-gpu.h | 28 ++
include/hw/virtio/virtio-pci.h | 4 +
include/hw/xen/xen.h | 1 +
include/standard-headers/linux/virtio_gpu.h | 2 +
meson.build | 11 +
softmmu/physmem.c | 12 +-
17 files changed, 559 insertions(+), 37 deletions(-)
--
2.25.1