import sys sys.path.append( "../server" ) from mothership import * Demo = 'raptor' volume = '/spire/raptor/full.dat' xfer = '/spire/raptor/xfer.dat' shaderpath = '/u/mhouston/work/cr/progs/raptor' x = y = z = 0 w = 512 h = 512 d = 256 Demo = os.path.join(crbindir, Demo) NODES = 'tcpip://spire-1,tcpip://spire-2,tcpip://spire-3,tcpip://spire-4' mothershipPort = 10000 localHostname = os.uname()[1] AUTOSTART = 1 # Can render/readback windows by dynamically resized? resizable = '1' # Set up the server node servernode1 = CRNetworkNode( ) # Note: each client has the -swap flag and we tell the server to only # do one SwapBuffers here. servernode1.Conf( 'only_swap_once', 1 ) servernode1.Conf( 'shared_windows', 1 ) renderspu = SPU( 'render' ) renderspu.Conf( 'window_geometry', [500, 500, 400, 400] ) renderspu.Conf('resizable', resizable) renderspu.Conf('render_to_crut_window', 1 ) servernode1.AddSPU( renderspu ) #create a crutserver crutserver = CRUTServerNode( ) crutserver.Conf('window_geometry', [100, 100, 400, 400] ) # Set up first app/client node appnode1 = CRApplicationNode( 'spire-1' ) appnode1.SetApplication( '%s %s %s %s %s %s %s %s %s %s CR' % (Demo, volume, shaderpath, xfer, 0,0,257,w,h,d) ) appnode1.StartDir( crbindir ) spu = SPU('binaryswap') spu.Conf('window_geometry', [0, 0, 400, 400]) spu.Conf('display_string', ':0.0') spu.Conf('type', 'alpha') spu.Conf('resizable', resizable) spu.Conf('use_glxchoosevisual', 0) spu.Conf('default_visual', 'rgb, alpha, double, depth') spu.Conf('peers', NODES) spu.Conf('node_number', '0') spu.Conf('title', 'binary-swap SPU node 0') appnode1.AddSPU( spu ) spu = SPU('pack') appnode1.AddSPU( spu ) spu.AddServer( servernode1, 'tcpip' ) appnode2 = CRApplicationNode( 'spire-2' ) appnode2.SetApplication( '%s %s %s %s %s %s %s %s %s %s CR' % (Demo, volume, shaderpath, xfer, 0,0,511,w,h,d) ) appnode2.StartDir( crbindir ) spu = SPU('binaryswap') spu.Conf('window_geometry', [0, 0, 400, 400]) spu.Conf('display_string', ':0.0') spu.Conf('type', 'alpha') spu.Conf('resizable', resizable) spu.Conf('use_glxchoosevisual', 0) spu.Conf('default_visual', 'rgb, alpha, double, depth') spu.Conf('peers', NODES) spu.Conf('node_number', '1') spu.Conf('title', 'binary-swap SPU node 1') appnode2.AddSPU( spu ) spu = SPU('pack') appnode2.AddSPU( spu ) spu.AddServer( servernode1, 'tcpip' ) appnode3 = CRApplicationNode( 'spire-3' ) appnode3.SetApplication( '%s %s %s %s %s %s %s %s %s %s CR' % (Demo, volume, shaderpath, xfer, 0,0,765,w,h,d) ) appnode3.StartDir( crbindir ) spu = SPU('binaryswap') spu.Conf('window_geometry', [0, 0, 400, 400]) spu.Conf('display_string', ':0.0') spu.Conf('type', 'alpha') spu.Conf('resizable', resizable) spu.Conf('use_glxchoosevisual', 0) spu.Conf('default_visual', 'rgb, alpha, double, depth') spu.Conf('peers', NODES) spu.Conf('node_number', '2') spu.Conf('title', 'binary-swap SPU node 2') appnode3.AddSPU( spu ) spu = SPU('pack') appnode3.AddSPU( spu ) spu.AddServer( servernode1, 'tcpip' ) appnode4 = CRApplicationNode( 'spire-4' ) appnode4.SetApplication( '%s %s %s %s %s %s %s %s %s %s CR' % (Demo, volume, shaderpath, xfer, 0,0,1019,w,h,d) ) appnode4.StartDir( crbindir ) spu = SPU('binaryswap') spu.Conf('window_geometry', [0, 0, 400, 400]) spu.Conf('display_string', ':0.0') spu.Conf('type', 'alpha') spu.Conf('resizable', resizable) spu.Conf('use_glxchoosevisual', 0) spu.Conf('default_visual', 'rgb, alpha, double, depth') spu.Conf('peers', NODES) spu.Conf('node_number', '3') spu.Conf('title', 'binary-swap SPU node 3') appnode4.AddSPU( spu ) spu = SPU('pack') appnode4.AddSPU( spu ) spu.AddServer( servernode1, 'tcpip' ) #let's define a CRUTserver as anything that will feed us events #this way we can create either a ring or a fan configuration appnode1.AddCRUTServer( crutserver , protocol='tcpip', port=9000 ) appnode2.AddCRUTServer( crutserver , protocol='tcpip', port=9000 ) appnode3.AddCRUTServer( crutserver , protocol='tcpip', port=9000 ) appnode4.AddCRUTServer( crutserver , protocol='tcpip', port=9000 ) cr = CR() cr.MTU( 1024*1024 ) # Note: adding nodes in the order in which they must be started! cr.AddNode( appnode1 ) cr.AddNode( appnode2 ) cr.AddNode( appnode3 ) cr.AddNode( appnode4 ) if AUTOSTART: appnode1.AutoStart( ["/usr/bin/rsh", 'spire-1',"/bin/sh -c 'DISPLAY=:0.0 LD_LIBRARY_PATH=%s crappfaker -mothership %s:%d'" % (crlibdir, localHostname, mothershipPort) ] ) appnode2.AutoStart( ["/usr/bin/rsh", 'spire-2',"/bin/sh -c 'DISPLAY=:0.0 LD_LIBRARY_PATH=%s crappfaker -mothership %s:%d'" % (crlibdir, localHostname, mothershipPort) ] ) appnode3.AutoStart( ["/usr/bin/rsh", 'spire-3',"/bin/sh -c 'DISPLAY=:0.0 LD_LIBRARY_PATH=%s crappfaker -mothership %s:%d'" % (crlibdir, localHostname, mothershipPort) ] ) appnode4.AutoStart( ["/usr/bin/rsh", 'spire-4',"/bin/sh -c 'DISPLAY=:0.0 LD_LIBRARY_PATH=%s crappfaker -mothership %s:%d'" % (crlibdir, localHostname, mothershipPort) ] ) cr.AddNode( crutserver ) cr.AddNode( servernode1 ) cr.Go()