DCV support for DMX Servers

This update to DCV implements SVN support for DMX servers. This support allows an OpenGL application to export its entire user interface, including the 2D graphics elements (windows and widgets), to a single composite display (wall display), providing better performance than a DMX-only implementation. An application can also take advantage of existing SVN features to export the graphics display to additional composite displays, without the 2D graphics elements visible, or to a SVN/RVN session at the same time.

This page contains two sections, first, a description of how to use the SVN DMX support, and then instructions for installation of the DMX server

Application Invocation

DMX Server Invocation

A DMX server must be started before starting a SVN session using DMX support. The DMX server can be either a root window display server or a non-root window display server.

A sample invocation of a DMX server as a non-root window display server is

Xdmx :1 -nowindowopt +xinerama -fontpath /usr/X11R6/lib/X11/fonts/misc -configfile wall.config -config dv -input $DISPLAY -ac &
sleep 3
mwm -display :1 &


where
-nowindowopt disables a lazy window creation option
+xinerama enables spanning the logical display across multiple physical displays
-fontpath specifies the path to the fonts to be used by the DMX server
-configfile specifies the path to the DMX configuration file
-config specifies the name of a configuration defined in the DMX configuration file
-input specifies the source to use for input
-ac suppresses authorization checks by the DMX server

The mwm command invokes the Motif window manager as the window manager for the DMX display, and you can substitute the window manager of your choice.

A sample wall configuration file for a 2x1 display is

virtual dv {
wall 2x1 deepview3:0.0 deepview4:0.0 ;
}

Refer to the Xdmx man page or to the DMX web site for more information

SVN Invocation

DMX support is invoked by use of the -clientdpy flag, specifying the name of the DMX server to be used. The server name is specified in the same format as when the DISPLAY environment variable is set before invoking an X application. When the -clientdpy parameter specifies a DMX server, the -clientrender flag is ignored. If the -clientdpy flag does not specify a DMX server, then SVN will treat that display specification as a normal X server and the -clientrender flag setting will also be respected

Additional displays are optional and can be specified by use of the -svndpy and -svnrvn flags, or by use of the SVN_DISPLAY environment variable.

A sample SVN invocation for a DMX-only session, assuming all other required SVN environment variables are set is

svn_sender -clientdpy deepview5:1 /usr/local/bin/atlantis
where the SVN_DISPLAY environment variable is not set


A sample SVN invocation where a DMX session and a SVN wall display are used is
svn_sender -svndpy /home/deepview/wall.cfg -clientdpy deepview5:1 /usr/local/bin/atlantis

DMX Installation

Before you can use DMX support in SVN, you must install the DMX server and build a copy of libdmx.so for use by SVN.

Installing the DMX Server

In order to use SVN with DMX support you need to install the DMX server from the DMX download site. This is a 32-bit server which has been tested on both 32 bit and 64 bit systems.

To install the 32 bit DMX server, first download the DMX server RPM from the DMX web site by clicking the Download DMX link and selecting the RPM for i386 systems.

Once you have downloaded the RPM, install it, as root, by invoking the rpm -i command, for example, rpm -i dmx-1.2.20040630-1.i386.rpm

Building libdmx.so

SVN requires a shared copy of a DMX interface library in order to implement DMX support. The DMX RPMs do not include this shared library, so it must be built at your site. The 32 bit DMX RPM contains an object file which is used to build the 32 bit shared library. If you are running SVN with 64 bit applications, then a 64 bit version of the library is required.

32 bit libdmx.so

If you are running 32 bit applications with SVN, then you need to build a 32 bit version of libdmx.so on a 32 bit system as follows

Create a directory to build the shared library, for instance, /home/deepview/libdmx
cd to that directory
Extract dmx.o from libdmx.a by issuing the command ar x /usr/X11R6/lib/libdmx.a dmx.o
Build libdmx.so by issuing the command gcc -o libdmx.so -shared -fPIC dmx.o -L/usr/X11R6/lib -lX11 -lXext
Copy, as root, libdmx.so to /opt/IBM/dcv/svn/lib/libdmx.so
Create the DMX configuration file defining display node configuration and verify correct DMX server operation

64 bit libdmx.so

If you are running 64 bit applications using SVN, then you need to build a 64 bit version of libdmx.so. If you have a copy of libdmx.a where the dmx.o object file is a 64 bit object file, then you can use the same procedure to build libdmx.so as described above for the 32 bit libdmx.so.

You can determine if your copy of dmx.o is a 64 bit object by extracting the dmx.o object using the command ar x libdmx.a dmx.o then issuing the command file dmx.o. If dmx.o is a 64 bit object, the output from the file command will state that dmx.o is a 64 bit x86_64 object file.

If your copy of dmx.o is not a 64 bit object file, then you need to perform the following steps to build libdmx.so.

Create a directory to build the shared library, for instance, /home/deepview/libdmx
cd to that directory
Enter export CVSROOT=:pserver:anonymous@cvs.sourceforge.net:/cvsroot/dmx
Enter cvs login
Press enter at the password prompt
Enter cvs export -D2006/03/15 dmx/xc/lib/dmx/dmx.c
Enter cvs export -D2006/03/15 dmx/xc/include/extensions/dmxext.h
Enter cvs export -D2006/03/15 dmx/xc/include/extensions/dmxproto.h
Enter cvs export -D2006/03/15 dmx/xc/include/extensions/extutil.h
Note: You can specify a date later than 2006/03/15 for the -D flag in the above commands if you want to obtain a later version of this source code.
Enter cd dmx/xc/lib/dmx
Enter gcc -o libdmx.so -shared -fPIC -I../../include/extensions -I/usr/X11R6/include/X11/extensions dmx.c -L/usr/X11R6/lib64 -lXext -lX11
Verify that libdmx.so compiled without errors
Copy, as root, libdmx.so to /opt/IBM/dcv/svn/lib64/libdmx.so
Create the DMX configuration file defining display node configuration and verify correct DMX server operation