On 1/31/25 20:19, Dmitry Osipenko wrote:
> On 1/29/25 04:18, Gurchetan Singh wrote:
>> On Sun, Jan 26, 2025 at 12:14 PM Dmitry Osipenko <
>> dmitry.osipe...@collabora.com> wrote:
>>
>>> From: Alex Bennée <alex.ben...@linaro.org>
>>>
>>> This attempts to tidy up the VirtIO GPU documentation to make the list
>>> of requirements clearer. There are still a lot of moving parts and the
>>> distros have some catching up to do before this is all handled
>>> automatically.
>>>
>>> Signed-off-by: Alex Bennée <alex.ben...@linaro.org>
>>> Cc: Sergio Lopez Pascual <s...@redhat.com>
>>> Signed-off-by: Dmitry Osipenko <dmitry.osipe...@collabora.com>
>>> [dmitry.osipe...@collabora.com: Extended and corrected doc]
>>> ---
>>>  docs/system/devices/virtio-gpu.rst | 107 ++++++++++++++++++++++++++++-
>>>  1 file changed, 106 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/docs/system/devices/virtio-gpu.rst
>>> b/docs/system/devices/virtio-gpu.rst
>>> index ea3eb052df3c..b3db984ff2d3 100644
>>> --- a/docs/system/devices/virtio-gpu.rst
>>> +++ b/docs/system/devices/virtio-gpu.rst
>>> @@ -5,7 +5,9 @@ virtio-gpu
>>>  ==========
>>>
>>>  This document explains the setup and usage of the virtio-gpu device.
>>> -The virtio-gpu device paravirtualizes the GPU and display controller.
>>> +The virtio-gpu device provides a GPU and display controller
>>> +paravirtualized using VirtIO. It supports a number of different modes
>>> +from simple 2D displays to fully accelerated 3D graphics.
>>>
>>>  Linux kernel support
>>>  --------------------
>>> @@ -13,6 +15,24 @@ Linux kernel support
>>>  virtio-gpu requires a guest Linux kernel built with the
>>>  ``CONFIG_DRM_VIRTIO_GPU`` option.
>>>
>>> +Dependencies
>>> +............
>>> +
>>> +.. note::
>>> +  GPU virtualisation is still an evolving field. Depending on the mode
>>> +  you are running you may need to override distribution supplied
>>> +  libraries with more recent versions or enable build options.
>>> +
>>> +  Depending on the mode there are a number of requirements the host must
>>> +  meet to be able to be able to support guests. For 3D acceleration QEMU
>>> +  must be able to access the hosts GPU and for the best performance be
>>> +  able to reliably share GPU memory with the guest.
>>> +
>>> +  Virtio-gpu requires a guest Linux kernel built with the
>>> +  ``CONFIG_DRM_VIRTIO_GPU`` option. For 3D accelerations you
>>> +  will need support from guest Mesa configured for whichever encapsulation
>>> +  you need.
>>> +
>>>  QEMU virtio-gpu variants
>>>  ------------------------
>>>
>>> @@ -56,6 +76,16 @@ on typical modern Linux distributions.
>>>  .. _Mesa: https://www.mesa3d.org/
>>>  .. _SwiftShader: https://github.com/google/swiftshader
>>>
>>> +.. list-table:: Host Requirements
>>> +  :header-rows: 1
>>> +
>>> +  * - Mode
>>> +    - Kernel
>>> +    - Userspace
>>> +  * - virtio-gpu
>>> +    - Framebuffer enabled
>>> +    - GTK or SDL display
>>> +
>>>  virtio-gpu virglrenderer
>>>  ------------------------
>>>
>>> @@ -94,6 +124,61 @@ of virtio-gpu host memory window. This is typically
>>> between 256M and 8G.
>>>
>>>  .. _drm:
>>> https://gitlab.freedesktop.org/virgl/virglrenderer/-/tree/main/src/drm
>>>
>>> +.. list-table:: Host Requirements
>>> +  :header-rows: 1
>>> +
>>> +  * - Mode
>>> +    - Kernel
>>> +    - Userspace
>>> +  * - virtio-gpu-gl (OpenGL pass-through)
>>> +    - GPU enabled
>>> +    - libvirglrenderer (virgl support)
>>> +  * - virtio-gpu-gl (Vulkan pass-through)
>>> +    - Linux 6.13+
>>> +    - libvirglrenderer (>= 1.0.0, venus support)
>>> +  * - virtio-gpu-gl (vDRM native context/AMD)
>>> +    - Linux 6.13+
>>> +    - libvirglrenderer (>= 1.1.0, DRM renderer support)
>>> +  * - virtio-gpu-gl (vDRM native context/Freedreno)
>>> +    - Linux 6.4+
>>> +    - libvirglrenderer (>= 1.0.0, DRM renderer support)
>>> +  * - virtio-gpu-gl (vDRM native context/Intel i915)
>>> +    - Linux 6.13+
>>> +    - libvirglrenderer (`mr1384`_, DRM renderer support)
>>> +  * - virtio-gpu-gl (vDRM native context/Asahi)
>>> +    - Linux 6.13+
>>> +    - libvirglrenderer (`mr1274`_, DRM renderer support)
>>> +
>>> +.. _mr1384:
>>> https://gitlab.freedesktop.org/virgl/virglrenderer/-/merge_requests/1384
>>> +.. _mr1274:
>>> https://gitlab.freedesktop.org/virgl/virglrenderer/-/merge_requests/1274
>>> +
>>> +.. list-table:: Guest Requirements
>>> +  :header-rows: 1
>>> +
>>> +  * - Mode
>>> +    - Mesa Version
>>> +    - Mesa build flags
>>> +  * - virtio-gpu-gl (OpenGL pass-through)
>>> +    - 20.3.0+
>>> +    - -Dgallium-drivers=virgl
>>> +  * - virtio-gpu-gl (Vulkan pass-through)
>>> +    - 24.2.0+
>>> +    - -Dvulkan-drivers=virtio
>>> +  * - virtio-gpu-gl (vDRM native context/AMD)
>>> +    - 25.0.0+
>>> +    - -Dgallium-drivers=radeonsi -Dvulkan-drivers=amd -Damdgpu-virtio=true
>>> +  * - virtio-gpu-gl (vDRM native context/Freedreno)
>>> +    - 23.1.0+
>>> +    - -Dgallium-drivers=freedreno -Dvulkan-drivers=freedreno
>>> +  * - virtio-gpu-gl (vDRM native context/Intel i915)
>>> +    - `mr29870`_
>>> +    - -Dgallium-drivers=iris -Dvulkan-drivers=intel
>>> -Dintel-virtio-experimental=true
>>> +  * - virtio-gpu-gl (vDRM native context/Asahi)
>>> +    - 24.2.0+
>>> +    - -Dgallium-drivers=asahi -Dvulkan-drivers=asahi
>>> +
>>> +.. _mr29870:
>>> https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29870
>>> +
>>>  virtio-gpu rutabaga
>>>  -------------------
>>>
>>> @@ -133,3 +218,23 @@ Surfaceless is the default if ``wsi`` is not
>>> specified.
>>>  .. _Wayland display passthrough:
>>> https://www.youtube.com/watch?v=OZJiHMtIQ2M
>>>  .. _gfxstream-enabled rutabaga:
>>> https://crosvm.dev/book/appendix/rutabaga_gfx.html
>>>  .. _guest Wayland proxy: https://crosvm.dev/book/devices/wayland.html
>>> +
>>> +.. list-table:: Host Requirements
>>> +  :header-rows: 1
>>> +
>>> +  * - Mode
>>> +    - Kernel
>>> +    - Userspace
>>> +  * - virtio-gpu-gl (rutabaga/gfxstream)
>>> +    - GPU enabled
>>> +    - aemu/rutabaga_gfx_ffi or vhost-user client with support
>>> +
>>> +.. list-table:: Guest Requirements
>>> +  :header-rows: 1
>>> +
>>> +  * - Mode
>>> +    - Mesa Version
>>> +    - Mesa build flags
>>> +  * - virtio-gpu-gl (rutabaga/gfxstream)
>>>
>>
>> Shouldn't this be `virtio-gpu-rutabaga` instead of `virtio-gpu-gl`?  If
>> we're including WiP MRs, can we include Magma too??
>>
>> https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33190
> 
> Indeed, will correct it. And add the link. Thanks!

RE the link. virtio-gpu-rutabaga doesn't support gfxstream-magma capset,
hence I see no place to add the link. We are adding links to supported
features only here. For the magma link should be added once
virtio-gpu-rutabaga will support it, like it was done for venus and now
for nctx capsets.

-- 
Best regards,
Dmitry

Reply via email to