ined, immediately useful =E2=80=94 gets you guest-driven resize, multi= -head, and a real EDID, all of which fbuf lacks. Also proves the udmabuf im= port path in isolation.
  • Generic vhost-user supp= ort in bhyve, demonstrated with something boring and valuable (virtiofsd, o= r vhost-user-blk).
  • vhost-user-gpu as a consumer= of (2), with the backend ported separately.
  • Each stage is independently mergeable and independe= ntly useful. A single 3000-line "graphics rework" patch series ag= ainst base has a much worse survival rate than three of those.

    Two things to clear early, while they'r= e cheap: the vhost-user protocol is documented in QEMU's docs/interop/vhost-user.rs= t (and the GPU sub-protocol in vhost-user-gpu.rst) under QEMU's licensing. A c= lean-room BSD implementation from a spec document is normally fine, but get= a read from core@ or the Foundation before you've written the code, no= t after. And confirm what licensing constraint actually applies to a po= rt in the tree versus a dependency =E2=80=94 the proposal ass= umes "no GPL in base" is the binding constraint, and it is, but t= he D-Bus objection specifically evaporates under the architecture change ab= ove, so don't design around a constraint you've already engineered = away.

    Short version: worth doing, the idea is so= und, and you're targeting a real gap. Reframe it as generic out-of-proc= ess device backends with GPU as the first user, take bhyve out of the pixel= path, and stage it. That version I'd expect to get a genuinely positiv= e reception

    Mario.


    =
    On Tue, Jul 28, 2026 at 1:48=E2=80=AFPM yi zishun <zishun.yi.dev@gmail.com> wrote:<= br>
    Hi, hackers

    As the title suggests, briefly speaking, the proposed option is a
    combination of "vhost-user-gpu" and another display backend (for<= br> example, a D-Bus backend).

    Currently, bhyve has two main approaches for graphics rendering and
    display. One is fbuf+VNC for 2D graphics, and the other is GPU
    passthrough mainly for 3D workloads.=C2=A0 Both approaches have some
    obvious drawbacks. For example, fbuf is non-accelerated and VNC does
    not support zero-copy transfer, which makes fbuf+vnc have poor
    performance. GPU pci passthrough has excellent performance. But due to
    its exclusive use, the host cannot access the GPU anymore, not to
    mention supporting multiple VMs.

    I understand why these two designs exist: because bhyve is part of the
    base system, we cannot introduce GPL-licensed software or heavy
    graphics dependencies. So it is better, if there is an option, with a
    minimal implementation without any heavy dependence, but still can use
    modern graphics stack render and display capabilities, and can support
    multiple VM.

    My motivation for this proposal stems from my GSoC work on udmabuf.
    With the underlying zero-copy buffer sharing mechanism now in place, I
    wanted to explore how bhyve could natively utilize it to overcome the
    current performance bottlenecks in graphics rendering and displaying.

    For rendering, we can implement a device which presents itself to the
    guest kernel as a virtio-gpu device, but does not process any commands
    internally, the main virtqueue is handled by a separate userspace
    program, vhost-user-gpu. And the device communicates to vhost-user-gpu
    using vhost-user protocol. One implementation of vhost-user-gpu is
    rust-vmm's vhost-device-gpu, which processes the data and sends the
    rendered image back to QEMU/bhyve for display, and currently supports
    gtk and dbus backend as far as I know. We can then implement a new
    display backend, dbus backend, to dispatch the display to another
    program, too. But we can't introduce dbus into the base system, so
    maybe we need another out-of-tree small proxy to do the conversion.

    In conclusion, this approach dispatches the actual rendering and
    display tasks to two separate programs. bhyve only presents itself as
    a virtio-gpu device from the guest's point of view, and communicates to the two programs internally. This option is minimal, modular, and
    secure, leveraging the modern graphics stack to support multiple VMs
    without requiring dedicated hardware support, while providing the
    benefits of virtio-gpu.

    I would appreciate any feedback and discussion on the feasibility of
    this approach. If the idea is considered worthwhile, I am willing to
    invest the time and effort required to implement it.

    Best,
    Zishun Yi



    --
    Ma= rio.
    --00000000000064e8190657aa9c5a--