Vulkan: A new low level graphics API

The worst tag line ever

I feel a tag line should somehow described the main title. Like a film tag line such as “The true story of a real fake” from Catch Me If You Can. Sadly, Khronos opted for “Graphics and compute belong together” as the tagline for Vulkan. Errrrrr…. As a tagline for OpenGL 4.0 or ES 3.1 this would have been great. Compute shaders residing in a graphics API. Okay. For Vulkan, the tagline is the worst. This is exactly not what Vulkan is about. Vulkan is about low level hardware access. About sharing resources. About dealing with contained objects rather than global state. About speed, multithreading….. I guess Khronos were pressed for time :p

Vulkan is….

As mentioned, glNext set out the aims for Vulkan. It is also clear that AMD’s Mantle has formed a base for Vulkan’s development both from an API point of view and as a method for collecting developer feedback of what works, what doesn’t and what is need from a next generation API.

From reading the Mantle documents and from the various GDC talks by Khronos and Valve at GDC, it looks like Vulkan will offer:

  • Self contained state objects. This allows such things as sampler or draw state to be configured configured once and then reused which is much faster for the driver.
  • State objects separated from the memory that back them. Think of a constant buffer that is also a vertex buffer that is also a texture in memory whose usage changes depending on what object it is bound to.
  • Explicit memory management. Allocate, free and remap memory whenever you want rather than hoping the driver will do something sensible.
  • Multiple command buffers. This allows a whole set of draw commands to be encapsulated in a single object with multiple threads constructing their own command buffers in parallel.
  • Binary shaders. At last! Compile shaders ahead of time and ship (semi-) compiled binaries. Faster load times and protected intellectual property. It also looks like the compiled compute shaders may be able to be shared with OpenCL 2.1 via SPIR-V but that’s pure speculation right now.

But not yet

Exciting as Vulkan is, it isn’t actually available yet, even as a completed specification. My best guess is that a specification will be released at SIGGRAPH 2015 with AMD beta driver support at the same time. Then between then and November other vendors, such as nVidia and Intel, will also release drivers to support upcoming Vulkan titles for Christmas 2015. This is based on Vulkan being very similar to AMD’s Mantle making AMD’s job of providing a Vulkan driver quite easy and also giving developers already using Mantle an easy task of porting their code over to Vulkan.

I’m really looking forward to using Vulkan and, as long as Apple and Google get onboard, it’ll be the cross platform graphics API of choice for most developers pretty soon 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *