In theory, it should be possible to get access to the hardware acceleration in Xvnc. The reason we're not today is probably because it is linked up inside the DDX display driver (which we of course do not have).
Considering the new Gallium3D design, we should have a look and see if we can get access to the accelerated libGL from Xvnc. It would remove the need for stuff like VirtualGL.
(See also bug 1116)
Note that this solution will most likely not work with proprietary drivers.
*** Bug 2905 has been marked as a duplicate of this bug. ***
A lot has happened in this space. The Linux DRM system is splitting off the display handling from the 3D rendering, which could make it easier for us to use just the 3D part. We also have VirGL which might be possible to integrate in our stuff.
Deploying VirtualGL as a GLVND library might also be interesting as it could avoid having to wrap everything with vglrun. DRC has seen some obstacles with this though:
We should probably have a look at Xvfb as well. Xvnc was originally forked from it, but it has since gotten a lot of updates, among them support for DRI3 and glamor (i.e. GPU acceleration).
The glamor PR/MR for Xvfb:
It has been reverted again though:
citing this issue:
Kasm are also experimenting with 3D acceleration by enabling DRI3. I grabbed their changes and got them integrated in to standard TigerVNC here:
It seems to work for basic things like glxgears or glxspheres in a simple environment (e.g. Xfce). It fails when I start GNOME, though, where it fails to send the proper frame buffer data to the client.
But it seems like Kasm are working on that, though, as they are referring to some internal "gnome_blank" branch. Let's wait and see.
Another data point is that xrdp seems to have gotten glamor running. Some details here:
Neither the normal Xorg server nor Xwayland enable DRI3 directly. Instead, they get that support indirectly by enabling Glamor. That unfortunately means that they are poor reference implementations for us if we just want to enable DRI3.
Fortunately, there are others that are annoyed by this, so there are some other attempts to look at:
Upstream request for this: