We wrote in the GeForce 7800 GTX and 7800 GT articles, that they feature low quality anisotropic filtering generating shimmering effects in textures. It is more or less obvious depending on the game or viewing angle. More details and videos showing this problem are available from 3DCenter.de website.
NVIDIA has decided to react quickly and releases drivers with corrected filtering. Filtering quality is back to the level of the 6800. It is better but not perfect as the 6800 also suffered from shimmering effect in textures even if it was lower. It is still visible with some games with 6800 and 7800 cards in standard mode. Is the problem minimized but still here? Yes and no as with the 6800, High Quality activation considerably reduced shimmering effect. It was most of the time invisible in games except for a few ones. Activating this mode with the 7800 and new drivers also reduces shimmering effect to an acceptable level. We verified this with the new ForceWare 78.03 beta drivers available from nZone’s website.
7800's filtering corrections as well as HQ mode reduce performances but not as drastically as one might have expected. We verified this with a special level of UT2003/2004 only restricted by filtering in 1920x1440 and in AF8X :

The 7800 filtering problem only provided minimum or even zero performance gain in games as they are not fully filtering bound. This is so obvious that we even ask ourselves why NVIDIA would have implemented such an optimisation. NVIDIA’s answer is that it wasn’t an optimisation, but a bug. Choosing HQ drops performances by 10% but corrects the problem in practice. In other words, with new drivers and good configuration, it is possible to reduce textures shimmering effects almost to zero if you accept an average performance drop of less than 10% in games. Some games however suffer from bigger performance losses with up to 30% for some levels of UT2004. We can’t explain the reason of such performance gaps. All in all, with our usual test panel, performance drop is 5-6%.
In the end, the problem can be avoided by activating HQ mode in the driver control panel and with a small performance reduction. It would be best however if the shimmering effect disappear even in standard mode and it could be the case soon as NVIDIA continues to work on drivers to improve filtering quality.
Reason of optimisationsFor graphic cards manufacturers, and even if games need more calculation power on pixel shader’s level, filtering is a key element for performances and possibilities to optimise it are very interesting and numerous. Without optimisations, 16x anisotropic filtering is 16 times slower than trilinear filtering which is already two times slower than bilinear filtering. It means that advanced filtering would be unusable if all pixels had to go through the entire filtering process. In a pixel shader, if filtering takes more time than the scheduler is expecting, and it happens with AF filtering when memory bandwidth restricts cache textures supplying, calculation units stall. It is especially true for NVIDIA which has a very flexible architecture but which is subject to this type of problems. Optimisations are developed to avoid useless filtering for each pixel. Some optimisations are very simple to develop and others require very complex algorithms. Besides optimisations, there are also compromises on the graphic quality. Some of them aren’t optimisations but quality compromises such as anisotropic filtering depending on viewing angle introduced by ATI with the Radeon 8500. Because of the performance gain, NVIDIA also included it in the 6800 and 7800.
Without optimisations other than simplistic ones and AF filtering optimisation according to the angle, here is an idea of filtering applied to each pixel for one image:

In AF16X, as you have probably noticed, only a very small part of the image benefits from AF16X filtering. It is logical as only a small part needs it. This represents on average 3 bilinear sampling per pixels (1 for bilinear and 32 for trilinear with AF16X) for NVIDIA and ATI.
Except for trivial optimisation, some other ones clearly increase performances like the reduction of the number of pixels receiving trilinear filtering. We already mentioned it several times as ATI and NVIDIA uses it. It is however less important once AF is used as trilinear filtering is useless for the majority of pixels. Once AF is processed, it is interesting to reduce the number of samplings even if only a few pixels are processed. These few pixels will have a filtering 32x slower or even more as the cache texture efficiency is reduced when filtering is more complex. In other words, 2% of pixels beneficiating from AF16x can need more to be calculated than 50% beneficiating from simple bilinear!
Let’s take an example: instead of 4 samplings for AF4X why not only make 3? Is it cheating? Not really. Sometime it is legitimate to do that and sometime it produces and underfiltering effect which can causes shimmering effects. It is maybe the type of optimisation introduced by NVIDIA with the 6800 and amplified with the 7800.

For this example, if four samplings are included in a texture zone representing 10 texels, one can suppose that one of the four is useless as the graphic shows. With only 3 samplings, one can read 10 texels and, if they are correctly combined, obtain the same result. It is probably here that the optimisation isn’t accurate. It is very complex to correctly combine 3 optimised samplings. We can’t know fore sure if NVIDIA used this type of optimisation as both NVIDIA and ATI keep their recipes secret for filtering. This is however an example of the filtering problematic: there is room for optimisations but they are often very complex to develop on the software but also hardware level.