ATI plugin for Microsoft’s PIX performance analysis tool
The ATI PIX Plugin is a plugin for Microsoft's PIX (Performance Investigator for DirectX®) tool. This is a performance analysis tool that Microsoft has introduced with the DirectX 9 SDK.
Installation Instructions
- Copy ATIPIXPlugin.PIXPlugin into the folder where the PIXWin.exe is located. This should be [MSSDK root]\Utilities\PIX.
- Run PIX.
- Select or create an experiment (refer to the SDK documentation for instructions on using PIX).
- Click on “More Options” and create an Action and set its type to “Set Per-Frame Counters”
- Click on the “Customize” button
- Expand the “Plugin Counters” item in the “All available counters” list box in the PIX Counters dialog box.
- “ATI PIX Plugin” should appear in the list. Click on it to expand it.
- Highlight each counter you would like to use and click on the “Add>>” button to add it to the list of chosen counters.
- Run a profiling session following PIX instructions
Counter Descriptions
|
Counter Name |
Description |
Performance Increase* |
|
Hardware Busy |
Percent time VPU is busy |
- |
|
Vertex Path Stalled |
Percent time vertex path is stalled by pixel path |
- |
|
Pre-Clip Vertex Count |
Vertex count before clipping |
|
|
Pre-Clip Primitive Count |
Primitive count before clipping |
|
|
Pre-Cull Vertex Count |
Vertex count before culling |
|
| Pre-Cull Primitive Count |
Primitive count before culling |
|
|
Post-Cull Triangle Count |
Triangle count after culling |
|
|
Total Texel Count |
Total texels |
|
|
Texel Fetch Stalled |
Percent time texel fetch is stalled |
|
|
Pixels Passed Z Test |
Count of pixels that passed Z test |
|
|
Pixels Failed Z Test |
Count of pixels that failed Z test |
|
|
Total Pixels Processed |
Total pixels processed through main pixel pipeline |
|
|
Total Pixels Drawn |
Total pixels drawn |
|
|
Total Pixels Blended |
Total pixels blended |
|
|
Frame Rate |
Frames per second |
- |
|
Textures Created |
Textures created |
|
|
Local Texture Memory used |
Local Texture Memory used |
- |
|
AGP texture memory used |
AGP texture memory used |
|
|
Textures uploaded |
Texture data uploaded |
|
|
VB/IB uploaded |
Vertex and index buffer data uploaded |
|
|
Prims per RS change |
Primitives rendered per render state change |
|
|
Prims per TS change |
Primitives rendered per texture state change |
|
|
Prims per VS change |
Primitives rendered per vertex shader change |
|
|
Prims per PS change |
Primitives rendered per pixel shader change |
|
|
Prims per VSC change |
Primitives rendered per vertex shader constant
change |
|
|
Prims per PSC change |
Primitives rendered per pixel shader constant
change |
|
|
Stalls on Flip |
Stalls on frame buffer flip |
|
|
Stalls on VB |
Stalls on vertex buffer |
|
* A green up arrow (
) indicates that larger values for this counter will usually increase graphics performance. A red down arrow (
) indicates that larger values for this counter will usually decrease graphics performance.
Performance Analysis and Optimization Discussion
The “Hardware Busy” counter represents the CPU vs. GPU balance and gives you an overall snapshot of how heavily your application is using the graphics hardware.
The “Vertex Path Stalled” counter represents the percentage of time the GPU vertex engine is waiting because of pixel processing.
The primitive “Count” counters (i.e. Post-TnL Triangle Count) give a rough idea of how much geometry is being processed by the GPU; therefore lower is better. Comparing the Pre-TnL counters with the Post-TnL counters can show you how efficient your culling algorithm is; in other words: how much geometry are you sending to the card that is being clipped out?
The “Pixels Passed Z Test” counter represents the exact number of pixels which pass the Z test. This counter can give you an idea of how effective your sorting algorithm is in different situations.
The “Prims per RS/TS/VS/PS/VSC/PSC change” counters indicate how well you are batching your primitives. Larger batch sizes should contribute to higher performance.
If the “Stalls on Flip” counter is non-zero it could mean that you are locking the frame buffer which is extremely bad.
If the “Stalls on VB” counter is non-zero, you might be locking dynamic vertex buffers without the DISCARD/NOOVERWRITE flags; this will negatively affect performance.
System Requirements:
To use the ATI PIX plugin, you should have the latest drivers from ATI and the June 2006 DirectX SDK (or later) installed. Most of the recent ATI cards are supported including: RADEON® 9500 to X1900, and FireGL™ X1/X2/T2/X3/Vxxx. We recommend Windows® XP SP2 but other cards and versions of Windows may work as well.
Support:
To report a bug or request a feature for the ATI PIX plugin, you may contact the ATI Developer Relations group by emailing devrel@ati.com. Also, please visit http://www.ati.com/developer for more information and tools.
Download:
ATIPIXPlugin.zip