Vulkan is a new-generation graphics and compute API that provides high-efficiency, cross-platform access to modern GPUs used in a wide variety of devices from PCs and consoles to mobile phones and embedded platforms.
Vulkan is extremely powerful and affords developers considerable flexibility—but this introduces some API complexity. Consequently, developers have to carefully consider how to use the API to deliver the best results for each type of platform. For example, what works best for desktops may not deliver optimal results on mobile phones—and vice versa.
That’s why Arm Technology has worked with a range of developers and studios to determine best practices for Vulkan development on mobile. This Vulkan “cookbook” compiles those best practices, including:
- A selection of runnable samples with full source code available online;
- Accompanying tutorials explaining what Arm recommends and why;
- Easy switching from bad to good coding techniques with on-the-fly performance graphs;
- Hardware counters displayed on (non-rooted) devices;
- Detailed explanations, backed-up with data, of best-practice recommendations;
- Guides to using profiling tools and analyzing their output.
What is Arm cooking up?
In order to address some of the most common challenges that developers may experience in coding Vulkan applications on mobile, the sample collection investigates individual Vulkan features and demonstrates best practices to use them.
The initial collection includes five samples. Each sample illustrates the use of a specific Vulkan feature (e.g. initialization of Vulkan swapchain images). The sample code gives developers on-screen control to demonstrate multiple ways of using the feature; it also shows the performance impact of the different approaches through real-time hardware counters on the display.
The Vulkan Best Practices Guide for Mobile Developers will be expanded in the coming months, and there is already an expansive list of features to be added.
Developers can access the source of the Vulkan guide on GitHub, to enable them to easily compile and run the sample code. Developers are warmly invited to contribute to the project by providing feedback and fixes and creating additional samples.