Vulkan is a powerful graphics API which allows for complete control of your application, enhancing the visual fidelity and performance. However, the API can be quite complex for developers as there are many ways of doing the same thing. It can be difficult to find the best method of maximising performance on mobile - what works best for desktop applications may not be the optimal choice for mobile implementations. While there are a lot of excellent repositories and tutorials for Vulkan, there are not many which focus on mobile, and just a few that give an introduction into the API.
Working with a range of developers and studios to optimize content, Arm learned a plethora of Vulkan best practices that work particularly well for mobile. We have actively moved towards trying to help developers with actual samples they can download, set up and get running on their devices, along with tutorials explaining the step by step process for each sample.
Introducing Vulkan Best Practice for Mobile Developers:
At its core, our project is meant to address the challenge of attaining maximum performance on mobile using Vulkan; by presenting investigations for each Vulkan feature and advising developers on what works best for them. At the moment there are only a few samples, but towards the end of 2019, we plan on having a plethora of samples, tutorials and downloads to help you get Vulkan working for you on mobile.
View the Best Practice Samples on GitHub
Each sample tests a specific Vulkan feature and gives the developer on-screen controls of the multiple ways of doing something - showing the real-time performance impact with hardware counters on the display. Each sample is accompanied with an in-depth tutorial explaining in detail what is happening under the hood.
Figure 1: Render Pass Sample
The best practice guide will be available on GitHub in source code form, so developers can openly try it themselves as well as create more samples and contribute to the project.
One thing to note, this is not vendor specific, our hardware counters interface is on, enabling developers to add their own hardware counters to it. Naturally, all the CPU counters work seamlessly on any Arm platform. Lastly, the framework also supports glTF, so adding scenes and other models is very easy.