Capturing The Future, Frame By Frame

A peek at what you’ll see next.


A lot has changed over the past year, and more changes are on the way.

Consider what’s happening in API tracing. All of the functions from the Vulkan specification can be traced correctly in MGD. This means that you will be able to see exactly what Vulkan calls your application makes and in what order. You will also be able to see what threads each of these function calls occur in.

Figure 1: Vulkan API Trace

All of the trace features that are present for OpenGL ES and Open CL are supported for use with Vulkan. This means you will be able to search through your entire trace easily using the search feature. This search also supports regular expressions which allows you to search for patterns in your trace. You will also be able to comment and add notes to parts of your trace to highlight areas of interest or areas which may represent a defect or bottleneck in your application.

Figure 2: Outline View of Vulkan Ttrace

In Vulkan you can have many more function calls than in OpenGL ES. Which means you will want easy ways to navigate them. The trace outline view will split up the trace for you into frames, allowing you to easily jump to an appropriate frame in your trace.

Function parameters are much more complicated in Vulkan than they were in OpenGL ES or OpenCL. To combat this, we have created an entirely new Function Parameters view. This view shows all of your parameters in a structured and easy to understand way. Allowing you easily to identify and understand all structures and other information that you pass through the API.

Figure 3: Function Parameters View

Asset Tracking
Not only do we collect all the API calls in your application, but we also capture some of the asset data. This is populated in the familiar Assets view. This allows you to see the various Vulkan assets and data that is currently in your system. We can show you information about each of your assets such as the commands in each command buffer and the layout details for each of your descriptor sets.

These assets will be updated automatically to the point you have selected in your trace so you can see the state of all your assets at any point in the trace.

Figure 4: Assets View Showing Vulkan Assets

Frame Capture
This feature allows you to look at how your scene is composed drawcall by drawcall. This works for a lot of different buffers such as the depth attachment and stencil attachments as well as the colour attachments in your scene. This is a very powerful feature for a number of reasons as it allows you to:

See how the scene is created in an easy to understand step by step way.
Easily identify which drawcalls have graphical defects.
See if there are any drawcalls that don’t contribute to any part of the scene, which means they are redundant and could be removed.

Figure 5: Frame Capture of Vulkan Content

Vulkan has been developed from the ground up. This means that a lot of the features and views that are available in MGD don’t make sense in Vulkan. For this reason, we have implemented perspectives. There are 3: OpenGL ES, Vulkan and OpenCL.

These show you only the parts of MGD that are relevant for each of the APIs in question. This means that quickly know what features are available in which APIs. MGD will also autodetect the API that you are using and switch to the appropriate perspective. This is also great for the future as we add more and more Vulkan features we will be able to hide them when you choose to do any OpenGL ES or OpenCL related work.

The Future
ARM is still very much committed to improving our Vulkan support in MGD and we have some exciting developments going in the near future. The first of these is that we are going to bring back the Shaders view for Vulkan and inside it we are going to be able to show you the shader source for every single shader that is in your scene.

This will allow you to see what source code is active at a particular time in the trace allowing you to easily see what shaders you need to optimize in order to speed up and performance related bottlenecks you might have in your Vulkan code.

Mali Graphics Debugger’s Vulkan support has been improved a lot in the last year. Giving much needed features such as Frame Capture to the latest APIs. There is also plans to increase the Vulkan capability throughout the year so If you are developing a Vulkan application you should seriously consider using MGD. It could save you a lot of time when you want to optimize your content or if you have any rendering defects.

To find out more about Mali Graphics Debugger and to download it, click here.