On Fri, Apr 21, 2023 at 9:02 AM Stefan Hajnoczi <stefanha@gmail.com> wrote:
On Thu, 20 Apr 2023 at 21:13, Gurchetan Singh
<gurchetansingh@chromium.org> wrote:
From: Gurchetan Singh <gurchetansingh@google.com>
Rationale:
- gfxstream [a] is good for the Android Emulator/upstream QEMU
alignment
- Wayland passhthrough [b] via the cross-domain context type is good
for Linux on Linux display virtualization
- rutabaga_gfx [c] sits on top of gfxstream, cross-domain and even
virglrenderer
- This series ports rutabaga_gfx to QEMU
What rutabaga_gfx and gfxstream? Can you explain where they sit in the
stack and how they build on or complement virtio-gpu and
virglrenderer?
rutabaga_gfx and gfxstream are both libraries that implement the
virtio-gpu protocol. There's a document available in the Gitlab issue
to see where they fit in the stack [a].
gfxstream grew out of the Android Emulator's need to virtualize
graphics for app developers. There's a short history of gfxstream in
patch 10. It complements virglrenderer in that it's a bit more
cross-platform and targets different use cases -- more detail here
[b]. The ultimate goal is ditch out-of-tree kernel drivers in the
Android Emulator and adopt virtio, and porting gfxstream to QEMU would
speed up that transition.
rutabaga_gfx is a much smaller Rust library that sits on top of
gfxstream and even virglrenderer, but does a few extra things. It
implements the cross-domain context type, which provides Wayland
passthrough. This helps virtio-gpu by providing more modern display
virtualization. For example, Microsoft for WSL2 also uses a similar
technique [c], but I believe it is not virtio-based nor open-source.