I'm interested in forwarding an X11 session over SSH, in order to launch a remote process that utilizes OpenGL (specifically, gazebo for anyone familiar.)
The problem that I seem to be running into is that gazebo crashes due to a mismatch in the graphics cards; it can't find "NV-GLX" extensions. The exact error output:
Xlib: extension "NV-GLX" missing on display "localhost:10.0".
Xlib: extension "NV-GLX" missing on display "localhost:10.0".
X Error of failed request: GLXUnsupportedPrivateRequest
Major opcode of failed request: 149 (GLX)
Minor opcode of failed request: 16 (X_GLXVendorPrivate)
Serial number of failed request: 24
Current serial number in output stream: 25
The remote machine is running with an NVIDIA card, and my local machine is using an AMD card.
I've tested X11 forwarding of gazebo between two machines with NVIDIA cards. It works just fine.
As near as I can tell, it seems that one of three things are happening:
- I'm doing something wrong,
- What I want to do is impossible,
- Gazebo doesn't build in an agnostic manner with branching codepaths for different hardware; whatever your system looks like when it builds is what you get.
The remote machine is running Ubuntu and my local machine is a Mac running 10.8.2; I already know that I have x11 forwarding set up properly for normal use as I can get things like xclock to open up in XQuartz just fine. The solution (if it exists) would also preferably work for other OS's including Windows over WinSCP.
Best Answer
A few notes from the GLX Wikipedia article:
and
I believe the fist point answers your question about whether this is possible or not: it should certainly be possible. The second may provide an explanation for why your client program insists on using features of its local X server (the NV GLX driver) -- perhaps it thinks that
localhost:10.0
is the same computer, and so attempted a direction connection.Things to try:
gazebo
, tryglxdemo
.strace
yourgazebo
invocation, and figure out why it's loading nv-glxGood luck!