Experimenting with Render States

With Graphics Frame Analyzer, you can run experiments to see how changing render states may impact your frame in terms of visual effects and execution time. These experiments simplify the graphics pipeline stages that often require a significant percentage of the total number of GPU cycles. You can see the results of the experiments without changing your application code.

Graphics Frame Analyzer provides the following experiments:

Use these experiments to isolate potential performance bottlenecks in your application. If a certain experiment significantly improves you application performance, you should analyze what is causing a slowdown in your application at this particular pipeline stage.

To run experiments:

  1. In the Main bar chart, select one or more events that represent a potential bottleneck.

  2. In the Experiments pane, toggle the available experiments between "on" and "off". You can run multiple experiments at the same time on the selected events.
    Graphics Frame Analyzer recalculates the metrics data and displays the new results. The Render Target in the Output section of the Resource List also gets updated to reflect the visual changes caused by enabling/disabling the experiments. To see the changes clearer, use the following Output Texture Visualization modes:

  • Current - shows the render target with modifications. If no experiments are applied, the current state is equal to the original state.
  • Original - shows the render target without modifications.
  • Diff - shows the difference between the current and original modes.

Textures 2x2

Use the 2x2 Textures override mode to help identify potential performance bottlenecks in your use of texture maps within the application. All textures for a scene are replaced with simple 2x2 pixel textures. Graphics Frame Analyzer uses a simple halftone or a colorized bitmap for this option.

If using this override mode significantly improves the frame rate, then the GPU may be thrashing while loading texture maps from the CPU instead of using a cached version of that texture map from the GPU. If the total size of your texture maps is high for a scene, consider reducing one of the texture maps so that all the texture maps fit into the GPU texture cache for that scene.

Scissor Rect 1x1

The 1x1 Scissor Rect experiment bypasses pixel processing from the rendering pipeline. If the frame rate does not increase when this experiment is enabled, a complex geometry or vertex shader is a bottleneck. In this case, proceed to analyzing the geometry of the frame, or experiment with shader code. If the GPU duration metric drops significantly, rasterization is likely to be a bottleneck.

However, the effect of this override mode is driver/graphics hardware vendor specific and depends upon whether scissoring on your device occurs prior to or after the pixel shader stage.

Simple Pixel Shader

The Simple Pixel Shader experiment replaces the pixel shaders in your frame with a simple pixel shader, which writes a constant color to all the affected render targets for each selected event. If the frame rate significantly decreases as a result of this experiment, you may want to perform further analysis of your shaders to see whether you can reduce rendering time without detracting from the visual quality of your scene.

Disable Event(s)

This experiment keeps the selected events from being rendered. Use this experiment to test scene efficiency.

 

See Also

Modify Render States of the Graphics Pipeline

For more complete information about compiler optimizations, see our Optimization Notice.