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