Using Arm Streamline Annotations
The user should launch the Arm Streamline application and launch gatord on the target device, then should start a new profiling capture within Arm Streamline as per the Arm Streamline documentation.
Once the trace has started to be received, the user should start the OpenGL ES application they are interested in profiling. The MGD interceptor must be loaded by the application.
For Android targets it should be sufficient to just to launch the appropriate application from the launcher.
Once the user has finished tracing the application they are interested in, they should terminate the application and then disconnect the trace in Arm Streamline.
Heat Map / Core Map Annotations
The Heat Map and Core Map views now show active EGL contexts for each rendering thread. The length of each bar indicates the duration that that context was active (between eglMakeCurrent calls)
Mali Graphics Debugger Activity View
A new view is available from the same menu as the Heat Map / Core Map / Processes menu for each process that was traced using the MGD interceptor. This view shows the active contexts on each thread, each frame within a context, each render pass within a frame, and interesting API calls within a render pass.
It is possible to select a frame, render pass or call item and see its relationship with other items. Selecting a frame will highlight all render passes within that frame and all calls associated with each render pass. Selecting a render pass will highlight the chain of render passes and calls for a given frame so far. Selecting a call will highlight all previous calls within a render pass.
Information such as the time spent in the driver for an item is available by hovering over the item. Additionally render passes will give an indication of the reason for the render pass, such as eglSwapBuffers for the end of frame, or glBindFramebuffer(fboID) indicating that the user changed the bound draw FBO.
For more detailed information the user may zoom in to a level where it is possible to see individual API calls. Calls are color coded to indicate the type of call they are.
API Call Marker Colors
|Red||Flushing calls such as glFlush|
|Green||End of frame calls such as eglSwapBuffers|
|Blue||Direct draw commands such as glDrawArrays|
|Yellow||Indirect draw commands such as glDrawArraysIndirect|
Five chart are provided by the interceptor tracking draw calls, frame rate and vertices.
Draw Calls / Frame
This chart shows, for each EGL context, the number of draw calls per frame. Selecting a range with the caliper tool will give you the average for that period. This chart is stacked so the total height indicates the total number of draw calls at any given time.
This chart shows, for each EGL context, the average frame in frames-per-second. The frame rate, r, is calculated as shown below using a simple rolling average over the last 6 frames. Selecting a range using the caliper tool will show an average value for that period.
Calculation of frame rate r measured in frames per second. d is the average duration between frames (in seconds), ti is the time of the i'th last frame end (in seconds), and n is the size of the rolling average; which is 6.
Indirect Draw Calls
This chart shows, for each EGL context, the number of indirect draw calls. This information is provided as an indication of how much additional work may be being done by the GPU as it is not possible to determine the number of vertices or instanced vertices for these draw calls. Selecting a range using the caliper tool will show the total value for that period. This chart is stacked so the total height indicates the total number of indirect draw calls at any given time.
This chart shows, as a global total for the application, the number of vertices and instanced vertices sent with all direct draw calls. The two series are overlaid such that the height of the instanced vertices series shows the total number of vertices processed by the vertex shader. It is possible to select a range using the caliper tool and see the total number of vertices and instanced vertices for that period. For programs not using instanced rendering, the two series will be the same.
Vertices / Frame
This chart shows, for each EGL context, the number of vertices per frame. Selecting a range using the caliper tool will show an average value for that period. This chart is stacked so the total height indicates the total number of vertices at any given time.