Post by Henrik CarlqvistPost by K. VenkenThe problem got fixed after I reinstalled the nvidia drivers on the
(application) server.
OK, now I am confused. This is how I thought X was working (sorry for
the lousy pictures)
+-----------------+ +-------------------------+
| local PC | | remote application PC |
+-----------------+ +-------------------------+
| | | |
| | | Application |
| | | | |
| X-server |<-------->| X-client |
| | | | |
| Display driver | | NVidia |
+--------||-------+ +-------------------------+
+----||----+
| screen |
+----------+
| keyboard |
+----------+
Which would have made me believe that installing the NVidia drivers on
the application server are not needed. Apparently not. I am missing
something about this.
Needed on the application server are dynamic libraries that your
application links to. If you check with "ldd /usr/bin/glxgears" you will
see that the glxgears application links to libGL and libX11 among other
libraries.
This is the output of this,...
***@matthua:~$ ldd `which glxgears`
linux-vdso.so.1 (0x00007ffc138b8000)
libGLEW.so.2.1 => /usr/lib64/libGLEW.so.2.1 (0x00001487e6cbc000)
libGLU.so.1 => /usr/lib64/libGLU.so.1 (0x00001487e6c4e000)
libGL.so.1 => /usr/lib64/libGL.so.1 (0x00001487e6bb5000)
libm.so.6 => /lib64/libm.so.6 (0x00001487e6a68000)
libX11.so.6 => /usr/lib64/libX11.so.6 (0x00001487e692a000)
libXext.so.6 => /usr/lib64/libXext.so.6 (0x00001487e6916000)
libc.so.6 => /lib64/libc.so.6 (0x00001487e672f000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00001487e654f000)
libgcc_s.so.1 => /usr/lib64/libgcc_s.so.1 (0x00001487e6535000)
libGLX.so.0 => /usr/lib64/libGLX.so.0 (0x00001487e6502000)
libGLdispatch.so.0 => /usr/lib64/libGLdispatch.so.0
(0x00001487e6446000)
libdl.so.2 => /lib64/libdl.so.2 (0x00001487e6441000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00001487e641d000)
/lib64/ld-linux-x86-64.so.2 (0x00001487e6f97000)
libxcb.so.1 => /usr/lib64/libxcb.so.1 (0x00001487e63f4000)
libXau.so.6 => /usr/lib64/libXau.so.6 (0x00001487e63ef000)
libXdmcp.so.6 => /usr/lib64/libXdmcp.so.6 (0x00001487e63e7000)
All are found,...
Post by Henrik CarlqvistThose libraries will look at your DISPLAY variable which gets set to
something like localhost:10 when you login by ssh instead of localhost:0
when you run X at the console on your local machine.
LibGL is one of the libraries that the evil binary nVidia driver
replaces. The libGL library will give you hardware accelerated OpenGL
using DRI mechanisms on a local display, but as you now login on a remote
machine the libGL library will fall back to software rendering.
Thanks for the clarification Hendrik.
I was expecting that when you login remotely, it would use software
rendering as it would when I didn't install the NVidia drivers.
Unfortunately, I didn't note the exact versions before and after I
installed the NVidia drivers, so I can't check it anymore...
And then, I have to install the NVidia drivers to get the remote
connection working. It seems like there is some interaction with the
NVidia drivers anyway, even when you remotely login. I can understand
that someone (driver) has to 'interpret' the (open)GL stuff, but to me
it seems like, if software does it or NVidia does it, it does not
matter, because, only after translation, it is used by the X-protocol.
Post by Henrik CarlqvistYou will
probably be able to verify the performance difference by looking at the
FPS output of glxgears.
Every detail matters, even replacing 100 Mbps with 1Gbps, and glxgears
tells you. This is why I am using it. But at some points my eyes don't
care anymore ;-)
Having an NVidia with proper driver is probably going to make things (a
little) faster even remotely.