[virglrenderer-devel] virtgpu 3d specs and custom guest driver

Elias Naur mail at eliasnaur.com
Sun Mar 1 15:46:31 UTC 2020


Hi,

Please point me in the direction of the best place to start implementing
a custom virtio-gpu 3d driver.

I'm exploring the viability of developing GUI programs
capable of running directly in a virtual machine that exports
a virtio-gpu device.

I have:

A prototype Go unikernel,

	https://git.sr.ht/~eliasnaur/microvisor

capable of running Go programs directly in Qemu.

A Go GUI library,

	https://gioui.org

designed to be very portable (only needs GPU and input device access).

And finally, the virtio-gpu 2d specification,

	https://docs.oasis-open.org/virtio/virtio/v1.1/cs01/virtio-v1.1-cs01.html#x1-3200007

I'm about to start implementing a 2d virtio-gpu driver in Go, which I
hope will demonstrate drawing from inside the virtual machine.

However, I failed to find even preliminary specification, list of
commands or anything else to help with developing a 3d driver. It
is my impression that the virtio-gpu 3d interface is similar to
OpenGL, so I don't expect a serious impedance mismatch between the
existing Gio OpenGL ES backend and virtio-gpu.

Do you know of information better than studying, say, the Linux
guest driver? And what is the purpose of virglrenderer,

	https://gitlab.freedesktop.org/virgl/virglrenderer

? From the name it sounds like it might help me develop and test the
driver by being a reference implementation of a virtgpu => OpenGL
translator.

Thank you,

-- elias


More information about the virglrenderer-devel mailing list