Porting Applications from OpenGL ES to Vulkan

The PowerVR Framework can make transitioning to Vulkan much simpler and easier

When moving from OpenGL ES to Vulkan, it is important to consider the potential issues that can arise with the adoption of a new, more complex API.

Vulkan is much more verbose than OpenGL ES that makes it quite complex and harder to maintain. This verbosity ultimately improves performance but comes at a price, as Vulkan requires much more maintenance and a higher level of responsibility to make sure that everything is correct.

OpenGL ES is built in such a way that hides a lot of the operations required to run the application correctly. Vulkan is more hands-off and requires code to explicitly define and execute these operations. As mentioned in Comparing OpenGL ES and Vulkan, operations such as resource management, synchronisation, error checking and validation, and shader compilation are taken care of automatically by OpenGL ES, while Vulkan requires this all to be handled manually.

As general advice, where possible, do not port directly from OpenGL ES to Vulkan. Instead, completely rewrite the application in Vulkan and port back to OpenGL ES. This ensures the best possible performance gain from using Vulkan.

Wrapping Vulkan and PowerVR Framework

Since Vulkan is such a verbose API, there can be quite a steep learning curve for new developers. It can take some time to get used to it which can initially results in errors.

The best way to avoid these inconvenient issues is by wrapping the Vulkan part of the application in a custom framework. This cuts down on repetitive code and helps with avoiding unnecessary bugs and errors. Performance may take a hit on wrapping Vulkan, but that is an implementation-specific price that may be worth paying to speed up development.

The PowerVR Framework provides this functionality with minimal overhead. It makes sure that all the verbose and error-prone parts of Vulkan are taken care of automatically. The developer is then free to focus on the application-side while still maintaining all of the benefits of using the Vulkan API.

For more information on the PowerVR Framework, feel free to read the PowerVR Framework Development Guide.