[PATCH v2 0/8] virtio-gpu: Support Venus Vulkan driver

Antonio Caggiano posted 8 patches 2 years, 9 months ago
Test checkpatch failed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20210728134634.2142156-1-antonio.caggiano@collabora.com
Maintainers: Gerd Hoffmann <kraxel@redhat.com>, "Michael S. Tsirkin" <mst@redhat.com>
There is a newer version of this series
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(-)
[PATCH v2 0/8] virtio-gpu: Support Venus Vulkan driver
Posted by Antonio Caggiano 2 years, 9 months ago
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