You can run experiments to see the effect that changing state overrides has both visually and in rendering time.
The Intel® GPA Frame Analyzer provides the following state override modes:
To run experiments:
- Select an erg, an arbitrary set of ergs, or all ergs in the frame, in the Visualization panel or in the Render Target Viewer panel.
- Open the Experiments Tab.
- Toggle any of the supported state override modes between “on” and “off”. You can run multiple experiments at the same time on the selected ergs.
- To see the result of applying an override mode(s), go to the Render Target Viewer panel and the Frame Overview and Details tabs.
- To remove experiments’ results, uncheck the selected override modes. The previous frame will be returned.
State overrides are used to simplify those stages of the graphics pipeline that often require a significant percentage of the total GPU cycles. The modification of these render states happens within the graphics driver itself, such that the graphics application is not aware of these changes (and you can see the results of these experiments without changing your application code).
Use these override modes to isolate potential performance bottlenecks in your application. If using a certain override mode significantly improves the performance of your application in rendering a specific frame, then you should examine what your application is doing in this stage of the pipeline that might cause this slowdown.
When analyzing a game that includes multiple D3D devices, Intel® GPA Frame Analyzer only displays ergs associated with the first device that Intel® GPA encounters in the stream of DirectX* calls in your capture file. However, when running experiments Intel GPA Frame Analyzer still renders all ergs for all D3D devices. Since Intel® GPA displays total rendering time on a per-region basis, the total rendering time for each region is accurate if you interleave calls to all D3D devices within a region. However, Intel® GPA may not capture all of the rendering time when you render outside the regions defined by the first device to the other devices.
Use the 2×2 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 2×2 pixel textures. Usually the Intel GPA 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’s texture cache for that scene.
The 1×1 Scissor Rect override mode is a DirectX* API override. However, the implementation of this override mode is highly dependent upon your specific graphics configuration; in particular, scissoring may occur either before or after the pixel shader stage.
This is how 1×1 Scissor Rect works on the Intel® HD Graphics X4500: scissoring occurs prior to the pixel shader rendering stage, and all pixel shader rendering targets a single pixel; this effectively removes all pixel shader, texturing, and other rendering times.
The Simple Pixel Shader experiment replaces the pixel shaders in your frame with a simple pixel shader, which writes a constant color to the render target for every selected erg. 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.
Enabling this experiment for ergs that do not reference a pixel shader in your original scene may actually result in a slower rendering time when using this override mode. This may seem counter-intuitive, but realize that all ergs are now forced to use a pixel shader, and this pixel shader may be slower than the fixed function shader that is used when an erg does not have an explicit pixel shader associated with it.
Use this option to keep the selected ergs from being rendered. Use this option to test scene efficiency.