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!
