ATI's Optimized Texture Filtering Called Into Question

Brilinear - Simply Filter Less, Continued

This behavior was finally discovered in laborious tests by the Computerbase website. They found out that the game Call Of Duty delivers a frame rate on an X800 that is considerably poorer with colored mipmaps than without. After this, the authors found out in special image comparisons that the card uses a brilinear filter, at least when reproducing textures normally.

Here's what Computerbase did to prove that ATi is using a filter optimization. They made one screenshot with bilinear filtering and one with trilinear. This should show huge differences between the mipmap transitions. That's what the 9800XT shows. The X800 only shows very a small transition - it's filtering brilinearly.

Small differences to bilinear - ATi's X800 does not use full trilinear filtering.

Big differences to bilinear - the older 9800XT provides full trilinear filtering.

Even before ATI responded to this, we asked ID Software, on whose 3D engine the game Call Of Duty is based, about this topic and the different performance with and without colored mipmaps:

Swipe to scroll horizontally
This is indeed a "cheat" that both major vendors now do. Instead of always sampling the two adjacent mip map levels and doing a full blend between them, they have plateaus where only a single mip level is sampled, reducing the average samples from 8 to about 6.It is actually a pretty sensible performance enhancement, with minimal visual issues. However, having drivers analyze mip map uploads to hide the cheat is an unfortunate consequence.The colored mip map option in Q3 should have absolutely zero performance impact in the absence of performance options like this.John Carmack

This makes it clear that the performance in the Q3 engine with and without colored mipmaps should be absolutely identical. Tests with NVIDIA's 6800 confirm this. The Radeon X800, however, still sacrifices performance. Quite a different story in UT2003/2004. Here, all cards suffer loss of performance. That, however, is due to the way in which it is implemented. Here's what Epic has to say about this:

Swipe to scroll horizontally
xxx @ NVIDIA just pointed out that filling textures with a constant color/alpha might cause more pixels to be written to the framebuffer (passing alpha test), which could affect performance. Totally forgot about that one and I should probably change the code to leave the alpha channel alone for our next generation engine :)