Graphics Rendering Tiers

A rendering tier defines a level of graphics hardware capability and performance for a device that runs a WPF application.

This topic contains the following sections.

  • Graphics Hardware
  • Rendering Tier Definitions
  • Other Resources
  • Related Topics

Graphics Hardware

The features of the graphics hardware that most impact the rendering tier levels are:

  • Video RAM The amount of video memory on the graphics hardware determines the size and number of buffers that can be used for compositing graphics.

  • Pixel Shader A pixel shader is a graphics processing function that calculates effects on a per-pixel basis. Depending on the resolution of the displayed graphics, there could be several million pixels that need to be processed for each display frame.

  • Vertex Shader A vertex shader is a graphics processing function that performs mathematical operations on the vertex data of the object.

  • Multitexture Support Multitexture support refers to the ability to apply two or more distinct textures during a blending operation on a 3D graphics object. The degree of multitexture support is determined by the number of multitexture units on the graphics hardware.

The pixel shader, vertex shader, and multitexture features are used to define specific DirectX version levels, which, in turn, are used to define the different rendering tiers in WPF.

Rendering Tier Definitions

The features of the graphics hardware determine the rendering capability of a WPF application. The WPF system defines three rendering tiers:

  • Rendering Tier 0 No graphics hardware acceleration. The DirectX version level is less than version 7.0.

  • Rendering Tier 1 Partial graphics hardware acceleration. The DirectX version level is greater than or equal to version 7.0, and lesser than version 9.0.

  • Rendering Tier 2 Most graphics features use graphics hardware acceleration. The DirectX version level is greater than or equal to version 9.0.

The Tier property allows you to retrieve the rendering tier at application run time, which allows developers to determine whether the device can support certain hardware-accelerated graphics features. Your application can then take different code paths at run time depending on the rendering tier supported by the device.

Rendering Tier 0

A rendering tier value of 0 means that there is no graphics hardware acceleration available for the application on the device. At this tier level, developers should assume that all graphics will be rendered by software with no hardware acceleration. This tier's functionality corresponds to a DirectX version that is less than 7.0.

Rendering Tier 1

A rendering tier value of 1 means that there is partial graphics hardware acceleration available on the video card. This corresponds to a DirectX version that is greater than or equal to 7.0 and less than 9.0.

The following features and capabilities are hardware accelerated for rendering tier 1:

Feature Notes

2D rendering

Most 2D rendering is supported.

3D rasterization

Most 3D rasterization is supported. However, WPF will use software to calculate vertex light intensities, which are then passed to the hardware as a vertex color. This means that lighting is much slower on tier 1.

3D anisotrophic filtering

When the rendering tier >= 1, WPF attempts to use anisotrophic filtering when rendering 3D content. Anisotropic filtering refers to enhancing the image quality of textures on surfaces that are far away and steeply angled with respect to the camera.

3D mip mapping

When the rendering tier >= 1, WPF attempts to use mip mapping when rendering 3D content. Mip mapping improves the quality of texture rendering when a texture occupies a smaller field of view in a Viewport3D.

The following features and capabilities are not hardware accelerated for rendering tier 1:

Feature Notes

Bitmap effects

Using a bitmap effect on a visual forces the visual to be rendered without hardware acceleration.

Printed content

All printed content is rendered using the WPF software pipeline.

Rasterized content using a RenderTargetBitmap object

All content rendered using the Render method of RenderTargetBitmap.

Tiled content that uses TileBrush

Any tiled content in which the TileMode property of the TileBrush is set to Tile.

Surfaces that exceed the maximum texture size of the graphics hardware

Most video cards do not support surfaces larger than 2048x2048 or 4096x4096 pixels in size.

Any operation whose video RAM requirement exceeds the memory of the graphics hardware

You can monitor application video RAM usage by using the Perforator tool that is included with the Windows SDK.

Layered windows

Layered windows allow WPF applications to render content to the screen in a non-rectangular window. On Windows Vista, layered windows are hardware accelerated. On other systems, such as Windows XP, layered windows are rendered by software with no hardware acceleration.

You can enable layered windows in WPF by setting the following Window properties:

Radial gradients

Any use of RadialGradientBrush.

3D lighting calculations

WPF performs per-vertex lighting, which means a light intensity must be calculated at each vertex for each material applied to a mesh. In tier 1, the calculations are performed by software. In tier 2, the calculations are performed in hardware.

Text rendering

Sub-pixel font rendering uses available pixel shaders on the graphics hardware.

3D anti-aliasing

Any use of 3D anti-aliasing.

The following graphics hardware features define rendering tier 1:

Feature Notes

DirectX version

Must be greater than or equal to 7.0 and less than 9.0.

Video RAM

Must be greater than or equal to 30MB.

Multitexture units

Number of units must greater than or equal to 2.

The following table lists common graphics cards that support rendering tier 1:


Manufacturer Model

ATI

Radeon models: 256, 7000, 7500, 8500, 9000, 9100, 9200, and 9250

Intel

Intel Extreme Graphics models: 845G, 845GE, 845GL, and 845GV

Intel Extreme Graphics II models: 852GME, 855GM, 855GME, 865G, and 865GV

NVidia

GeForce 256

GeForce2 models: GTS, MX, MX100, MX200, MX400, Pro, Ti, and Ultra

