Saturday, January 14, 2017
Low overhead rendering with Vulkan
Low overhead rendering with Vulkan
Posted by Shannon Woods, Technical Program Manager
Developers of games and 3D graphics applications have one key challenge to meet: How complex a scene can they draw in a small fraction of a second? Much of the work in graphics development goes into organizing data so it can be efficiently consumed by the GPU for rendering. But even the most careful developers can hit unforeseen bottlenecks, in part because the drivers for some graphics processors may reorganize all of that data before it can actually be processed. The APIs used to control these drivers are also not designed for multi-threaded use, requiring synchronization with locks around calls that could be more efficiently done in parallel. All of this results in CPU overhead, which consumes time and power that youd probably prefer to spend drawing your scene.
Lowering overhead and handing control to developers
In order to address some of the sources of CPU overhead and provide developers with more explicit control over rendering, weve been working to bring a new 3D rendering API, Vulkan, to Android. Like OpenGL ES, Vulkan is an open standard for 3D graphics and rendering maintained by Khronos. Vulkan is being designed from the ground up to minimize CPU overhead in the driver, and allow your application to control GPU operation more directly. Vulkan also enables better parallelization by allowing multiple threads to perform work such as command buffer construction at once.
An API is only useful if it does what you expect
To make it easier to write an application once that works across a variety of devices, Android 5.0 Lollipop significantly expanded the Android Compatibility Test Suite (CTS) with over fifty thousand new tests for OpenGL ES, and many more have been added since. This provides an extensive open source test suite for identifying problems in drivers so that they can be fixed, creating a more robust and reliable experience for both developers and end users. For Vulkan, well not only develop similar tests for use in the Android CTS, but well also contribute them to Khronos for use in Vulkans own open source Conformance Test Suite. This will enable Khronos to test Vulkan drivers across platforms and hardware, and improve the 3D graphics ecosystem as a whole.
Its all about developer choice
Well be working hard to help create, test, and ship Vulkan, but at the same time, were also going to contribute to and support OpenGL ES. As a developer, youll be able to choose which API is right for you: the simplicity of OpenGL ES, or the explicit control of Vulkan. Were committed to providing an excellent developer experience, no matter which API you choose.
Vulkan is still under development, but youll be able to find specifications, tests, and tools once they are released at http://www.khronos.org/vulkan.
Available link for download