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 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.