Alongside the four free tools highlighted previously, Arm provides other technologies designed to improve the game development process and tune-up performance. These include:
Memory Tagging Extension
Why: Memory safety has been a major source of security vulnerabilities for decades, with Google’s Chromium Project team stating that 70 percent of all serious security bugs are memory safety issues. Memory Tagging Extension (MTE) allows you to find memory-related bugs quickly, speeding up the application debugging and development process to save time and costs. MTE is a security feature built into the Armv9 architecture to detect and prevent memory safety vulnerabilities across the mobile ecosystem before and after deployment.
How: Arm implements MTE as a two-phase system, known as the ‘lock’ and the ‘key’. If the key matches, then the lock memory access is permitted; otherwise access can be recorded or faulted. In this way, hard-to-catch memory safety errors can be detected more easily, which also aids general debugging. Any silicon vendor that adopts Armv9 CPUs will have the MTE feature built into their chipsets. Device manufacturers can then make the decision whether to switch on the MTE feature.
The first encounter that you have with MTE may reveal far more vulnerabilities than you want to fix initially. However, you can fix the serious vulnerabilities before a launch and then track down the less severe ones during updates.
Further reading:
Arm Community blog - Delivering enhanced security with Memory Tagging Extension
Variable Rate Shading
Why: Variable Rate Shading (VRS) provides energy savings and a performance boost through optimized rendering where it matters on graphics and visuals. This reduces the computational cost with a minimal impact on the visual quality of your game. When enabling VRS on gaming content through Arm's own internal tests, we have seen improvements of up to 15% on FPS.
How: VRS takes your gaming scene and focuses the rendering on the parts that need it at a fine pixel granularity. This is usually where the game action takes place. Areas that require less focus, such as the background scenery, are rendered with a more coarse pixel granularity.
VRS is built into the Arm Immortalis-G715, Mali-G715 and Mali-G615 GPUs, supporting the following:
Shading rate up to 4x4
Shading rate attachment texel size 8x8 up to 32x32
Pipeline shading rate, primitive shading rate and shading rate attachment
Non-trivial combiners.
VRS adds the ability for you to control the fragment shading rate, giving you granular control of the performance over quality of fragment shading. Here are 5 initial steps to get you started:
Check VkPhysicalDeviceFragmentShadingRateFeaturesKHR for support.
Look at the shading rate per drawcall, such as a lower rate for out-of-focus or moving objects.
Look at the shading rate per primitive.
Look at the shading rate per tile of the frame buffer driven by a screen-space shading rate attachment, such as adaptively generating the attachment each frame by analyzing frame contents.
Use VRS on fragment bound passes, with three key passes likely to benefit being: indirect diffuse; lighting; and indirect specular.
Arm GPU Best Practices Developer Guide - Fragment Shading - Variable Rate Shading
Game Engine Resources
Arm works closely with leading game engines Unity and Unreal to help provide optimal gaming performance across mobile platforms. Both game engines are highly popular development environments that are used to create a variety of games and applications across multiple platforms. You can use Arm Mobile Studio to profile, debug and optimize games using Unity and Unreal.
For the latest Unity and Unreal best practice guides to help fine-tune gaming performance, you can visit the following pages on Arm.com
Optimizing Unity Games for Arm
Optimizing Unreal Games for Arm