# RIVA 128

The RIVA 128, or "NV3", was a consumer graphics processing unit created in 1997 by Nvidia. It was the first nVidia product to integrate 3D acceleration in addition to traditional 2D and video acceleration. Its name is an acronym for Real-time Interactive Video and Animation accelerator.
The RIVA 128 followed Nvidia's less successful "NV1" accelerator and was the first product to gain Nvidia widespread recognition. It was also a major change in Nvidia's technological direction.

## History

By 1996, Nvidia was in poor shape financially. It had initially pursued a completely different type of rendering technology called quadratic texture mapping with its first product, the NV1. Then the company had spent a year trying to use its inferior technology to build the graphics chip for Sega's Dreamcast video game console. Sega finally had to pull the plug on Nvidia's project and switch vendors, but was convinced to keep Nvidia alive with a $5 million investment.
Nvidia then laid off half of its 100 employees and focused its remaining resources on developing the RIVA 128. By the time the RIVA 128 was released in August 1997, Nvidia was down to one month of payroll. This extremely desperate situation resulted in what remains "the unofficial company motto" today: "Our company is thirty days from going out of business".

## Architecture

The RIVA 128 was built to render within the Direct3D 5 and OpenGL API specifications. It was designed to accelerate Direct3D to the utmost extent possible, as a departure from Nvidia's NV1 chip. The NV1 chip had been designed for a completely different type of rendering technology called quadratic texture mapping, which is not supported by Direct3D.
The graphics accelerator consists of 3.5 million transistors built on SGS-Thomson's 5LM 350 nm fabrication process and is clocked at 100 MHz. RIVA 128 has a single pixel pipeline capable of 1 pixel per clock when sampling one texture. It is specified to output pixels at a rate of 100 million per second and 25-pixel triangles at 1.5 million per second. There are 12 KiB of on-chip memory used for pixel and vertex caches. The chip was limited to a 16-bit (Highcolor) pixel format when performing 3D acceleration and a 16-bit Z-buffer.
The 2D accelerator engine within the RIVA 128 is 128 bits wide and also operates at 100 MHz. In this "fast and wide" configuration, as Nvidia referred to it, the RIVA 128 performed admirably for GUI acceleration compared to competitors. A 32-bit hardware VESA-compliant SVGA/VGA core was implemented as well. Video acceleration aboard the chip is optimized for MPEG-2 but lacks full acceleration of that standard. Final picture output is routed through an integrated 206 MHz RAMDAC. RIVA 128 had the advantage of being a combination 2D/3D graphics chip, unlike Voodoo Graphics. This meant that the computer did not require a separate 2D card for output outside of 3D applications. It also allowed 3D rendering within a window. The ability to build a system with just one graphics card, and still have it be feature-complete for the time, made the RIVA 128 a lower-cost high-performance solution.
Nvidia equipped the RIVA 128 with 4 MiB of SGRAM, a new memory technology for the time, clocked at 100 MHz and connected to the graphics processor via a 128-bit memory bus. This provides memory bandwidth of 1.60 gigabytes per second. The memory was used in a unified memory architecture that shared the whole RAM pool with both framebuffer and texture storage. The main benefit of this, over a split design such as that on Voodoo Graphics and Voodoo², was support for 3D resolutions of 800×600 and 960×720, higher than Voodoo's 640×480.
In early 1998, Nvidia released a refreshed version called the RIVA 128 ZX. This refreshed design of NV3 increased memory support to 8 MiB and increased RAMDAC frequency to 250 MHz. These additions allowed the RIVA 128 ZX to support higher resolutions and refresh rates. The ZX version was fabricated by SGS-Thomson and TSMC, and uses an 8 MB SGRAM memory chip, clocked at 125 MHz, from Samsung Electronics.
The RIVA 128 had an AGP 1X bus interface, whereas the ZX version of it was one of the early AGP 2X parts, giving it some more marketing headroom by being on the forefront of interface technology. The graphics processor was built around Intel's AGP specification targeting the Intel 440LX chipset for the Pentium II. Nvidia designed the RIVA 128 with a maximum memory capacity of 4 MiB because, at the time, this was the cost-optimal approach for a consumer 3D accelerator. This was the case partly because of the chip's capability to store textures in off-screen system RAM in both PCI or AGP configurations.
The next major chip from Nvidia would be the RIVA TNT.

### Image quality

