Tech —

Google goes with Vulkan as Android’s low-overhead graphics API

Khronos also announces OpenGL ES 3.2, which Android already partially supports.

The Khronos Group lays out the differences between Vulkan and OpenGL.
Enlarge / The Khronos Group lays out the differences between Vulkan and OpenGL.
Khronos Group

Low-overhead graphics APIs are all the rage these days, at least if you're the sort of person who gets excited about graphics APIs. iOS 8 introduced Metal last year, and OS X El Capitan will bring the API to the Mac when it's released this fall. The just-released Windows 10 includes DirectX 12, which will also come to Windows Phone when it gets updated later this year. And today Google announced that Android will be picking up support for Vulkan, the Khronos Group's low-overhead follow-up to OpenGL and OpenGL ES.

Like the other low-overhead APIs, Vulkan promises to improve performance by providing more direct access to the GPU—developers can manage memory and multiple threads on their own rather than leaving it up to the driver, giving them more work to do but also providing more flexibility. The difference is that, like OpenGL, Vulkan will be available for anybody and could theoretically be added to any and all of the major operating systems.

Like Metal and DirectX 12, Vulkan will require both operating system support and hardware support. Vulkan should be compatible with any GPU that currently supports OpenGL ES 3.1, which includes Qualcomm's Adreno 400-series GPUs and newer, Imagination Technologies' PowerVR Series 6 GPUs and newer, Nvidia's Tegra K1 and newer, and ARM's 600-, 700-, and 800-series Mali GPUs. That covers just about every high-end phone and tablet released between late 2014 and today.

Vulkan won't be finalized until later this year, and Google's post makes no mention of when the API will actually be implemented—Android M is probably too far along to pick up such a big feature, but it could be included in whatever the next major Android release is called. Some changes can be rolled into Android via the Play store and Google Play Services, but in the past, new graphics APIs have always required a new Android version.

Finally, Google said that it would continue to support OpenGL ES alongside Vulkan, allowing developers to work with whichever API makes the most sense for their games and 3D apps. The Khronos Group just announced OpenGL ES version 3.2, which formally adopts the OpenGL ES Android Extensions Pack introduced in Android 5.0 and includes the following features:

  • Geometry and tessellation shaders to efficiently process complex scenes on the GPU
  • Floating point render targets for increased flexibility in higher precision compute operations
  • ASTC compression to reduce the memory footprint and bandwidth used to process textures
  • Enhanced blending for sophisticated compositing and handling of multiple color attachments
  • Advanced texture targets such as texture buffers, multisample 2D array and cube map arrays
  • Debug and robustness features for easier code development and secure execution.

Finally, the Khronos Group says that the OpenGL ES 3.2 compatibility extension "enables the use of desktop OpenGL to develop mobile applications." The standard OpenGL standard and the mobile OpenGL ES standard have been growing closer together for years as mobile GPUs have grown more capable, and as a result it's getting easier to port OpenGL desktop code to mobile devices.

Channel Ars Technica