virgl.rst 2.74 KB
Newer Older
Erik Faye-Lund's avatar
Erik Faye-Lund committed
1
2
VirGL project
=============
Erik Faye-Lund's avatar
Erik Faye-Lund committed
3

Erik Faye-Lund's avatar
Erik Faye-Lund committed
4
5
What is VirGL?
--------------
Erik Faye-Lund's avatar
Erik Faye-Lund committed
6

Erik Faye-Lund's avatar
Erik Faye-Lund committed
7
VirGL is a research project to investigate the possibility of creating a
Erik Faye-Lund's avatar
Erik Faye-Lund committed
8
virtual 3D GPU for use inside QEMU virtual machines, that allows the
Erik Faye-Lund's avatar
Erik Faye-Lund committed
9
10
11
12
13
14
15
16
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
Erik Faye-Lund's avatar
Erik Faye-Lund committed
17
virtual machines running inside QEMU. The design of this card is based
Erik Faye-Lund's avatar
Erik Faye-Lund committed
18
19
20
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
Erik Faye-Lund's avatar
Erik Faye-Lund committed
21
rendering for the card is done in the host system as part of QEMU and is
Erik Faye-Lund's avatar
Erik Faye-Lund committed
22
implemented purely on OpenGL so you can get accelerated rendering on any
Erik Faye-Lund's avatar
Erik Faye-Lund committed
23
24
25
26
27
28
29
30
31
32
33
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.
Erik Faye-Lund's avatar
Erik Faye-Lund committed
34
* Mesa main contains the virgl 3D driver.
35
* QEMU 2.4 contained the initial virtio-gpu with no acceleration
Erik Faye-Lund's avatar
Erik Faye-Lund committed
36
37
  support. QEMU 2.5 contains 3D support only with the GTK3 frontend with
  GL enabled.
38
* The virglrenderer library seems mostly API stable.
Erik Faye-Lund's avatar
Erik Faye-Lund committed
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75

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 virtualisation 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
* Limited environment renderer (GLES2)

Out of scope
^^^^^^^^^^^^

* Passing through GPUs or subsets of GPU capabilities.

Repos
-----

All upstream parts are being developed upstream.

virglrenderer: the GL renderer http://cgit.freedesktop.org/virglrenderer git://git.freedesktop.org/git/virglrenderer

Authors and Contributors
------------------------

Erik Faye-Lund's avatar
Erik Faye-Lund committed
76
VirGL is a research project undertaken by Dave Airlie at Red Hat. It
Erik Faye-Lund's avatar
Erik Faye-Lund committed
77
78
79
80
81
82
83
84
85
86
87
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 freenode