On Tue, Nov 4, 2025 at 2:02 AM Pelloux-Prayer, Pierre-Eric
<[email protected]> wrote:
>
> [Public]
>
> Hi,
>
> The whole series is Acked-by: Pierre-Eric Pelloux-Prayer 
> <[email protected]>
>
> Thanks a lot Dmitry!
>
> Pierre-Eric
>
> ________________________________
> From: Dmitry Osipenko <[email protected]>
> Sent: Tuesday, October 21, 2025 1:39 AM
> To: Akihiko Odaki <[email protected]>; Huang, Ray <[email protected]>; 
> Marc-André Lureau <[email protected]>; Philippe Mathieu-Daudé 
> <[email protected]>; Gerd Hoffmann <[email protected]>; Alex Bennée 
> <[email protected]>; Pelloux-Prayer, Pierre-Eric 
> <[email protected]>; Michael S . Tsirkin <[email protected]>; 
> Paolo Bonzini <[email protected]>
> Cc: Gert Wollny <[email protected]>; [email protected] 
> <[email protected]>; Gurchetan Singh <[email protected]>; 
> Alyssa Ross <[email protected]>; Roger Pau Monné <[email protected]>; 
> Deucher, Alexander <[email protected]>; Stabellini, Stefano 
> <[email protected]>; Koenig, Christian <[email protected]>; 
> Ragiadakou, Xenia <[email protected]>; Huang, Honglei1 
> <[email protected]>; Zhang, Julia <[email protected]>; Chen, Jiqian 
> <[email protected]>; Rob Clark <[email protected]>; Yiwei Zhang 
> <[email protected]>; Sergio Lopez Pascual <[email protected]>
> Subject: [PATCH v14 00/10] Support virtio-gpu DRM native context
>
> This patchset adds DRM native context support to VirtIO-GPU on QEMU.
>
> Contarary to Virgl and Venus contexts that mediates high level GFX APIs,
> DRM native context [1] mediates lower level kernel driver UAPI, which
> reflects in a less CPU overhead and less/simpler code needed to support it.
> DRM context consists of a host and guest parts that have to be implemented
> for each GPU driver. On a guest side, DRM context presents a virtual GPU as
> a real/native host GPU device for GL/VK applications.
>
> [1] https://www.youtube.com/watch?v=9sFP_yddLLQ
>
> Today there are four DRM native context drivers existing in a wild:
>
>   - Freedreno (Qualcomm SoC GPUs), completely upstreamed
>   - AMDGPU, completely upstreamed
>   - Intel (i915), merge requests are opened
>   - Asahi (Apple SoC GPUs), partially merged upstream
>
> # How to try out DRM context:
>
> 1. DRM context uses host blobs and on host requires v6.13 or newer version
> of Linux kernel that contains necessary KVM fixes.
>
> 2. Use latest available Mesa (both guest and host) and libvirglrenderer
> versions. On guest, build Mesa with enabled virtio native context support.
>
> 3. On guest, use latest Linux kernel v6.14 or newer.
>
> Example QEMU cmdline that enables DRM context:
>
>   qemu-system-x86_64 -device 
> virtio-vga-gl,hostmem=4G,blob=on,drm_native_context=on \
>       -machine q35,accel=kvm -m 8G
>
> # Notes about known problems:
>
> 1. DRM contexts are mapping host blobs extensively and these mapping
> operations work slowly in QEMU. We will need to optimize hostmem
> unmapping that currently happens in a deffered RCU work, blocking
> GPU for a substantial time. WIP fixes available at [2][3].
>
> [2] 
> https://lore.kernel.org/qemu-devel/[email protected]/
> [3] 
> https://lore.kernel.org/qemu-devel/[email protected]/
>
> 2. Linux kernel virtio-gpu driver doesn't limit display refresh rate,
> causing poor performance. Fix availalble in drm-misc-next tree [4]
> and should land upstream with v6.19+ kernel.
>
> [4] 
> https://gitlab.freedesktop.org/drm/misc/kernel/-/commit/a036f5fceedb9fbd715565fef7b824a121503de7
>
> 3. Xorg on guest creates initial dumb buffer that is a vrend buffer, which
>    can't be re-used by native contexts. This may cause drawing artifacts.
>    Boot kernel with disabled fbdev using drm_client_lib.active="" kernel
>    cmdline parameter to work around the issue.
>
>    Wayland on guest isn't affected by this issue.
>
> Changelog:
>
> v14:- Rebased on top of recent QEMU staging tree.
>
>     - DRM native context in QEMU now requires virglrenderer v1.2.0+
>       containing fix for async-fencing not working after guest reboot.
>
>     - Updated doc patch with new Asahi nctx rquirements info. Asahi
>       support landed to virglrenderer v1.2.0.
>
> v13:- Updated Asahi nctx MR link in the doc patch. Old MR was closed
>       and new opened.
>
>     - Fixed compiler warning about unused variable when using older
>       virglrenderer version.
>
> v12:- Rebased on top of recent QEMU/staging and a fix from Yiwei Zhang:
>
>         
> https://lore.kernel.org/qemu-devel/[email protected]/
>
>     - Async-fence and native context features now require virglrenderer > 
> 1.1.1
>       that contains fix needed for resetting virtio-gpu-gl properly on QEMU
>       reboot:
>
>         
> https://gitlab.freedesktop.org/virgl/virglrenderer/-/commit/6f4681ff09cb17aa2d6715dbc6034eb3abe5711d
>
>     - Added r-b from Akihiko Odaki to the doc patch.
>
>     - Corrected resetting of async fences list that was done on scanout
>       reset in v11 instead of virtio-gpu reset.
>
> v11:- Added column for libvirglrenderer host requrements versions and
>       corrected Asahi kernel link. Suggested by Akihiko Odaki.
>
> v10:- Added links to Asahi and i915 virglrenderer MRs, link to Asahi host
>       kernel. Suggested by Akihiko Odaki.
>
>     - Renamed gfxstream guest requrements table's colum to match the host
>       requirements table. Suggested by Akihiko Odaki.
>
> v9: - Updated doc patch by addresing review comments from Akihiko Odaki.
>       Made kernel requirements section specific to guest kernel and
>       removed reference to host requirements. Removed examples of
>       external projects' build flags.
>
>     - Added guest kernel minimum versions to the guest requirements table.
>
> v8: - Addressed review comments from Akihiko Odaki on the doc patch.
>
>     - Added r-bs from Akihiko Odaki on the doc patches.
>
>     - Extended vrend doc with info about hostmem requirement for GL 4.6
>
> v7: - Added r-b from Alex Bennée to the async fencing patch.
>
>     - Updated virtio-gpu doc patch with addressed review comments
>       from Akihiko Odaki.
>
> v6: - Fixed compilation warning using older version of virglrenderer,
>       which wasn't fixed properly in v5.
>
>     - Added t-bs from Alex Bennée.
>
>     - Added patches to improve virgl/venus doc by adding links
>       to the Mesa doc as was suggested by Akihiko Odaki.
>
>     - Updated patch that documents guest/host requirements. Added
>       links to Asahi nctx and reworked the doc structure by adding
>       requirements to each context-type section instead of having
>       one big blob or requirements, which was objected by Akihiko Odaki.
>
> v5: - Added r-bs from Akihiko Odaki.
>
>     - Added acks from Michael Tsirkin.
>
>     - Fixed compilation warning using older version of virglrenderer that
>       was reported by Alex Bennée. Noticed that I need to keep old
>       virgl_write_fence() code around for the older virglrenderer in
>       "Support  asynchronous fencing" patch, so added it back and verified
>       that old virglrenderer works properly.
>
>     - Added new patch from Alex Bennée that adds more virtio-gpu
>       documentation with a couple corrections and additions to it from me.
>
>     - Rebased patches on top of latest staging tree.
>
> v4: - Improved SDL2/dmabuf patch by reusing existing Meson X11 config
>       option, better handling EGL error and extending comment telling
>       that it's safe to enable SDL2 EGL preference hint. As was suggested
>       by Akihiko Odaki.
>
>     - Replaced another QSLIST_FOREACH_SAFE with QSLIST_EMPTY+FIRST in
>       the async-fencing patch for more consistency of the code. As was
>       suggested by Akihiko Odaki.
>
>     - Added missing braces around if-statement that was spotted by
>       Alex Bennée.
>
>     - Renamed 'drm=on' option of virtio-gpu-gl device to
>       'drm_native_context=on' for more clarity as was suggested by
>       Alex Bennée. Haven't added added new context-type option that
>       was also proposed by Alex, might do it with a separate patch.
>       This context-type option will duplicate and depecate existing
>       options, but in a longer run likely will be worthwhile adding
>       it.
>
>     - Dropped Linux headers-update patch as headers has been updated
>       in the staging tree.
>
> v3: - Improved EGL presence-check code on X11 systems for the SDL2
>       hint that prefers EGL over GLX by using better ifdefs and checking
>       Xlib presence at a build time to avoid build failure if lib SDL2
>       and system are configured with a disabled X11 support. Also added
>       clarifying comment telling that X11 hint doesn't affect Wayland
>       systems. Suggested by Akihiko Odaki.
>
>     - Corrected strerror(err) that used negative error where it should
>       be positive and vice versa that was caught by Akihiko Odaki. Added
>       clarifying comment for the case where we get positive error code
>       from virglrenderer that differs from other virglrenderer API functions.
>
>     - Improved QSLIST usage by dropping mutex protecting the async fence
>       list and using atomic variant of QSLIST helpers instead. Switched away
>       from using FOREACH helper to improve readability of the code, showing
>       that we don't precess list in unoptimal way. Like was suggested by
>       Akihiko Odaki.
>
>     - Updated patchset base to Venus v18.
>
> v2: - Updated SDL2-dmabuf patch by making use of error_report() and
>       checking presense of X11+EGL in the system before making SDL2
>       to prefer EGL backend over GLX, suggested by Akihiko Odaki.
>
>     - Improved SDL2's dmabuf-presence check that wasn't done properly
>       in v1, where EGL was set up only after first console was fully
>       inited, and thus, SDL's display .has_dmabuf callback didn't work
>       for the first console. Now dmabuf support status is pre-checked
>       before console is registered.
>
>     - Updated commit description of the patch that fixes SDL2's context
>       switching logic with a more detailed explanation of the problem.
>       Suggested by Akihiko Odaki.
>
>     - Corrected rebase typo in the async-fencing patch and switched
>       async-fencing to use a sigle-linked list instead of the double,
>       as was suggested by Akihiko Odaki.
>
>     - Replaced "=true" with "=on" in the DRM native context documentation
>       example and made virtio_gpu_virgl_init() to fail with a error message
>       if DRM context can't be initialized instead of giving a warning
>       message, as was suggested by Akihiko Odaki.
>
>     - Added patchew's dependecy tag to the cover letter as was suggested by
>       Akihiko Odaki.
>
> Alex Bennée (1):
>   docs/system: virtio-gpu: Document host/guest requirements
>
> Dmitry Osipenko (8):
>   ui/sdl2: Restore original context after new context creation
>   virtio-gpu: Handle virgl fence creation errors
>   virtio-gpu: Support asynchronous fencing
>   virtio-gpu: Support DRM native context
>   ui/sdl2: Don't disable scanout when display is refreshed
>   ui/gtk: Don't disable scanout when display is refreshed
>   docs/system: virtio-gpu: Add link to Mesa VirGL doc
>   docs/system: virtio-gpu: Update Venus link
>
> Pierre-Eric Pelloux-Prayer (1):
>   ui/sdl2: Implement dpy dmabuf functions
>
>  docs/system/devices/virtio-gpu.rst | 116 +++++++++++++++++-
>  hw/display/virtio-gpu-gl.c         |   7 ++
>  hw/display/virtio-gpu-virgl.c      | 185 ++++++++++++++++++++++++++++-
>  hw/display/virtio-gpu.c            |  15 +++
>  include/hw/virtio/virtio-gpu.h     |  14 +++
>  include/ui/sdl2.h                  |   7 ++
>  meson.build                        |   8 +-
>  ui/gtk-egl.c                       |   1 -
>  ui/gtk-gl-area.c                   |   1 -
>  ui/sdl2-gl.c                       |  70 ++++++++++-
>  ui/sdl2.c                          |  42 +++++++
>  11 files changed, 449 insertions(+), 17 deletions(-)
>
> --
> 2.51.0
>

The whole series looks good to me, and Tested-by: Yiwei Zhang
<[email protected]>

Besides the reviewed and one with unresolved comment, below are
Acked-by: Yiwei Zhang <[email protected]>
- [PATCH v14 01/10] ui/sdl2: Restore original context after new context creation
- [PATCH v14 02/10] ui/sdl2: Implement dpy dmabuf functions
- [PATCH v14 06/10] ui/sdl2: Don't disable scanout when display is refreshed
- [PATCH v14 07/10] ui/gtk: Don't disable scanout when display is refreshed

Cheers!

Reply via email to