At the time of the RIVA 128's release, 3Dfx Voodoo Graphics had firmly established itself as the 3D hardware benchmark against which all newcomers were compared. The Voodoo was the first 3D game accelerator to offer exceptional performance and quality. The RIVA 128 was scorned for its lower quality rendering (compared to the Voodoo) and rendering errors.
With initial drivers, the RIVA 128 used per-polygon mipmapping instead of the much higher-quality, but more demanding, per-pixel variety. This caused the different texture detail levels to "pop" into place as the player moved through a game and approached each polygon, instead of allowing a seamless, gradual per-pixel transition. Nvidia eventually released drivers that allowed a per-pixel mode. Another issue with the card's texturing was its use of automated mipmap generation. While this improves visual quality and performance in games without mipmaps, it also caused unforeseen problems because it forced games to render in a way that they were not programmed for.
NV3's bilinear filtering was actually "sharper" than that of 3Dfx Voodoo Graphics. But, while it did not blur textures as much as Voodoo, it did instead add some light noise to textures, because of a lower-fidelity filtering algorithm. There were also problems with noticeable seams between polygons.
While initial drivers did present these image-quality problems, later drivers offered image quality arguably matching that of Voodoo Graphics. In addition, because the RIVA 128 can render at resolutions higher than 640×480, the card can offer quality superior to that of Voodoo Graphics, as shown in the above Quake II screenshot. The final drivers released for the RIVA 128 support per-pixel mipmapping, full-scene anti-aliasing (supersampling), and a number of options to fine-tune features in order to optimize quality and performance.

## Drivers and APIs

Drivers were, for a significant portion of the card's life, rather rough. Not only were the aforementioned Direct3D issues apparent, but the card lacked good OpenGL support. With RIVA 128, Nvidia began their quest for top-quality OpenGL support, eventually resulting in the board being a capable OpenGL performer. One major disadvantage for Nvidia was that many games during RIVA 128's lifetime used 3Dfx's proprietary Glide API. Legally, only 3Dfx cards could use 3Dfx's Glide API.
Like the competing ATI Rage Pro, RIVA 128 was never able to accelerate the popular Unreal Engine in Direct3D mode due to missing hardware features. It was, however, possible to use the engine's OpenGL renderer, but unfortunately OpenGL support was quite slow and buggy in the original Unreal Engine. Performance in Quake III Arena, a game using an engine more advanced than Unreal Engine 1, was better due to the engine having been designed for OpenGL.
Nvidia's final RIVA 128 drivers for Windows 9x include a full OpenGL driver. However, for this driver to function, Windows must be set with a desktop color depth of 16-bit.
A driver for RIVA 128 is also included in Windows 2000 and XP, but lacks 3D support. A beta driver with OpenGL support was once leaked by Nvidia but was canceled later, and there is no Windows 2000 driver for RIVA 128 on Nvidia's driver site today. Neither the beta driver nor the ones come with Windows 2000/XP could support Direct3D.

## Performance

At the time, RIVA 128 was one of the first combination 2D/3D cards that could rival Voodoo Graphics. RIVA 128's 2D capability was seen as impressive for its time and was competitive with even high-end 2D-only graphics cards in both quality and performance.

## Chipset table

| Model | Launch | Code name | Fab (nm) | Transistors (million) | Die size (mm$^2$) | Bus interface | Core clock (MHz) | Memory clock (MHz) | Core config | Fillrate | Fillrate | Fillrate | Fillrate | Memory | Memory | Memory | Memory | TDP (Watts) | Latest API support | Latest API support |
| Model | Launch | Code name | Fab (nm) | Transistors (million) | Die size (mm$^2$) | Bus interface | Core clock (MHz) | Memory clock (MHz) | Core config | MOperations/s | MPixels/s | MTexels/s | MVertices/s | Size (MB) | Bandwidth (GB/s) | Bus type | Bus width (bit) | TDP (Watts) | Direct3D | OpenGL |
| Riva 128 | August 25, 1997 | NV3 | SGS 350 nm | 4 | 90 | AGP 1x, PCI | 100 | 100 | 1:1:1 | 100 | 100 | 100 | 0 | 4 | 1.6 | SDR | 128 | ? | 5.0 | 1.0 |
| Riva 128ZX | February 23, 1998 | NV3 | SGS/TSMC 350 nm | 4 | 90 | AGP 2x, PCI | 100 | 100 | 1:1:1 | 100 | 100 | 100 | 0 | 8 | 1.6 | SDR | 128 | ? | 5.0 | 1.0 |
* ↑ Pixel pipelines: texture mapping units: render output units

## Competing chipsets

* Matrox Mystique 220
* 3DFX Voodoo Graphics, Voodoo² (3D-only boards)
* ATI Rage series (Pro was the most recent at the time)
* S3 ViRGE, Savage 3D
* Rendition Vérité V1000 & V2x00
* PowerVR PCX2