DOS Days

2D and 3D Graphics Card Technology

In part 1 I started with the 1980s transition from MDA, CGA and EGA into the VGA era, and then with the VESA VBE standards, seeing how VGA got extended to Super VGA resolutions.

The Move to 2D Graphics Acceleration

The term graphics accelerator started cropping up during the Windows 3.0 time period around 1991. The SVGA cards at the time worked on the basis of a simple framebuffer with minimal built-in processing capability. Moving a graphical image from one part of the screen to another (such as moving a window in Microsoft Windows) involved the CPU reading data from the video framebuffer via the ISA bus, into main memory, and then writing it back again (also using the ISA bus). Use of the slow ISA bus was the real bottleneck here, and this was made worse the higher the resolution, since more pixels needed to be moved, and hence more data had to be read and written.

IBM themselves produced arguably the first Windows accelerator with the introduction of the 8514 back in 1987 alongside the brand new PS/2 line of computers. These got their performance gains with the inclusion of a separate 'XGA' chip either on the motherboard or on a separate expansion card which was connected to the main VGA card via a pass-through edge connector. They were very expensive cards, however, and not widely adopted.

Orchid and ATI were some of the first manufacturers to release graphics cards optimised for Windows. At the time, typical SVGA cards would redraw the graphical desktop of Windows painfully slowly. Dedicated to '2D' acceleration, the Orchid Fahrenheit 1280 and ATI Graphics Ultra could handle line drawing, shape drawing and filling, and BitBlt operations in hardware, taking the strain off the host PC's CPU. A lot depended on how good the Windows drivers were, but these cards effectively brought a fast graphics coprocessor and fast dual-ported VRAM (video RAM) to the table. This dual-porting meant the graphics coprocessor could write to VRAM at the same time as the RAMDAC could read data. The memory was typically 512 KB or 1 MB in capacity. By comparison with the fastest SVGA cards on the market in 1991, these two typically ran these 2D graphical operations at between 5 and 10 times the speed. The Orchid made use of S3's Carrera 86C911 chip, whereas ATi produced their own clone of the IBM 8514 with their own enhancements added, called the Mach8.

During the year 1992, no less than 10 new accelerator chips were launched. S3 took their 86C911 chip which could only handle up to 16-bit transfers and launched the 86C924 which could handle up to 24-bit colour depth. They also launched the 86C801, 805 and 928 chips which supported 32-bit image transfers and 24-bit colour. The 805 and 928 were optimised to use the new VESA Local Bus (VLB). Meanwhile, ATi released the new Mach32 chip which directly competed with S3's range, offering 32-bit transfers over VLB. Other accelerator chips that hit the market this year were Cirrus Logic's 82C481, Tseng Labs' ET4000/W32, Weitek's 5186 and Western Digital's WD90C31-LR.

With all this competition in the market, prices came tumbling down, though compared to simple frame buffer SVGA cards, you still paid a premium. Typically $300 to $500 would buy you a 1 MB graphics accelerator card. The majority of these accelerator chips still worked on the ISA bus but supported VLB, offering card manufacturers several choices when implementing one of these new accelerator chips. For screen resolutions of 640 x 480 or 800 x 600 in 16 colours, ISA-based cards worked fine. Increase the colours to 256 however, the move to VLB could provide approximately a 3x performance boost in Windows. It was also apparent that VLB card performance was increased further on faster CPUs, showing that the ISA bus became the bottleneck pretty soon as you increased CPU frequency.

3D Acceleration

In the mid 90s, 2D acceleration was a foregone conclusion - every card needed to support Windows, and for that they needed 2D acceleration. 3D gaming was starting to dominate, and with it, the need for true 3D acceleration - that is, hardware support for the methods developers were using to draw and move polygons on-screen. By pushing this technology onto the graphics card it left the CPU to manage the easier tasks.

First generation 3D accelerators implemented rasterization directly in hardware (on the graphics card).

Second generation 3D technology, e.g. Voodoo 2, Rendition V2200, etc, added more rendering effects, still leaving the geometry and lighting to be executed by the computer's main processor.

What Factors Affect Performance?

  • Your CPU - Processor speed matters more than anything when it comes to framerate, so don't expect your 486 DX-2/66 to run Unreal smoothly just because you bought a Voodoo 2 card.
  • System RAM - All game code runs through system RAM, so make sure your machine has enough before you look into 3D accelerator cards. The minimum in late 1998 was 32 MB, but like everything else on your PC, more is better.
  • Graphics Card RAM - 4MB, 8MB, 16MB - simple enough, the more RAM the better.
  • Driver version/type - Drivers are crucial and some and definitely better. For instance, the Diamond Monster 3D II had the best drivers of any Voodoo 2 card, and consequently it ran games faster than all the rest.

 

An A-Z of 3D Acceleration Terminology

Anisotropic Filtering

This is a type of texture filtering that models texels (the pixels that comprise a texture map) as ellipses instead of the traditional form of circles. This process results in less "blurring" than bilinear or trilinear texture filtering, leaving textures crisp even at distance.

Bilinear Filtering

A filtering process that smoothes polygons so they don't look chunky or blocky.

Bump Mapping

A process by which a surface appears to take on a more 3D aspect (for example, to look bumpy). This technique is very effective and is said to be used for the character's face model in the Edward James Olmos 3D shooter.

Full-Scene Anti-Aliasing

A process by which all jagged lines from surfaces are interpolated and smoothed. The result is a more natural-looking image.

Multitexturing

Applying multiple textures on a single surface. For example, in Quake II, multitexturing is used to apply a texture to a surface and then apply a second transparent lighting texture on top of that to "fake" the effects of realtime lighting.


Before Multitexturing


After Multitexturing

Proprietary API

An application programming interface that is written exclusively for a piece of hardware. For example, 3dfx's GLiDE API essentially allows developers to create games that take advantage of the specific strengths of the Voodoo and Voodoo 2 hardware.

Voxel Smoothing

With voxels, everything is a cube. This can make them look blocky and unnatural. Voxel smoothing is the process of smoothing out these cubes through the use of ramps, shims and fill gaps.

 
 

Rasterisation

The process by which pixels are drawn on the screen.

SLI Configuration

Two Voodoo 2 cards connected together for a powerhouse gaming setup. Some high-end setups contain two Voodoo 2 chipsets in SLI on a single board.

Trilinear Mip Mapping

To enhance processing speeds, developers will use several different detail levels for each texture. For instance, when you approach a wall in Unreal, at the furthermost point the texture will be a very low-resolution image. As you get closer to the wall the computer then calls up a higher-resolution texture and merges the two. This keeps objects from looking pixelated up-close - remember Doom? Trilinear mip mapping is the use of three of these textures (a far, medium and near texture) so you will notice a smooth transition of a texture as you approach from a distance.

True AGP Support

Hardware that takes advantage of the Accelerated Graphics Port (AGP), enabling faster transfer of information so games can utilise more textures and visual information. AGP-supporting games such as G-Police and Incoming include more graphic treats like animated textures and more intense explosions.

Vector Quantization (VQ) and Texture Compression

Compression program that reduces the memory requirements for textures by about eight to one.