Our team has updated the Vulkan SDK with new sample code and tutorials. All sample code is released in github, under an MIT license. This latest SDK update includes two new Vulkan features with ARM Mali sample code and tutorials, which will help you to optimize your mobile graphics apps:
The Multipass feature in Vulkan enables developers to implement intense bandwidth requests without the need to access external memory. In the past, deferred shading on mobile was not feasible due to high bandwidth requirements on writing out a full G-Buffer to memory and then being read back as textures in the lighting pass. Extensions like GL_EXT_shader_pixel_local_storage in Open GL ES enabled developers to keep the G-Buffer on-tile to avoid these extra bandwidth requirements. However, now with Vulkan Multipass, there is no need of vendor-specific code paths to enable on-tile rendering anymore.
Multipass allows a render pass to contain multiple subpasses. This enables tiled-based GPUs like ARM Mali to merge two or more subpasses into one render pass, where the results from one subpass can be kept on-tile in-between the two subpasses. The resulting benefits are the removal of the need to access external memory, and so, making the implementation faster and reducing power consumption.
Texture compression is vital to reduce the size of games and other applications which rely heavily on textures. Furthermore, texture compression reduces bandwidth on the GPU which can improve performance and significantly reduce power consumption.
Adaptative Scalable Texture Compression (ASTC) produces high quality compressed textures at very low bit rates and in many different types of image format configurations. ASTC is the most flexible and efficient texture compression format, making it the leading edge texture compression standard for GPUs.
Figure 1: Game texture comparison: Original, traditional ETC format, newest ASTC format
ASTC was first released as an extension in OpenGL ES, as well as it was also included in the Google’s Android Extension Pack. In Vulkan, ASTC is available in the core API.
ASTC supports the following textures in Vulkan API:
To know more about ASTC visit the ASTC page on developer.arm.com.