DMX, "Distributed Multi-Headed X," is a Linux-based technology for letting multiple computers share in one X display. In this lesson, we will set up an example DMX session to show how blockbuster works in that environment. The lesson assumes you know how to set up and run your DMX server.
At LLNL, steps 1 and 2 are usually taken care of by the Telepath session management program for convenience.
Our example assumes a "powerwall cluster" consisting of a front end node, with keyboard, mouse and console display, plus six backend "slave" nodes, each connected to one display in the Powerwall tiled display. The frontend is connected by IP network to the slaves. Blue lines show node-to-display connections, black lines show metwork connections.
The first step is to start an X server on all nodes to allow access to the graphics cards and handle window management and creation.
Next, we start a DMX server on the frontend node. A DMX config file tells DMX to connect to the X servers on each slave to allow remote window management by X11 commands. The DMX server runs on the master node, communicates with each slave, and displays a virtual DMX display area on the console to serve as a mouse target for user interactions. The DMX server has its own DISPLAY port which it listens to, typically something like :2001. X clients which connect to the DMX port will display their windows on the Powerwall displays, through DMX magic. To a basic X client, a DMX display looks like a single huge display, even if it consists of multiple tiles. But blockbuster is a bit more than a basic X client, as explained in the next step.
Whenl launched with the "-r dmx" option, blockbuster knows it is talking to a DMX server instead of a normal X server. It learns about the backend screen geometries and automatically launches a slave blockbuster on each backend. Blockbuster on the frontend node connects to the DMX server so that its control GUI and the window decorations for the movie Canvas get displayed on the Powerwall in the right places and are echoed into the Virtual DMX display area on the console. Each backend slave blockbuster connects to the X server on its node so it can create an OpenGL context and draw directly to the Powerwall with hardware.
Blockbuster gets updates from the DMX server whenever the user moves or resizes its windows. Using that information, it tells each backend server which portion of the image to draw and where to place that on the screen, creating the illusion of a single image on the Powerwall. Note that each blockbuster slave has to have access to the movie being played in order to read and draw its part of the movie image for each frame.
In the above example, the user has moved the blockbuster canvas to the right hand of the powerwall, so only slaves 2,3, 5 and 6 are drawing anything, while slaves 1 and 2 are not drawing any pixels.
Notice that the blockbuster control GUI is displayed on the Powerwall. To hide this, you can type 'i' or right-mouse-click on the Canvas. The control GUI on a powerwall can make a very hard mouse target, given that you have to maneuver inside the Virtual DMX Display on the console, which tends to coarsen the mouse movements. This is why Sidecar was invented.