retspen / webvirtcloud

WebVirtCloud is virtualization web interface for admins and users
1.69k stars 370 forks source link

Feature-Request: Add virgl support #81

Open fabiohsouza opened 8 years ago

fabiohsouza commented 8 years ago

I tryed change to

<video>
    <model type='virtio' heads='1'>
        <acceleration accel3d='yes'/>
    </model
</video>

but an error message saying the video model 'virtio' is not supported.

I am using for tests: Ubuntu 15.10 - Kernel 4.4-rc7 (host/guest) QEMU 2.5 Mesa 11.2 libvirt 1.2.21

https://www.redhat.com/archives/libvir-list/2015-November/msg01245.html

savichev commented 8 years ago

Latest in git - libvirtd version 1.3.1. I compile for deb for test

Worked! Debian 8 (host/guest) Kernel: 4.4.0-040400rc7-generic (host/guest) QEMU 2.5 (host) mesa-dev_11.2.0 (host/guest) libdrm-dev_2.4.66 (host/guest) libvirt-namespaces._1.3.1 (host)

Image of Yaktocat

savichev commented 8 years ago

https://cgit.freedesktop.org/spice/spice/commit/?id=782c7508e28fdeee786cdcebffd22f772d7f09ec

GL acceleration (virgl)

OpenGL acceleration is currently local only (it has to go through a Unix socket) and it needs guest support. It's currently limited to recent linux distributions (for example up to date Fedora 23 + updated mesa packages from https://copr.fedorainfracloud.org/coprs/kraxel/virgl/[copr:kraxel]).

Configuration

Using libvirt

You need to add a virtio-gpu video device to your virtual machine instead of QXL. [source,xml]

<video>
   <model type='virtio' heads='1'>
     <acceleration accel3d='yes'/>
   </model>
 </video>

Then you need to enable OpenGL on your SPICE graphics node: [source,xml]

<graphics type='spice' autoport='no'>
  <gl enable='yes'/>
</graphics>

You don't need any port/address as they won't be usable with GL.

Using QEMU

You need to add a virtio-gpu device on QEMU command line, as well as enable GL with SPICE. port/tls-port/addr arguments won't be used in this setup. You need to configure a Unix socket to connect to the VM display.

[source,sh] -device virtio-vga,virgl=on -spice gl=on,unix,addr=/run/user/1000/spice.sock

Connecting to the guest

Connecting to the guest when virgl is in use is slightly different than usual

If libvirt is being used

[source,sh] client$ virt-viewer -a $vmname

If a Unix socket has been set on QEMU command line

[source,sh] client$ remote-viewer spice+unix:///run/user/1000/spice.sock

zingmars commented 6 years ago

While enabling virgl works, it breaks the NoVNC viewer as it fails to properly connect to the socket for some reason (blank screen followed by "Unexpected close while ready").