Should You Switch to Vulkan?

The viability to transitioning to Vulkan depends on the specific circumstances

In many cases, moving to Vulkan is very beneficial for a developer, however it is important to evaluate whether there are the resources available to afford the move.

Here are a few examples of different situations where moving to Vulkan will have a significant impact on performance and some where it might not have much effect.

Situations where Vulkan can help

A CPU-bound application with parallelisable graphics work submission

Vulkan particularly excels at making heavy API usage, CPU-bound applications faster, through its low driver overhead. It can also help if the developer needs to parallelise the graphics work for submission, as Vulkan has many features to aid in distributing work across multiple cores.

Few platforms targeted and max performance is required

It is quite difficult to create an optimised build for each and every platform, meaning it would take quite a lot of effort to fully utilise Vulkan’s capabilities. However, when only a handful of platforms are being targeted, a lot more effort can go into optimisation. In these situations, it can be very worthwhile to switch to Vulkan in order to get the most out of the hardware. It is possible to reduce frame rate spikes, hitches, and jitters by using Vulkan to take full control over synchronisation in the application. It is still up to the developer to take the opportunity, but it is certainly there.

Situations where Vulkan can help, but requires more effort

An application needs to support pre-Vulkan platforms

When a developer needs to support pre-Vulkan platforms, moving to Vulkan will increase the amount of code that needs to be supported. This should be considered when thinking about the resources required to switch to Vulkan.

A heavily GPU-bound application

When an application is heavily GPU-bound, removing driver overhead might not help that much. However, it will certainly cut down on CPU usage, reducing power consumption and heat output. This may allow the GPU to run on higher frequencies.

A heavily CPU-bound application as a result of non-API work

In this case, Vulkan might not provide many benefits. However, it may help a small amount, as there would be more time for the CPU to do everything else. It may be a good idea to optimise the non-API workload first though.

A single-threaded application that is unlikely to be changed to use multiple threads

For an application like this switching will not help that much.

Situations where Vulkan cannot help

An application performance is already fine

It is a common situation nowadays on mobile that the application simply does not saturate resources at all – for instance, simple 2D games. In these cases it will not matter that much if the developer ports their application to Vulkan. Obviously it can help eliminate more of the CPU load, but in the case of an already well-running application there is little benefit.

An application which is already written, and is GPU-bound and heavily optimised

In the case of applications that are already heavily optimised even with last-generation APIs (for example if they follow the Approaching-Zero-Driver-Overhead (AZDO) principles) Vulkan probably will not help that much at all.