The Intel® Graphics Media Accelerator Profiler V2.1 (IGMAP) is a graphics performance profiling tool capable of real time standalone monitoring of Intel® 900 Series Integrated Graphics hardware. It now works on both 32Bit and 64Bit architecture. The tool also provides full performance integration with Microsoft PerfMon*, PIX* (both Frame and Time based sampling) and the Intel® VTune™ Performance Analyzer. IGMAP is capable of monitoring both Direct3D and OpenGL applications running on Intel® 900 series integrated graphics solutions. It is available to all registered Intel® Developer Services users.
The main function of IGMAP is to aid developers in finding performance bottlenecks and to serve as an aid in overcoming them for Intel® 900 Series integrated graphics solutions. The tool does this by illustrating architectural bottlenecks and coding problem areas within applications ran from its configuration submenu. The tool offers some coding advice in its help section as to possible solutions.
IGMAP is a critical tool to help developers broaden their applications to the integrated market.
Using the Intel® Graphics Media Accelerator Profiler
IGMAP interfaces with the chipset-architecture of the Intel 900 Series Integrated Graphics motherboard, through this interface statistics that would normally be unavailable can be gathered:
- The Number of Polygons Entering the Hardware Binner1 per Second and Frame.
- The Number of Polygons Entering the Renderer per Second and Frame
- The Total Pixels Rendered per Second and Frame
- Pixel Shader Loads per Second and Frame
To understand what the value, Polygons Entering the Hardware Binner (PEHB) means, one must first understand how polygons are binned by the graphics engine. The polygons, depicted as the big triangle in the top left corner of the diagram below, are first sent into the hardware binner, which is in charge of binning them. The binning procedure consists of figuring out which of the previously determined zones of the screen each polygon encompasses, and placing an instance of each into the appropriate BPL, if a polygon encompasses multiple screen regions, it gets put in to each of those regions’ BPL’s. As Figure 1 shows, the first BPL corresponds to the top-left region of the screen and the last BPL corresponds to the bottom-right region of the screen. Each polygon is placed in its corresponding BPL, and additional polygons are simply liked to the end of the list of corresponding polygons. PEHB is simply a count of how many Polygons were sent into the Renderer.
Likewise, in order for one to understand the Polygons Entering the Renderer (PER) one must understand how polygons are Rendered by the Graphics Engine. After all the polygons have been binned, the BPL is sent off to the renderer, which performs the rendering procedure and displays the results on the screen. The rendering procedure consists of determining which polygons should go on top of the other polygons in the same screen region. The PER is simply a count of how many polygons are sent off to enter the renderer.
The “total pixels rendered” dialog displays the number of pixels the 900 Series Integrated Graphics Hardware has rendered ever since the last update. Please note that not all of the rendered pixels actually appear on the screen.
Intel 900 Series Integrated Graphics Hardware supports Pixel Shader 2.0; a Pixel Shader is a small program that's loaded by a running graphics program which is used for processing pixels on the Graphics Accelerator. Pixel Shaders allow for Matrix Palette Skinning and Bump Reflection Mapping to occur. The Pixel Shader counter is incremented each time that a first instruction of a new pixel shader program is loaded.
To complement the hardware information being monitored within the Intel 900 Series Integrated Graphics chipset, IGMAP also hooks and monitors the following driver (software) counters:
- Whether the program is in Hardware Zone Rendering2.
- The Number of Total Clears and the Ratio of Fast and Total Clears.
- The Number of Z-Evicts.
- The Number of Mid Scene Flushes (MSF) and their causes
- The Total Video/Texture Memory.
- The number of Frames per second (FPS).
- The Orientation of the Frame Buffer
Hardware Zone Rendering uses a tile-based rendering system designed to reduce memory bandwidth and maximize rendering performance. It is key to optimal performance of the Intel 900 Series graphics engine. When the indicator light is green or the Zone Rendering screen text in the overlay display is green, this means that Hardware Zone Rendering is active and that the Graphics engine is running in its optimal rendering state. When Red, the engine has fallen back to classical rendering and there may be coding issues that need to be addressed (refer to the Profiler Help for potential performance limiters to Hardware Zone Rendering or the 915G/GM Software Developers Guide).
IGMAP monitors closely the number of Z-Evictions and clears (i.e. Stencil and Z) done to the graphics hardware either intentionally or unintentionally. It also monitors pipeline flushes done in the middle of a scene, which can adversely affect the performance of any tile-based renderer, and their causes:
- 3D Dependent Operation - The MSF is triggered by an operation on a resource that is currently dependant on 3D commands (i.e. BLT or Lock on an active 3D Texture).
- Out Of Memory - The MSF is triggered by an out of memory condition (i.e. textures, vertex buffers, command buffers).
- Set Render Target - The MSF is triggered by swapping the current render target.
- Set Depth Buffer - The MSF is triggered by swapping the current depth buffer
- Internal - The MSF is triggered by some other internal or atypical event
Under ideal conditions, these values would all be zero; however, it is often necessary to use a function or a call that causes one of the above events to occur. Best way to optimize the code is to make it so that these events don’t occur when they are unwanted, and to limit the number of such “wanted” events to as few as possible.
In addition to a “Frames per Second” indicator, the Profiler also indicates Memory usage for Video and Textures in memory. Finally, the "Orientation" statistic reflects the current orientation of the frame buffer; sometimes, the frame buffer rotation is intentional, but when it's not intentional it is a good idea to change the buffer back, because rotated modes are slower.
The above statistics can also be displayed in the upper left-hand corner of the screen (see figure 4) and can also be logged in a Microsoft Excel* spread-sheet format3.
The Graphic User Interface displays its data samples on a set one second time interval so as not to be a system performance limiter. To get Frame based samples it is suggested to use Microsoft PIX tool with the Profiler.
Once the IGMAP has been installed on a user’s computer that user will also be able to track all of the above variables, down to the line of code on which they occurred, using Intel® VTune™ analyzer; simply start the VTune analyzer and look for the IGMAP counters in the counter-monitor wizard section. As stated earlier, the Profiler also integrates with Microsoft PIX and Microsoft PerfMon. The tool expands to allow for Frame based performance monitoring in addition to time based sampling.
The Profiler will work on any Intel 900 Series computer (with Integrated Graphics) as long as that computer has the latest Intel® graphics drivers which can be downloaded with the installation at http://support.intel.com/support/graphics/intel915g.
1 The HW Binner is a core HW component to the Intel® Tile Based rendering engine.
2 Note: Falling out of HW Zone rendering is one of the largest performance limiters of Intel® 900 Series Integrated Graphics Hardware.
3 Note: The current version logs only time-based data (not Frame based) samples.
4 Picture comes from Unreal Tournament 2004 Demo. Unreal Tournament is proprietary of Epic Games Incorporated.
The Intel Graphics Media Accelerator Profiler is a powerful tool in aiding developers to find performance bottlenecks on 900 Series Integrated Graphics hardware. The purpose of which is to provide insight not previously available when tuning for Intel 900 Series graphics hardware.
The tool is free of cost to all registered Intel® Developer Zone developers.
About the Author
Chuck Desylva is a Software Applications Engineering Manager in the Intel Software and Solutions Group. He and his team are responsible for the performance optimization of cutting edge consumer software titles running on Intel Desktop systems. Prior to working on application software optimization, Chuck worked as a driver developer for Intel Corporation. He was involved in developing/deploying the first device drivers for USB, AGP (GART) and Intel’s first graphics devices (i740/810(e)).
Download Source Code
Download: Compiled Help file for IGMAP(IGMAP)
- Intel GMA Profiler v2.0.pdf
- IGMAP 2.1 Release Notes.htm
- IGMAP 2.1 x64 Installer.msi
- IGMAP 2.1 x86 Installer.msi