FIGURE 10 The Indy Graphics Board. The shaded boxes show Silicon Graphics-designed ASICs.
The main bus on the Indy Graphics board provides a communication path between the elements of the graphics subsystem. The Indy Graphics board is connected to the GIO64 bus via the REX3 ASIC, which can access data from the CPU at a burst rate of 267 MBytes per second.
4.1 Graphics Processing
The CPU uses the IRIS GL to transform three-dimensional polygons to 2D screen coordinates, decompose them into triangles, and finally decompose the triangles into spans by exact point sampling of the triangle's interior. These spans are then passed on to the REX3 ASIC, which interpolates them and renders the results into the framebuffer.
Figure 11 shows how 3D polygons are processed by the CPU and the REX3 ASIC. All transformation, clipping, and lighting calculations for points, lines, and polygons are performed in software by the CPU, including Z-buffer calculations, which are implemented in 32-bit resolution without the use of dedicated Z-buffer bitplanes.
FIGURE 11 Graphics processing on Indy. The majority of Indy Graphics computation is performed in software by the CPU.
The Indy Graphics implementation offers several advantages in speed and flexibility over hardware-based graphics systems:
REX3 supports both flat and linear (Gouraud) shading in both color index and RGB formats with optional dithering. The peak fill rates for the REX3 are:
Pixel planes hold 8 bits of information for each pixel of the display. In single buffer mode, the framebuffer contains an 8-bit color index or 8-bit RGB (3 bits each for red and green, 2 bits for blue). Four-bit color indices or 4-bit RGB (1 bit each for red and blue, 2 bits for green) are stored in the framebuffer in double buffer mode. While this resolution may seem low, 8-bit Indy Graphics makes up for the lack of per-pixel color definition by representing color values in main memory as 20-bits each of red, green, and blue, and then using dithering techniques (implemented in the REX3 ASIC) to create on-screen image definition of near full-color quality.
Pop-up planes, holding 2 bits per pixel, are used for pop-up menus, dialog boxes, and other components of a graphical user interface that temporarily obscure the image.
Clipping ID planes, also holding 2 bits per pixel, store information about which parts of windows are visible on the display. Multiple windows can overlap each other, totally or partially obscuring their contents. Individual pixels can be masked against a window boundary, thereby supporting non-rectangular windows without imposing additional overhead on the window system. The clipping ID (CID) planes are in the framebuffer VRAM.
The framebuffer is connected to the REX3 ASIC via the RB2s. Full use of the VRAM bandwidth is realized through a 128 pixel wide data path that connects the framebuffer to the RB2 ASIC. The framebuffer displays to a 1024 x 768 or 1280 x 1024 pixel monitor.
In 24-bit Indy Graphics, pixel planes hold 24 bits of information for each pixel of the display. In single buffer mode, the framebuffer contains an 12-bit color index or 24-bit RGB (8 bits each for red, green, and blue).
As in the 8-bit graphic system, pop-up planes, holding 2 bits per pixel, are used for pop-up menus, dialog boxes, and other components of a graphical user interface that temporarily obscure the image. Clipping ID planes, also holding 2 bits per pixel, store information about which parts of windows are visible on the display.
The overlay planes on 24-bit Indy Graphics hold 8 bits per pixel. The framebuffer is connected to the REX3 ASIC as described above for 8-bit Indy Graphics.
Depending on the mode, each pixel to be displayed is formatted with an offset of n x 256 in order to index the desired section of the CMAP RAM as shown in Figure 12. This resulting lookup index is passed to the CMAP ASICs which generate 24-bit RGB values for display. These values finally enter the RAMDAC where they are gamma-corrected for the monitor by the use of a second level of lookup tables, and analog RGB output is produced.
FIGURE 12 Organization of the CMAP RAM (indexed by row).
GIO32-bis is a cross between GIO32 and GIO64. It can be considered a 32-bit version of the nonpipelined GIO64 or a GIO32 with pipelined control signals.