How to efficiently use 3D via a remote connection?

I have one weak PC (client) but with acceptable 3D performance, and one strong PC (server) which should be capable of running an application using OpenGL twice, i.e. once locally and once remotely for the client. Currently, I ssh -X into it, but the client’s console output states software rendering is used and I only get 3 frames per second (fps). Actually, ssh’s encryption is not necessary since this is on a LAN, but it’s what I already know for remote applications…

So, how can the client performance be increased? My ideas are

  • use hardware acceleration, but the server’s or the client’s one and how?
  • use something different than ssh

I know, in full resolution and without sophisticated compression a 100 Mbit/s LAN won’t make more fps, but it’s a windowed application of ca. 800×450, so theoretically up to 12 fps (at 24 bits/pixel) should be possible using uncompressed graphical data. And maybe something better is possible using the client’s own GPU or some smart compression.

edit Turns out what I want is basically a local version of what e.g. onlive and gaikai offers. Is there something like this for Linux (and possibly free)?

edit2 VirtualGL looks like the best solution (though currently not working for me), but I wonder if it is possible to do hardware rendering on the client, too

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

You could check out VirtualGL together with TurboVNC should provide you with 20fps @ 1280×1024 on 100 Mbit (see wikipedia).

Do note that it might not work with all applications, it depends on how they use OpenGL.

Method 2

This is an old question but it is still relevant. There is a step by step manual on how to configure and troubleshoot X11 3D rendering of remote application on local hardware: OpenGL hardware acceleration through remote x11 ssh connection

The Chromium B.S.U. game is used in the article as an example. It runs with 5-8 FPS with default software rendering through SSH connection, 30 FPS with indirect hardware rendering and >30 FPS with unencrypted TCP X11 connection. Note that it only works for some applications.

Brief summary of the article

Indirect rendering and TCP connections are disabled in default X11 server configuration. +iglx and -listen tcp parameters enable them. There is also LIBGL_ALWAYS_INDIRECT=1 variable that forces indirect rendering on the X11 client.

Method 3

That might be true if you have two desktop PC’s. But if you have an old WiFi laptop usable anywhere at home (eg Ti5600 with Ubuntu 10.04 as your client, and a desktop PC with a GTX board along with a spare Wi-Fi Router, having a remote OpenGL client seems a good idea.

The problem is getting a remote (server side) OpenGL context. You can run ssh -X on your client. But if you run glxinfo on the remote system, you get your local client, which puts you back where you started. You can set your DISPLAY environment variable to that remote host, and you can use that screen as a second monitor, which still doesn’t help.

One other solution is to write your desktop applications so that they can use a remote GLX context:

http://arrayfire.com/remote-off-screen-rendering-with-opengl/


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x