Appendix F. Configuring a Multipipe Onyx System

The Onyx rackmount system can be configured with up to three graphics subsystems, called pipes.

Additional information on multipipe software configuration is found in the IRIS Performer Programming Guide, (P/N 007-1680-0x0). You may also wish to reference the OpenGL Programming Guide (P/N 860-0151-00x); or the OpenGL Porting Guide (P/N 007-1797-0x0).

Hardware Configurations

The first graphics pipe in the Onyx rackmount is in the upper cardcage (cardcage 2), which also contains many other boards, such as the CPU boards and IO4 boards. Each graphics system includes an IO4 board, which connects graphics pipes to each other, and a Geometry Engine board.

The second and third pipes are located in a separate optional cardcage (cardcage 3), in the bottom section of the rackmount chassis.

IO4 Considerations

Each IO4 supporting InfiniteReality graphics pipes must have the Rev C (F3) ASIC installed. Note that each InfiniteReality pipe requires its own F3-based IO4.


Note: Use of an F2 ASIC with InfiniteReality graphics results in warning messages being written to the /usr/adm/SYSLOG file upon startup. The InfiniteReality graphics does not work properly with an F2-based IO4.

The system's IO4 F chip should always be at Rev C (F3) for proper operation of InfiniteReality based graphics pipes. Specifically, it is required for sproc() graphics, even if only one thread is doing the graphics.

F2-equipped IO4s used for non-graphics ports, such as VME, do not need to be upgraded to F3. All current releases of the IO4 board have F3 chips where they are required for graphics.


Caution: Using InfiniteReality graphics and Reality Engine2 graphics pipes in the same rack is not supported.


Wiring the Genlock and Swap Ready Cables

This section explains the synchronization process for a three-pipe system. To configure a two-pipe system, omit the third pipe in the process as described.

Assuming pipe 0 is the master, the following cables and connections should be in place:

  • syncout(0) connects to syncin(1)

  • loopthru(1) connects to syncin(2)

  • loopthru(2) is terminated

  • swapready(0) connects to swapready(1) and swapready(2)

Use a T-connector and normal BNC coax.


Note: Do not use any termination on the swap ready signal.


Software Installation and Configuration

Do not use any version of IRIX prior to 6.2. Systems using older versions should be upgraded.

The IO4 board and GE board each have a PROM―the IO4 PROM and the GE PROM, respectively. All PROMs must be at the correct revision for the particular IRIX software release.

Directing Graphics to a Particular Pipe

To direct graphics to a particular pipe, use the DISPLAY environment variable.

Set it to

  • :0.0 for pipe 0

  • :0.1 for pipe 1

  • :0.2 for pipe 2

Using sproc

Since sproc(2) shares the data segment, it doesn't make sense to have separate sproc threads controlling separate graphics pipes. Use fork(2) to control separate pipes. If multiple sproc threads are used to draw to one pipe, you must call gflush() (or glFlush()), when switching threads.

Using mswapbuffers()

To modify an Iris GL application to use mswapbuffers() instead of swapbuffers(), replace swapbuffers() with mswapbuffers(NORMALDRAW|GANGDRAW).

Note that GANGDRAW was named DUALDRAW prior to the release of
IRIX 5.1. Also note that OpenGL does not have an equivalent for mswapbuffers().


Note: Only one program should be running on each pipe. For information on directing graphics to a particular pipe, see "Genlocking the Pipes," earlier in this section.


Synchronizing Swap Buffers on Multiple Pipes

Synchronizing swap buffers on multiple pipes consists of:

  • wiring the genlock and swap ready signals

  • genlocking the pipes

  • using mswapbuffers

Genlocking the Pipes

Follow these steps to genlock the pipes:

  1. All pipes must be running the same video output format (VOF). The additional pipes need to be genlocked to the master, pipe 0.

  2. For a 1280 x 1024, 60 Hz VOF set the following

    setmon -g -n 1280x1024_60

    on these additional pipes, and simply

    setmon -n 1280x1024_60

    on the master, pipe 0.

    Omit -n 1280x1024_60 if this VOF is already running on the particular pipe.

Also note at this point that with normal software (not using mswapbuffers), the pipes should be running properly.

Alternatly, InfiniteReality users can build the VOF settings using the Combiner utility. See the Section , "InfiniteReality Combiner Programming Overview," in Chapter 3 for an introduction to this utility.

RE2 users can avoid using setmonitor() calls by using /usr/gfx/setmon instead.