dmxdirect

back

dmxdirect SPU is a SPU that allows someone to take full advantage of the native graphics capabilities of a single backend display in a DMX environment. It is possible to take advantage of the 3d capabilities of all backend displays using the tilesort spu, but this has several issues. Firstly, with tilesort you can only take advantage of the graphics capabilities that all the machines have in common. Secondly performance is significantly degraded by the complexity and transport needs. Thirdly, configuration is far more complex. dmxdirect is useful when running programs that won't work will tilesort and for testing/debugging.

dmxdirect works by being inserted before a renderSPU configured to render to a backend display. The dmxdirectspu performs the actions needed to configure and manage the renderspu on the specific backend. Basically, it acts like tilesortspu for a single backend.

conceptually how the dmxdirectspu fits into a Chromium setup:

The dmxdirect SPU is available here under the GPL.

What follows is an example of a configuration file that uses dmxdirect

crdir = "/opt/cr"

import random
import sys
import os
sys.path.append( crdir + "/mothership/server" )
from mothership import *

print "=====MY CONFIG====="

if len(sys.argv) < 3:
	print "Chromium mothership error: no program specified to run!"
	sys.exit(1)

mothershipPort = int(sys.argv[1])
program = sys.argv[2]

cr = CR()
cr.MTU( 10*1024*1024 )

# Call dmx_config to get information about the DMX tile layout.
import os
print "bin dir is: " + crbindir
dmx = os.popen("%s/dmx_config 2>/dev/null"%crbindir).read()
if not dmx:
    print "Chromium mothership error: Chromium does not appear to have"
    print "Chromium mothership error: been compiled with DMX support."
    sys.exit(1)
dmx = eval(dmx)
if not dmx:
    print "Chromium mothership error: DMX does not appear to be running."
    sys.exit(1)

localHostname = os.uname()[1]

clientnode = CRApplicationNode( )
clientnode.SetApplication( program )
clientnode.Conf('track_window_size', 1)
clientnode.Conf('track_window_position',1)

dmxspu = SPU('dmxdirect')
dmxspu.Conf('scrn_num','3') #dmxwininfo (program) can be used to find this
dmxspu.Conf('dpy_name',":4") #DMX Display 
clientnode.AddSPU(dmxspu)

render_spu = SPU('render')
render_spu.Conf( 'render_to_app_window', 1)
render_spu.Conf( 'borderless',1)
render_spu.Conf('display_string', '192.168.10.103:0')
clientnode.AddSPU( render_spu )

cr.AddNode(clientnode)
cr.Go()
    

Last modified: Sun Jan 7 17:33:12 PST 2007