My purpose is to run OpenGL Application on a remote ubuntu machine, and hopefully I can use the latest version 4.5 of OpenGL as much as possible. The local host (at home) is Windows 7. To connect the remote ubuntu, I installed VMware workstation 12.5.7 which claims to support OpenGL 3.3. The guest OS in local VM is ubuntu 16.04 on which I installed mesa 17.2.4 which claims to support OpenGL 4.5. Due to the limitation of VMware workstation, I can only use OpenGL 3.3 in VM and it really works. Then I ssh -Y from within the VM to the remote machine. The remote machine is ubuntu 16.04 on which nVidia Titan hardware and all graphics-related software packages I know of are installed and running like nVidia's latest driver, X server, VirtualGL, GLX, etc. Now I want to have OpenGL application running on the remote machine (i.e., consume computational resources on the remote machine) and return the output results to me in my local VMware workstation. To sketch:
local Windows 7 host -> local ubuntu 16.04 VM -> remote ubuntu 16.04
We know glxgears is an OpenGL application. If I run it directly in remote machine, I got error:
X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 155 (GLX) Minor opcode of failed request: 3 (X_GLXCreateContext) Value in failed request: 0x0 Serial number of failed request: 26 Current serial number in output stream: 27
If I launch VirtualGL (run
vglclient) and run glxgears through command
vglrun glxgears, a window flashes and disappears and I got errors:
[VGL] NOTICE: Automatically setting VGL_CLIENT environment variable to [VGL] 172.23.4.217, the IP address of your SSH client. [VGL] ERROR: Could not connect to VGL client. Make sure that vglclient is [VGL] running and that either the DISPLAY or VGL_CLIENT environment [VGL] variable points to the machine on which vglclient is running. [VGL] ERROR: in connect-- [VGL] 261: Connection refused
Could you please tell me what I need to do to run glxgears or other OpenGL applications on remote ubuntu? Following are the results of glxinfo; I hope they can help the troubleshooting. If you need any other info please let me know. Thank you very much for your help.
The glxinfo from the local VM:
server glx version string: 1.4 client glx version string: 1.4 GLX version: 1.4 Max core profile version: 3.3 Max compat profile version: 3.0 Max GLES1 profile version: 1.1 Max GLES profile version: 3.0 OpenGL core profile version string: 3.3 (Core Profile) Mesa 17.2.4 OpenGL core profile shading language version string: 3.30 OpenGL version string: 3.0 Mesa 17.2.4 OpenGL shading language version string: 1.30 OpenGL ES profile version string: OpenGL ES 3.0 Mesa 17.2.4 OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00
When running glxinfo|grep version on remote machine, the same errors as running glxgears directly:
X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 155 (GLX) Minor opcode of failed request: 24 (X_GLXCreateNewContext) Value in failed request: 0x0 Serial number of failed request: 38 Current serial number in output stream: 39
If I run vglrun glxinfo|grep version on remote machine, I got:
server glx version string: 1.4 client glx version string: 1.4 GLX version: 1.4 OpenGL core profile version string: 4.5.0 NVIDIA 381.22 OpenGL core profile shading language version string: 4.50 NVIDIA OpenGL version string: 4.5.0 NVIDIA 381.22 OpenGL shading language version string: 4.50 NVIDIA
The graphics hardware I have locally is Intel's integrated chipset which is very old and supports only DirectX 10 and OpenGL 1.1, but I guess that should not be the culprit because the local VM have OpenGL 3.3 up and running.