Texture Swapping - A forgotten problem, for now

Texture swapping is not nearly as big as a problem now as it was a short as 2 months ago. To understand why, we first must examine what exactly texture swapping is.

Texture swapping occurs when the amount of memory found on the video card is not large enough to fit a whole scene inside of it. In order to properly display the scene, it is necessary to collect a storage area from another place. In order to do this, the video card calls upon the system memory as a storage area. This method of rendering is usually seen at high resolutions and 32-bit color, for it is in these modes that the amount of data necessary to render a scene is tremendous. The overflowing textures are pushed from the video card to the system memory, as needed, and sequestered back when necessary. Ideally, this method of rendering would result in no performance loss, however we all know that the computer world is far from ideal. Similar to the bottleneck faced when passing data from the GPU to the on card memory, passing data to system memory also requires a comparatively slow data path. The problem is that, unlike the card's memory path, the path taken to pass information to the system, the AGP path, is much slower.

Just how much slower? Let's take a look at the peak bandwidth of the different AGP speed standards. At AGP 1x mode, we can calculate the peak memory bandwidth in the same manner we did before. We take the AGP clock speed, which is 66 MHz, and multiply this by the AGP mode (1x). Next, multiply this by the AGP bus width (32 bits) and divide by 8 to convert to bytes. Calculating this out, we get a bandwidth of 266 MB/s, lagging way behind the already slow 5.3 GB/s peak bandwidth found in the on card memory system. Performing the same set of operations and replacing the mode numbers, we calculate the peak memory bandwidth of the AGP 2x system to be 533 MB/s and the AGP 4x system to be 1.06 GB/s. Even at the highest AGP speed rating, we see that the AGP bus possesses only 20% of the power found in the GeForce 2 GTS's memory bus. We saw above how limiting the 5.3 GB/s peak bandwidth was under normal game play. Imagine if the system memory was needed on a regular basis for rendering. Gameplay would all but cease.

Luckily for us, NVIDIA has found a way around this problem, at least for the moment. The GeForce 2 GTS did not only bring higher memory bus speeds to the GeForce line, but it also brought the release of a new driver set: the 5.xx series drivers. Besides support for the new processor and its advanced features, the 5.xx series drivers also introduced a type of texture compression known as S3TC compression. Using a hardware based algorithm, S3TC compression takes the information to be passed to memory and compresses it and expands it as needed. What this does is not only decrease the amount of information that must be passed to and from the memory, it also decreases the footprint of a given scene. By implementing this feature, NVIDIA was able to weasel their way around AGP texturing by essentially ensuring that the 32 MB of on card RAM would be sufficient to store the compressed information. This feature, in fact, does turn out to reverse the effects of AGP texturing seen in our 64 MB GeForce review.

Results of GeForce2 GTS Limitations - The Memory Problems with Compression