One of the most important features of System Analyzer is the so-called override modes. These modes are a traditional way for thorough analysis of application performance and debugging. Override modes allow to find bottlenecks by isolating parts of the 3D pipeline. For example, if one of the override modes noticeably increases the overall rendering performance, it's the isolated part of the pipeline that acts as a bottleneck. For example, if forced 2x2 textures increase performance manifold, it's the speed of texture lookups that limits rendering performance.
This utility supports the following override modes:
Disable all Overrides -- normal operation mode, all overrides are disabled.
Null Hardware -- GPU assistance is disabled. If performance in this mode grows much, then overall performance is limited by GPU speed.
Null Driver -- this mode disables processing in the driver. If Null Driver increases performance, while Null Hardware doesn't, it means that the application is limited by CPU performance in the driver. If both modes fail to accelerate rendering, the application itself is limited by the speed of a CPU.
Wireframe -- a well-known visualization mode, where all objects are displayed as geometry grid. It comes in handy for visual detection of render bugs (wrong sorting or wrong geometry truncation). This mode usually decreases performance. But the speed may grow in case of primitive geometry and a complex pixel shader. Unfortunately, the buffer is not flushed in this case, so results are not always satisfactory:
2x2 Texture -- using small 2x2 textures instead of loading application textures. This mode shows whether performance is limited by texture units. If the speed in this mode grows much, then a GPU does not cope with texture lookups, or caching is not effective (for example, textures lack mip levels), or there are many textures, or they are too large. But if an application uses offscreen buffers, it will look like this:
Simple Pixel Shader -- replacing all pixel shaders with simple code that writes a constant color value into the output buffer. It's useful, when you want to see whether performance is limited by pixel processing. If the frame rate grows in this mode, the speed is limited by shader processing (either arithmetic or texture).
1x1 Scissor Rect -- all processed pixels in this mode are truncated without being drawn. If performance in this mode grows much, the main bottleneck is in the fillrate. It may be caused by intensive alpha-blending, for example.
Disable Texture Filtering -- this mode disables texture filtering, point sampling is used in this case. If FPS grows much in this mode, it's texture filtering units that limit performance. For example, insufficient performance of filtering units with enabled anisotropic filtering can cause serious performance drops.
Disable Z-Test and Disable Z-Write -- these modes are used to determine whether performance is limited by Z buffer. Disable Z-Test mode disables depth test, and the Disable Z-Write mode does not write comparison results to Z buffer. That is some invisible objects may become visible on the screen.
If these modes increase the speed of a 3D application, its speed can be raised with special culling methods before depth test. An applications can also be accelerated by using sorting, when the nearest objects are the first to draw.
Disable Culling, Clockwise Culling, and Counter-Clockwise Culling -- these modes have to do with various culling methods. All 3D objects usually use the same orientation: clockwise or counter-clockwise, depending on the vertex order. It determines the normal direction for all primitives, which specify direction of objects relative to a viewer/camera.
Clockwise Culling and Counter-Clockwise Culling modes cancel rasterization of all invisible primitives. Disable Culling mode can decrease performance, because it forces the system to render both visible and invisible sides of primitives. These modes will help you detect problem places, if a scene is not rendered correctly.
Disable Alpha Blending -- this mode disables alpha-blending to figure out whether it limits performance. If this mode significantly raises the framerate, rendering speed can be accelerated either by decresing the number of objects that use blending or by using other methods.
Disable Alpha Test -- this mode allows to evaluate contribution of Alpha Test into overall performance (just like the previous mode). Here is what it looks like:
Overdraw Visualization -- this mode allows to evaluate culling efficiency as well as scene complexity visually. The frame buffer in this mode is filled with black color, and brightness of each pixel indicates the number of writes at its coordinates. The more, the brighter. A high overdraw level may indicate low efficiency of geometry optimizations.
Unfortunately, the current implementation of this mode sometimes fails, as it does not take into account pixels written into offscreen buffers, if such surfaces are used as quad textures smaller than the screen.
Other than the metrics list and data diagrams, System Analyzer displays the total test time and the current framerate. It can also capture frame data, which can be then analyzed in Frame Analyzer. This feature is supplemented with a standalone Frame Capture utility.
Write a comment below. No registration needed!