Intel® Graphics Performance Analyzers (Intel® GPA) includes a number of override modes in both the Intel GPA System Analyzer HUD and the Intel GPA Frame Analyzer. These override modes and experiments are fairly easy to understand and use (especially if you've got the Intel GPA Help File as a reference!),
But some users have found that using "Simple Pixel Shader" produces unexpected results -- using the "simple" shader actually takes longer to render than the original shaders!
The rest of this article describes why you might see unusual results, and how to "look under the hood" to detect when this is happening.
Wait a Minute... what's going on here?
Here's the setup: a game developer wants to analyze her game on a low-cost netbook system that includes a low-end graphics chipset. She runs Intel GPA System Analyzer to create a frame capture file for later analysis.
Within Intel GPA Frame Analyzer, she wants to see whether the shaders are taking up too much rendering time, so she uses the "Simple Pixel Shader" option in the experiments tab. But what Intel GPA reports is an increase in rendering time with "Simple Pixel Shader", rather than the expected decrease!
Let’s Look Under the Hood…
The Intel GPA developer team examined the user's frame capture file, and found out that the game was using DX9 mode -- on this configuration the game does not generate any pixel or vertex shaders, but instead uses the DirectX fixed function pipeline. The team verified this by loading the frame capture file into Intel GPA Frame Analyzer, and within the "shaders" tab found that no vertex or pixel shaders are present (all values are "0").
But to implement "Simple Pixel Shaders", Intel GPA substitutes a "simple" pixel shader for rendering the frame that uses the programmable pipeline, independent of how the original frame was rendered (which in this case the system used the fixed function pipeline). Also, as one might expect, on this low-end platform the programmable pipleline always renders more slowly than the fixed function pipeline.
If you have no vertex or pixel shaders, do not use the "Simple Pixel Shaders" experiment, as you may find that Intel GPA reports slower rendering times that you might expect. If you see unexpected results when using this experiment, check to see whether any shaders are defined by using the "shaders" tab within Intel GPA Frame Analyzer.
By the way, note that some devices will emulate various fixed viewing pipeline operations with internal operations, so that Intel GPA shows time being spent performing operations that on the surface look wrong. For example, using "clear" may show the Pixel Shader time is non-zero.