Whiteboard Web |
Linux »
X-windows GLX for remote OpenGL accelerationRunning X-windows remote with OpenGL hardware acceleration
Normally running the X-server and client on the same machine, the client may use Direct Rendering Infrastructure (DRI) for best performance. This is however not possible running across a network. However, the Xorg X-server in most GNU/Linux distributions disables indirect rendering.
To enable it, you must start the X-server with the E.g. using lightdm; xserver-command=X +iglx For best performance, if the network is trusted, you can also activate native X over the network (i.e. not tunneling X11 over SSH, but using TCP); xserver-command=X +iglx -listen Now you can start your X11 clients (assuming proper authentication, see
Unfortunately, Time to mock around with your Section "Device" Identifier "Device0" Driver "nvidia" VendorName "NVIDIA Corporation" BoardName "GeForce GTX 1050 Ti" Option "AllowUnofficialGLXProtocol" "true" EndSection Notice the last option. This does the trick. Now more advanced OpenGL program such as Blender will work.
Don't care about what "OpenGL version" is supported, but "which GLX extensions" are. The
As a developer, though, you want to keep in mind that if you stick to OpenGL 1.3 then GLX will work for just about every GLX implementation, including Mesa. And no, I'm not badmouthing Mesa, I'm sure it implements the standard by the book - it is the book I'm badmouthing. :-) But please don't code for higher than OpenGL 1.3 if you don't need. But if you need for performance - go for it! You won't play Kerbal Space Program or the latest Steam title over the network anyway. One caveat in the Nvidia implementation. "Sync to VBlank" (i.e. syncing the frame update with the display
update frequency) seems buggy. Using this configuration and stuff such as
And no, there's no xorg.conf-option for this. Also note that you must install the nvidia drivers on both the X-server as well as on the client machine, even if the client machine doesn't even got a GPU. This because you'll need the Nvidia GLX implementation both server side as well as client side. The To avoid warnings about indirect rendering used, you may set an environment variable client side;
Two other client side environment variables are documented by Nvidia as well; __GL_ALLOW_UNOFFICIAL_PROTOCOL=1 __GL_SYNC_TO_VBLANK=0 Unfortunately these variables seems to do nothing. The first seems not to be needed, the second does nothing. At least not in the driver versions I've tested. Now you probably got several GLX implementations installed on your machine (mesa and nvidia). You can switch between them by using the Why bother with this?
References
Feedback? Questions? Suggestions?
/By Mikael Q Kuisma |
|
Page last modified 2020-03-30 12:03Z |