The Mali Graphics Debugger has a number of features that help you identify possible issues with your applications.
MGD enables you to trace API calls and understand their frame-by-frame effects in your application. It can also highlight common API problems and provide performance improvement advice.
MGD has the following features and benefits:
- Trace API calls
Draw-call by draw-call stepping helps you to identify draw-call related issues, redundant draw calls, and other opportunities to optimize.
You can trace OpenGL ES, Vulkan, EGL, and OpenCL API calls with arguments, time, process ID, and thread ID.There is full trace from the start and it automatically checks for errors. There are search capabilities and it includes multi-process support.
An automated trace view enables you to run a range of standard MGD commands automatically when a specific frame is encountered.
- Outline view
The outline view enables you to investigate at the frame level to find what draw calls have a higher geometry impact. It provides you with quick access to important graphics events such as frames, render targets, and draw calls.
- Target state debug
Target state debug provides a complete view of the graphics state and state changes, at any point in the trace. You can also use this to discover when and how a state is changed.
Every time a new API call is selected in the trace, the state is updated. This is useful for debugging problems and understanding the causes of performance issues.
You can jump between the outline view and the trace view seamlessly to aid your investigations.
- Trace statistics and analysis
You can analyze the trace to find common issues such as performance warnings.
MGD provides per-frame and per draw-call, high-level statistics about the trace.
MGD also shows API misusage by highlighting problematic API calls in the trace view.
- Uniform and vertex attribute data views
When you select a draw call, MGD shows all the associated uniform and vertex attribute data. The vertex attribute and uniform views enable you to see vertex and index buffer data. You can analyze these to see their usage in your application.
The Uniform view shows uniform values such as samplers, matrices, and arrays.
The vertex attributes view shows vertex attributes such as vertex names and vertex positions.
- Buffer and textures access
Texture view enables you to visualize the texture usage in your applications, helping you to identify opportunities to compress textures or change formats.
Client and server-side buffers are captured every time they change. This enables you to see how each API call affects the buffers.
All textures uploaded are captured at native resolution, enabling you to check the size, format, and type of the textures. You can also access all the large assets including data buffers and textures, for debugging.
- Shaders reports and statistics
Shader statistics and cycle counts help you understand what vertex and fragment shaders are the most computationally expensive.
All the shaders used by the application are measured. For each draw call, MGD counts the number of times the shader has been executed, and calculates overall statistics.
Each shader is also compiled with the Mali Offline Compiler. This statically analyzes the shader to display the number of instructions for each GPU pipeline, the number of work registers, and uniform registers.
- Frame capture and analysis
MGD can capture frames so you can analyze the effect of each draw call.
A native resolution snapshot of each framebuffer is captured after every draw call. The snapshot capture happens on the target device, so you can investigate target-dependent bugs or precision issues.
You can also export the captured images for separate analysis.
- Alternative drawing modes
MGD includes specialist drawing modes that help you analyze your frames. You can use these for both live rendering and frame captures:
- Native mode
- In Native mode, frames are rendered with the original shaders.
- Overdraw mode
- The overdraw mode highlights where overdraw is present. You can analyze the impact of overdrawn pixels on each framebuffer by looking at the overdraw captures and histograms.
- Shader map mode
- In shader map mode, native shaders are replaced with different solid colors. This shows you where the different shaders are used in a frame.
- Fragment count mode
- In fragment count mode, all the fragments that are processed for each frame are counted. This shows you how many fragments are used in different parts of a frame.