I have been doing a lot of research this week on WPF performance issues, and I have run across many blog posts that suggest that the calculation of the rendering tier value for a WPF-enabled target platform is based solely on the version of DirectX installed on the target. That’s not quite the whole story.
The minimum software and hardware requirements for each tier are as follows:
Rendering Tier | DirectX Version | Video RAM | Pixel shader | Vertex shader | Multitexture units |
0 | Older than 7.0 | - | - | - | - |
1 | Between 7.0 and 9.0 | 30 MB or more | - | - | Two or more |
2 | 9.0 or higher | 120 MB or more | Version 2.0 or higher | Version 2.0 or higher | Four or more |
Different WPF features are hardware accelerated by default according to each tier. The list of features that support hardware acceleration for each tier is as follows:
Feature | Rendering Tier 0 Hardware Acceleration Support | Rendering Tier 1 Hardware Acceleration Support | Rendering Tier 2 Hardware Acceleration Support |
2D Rendering | | X | X |
3D Anisotrophic Filtering | | X | X |
3D Anti-Aliasing | | | X |
3D Lighting Calculations | | | X |
3D Mip Mapping | | X | X |
3D Rasterization | | X | X |
Any Operation Whose Video RAM Requirement Exceeds the Memory of the Graphics Hardware | | | |
Bitmap Effects | | | |
Layered Windows | | | |
Printed Content | | | |
Radial Gradients | | | X |
Rasterized content Using a RenderTargetBitmap Object | | | |
Surfaces That Exceed the Maximum Texture Size of the Graphics Hardware | | | |
Text Rendering | | | X |
Tiled Content That Uses TiledBrush | | | |
It is important to note that this table illustrates that, even in Rendering Tier 2, not all features are hardware accelerated. Some features may be rendered using WPF’s software rendering pipeline even in Tier 2 without using hardware acceleration.
You should also be aware of the fact that it is possible for the rendering tier value to change while your WPF application is running. Changes to the supported tier are published to WPF applications through the System.Windows.Media.TierChanged event handler.