Chapter 5. Limitations

OpenGL Mulitpipe allows single-pipe applications to run in a multipipe environment without any modification and without the need to recompile the application. It also allows single-pipe and multipipe applications to run concurrently on the same X server. However, OpenGL Multipipe has limitations and the following sections describe them:

For release-dependent limitations, see the OpenGL Multipipe release notes. For supported platforms and configurations, see “Supported Platforms” in Chapter 1.

Performance Enhancement

OpenGL Multipipe does not replace performance-focused multipipe APIs—such as OpenGL Performer or OpenGL Multipipe SDK—or any other custom multipipe solution. Using OpenGL Multipipe results in some minimal overhead (performance loss) for traditional single-pipe applications. This is due to the inherent cost of distributing the X and OpenGL commands among the graphics pipes.

It should be noted that process placement—that is, the way in which processes are assigned to processors—can significantly affect performance. For the affect of process placement on performance, see the OpenGL Multipipe release notes.

X Extensions

Some X extensions are not supported by SGI Xinerama, and others are not supported by DMX. For example, SGI Xinerama does not support the SGI-VIDEO-CONTROL extension, which permits control of video operations on the base graphics hardware, and SCREEN-SAVER, which is used by some screen saver programs. Applications using these X extensions may not function properly. The behavior of these applications started in unaware mode is undefined, though they will generally behave correctly on screen 0 or in aware mode. To determine whether a particular extension is supported, see the section “X Application Uses Unsupported X Extension” in Chapter 6.

The Multipipe-Aware Window Manager

Due to the nature of the screen overlapping required for composited displays, the aware window manager is currently limited to managing aware windows on noncomposited displays only. Unaware windows will be managed properly on composited displays.

OpenGL Window Size Constraints

The hardware graphics pipes have a hardware-dependent limit on the size of the region into which an OpenGL application renders. The consequence is that an OpenGL application is constrained to draw into a limited area. Under SGI Xinerama, enlarging an OpenGL window beyond this size limit results in undefined behavior. An OpenGL window may be placed anywhere within the the total area managed by the X server. Only the size of the region into which OpenGL renders is restricted.

Under DMX, however, OpenGL Multipipe allows OpenGL rendering to be unaffected by the window size limit of the graphics hardware. If the OpenGL application is invoked using omprun, the application may render into windows of any size.

Processor Requirements

On IRIX, OpenGL Multipipe requires that you use a MIPS R10000 processor or later. The following example shows how you check for the processor type:

$ hinv -t cpu

CPU: MIPS R16000 Processor Chip Revision: 2.1

SGI ProPack and OpenGL Multipipe Versions

Versions of OpenGL Multipipe that ship with SGI Propack for Linux are only supported on the version of SGI Propack with which they ship due to backwards compatibility issues on Linux.

Overlay Windows Support in DMX

DMX supports overlay windows—that is, windows that use overlay visuals—only if overlay visuals are available on each of the underlying X servers that DMX manages. This is the case on most SGI systems. On Onyx4 and Silicon Graphics Prism platforms, you must explicitly enable support of overlay visuals in the configuration file(s) of the underlying XFree86 server(s).

SGI Xinerama Not Supported on Onyx4 or Silicon Graphics Prism Platforms

Due to changes in the X server on Onyx4 and Silicon Graphics Prism platforms, SGI Xinerama will not be supported on these platforms. Only the DMX proxy layer is supported on these graphics platforms. DMX and SGI Xinerama are available on all other platforms supported by OpenGL Multipipe.

Graphics Pipe Requirements

Each of the graphics pipes managed by SGI Xinerama or DMX must have identical capabilities. Each pipe must provide the same set of X visuals and GLX FBConfigs, have the same amount of texture memory, and so on.

For example, if a system has three InfiniteReality3 graphics pipes where two pipes have two raster managers (RMs) and one pipe has four RMs, the pipe with four RMs must be configured to look as if it has two RMs. This can be done by ensuring the maximum pixel depth setting on each pipe is consistent. You can inspect the pixel depth by using the command /usr/gfx/gfxinfo. Depending on your system type, you can adjust the pixel depth on a particular pipe with one of the following commands: /usr/gfx/ircombine, /usr/gfx/sgcombine, or xsetmon. See the man pages for gfxinfo(1), ircombine(1), sgcombine(1), and xsetmon(1) for more information.

Some Features Not Available on Linux

All OpenGL Multipipe features are available on IRIX platforms. However, some of these features are not available on Linux platforms. For a list of such features, see the OpenGL Multipipe release notes.

Older Platforms Require the omprun Command

Using the omprun command is only optional on Oynx4 systems running IRIX 6.5.27 or later and Silicon Graphics Prism systems running SGI ProPack 3 Service Pack 4 or later.

On systems that do not meet these requirements, failure to use the omprun command under DMX will cause the application to use the slower GLX indirect rendering in DMX to draw OpenGL to all screens.