Low-power graphics and ray-tracing expert Imagination Technology has released details of a demo which brings the benefit of new low-level application programming interface (API) Vulkan into the light, boasting of far lower CPU usage and better use of multiple cores.
Imagination's big break came when it developed the graphics technology for Sega's Windows-based Dreamcast console, and while the console itself would prove a financial disaster for Sega it set Imagination up for the future. Shifting away from its previous work on chips that would be used on PC add-in cards, Imagination has become one of the leading IP providers for embedded graphics - in particular in the mobile market.
It's no surprise, then, to find that the company is already playing around with Vulkan, the new low-level API developed by the Khronos Group to address performance issues with its OpenGL API family. Focusing on its improvements over OpenGL ES, the embedded variant, applications engineer Ashley Smith has released
details of a work-in-progress demo that showcases just what kind of improvement developers can expect under best-case workloads.
Using a Nexus Player, which includes an Imagination PowerVR graphics core, Smith and his team developed a Vulkan driver and a GPU-heavy demo dubbed Gnome Horde. This demo was executed on the hardware using both OpenGL ES and Vulkan, and the two results compared. The results were stark: Vulkan showed a considerable improvement in frame rate while also spreading the CPU portion of the workload across the system-on-chip's four cores - something the single-threaded OpenGL ES couldn't manage.
'The reason that the OpenGL ES API struggles with these tasks is because OpenGL ES requires many calls into kernel mode to change the state of the driver, along with validating that state and any extra work that goes on behind the scenes, all during an applications render loop,
' explained Smith. 'This is in contrast to Vulkan where we can pre-generate these commands. Executing pre-generated commands in Vulkan is very fast, with little CPU overhead and no need for the driver to validate or compile anything inside the render loop.
Although the need to pre-generate the commands does add complexity to the code, the performance improvements for selected workloads are enticing. For mobile devices, there's an even bigger gain to be had: by reducing the load on the CPU for the same framerate, the battery draw is also reduced - leading to increased battery life, one of the biggest goals in modern smartphone and tablet development.
Smith does, however, temper his company's findings with the warning that the driver is unfinished and based on an unfinalised Vulkan specification, and that the artificial workload used in the demo - hundreds of thousands of identical objects, all of which have different transformations applied along with numerous materials, textures, blend modes and shaders - was chosen as a best-case scenario for Vulkan.