GeForce3 models: Ti200 and Ti500

GeForce4 models: MX420, MX440, MX460, MX4000, Ti4200, Ti4400, Ti4600, and Ti4800

Rendering Tier 2

A rendering tier value of 2 means that most of the graphics features of WPF should use hardware acceleration provided the necessary system resources have not been exhausted. This corresponds to DirectX version that is greater than or equal to 9.0.

The following features and capabilities are hardware accelerated for rendering tier 2:

Feature Notes

Tier 1 features

Includes all tier 1 features.

Radial gradients

While supported, avoid the use of RadialGradientBrush on large objects.

3D lighting calculations

WPF performs per-vertex lighting, which means a light intensity must be calculated at each vertex for each material applied to a mesh. In tier 1, the calculations are performed by software. In tier 2, the calculations are performed in hardware.

Text rendering

Sub-pixel font rendering uses available pixel shaders on the graphics hardware.

3D anti-aliasing

3D anti-aliasing is only supported on Windows Vista.

The following features and capabilities are not hardware accelerated for rendering tier 2:

Feature Notes

Bitmap effects

Using a bitmap effect on a visual forces the visual to be rendered without hardware acceleration.

Printed content

All printed content is rendered using the WPF software pipeline.

Rasterized content that uses RenderTargetBitmap

Any content rendered using the Render method of RenderTargetBitmap.

Tiled content that uses TileBrush

Any tiled content in which the TileMode property of the TileBrush is set to Tile.

Surfaces that exceed the maximum texture size of the graphics hardware

For most graphics hardware, large surfaces are 2048x2048 or 4096x4096 pixels in size.

Any operation whose video RAM requirement exceeds the memory of the graphics hardware

You can monitor application video RAM usage by using the Perforator tool that is included with the Windows SDK.

Layered windows

Layered windows allow WPF applications to render content to the screen in a non-rectangular window. On Windows Vista, layered windows are hardware accelerated. On other systems, such as Windows XP, layered windows are rendered by software with no hardware acceleration.

You can enable layered windows in WPF by setting the following Window properties:

  • WindowStyle = None

  • AllowsTransparency = true

  • Background = Transparent

The following graphics hardware features define rendering tier 2:

Feature Notes

DirectX version

Must be greater than or equal to 9.0.

Video RAM

Must be greater than or equal to 120MB.

Pixel shader

Version level must greater than or equal to 2.0.

Vertex shader

Version level must greater than or equal to 2.0.

Multitexture units

Number of units must greater than or equal to 4.

The following table lists common graphics cards that support rendering tier 2:


Manufacturer Model

ATI

Radeon models: 9550, 9600, 9800, and X-series

Intel

Intel GMA900 models: 915G

Intel GMA950 models: 945G

NVidia

Geforce FX-series, 6xxx-series, and 7xxx-series

Other Resources

The following resources can help you analyze the performance characteristics of your WPF application.

Graphics Rendering Registry Settings

WPF provides four registry settings for controlling WPF rendering:

Setting Description

Disable Hardware Acceleration Option

Specifies whether hardware acceleration should be enabled.

Maximum Multisample Value

Specifies the degree of multisampling for antialiasing 3-D content.

Required Video Driver Date Setting

Specifies whether the system disables hardware acceleration for drivers released before November 2004.

Use Reference Rasterizer Option

Specifies whether WPF should use the reference rasterizer.

These settings can be accessed by any external configuration utility that knows how to reference the WPF registry settings. These settings can also be created or modified by accessing the values directly by using the Windows Registry Editor. For more information, see Graphics Rendering Registry Settings.

WPF Performance Profiling Tools

WPF provides a suite of performance profiling tools that allow you to analyze the run-time behavior of your application and determine the types of performance optimizations you can apply. The following table lists the five performance profiling tools that are included in the Windows SDK tool, WPFPerf:

Tool Description

Event Trace

Use for analyzing events and generating event log files.

Perforator

Use for analyzing rendering behavior.

Trace Viewer

Record, display, and browse Event Tracing for Windows (ETW) log files in a WPF user-interface format.

Visual Profiler

Use for profiling the use of WPF services, such as layout and event handling, by elements in the visual tree.

Working Set Viewer

Use for analyzing the working set characteristics of your application.

The Visual Profiler tool suite provides a rich, graphical view of performance data. In this screenshot, the CPU Usage section of the Visual Profiler gives you a precise breakdown of an object's use of WPF services, such as rendering and layout.


Visual Profiler display output

Visual Profiler display output

For more information on WPF performance tools, see Performance Profiling Tools for WPF.

DirectX Diagnostic Tool

The DirectX Diagnostic Tool, Dxdiag.exe, is designed to help you troubleshoot DirectX-related issues. The default installation folder for the DirectX Diagnostic Tool is:

~\Windows\System32

When you run the DirectX Diagnostic Tool, the main window contains a set of tabs that allow you to display and diagnose DirectX-related information. For example, the System tab provides system information about your computer and specifies the version of DirectX that is installed on your computer.


DirectX Diagnostic Tool main window

DirectX Diagnostic Tool main window

See Also

Reference

RenderCapability
RenderOptions

Concepts

Optimizing WPF Application Performance
Graphics Rendering Registry Settings

Other Resources

Performance Profiling Tools for WPF