Experimenting with Render States

Pre-requisites:

If you are analyzing an OpenGL* ES application, the target system to test against must be connected to your host system. This is required to calculate metrics data. Metrics data is only available for devices based on the Intel® Processor Graphics.

You can run experiments to see the effect that changing render states may have in terms of visual impact and performance time of the frame. These experiments simplify the stages of the graphics pipeline that often require a significant percentage of the total number of GPU cycles. The modification of these render states happens within the graphics driver itself, so you can see the results of these experiments without changing your application code.

Graphics Frame Analyzer provides the following experiments:

  • 2x2 Textures
  • 1x1 Scissor Rect
  • Simple Fragment Shader - only available for OpenGL* ES 2.0 or higher and OpenGL 3.2 or higher (Core Profile)
  • Disable Erg(s)
  • Shader Precision

Use these experiments to isolate potential performance bottlenecks in your application. If a certain experiment significantly improves the performance of your application, you should examine what your application is doing at this pipeline stage that might cause the slowdown.

NOTE

You can only perform experiments if metrics data is available for your target system. Otherwise, the Experiments pane is hidden.

To run experiments:

  1. Select one or more ergs in the Bar chart that represent a potential bottleneck.
  2. Toggle the supported experiment between "on" and "off". You can run multiple experiments at the same time on the selected ergs.
    The Render Target in the Output section of the Resource bar update to reflect the visual changes caused by enabling/disabling the experiments. Graphics Frame Analyzer also recalculates the metrics data and displays the updated results in the Overview tab.

2x2 Textures

Use the Texture 2x2 experiment to identify potential performance bottlenecks caused by texture maps used in your application. All textures for a scene are replaced with 2x2 texture containing four different colors.

If using this experiment significantly improves the frame rate, this is an indicator that the application is bound to memory bandwidth, or there is an excessive amount of sampling in fragment shaders.

1x1 Scissor Rect

The 1x1 Scissor Rect experiment bypasses pixel processing from the rendering pipeline: if the frame rate does not increase when this experiment is enabled, then 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.

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 FS

The Simple FS experiment replaces every fragment shader with the fragment shader that writes a constant color to the render target.

If the frame rate shows a large increase with this experiment enabled, this is an indicator that the performance slowdown is caused by fragment shader computation and/or texture sampling.

Disable Erg(s)

Use this experiment to keep the selected ergs from being rendered. This experiment can help you test scene efficiency.

Shader Precision

Use this experiment to select precision level for all shader code variables used in the selected ergs and test your shader code efficiency. You can choose between low precision (lowp), medium precision (mediump), and high precision (highp) values. Click the default button to restore the original settings.

See Also

Graphics Frame Analyzer Window: Profiling View

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