Server OpenGL acceleration
August 8, 2026 · View on GitHub
This page describes running OpenGL applications inside an Xpra session. It is separate from client-side OpenGL rendering, which improves how the native client paints forwarded windows.
OpenGL applications work by default, but a normal virtual framebuffer uses a software renderer. To use a physical GPU, choose one of the display setups below.
Choose a display setup
VirtualGL (recommended)
VirtualGL intercepts the application’s OpenGL
calls and runs them on a real GPU while Xpra forwards the resulting frames.
Start an application through vglrun:
xpra seamless --start="vglrun glxgears"
Or apply it to every child command so Xpra can identify the GPU process:
xpra seamless --exec-wrapper="vglrun" --start="glxgears"
WSL
On Windows, WSL can provide GPU-accelerated OpenGL through the WSLg display stack. Follow the platform-specific setup in the WSL guide.
Xwayland
An X11 application can use a GPU-backed Xwayland display. Start Xwayland on a display provided by a Wayland compositor, then let Xpra use that display:
Xwayland :20 &
xpra seamless :20 --use-display=yes --start=glxgears
The compositor and Xwayland configuration are platform-specific.
Use an existing display
If a GPU is already driving a desktop display, you can shadow it. This is convenient for accessing an existing session, but screen capture is usually less efficient than a dedicated seamless or desktop session.
Alternatively, let Xpra manage an existing X11 display directly:
xpra seamless :0 --use-display=yes --start=glxgears
The display is no longer available to the local desktop while Xpra owns it.
Caveats
Driver libraries
Proprietary drivers can conflict with software OpenGL. The GLVND dispatch layer allows multiple OpenGL implementations to coexist.
Session lifetime
VirtualGL and Xwayland may tie an application to a secondary X11 or Wayland context. If that server is restarted, the application can crash. VirtualGL 3's EGL backend avoids this limitation in supported configurations.
Mesa software rendering
Most non-NVIDIA systems use Mesa. Its software
renderer is usually llvmpipe; this is useful for compatibility but does not
provide hardware acceleration. Mesa’s environment variables
and driver documentation are useful when tuning or
diagnosing a setup.
See the VirtualGL documentation for installation, security, and application-specific workarounds.