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) program = sys.argv 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() 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()