This series of patches enables support for the Venus VirtIO-GPU Vulkan driver by adding some features required by the driver:
- CONTEXT_INIT - HOSTMEM - RESOURCE_UUID - BLOB_RESOURCES In addition to these features, Venus capset support was required together with the implementation for Virgl blob resource commands. With this in place, QEMU can take advantage of GPU acceleration to render a simple program such as vkcube [0] in headless mode [1]. Further work is needed to enable rendering with other kinds of surfaces. Tested with Chia-I Wu kernel venus-5 branch [2], Mesa v21.1 [3], and my WIP virglrenderer res-mapping branch [4]. Relevant QEMU command line parameters: -m 4G \ -object memory-backend-memfd,id=mem1,size=4G \ -machine memory-backend=mem1 \ -display gtk,gl=on,show-cursor=on \ -vga none \ -device virtio-vga-gl,blob=true,hostmem=1G \ v2: Split shared memory capability commit. [0] https://github.com/krh/vkcube [1] https://share.collabora.com/index.php/s/RM5igzZMH2o749W/preview [2] https://gitlab.freedesktop.org/olv/drm-misc-next/-/tree/venus-5 [3] https://gitlab.freedesktop.org/mesa/mesa/-/tree/21.1 [4] https://gitlab.freedesktop.org/Fahien/virglrenderer/-/tree/res-mapping Antonio Caggiano (6): virtio-gpu: CONTEXT_INIT feature virtio-gpu: Shared memory capability virtio-gpu: Resource UUID virtio-gpu: Support Venus capset virtio-gpu: Initialize Venus virtio-gpu: Handle resource blob commands Dr. David Alan Gilbert (1): virtio: Add shared memory capability Gerd Hoffmann (1): virtio-gpu: hostmem [wip] hw/display/trace-events | 1 + hw/display/virtio-gpu-base.c | 8 + hw/display/virtio-gpu-pci.c | 14 ++ hw/display/virtio-gpu-virgl.c | 184 +++++++++++++++++++- hw/display/virtio-gpu.c | 36 +++- hw/display/virtio-vga.c | 32 +++- hw/virtio/virtio-pci.c | 19 ++ hw/virtio/virtio-pci.h | 4 + include/hw/virtio/virtio-gpu-bswap.h | 20 ++- include/hw/virtio/virtio-gpu.h | 10 ++ include/standard-headers/linux/virtio_gpu.h | 16 +- meson.build | 1 + 12 files changed, 318 insertions(+), 27 deletions(-) -- 2.30.2