Xdmx or DMX (both abbreviations are indifferently used) is the Distributed Multihead X Project. It acts as a proxy X server for multiple back-end X servers. When combined with Xinerama support, the multiple displays handled by DMX are presented to the user as a single unified screen.
For example, DMX could provide multi monitor support using two desktop computers, each of which has a single monitor. Or, it could unify a 4 by 4 grid of monitors between 8 computers each with 2 monitors attached to them.
A common misconception about DMX is that it is a window manager. DMX is not a window manager, but another X server. As a result a window manager such as KWin, Metacity, Fluxbox, etc. is needed to run on top of DMX for maximum usage. The DMX server is known as the front-end X server, while the servers that the DMX server connects to are known as the back-end servers. X clients can use the DMX server just like a normal X server, while the DMX server uses the back-end servers to actually do the drawing.
DMX implements the GLX protocol for indirect rendering. This allows clients to use OpenGL for 3D graphics on a distributed display. This feature is known as GLX proxy. However, GLX proxy has a number of issues. Including:
- It requires homogeneous GLX visuals on the back-end displays. This often causes problems for people who are mixing back-end machines with differing 3D capabilities. For example, it would likely not work if one back-end used an ATI graphics card and another an nVidia card.
- It has limited support for newer versions of OpenGL and lacks support for most modern OpenGL extensions.
- It is not compatible with dynamic screen addition and removal.
- Indirect Rendering is almost always slower than direct rendering.
Because of the above limitations, many users use Chromium for OpenGL support when using DMX. Using the tilesort SPU, Chromium can provide 3d acceleration over the entire DMX display (consisting of multiple machines). In addition, Chromium can be configured to use the dmxdirect SPU to provide near native 3D rendering capabilities by limiting 3D rendering to only a single back-end display.