We have recently released Arm Mobile Studio 2020.2, the latest version of our performance analysis tool suite for Android applications. This release includes a number of new features, as well as some major quality-of-life improvements to make using the tools a little easier.
One common issue with performance is that problems are often only discovered when application complexity actually causes performance to drop below 60 FPS. This then triggers a round of urgent fire-fighting to get things back on track.
One workflow we encourage with Performance Advisor is getting automated performance analysis into continuous integration, allowing daily monitoring of performance trends during development. To help teams avoid problems late in development it is useful to set frame budgets. These set out limits in terms of content complexity (e.g. draw calls per frame, vertices per frame) and in terms of processor usage (e.g. GPU shader cycles).
To make these budgets more visible, enabling developers to track their current “spend” against the thresholds, it is now possible to specify a budget for every Performance Advisor metric group. These are then shown visually in the HTML performance reports, and exported in the JSON reports.
We have made a number of quality-of-life improvements to the Light Weight Interceptor layer driver, which provides the API metrics in the reports. Screenshots taken for slow frames now have much lower CPU overhead, reducing their impact on the surrounding data in the report. Headless mode profiling without a host tool connected during capture is now supported in the scripts for CI integration.
This release of Mali Offline Compiler includes a number of improvements to data usability.
It is the first release supporting the Mali Valhall GPU architecture, with new support for performance reporting on Mali-G57, Mali-G68, Mali-G77, and Mali-G78.
For Mali Bifrost and Valhall GPUs, shader register usage is now reported as the exact number used, rather than just the maximum allowed in the current allocation band. This helps developers identify how close they are to the threshold of using 32 or fewer registers, which enables more threads to run in the shader core concurrently. Similarly, stack spilling is now reported as the number of bytes spilled per thread rather than a simple Boolean, allowing quantified analysis. The resource usage section now also reports the percentage of narrow (fp16/mediump) arithmetic operations in the shader, enabling developers to check that they are using the most efficient precision.
A new shader properties section in the report provides insight into the shader's use of language features. For example, a shader with “Has side effects” or “Modifies sample coverage” can disable hardware optimizations such as early depth testing or hidden surface removal. Having this information in the report provides a quick health check for shader efficiency.
To allow automated monitoring of shader performance, this release also supports a new JSON reporting mode. This exports all of the performance metrics and compiler feedback in a more machine readable format, allowing scripted analysis.
We have also made a number of quality-of-life improvements for Vulkan. The command-line now supports implicit detection of shader stage for SPIR-V binaries using the *.[type].spv extension pattern, and the ability to use custom extensions for SPIR-V input binaries other than *.spv if needed. The --info report now also reports the supported SPIR-V language version and extensions supported by the targeted Mali core.
We’ve been promising since the first release of Mobile Studio at GDC 2019 that we would make device connection easier, and we’re very happy to deliver the first of these changes in this release. For Graphics Analyzer it is now possible to connect to an unrooted Android device and select which application you want to trace, entirely from the host tool GUI. No command-line scripts in sight! Check out our new getting started video to see the new workflow in action.
Streamline is well under way to get similar GUI-only connection update in the next release. However, in this release we have made the first steps of Android device selection and configuration in the tool easier to find and more intuitive to work through. Refer to Connect Streamline to your device for detailed steps.
In August we also released astcenc 2.0, a major update to the Arm ASTC texture compressor command line utility. It provides substantially faster compression time – with up to 3x faster compression – and a new codec API to allow easier integration into other tools.
For more information see our partner blog on the Khronos website.
We would like to hear what you think about Arm Mobile Studio, the new features in this release, and what you would like to see in the future versions. Please send us your comments and feedback.
Download Arm Mobile Studio 2020.2