Technical Info

OpenGL Multipipe™ has been designed to allow an application to view multiple graphics pipelines as a single logical entity. As shown in Figure 1, this means that applications are unaware of the underlying hardware configuration and behave as if there were a single display.

OpenGL Multipipe used with a panoramic SGI Reality Center display with non-overlapping screens - Screen images courtesy of (left to right): Accelerys, the SCI institute, and Yvonne Channel

OpenGL Multipipe uses a flexible architecture that enables a logical screen to be built up from discrete elements that can be located anywhere within the logical screen space. This enables the creation of large walls with 2D arrays of displays, wide panoramic screens with overlapping displays for edge blending, and, as shown in figure 2, the use of a scalable graphics compositor to drive a single screen with increased performance.

OpenGL Multipipe used with a Silicon Graphics Onyx4 UltimateVision system and a scalable graphics compositor - MRI data courtesy of University of North Carolina

Architecture

OpenGL Multipipe has two main components as shown in Figure 3:
  • OpenGL® and X proxy layer: This layer hides the real screen from the client applications connecting to it and communicates X and OpenGL activity between the single logical display and the multiple physical displays. This layer enables OpenGL and X applications to run transparently so windows can be dragged across pipe boundaries and can even span multiple pipes.
  • 3D render servers: These processes are mapped to single physical graphics pipes. They receive the output from the OpenGL and X proxy layer and hand it off to separate OpenGL and X implementations driving each graphics pipe.

Architectural diagram for a 2-pipe scalable visualization environment using OpenGL Multipipe - Car image courtesy of EAI

Features

Single Logical Display - OpenGL Multipipe enables OpenGL and X applications to address arrays of non-overlapping or overlapping screens as a single very large logical display. The goal of this support is to enable very large and high resolution displays so groups can work together in a natural environment. Single windows can be moved or stretched across these displays without modifications to the underlying applications. The layout of these screens is defined as a very simple text file that can be modified when moving from one display to another, thus simplifying system administration.

Scalable Graphics Compositor Support - OpenGL Multipipe enables OpenGL and X applications to scale visualization performance when driving a single monitor through a Scalable Graphics Compositor. When functioning in this manner, OpenGL Multipipe limits the area drawn by each graphics pipe to a fraction of the actual screen and the results are recombined into a single video stream that is used to drive a single display.

Viewport Clipping - The performance of applications that draw large polygons with complex texturing or shading are often limited by the pixel fill performance of a single graphics card. Using OpenGL Multipipe, a fill limited application window that is positioned to span multiple graphics pipes will run faster because each pipe only attempts to fill that portion of the window for which it is responsible. This effect is most easily experienced when used in conjunction with a Scalable Graphics Compositor and a fill limited application.

Geometry Culling - Geometry intensive can sometimes exceed the polygon processing capabilities of individual graphics pipes. OpenGL Multipipe reduces this bottleneck by using geometry culling to divide geometry among multiple pipes and allowing each individual pipe to process only the OpenGL geometry that will be visible on its physical display.

Display List Partitioning - Some display lists can contain large amounts of geometry and span large areas of a scene. OpenGL Multipipe uses display list partitioning to break large display lists into smaller ones with greater spatial coherence that, in turn, increase the scalability possible with geometry culling.

User specified clip planes - OpenGL supports the definition of multiple user specified clip planes within an application. However, the number of clip planes implemented in hardware can vary from graphics architecture to graphics architecture, so OpenGL Multipipe uses geometry culling to support user-specified OpenGL clip planes and shield users from the details of a specific hardware implementation.

Buffer Swap Synchronization - Variations in pixel fill, geometry load, and many other factors can lead to an unbalanced load among the graphics pipes. Some pipes will render their parts of the scene faster or more slowly than the rest. OpenGL Multipipe uses both hardware and software synchronization to ensure that each graphics pipe that composes a single logical display always shows portions of the same frame from an application.

Scalable Application Co-existence and Support - Numerous applications, like those written using OpenGL Performer™ or OpenGL Multipipe™ SDK, have been explicitly written to maximize performance in a multi-pipe SGI Reality Center or Scalable Graphics Compositor environment. These applications efficiently manage the flow of 3D information to each graphics pipe that makes up part of a larger logical display. OpenGL Multipipe allows single-pipe applications to run concurrently with explicitly parallel applications, and supports non-parallel control windows generated by an explicitly parallel application to be located anywhere on the single logical display.