VirtIO-GPU 3D OpenGL Hardware Acceleration for VMs

Andrew Randrianasulu randrianasulu at gmail.com
Wed Feb 17 07:10:32 UTC 2016


Hello!

I tried to test virtGL on nouveau, and found few surprizes.

First, new quemu (commit commit a5af12871fd4601c44f08d9e49131e9ca13ef102, Merge 
remote-tracking branch 'remotes/sstabellini/tags/xen-2016-02-12' into staging) 
failed to link wih gcc 4.9 if I specified -march=i486, switching to -march=i686 
fixed this. I found this solution while search for specific error message: 
http://stackoverflow.com/questions/23065501/stdatomicunsiged-long-long-undefined-reference-to-atomic-fetch-add-8
error message in my case was "undefined reference to `__atomic_load_8' "

Second, I found my Xserver (1.12.4 patched with some patches from later 
Xservers, excluding most of glx stuff) was too old, for host side. Qemu just 
crashed at the moment guest loaded drm driver. Upgrading to 1.18.1 fixed this, 
but I assume anything from 1.13.0 should be minimally enough ? (due to 
GLX_ARB_create_context, GLX_ARB_create_context_profile stuff)

Next, I found even 1.18.1 by default builds without glamor support. There was 
configure swicth --enable-glamor, but it was, unlike dri3 stuff, off by 
default. Switching it on allowed guest to finally have 3d as in working 
glxinfo. glxgears still segfaulted. making /dev/shm user (ok, world-) writable 
fixed this. Found by strace-ing glxgears, and  launching glxgears from root, 
where  it worked. DRI3 stuff on host, where I also tried it, segfaulted 
similary, but I can live with DRI2/EXA here, especially because nouveau still 
have issues with glamor/modesetting, on both nv50, and nvc0, as I was told on 
#nouveau.

I also tried few MESA debug environment variables in attttempt to get rid of 
artefacts inside VM, but  sadly they remained there. 


ESA_EXTENSION_MAX_YEAR=2001 ./x86_64-softmmu/qemu-system-x86_64 -cdrom /home/admin/slaxdvd-4.5.0-x64-test.iso -m 
512 -display sdl,gl=on -enable-kvm -soundhw es1370 -usb -vga virtio -usbdevice 
mouse -cpu host 

for example not resulted in any improvements.

MESA_GL_VERSION_OVERRIDE=3.0 and any version below (on host) resulted, like with 
old X server, in crashed qemu:

gl_version 0 - compat profile
WARNING: running without ARB robustness in place may crash
qemu-system-x86_64: Couldn't find current GLX or EGL context.

(note gl_version 0 thing - libepoxy bug? I use 1.3.1)

So, I assume right now host 3D driver must support OpenGL 3.1 or up?

Image links:
http://ibin.co/2XC09wl34cuT
http://ibin.co/2XCIj5vhR9l8

#nouveau log from 16-02-2016: 
https://people.freedesktop.org/~cbrill/dri-log/index.php?channel=nouveau&date=2016-02-16

I hope it will help someone!


More information about the dri-devel mailing list