On Sat, Nov 8, 2025 at 4:06 AM Yiwei Zhang <[email protected]> wrote:
>
> 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]>

Just to clarify. My testing is done with venus + virgl to verify async
fence cb in QEMU is working as intended.

>
> 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