|Version 23 (modified by 4 weeks ago) (diff),|
You can run OpenGL applications in an xpra session in a number of ways:
- by default the wiki/Xdummy display server supports software opengl - but proprietary graphics drivers may interfere with this (glvnd should eventually solve this issue), and it will not use any GPU acceleration
- by using VirtualGL, which delegates OpenGL acceleration to a real GPU - see below
- by running the xpra session directly on a "real" X11 server using a standard accelerated display driver - this is hard to setup and undocumented: you need to use the
xvfbswitch to start an accelerated X11 server (modified xorg.conf), or use the
--use-displayswitch to bind to an existing one
- by shadowing an existing accelerated X11 server (sub-optimal, slow)
- Using Xwayland and a wayland compositor. In X11 you can use weston as compositor. Start weston, open terminal in it, and start xpra server with xvfb switch to use Xwayland:
xpra start :20 --xvfb "/usr/bin/Xwayland -rootless -noreset"
This is not related at all to the OpenGL client rendering: you can connect with any client you want, accelerated or not.
Usually, you can just
vglrun your application and things will "just work".
That is the case for simple applications like
You can also ensure that all your client applications are launched using vglrun by using the
exec-wrapper option in your configuration file.
Note: applications launched in this way are tied to two displays: the one they run on which started by xpra and the one that provides the opengl acceleration, if either one of those displays is stopped then the application will crash.
Other applications may require more complicated workarounds, see the extensive VirtualGL documentation for details, in particular 12: Using VirtualGL with setuid/setgid Executables.
Caveat: for some unknown reason, you may need to use
/etc/ld.so.preload instead of
LD_PRELOAD to make some suid applications work through xpra. (#898)
$ mv /etc/ld.so.preload /etc/ld.so.preload.saved >& null $ echo "/usr/lib64/VirtualGL/libdlfaker.so /usr/lib64/VirtualGL/libgefaker.so /usr/lib64/VirtualGL/librrfaker.so" > /etc/ld.so.preload $ vglrun yourapp $ rm /etc/ld.so.preload $ mv /etc/ld.so.preload.saved /etc/ld.so.preload >& null
If you application is suid, you may also need to chmod it.
Some performance measurements can be found here: wiki/Usage/OpenGL/Performance.