in what Matrox calls a "DualBus" organization. Each bus is unidirectional and is designed to speed data transfer to and from the functional units within the chip. By doubling the internal data path with two separate buses instead of just a wider single bus, Matrox reduced latencies in data transfer by improving overall bus efficiency. The memory interface was 64-bit. G200 supported full 32-bit color depth rendering which substantially pushed the image quality upwards by eliminating dithering artifacts caused by the then-more-typical 16-bit color depth. Matrox called their technology Vibrant Color Quality (VCQ). The chip also supported features such as trilinear mip-map filtering and anti-aliasing (though this was rarely used). The G200 could render 3D at all resolutions supported in 2D. Architecturally, the 3D pipeline was laid out as a single pixel pipeline with a single texture management unit. The core contained a RISC processor called the "WARP core", that implemented a triangle setup engine in microcode. G200 was Matrox's first graphics processor to require added cooling in the form of a heatsink. Performance With regards to 2D, G200 was excellent in speed and delivered Matrox's renowned analog signal quality. The G200 bested the older Millennium II in almost every area except extremely high resolutions. With 3D, it scored similar to but generally behind a single Voodoo2 in Direct3D, and was slower than NVIDIA Riva TNT and S3 Savage 3D. However, it was not far behind and was certainly competitive. G200's 3D image quality was considered one of the best due to its support of 32-bit color depth (assuming driver bugs weren't a problem). G200's biggest problem was its OpenGL support. Throughout most of its life G200 had to get by, in popular games such as Quake II, with a slow OpenGL-to-Direct3D wrapper driver. This was a layer that translated OpenGL to run on the Direct3D driver. This hurt G200's performance dramatically in these games and caused a lot of controversy over continuing delays and promises from Matrox. In fact, it would not be until well into the life of G200's successor, G400, that the OpenGL driver would finally be mature and fast. Early drivers had some problems with Direct3D as well. In Unreal, for example, there were problems with distortions on the ground textures caused by a bug with the board's subpixel accuracy function. There were also some problems with mip-mapping causing flickering in textures. As drivers matured these