[prev in list] [next in list] [prev in thread] [next in thread] 

List:       freenx-knx
Subject:    Re: [FreeNX-kNX] Forcing the graphical applications to use the
From:       vsp_123 <Prakash.Velayutham () cchmc ! org>
Date:       2009-06-09 19:50:22
Message-ID: 23950137.post () talk ! nabble ! com
[Download RAW message or body]


Hi,

I am back to this issue I was working on a while ago.


Mario Becroft wrote:
> 
> Prakash Velayutham <prakash.velayutham@cchmc.org> writes:
> 
> > These are my experimental numbers.
> > 
> > Client X (using NoMachine client)
> > FreeNX server Y
> > Graphics node Z
> > 
> > I connect via the NX client from X to Y (using SSH tunneling and X  
> > proxy)
> > I then SSH -X to the graphics node (this is needed in my setting as  
> > the graphics node Z is in a private network reachable only from Y)
> > Then I startup Matlab on the node. This, if I am correct, streams all  
> > the OpenGL rendering commands through the tunnel back to my client and  
> > uses the client-side X (which is the X server here) to render it. And,  
> > by the very definition, this cannot use hardware acceleration as it  
> > can only do indirect rendering. My Matlab startup time, as I see it,  
> > is about 27 seconds in this case.
> 
> If you were directly running X protocol without using NX, or using
> nxproxy without nxagent, this would be at least partly true. The GL
> commands would be sent via GLX protocol to the X server, which, as I
> understand it, should still be able to use the accelerated graphics
> hardware to do rendering if it wants to. However, in practice the
> performance can be very poor. I am hazy on the details of direct
> vs. indirect rendering in GLX, so I may not be quite right about this.
> 
> However, if you are using nxagent, which is the usual way NX is used
> since it provides round-trip suppression, then this will not be the
> case, since nxagent does not support forwarding GLX requests (as far as
> I know).
> 
> Yes, I do use nxagent.
> 
> > What I have read thus far says that a VNC connection renders the  
> > graphics on the application side, instead of the interaction side. So,  
> > if, after connecting to node Z, I start up a VNC server on, say  
> > display 1, and then connect to Z from Y using a VNC viewer, and start  
> > up Matlab, the startup time, is about 10 seconds.
> 
> Yes, if you use ordinary VNC, then the Mesa software renderer built into
> Xvnc will do the GL rendering, and bitmap data (compressed using normal
> VNC protocols) will be sent to the VNC client.
> 
> Where something like VirtualGL comes in is that it enables the graphics
> rendering to be done on OpenGL hardware other than the video hardware
> the VNC client is displaying on. Typically this is used to do rendering
> on a host close to the one running the GLX client (possibly the same
> host), while sending the resulting images through VNC or NX protocol to
> a remote host. The remote host need not have accelerated graphics
> hardware.
> 
> Assuming you were using nxagent in your NX test, it is not clear to me
> why there is a performance difference between NX and VNC in this
> case. Maybe you were not using an nxagent session, and your GLX commands
> were being sent all the way to the NX client.
> 
> > I am trying to understand which is the best way to extract the
> > rendering power of the graphics node and still get the best
> > interactive experience using NX.
> 
> Assuming you are using nxagent, which does not forward GLX to the remote
> X server, your options are twofold:
> 
> 1. use NX in the normal way. Rendering for GLX clients will be done by
> the Mesa library in the nxagent running on the nxagent host's CPU.
> 
> 2. use NX in combination with VirtualGL or similar, and configure
> VirtualGL to use a video adapter locally attached to the host running
> nxagent (or possibly another host on a fast LAN).
> 
> What do you mean by a video adapter here? A 3D graphics card? Do you have
> this setup? Definitely, option 2 is what I am trying to achieve, I just
> don't know what I am missing though.
> 
> In both cases, the rendering is done on the server side of the NX
> connection and the resulting images are sent to the client using normal
> NX image compression. 1. will be slow since the rendering is done on the
> host's general-purpose CPU. 2. will be much faster since rendering is
> done on accelerated graphics hardware.
> 
> There is actually a third way: if you link your GLX-using client against
> Mesa, then the client can do all the rendering itself and just send
> images to the X server. If the X client and the nxagent are running on
> the same host, the end-result of this will be much the same as 1.
> 
> Whether you need to use hardware acceleration or software rendering will
> be sufficient depends on the type and amount of rendering work being
> done.
> 
> -- 
> Mario Becroft <mb@gem.win.co.nz>
> 

Thanks,
Prakash
-- 
View this message in context: \
http://www.nabble.com/Forcing-the-graphical-applications-to-use-the-server-side-graphics-abilities-tp22572197p23950137.html
 Sent from the freenx-knx mailing list archive at Nabble.com.

________________________________________________________________
     Were you helped on this list with your FreeNX problem?
    Then please write up the solution in the FreeNX Wiki/FAQ:

http://openfacts2.berlios.de/wikien/index.php/BerliosProject:FreeNX_-_FAQ
  
         Don't forget to check the NX Knowledge Base:
                 http://www.nomachine.com/kb/ 

________________________________________________________________
       FreeNX-kNX mailing list --- FreeNX-kNX@kde.org
      https://mail.kde.org/mailman/listinfo/freenx-knx
________________________________________________________________


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic