1bf215546Sopenharmony_ciVirGL
2bf215546Sopenharmony_ci=====
3bf215546Sopenharmony_ci
4bf215546Sopenharmony_ciWhat is VirGL?
5bf215546Sopenharmony_ci--------------
6bf215546Sopenharmony_ci
7bf215546Sopenharmony_ciVirGL is a virtual 3D GPU for use inside QEMU virtual machines, that
8bf215546Sopenharmony_ciallows the guest operating system to use the capabilities of the host GPU
9bf215546Sopenharmony_cito accelerate 3D rendering. The plan is to have a guest GPU that is fully
10bf215546Sopenharmony_ciindependent of the host GPU.
11bf215546Sopenharmony_ci
12bf215546Sopenharmony_ciWhat exactly does it entail?
13bf215546Sopenharmony_ci----------------------------
14bf215546Sopenharmony_ci
15bf215546Sopenharmony_ciThe project entails creating a virtual 3D capable graphics card for
16bf215546Sopenharmony_civirtual machines running inside QEMU. The design of this card is based
17bf215546Sopenharmony_ciaround the concepts of Gallium3D to make writing Mesa and (eventually)
18bf215546Sopenharmony_ciDirect3D drivers for it easy. The card natively uses the Gallium TGSI
19bf215546Sopenharmony_ciintermediate representation for its shaders. The implementation of
20bf215546Sopenharmony_cirendering for the card is done in the host system as part of QEMU and is
21bf215546Sopenharmony_ciimplemented purely on OpenGL so you can get accelerated rendering on any
22bf215546Sopenharmony_cisufficiently capable card/driver combination.
23bf215546Sopenharmony_ci
24bf215546Sopenharmony_ciThe project also consists of a complete Linux guest stack, composed of a
25bf215546Sopenharmony_ciLinux kernel KMS driver, X.org 2D DDX driver and Mesa 3D driver.
26bf215546Sopenharmony_ci
27bf215546Sopenharmony_ciCurrent status
28bf215546Sopenharmony_ci--------------
29bf215546Sopenharmony_ci
30bf215546Sopenharmony_ci* Many pieces are now upstreamed in various projects.
31bf215546Sopenharmony_ci* Kernel Linux 4.2 contains the modesetting only drivers. Linux 4.4
32bf215546Sopenharmony_ci  contains the 3D supported pieces.
33bf215546Sopenharmony_ci* Mesa main contains the virgl 3D driver.
34bf215546Sopenharmony_ci* QEMU 2.4 contained the initial virtio-gpu with no acceleration
35bf215546Sopenharmony_ci  support. QEMU 2.5 contains 3D support only with the GTK3 frontend with
36bf215546Sopenharmony_ci  GL enabled.
37bf215546Sopenharmony_ci* The virglrenderer library seems mostly API stable.
38bf215546Sopenharmony_ci* Limited environment renderer (GLES2)
39bf215546Sopenharmony_ci
40bf215546Sopenharmony_ciSo what can it do now?
41bf215546Sopenharmony_ci^^^^^^^^^^^^^^^^^^^^^^
42bf215546Sopenharmony_ci
43bf215546Sopenharmony_ciRun a desktop and most 3D games I've thrown at it.
44bf215546Sopenharmony_ci
45bf215546Sopenharmony_ciScope
46bf215546Sopenharmony_ci-----
47bf215546Sopenharmony_ci
48bf215546Sopenharmony_ciThe project is currently investigating the desktop virtualisation use case
49bf215546Sopenharmony_cionly. This use case is where the viewer, host and guest are all running on
50bf215546Sopenharmony_cithe same machine (i.e. workstation or laptop). Some areas are in scope for
51bf215546Sopenharmony_cifuture investigation but not being looked at, at this time.
52bf215546Sopenharmony_ci
53bf215546Sopenharmony_ciFuture scope
54bf215546Sopenharmony_ci^^^^^^^^^^^^
55bf215546Sopenharmony_ci
56bf215546Sopenharmony_ci* Remoting rendering using a codec solution.
57bf215546Sopenharmony_ci* Windows guest, Direct3D drivers.
58bf215546Sopenharmony_ci* Other architectures
59bf215546Sopenharmony_ci
60bf215546Sopenharmony_ciOut of scope
61bf215546Sopenharmony_ci^^^^^^^^^^^^
62bf215546Sopenharmony_ci
63bf215546Sopenharmony_ci* Passing through GPUs or subsets of GPU capabilities.
64bf215546Sopenharmony_ci
65bf215546Sopenharmony_ciRepos
66bf215546Sopenharmony_ci-----
67bf215546Sopenharmony_ci
68bf215546Sopenharmony_ciAll upstream parts are being developed upstream.
69bf215546Sopenharmony_ci
70bf215546Sopenharmony_civirglrenderer: the GL renderer https://gitlab.freedesktop.org/virgl/virglrenderer
71bf215546Sopenharmony_ci
72bf215546Sopenharmony_ciAuthors and Contributors
73bf215546Sopenharmony_ci------------------------
74bf215546Sopenharmony_ci
75bf215546Sopenharmony_ciVirGL is a project undertaken by Dave Airlie at Red Hat. It builds on lots
76bf215546Sopenharmony_ciof open source work in a number of projects, primarily the Gallium 3D code
77bf215546Sopenharmony_cifrom the Mesa project.
78bf215546Sopenharmony_ci
79bf215546Sopenharmony_ciSupport or Contact
80bf215546Sopenharmony_ci------------------
81bf215546Sopenharmony_ci
82bf215546Sopenharmony_cimailing list: virglrenderer-devel@lists.freedesktop.org
83bf215546Sopenharmony_ci
84bf215546Sopenharmony_cihttps://lists.freedesktop.org/mailman/listinfo/virglrenderer-devel
85bf215546Sopenharmony_ci
86bf215546Sopenharmony_ciirc: `#virgil3d on OFTC <irc://irc.oftc.net/virgil3d>`__.
87