| VirGL |
| ===== |
| |
| What is VirGL? |
| -------------- |
| |
| VirGL is a virtual 3D GPU for use inside QEMU virtual machines, that |
| allows the guest operating system to use the capabilities of the host GPU |
| to accelerate 3D rendering. The plan is to have a guest GPU that is fully |
| independent of the host GPU. |
| |
| What exactly does it entail? |
| ---------------------------- |
| |
| The project entails creating a virtual 3D capable graphics card for |
| virtual machines running inside QEMU. The design of this card is based |
| around the concepts of Gallium3D to make writing Mesa and (eventually) |
| Direct3D drivers for it easy. The card natively uses the Gallium TGSI |
| intermediate representation for its shaders. The implementation of |
| rendering for the card is done in the host system as part of QEMU and is |
| implemented purely on OpenGL so you can get accelerated rendering on any |
| sufficiently capable card/driver combination. |
| |
| The project also consists of a complete Linux guest stack, composed of a |
| Linux kernel KMS driver, X.org 2D DDX driver and Mesa 3D driver. |
| |
| Current status |
| -------------- |
| |
| * Many pieces are now upstreamed in various projects. |
| * Kernel Linux 4.2 contains the modesetting only drivers. Linux 4.4 |
| contains the 3D supported pieces. |
| * Mesa main contains the VirGL 3D driver. |
| * QEMU 2.4 contained the initial virtio-gpu with no acceleration |
| support. QEMU 2.5 contains 3D support only with the GTK3 frontend with |
| GL enabled. |
| * The virglrenderer library seems mostly API stable. |
| * Limited environment renderer (GLES2) |
| |
| So what can it do now? |
| ^^^^^^^^^^^^^^^^^^^^^^ |
| |
| Run a desktop and most 3D games I've thrown at it. |
| |
| Scope |
| ----- |
| |
| The project is currently investigating the desktop virtualization use case |
| only. This use case is where the viewer, host and guest are all running on |
| the same machine (i.e. workstation or laptop). Some areas are in scope for |
| future investigation but not being looked at, at this time. |
| |
| Future scope |
| ^^^^^^^^^^^^ |
| |
| * Remoting rendering using a codec solution. |
| * Windows guest, Direct3D drivers. |
| * Other architectures |
| |
| Out of scope |
| ^^^^^^^^^^^^ |
| |
| * Passing through GPUs or subsets of GPU capabilities. |
| |
| Repos |
| ----- |
| |
| All upstream parts are being developed upstream. |
| |
| virglrenderer: the GL renderer https://gitlab.freedesktop.org/virgl/virglrenderer |
| |
| Authors and Contributors |
| ------------------------ |
| |
| VirGL is a project undertaken by Dave Airlie at Red Hat. It builds on lots |
| of open source work in a number of projects, primarily the Gallium 3D code |
| from the Mesa project. |
| |
| Support or Contact |
| ------------------ |
| |
| mailing list: virglrenderer-devel@lists.freedesktop.org |
| |
| https://lists.freedesktop.org/mailman/listinfo/virglrenderer-devel |
| |
| IRC: `#virgil3d on OFTC <irc://irc.oftc.net/virgil3d>`__. |