A few weeks ago at the Game Developers Conference (GDC) 2015, Khronos announced a new graphics API called Vulkan targeting close to the metal developers in the same way as AMD’s Mantle, Apple’s Metal and Microsoft’s DX12. In some ways, “new” is not exactly correct as Vulkan was previously called glNext and has been under development for a little while now.
Get the API out of my way!
Vulkan’s main aims are very similar to Mantle et al. in that it seeks to provide a low level view of the graphics hardware while still maintaining a level of cross vendor compatibility. Not since the mid-1990s have developers had anything approaching this level of hardware control on the PC and I for one am very happy it’s coming back.
In the early 1990s, at around the time of Doom, Monkey Island and the like, a developer could pretty much guarantee that their users’ PCs had an IBM VGA (or compatible) video chipset and as a result could pull pull all kinds of crazy tricks: custom resolutions, changing colour palettes per frame, messing with the monitor blanking signal, just to name a few. To get an idea of what could be done take a look at
Then dark times came along. First, a plethora of SVGA chips that all required custom code which was a developer headache. Second, Windows 95 and a hardware abstraction model that just screamed SLOOOOOOOOOOOOW. Third, graphics accelerator chips that could draw a gazillion polygons with poor texture mapping came along which constrained what a developer could do more than a Victorian corset.
Luckily, things started to get better with programmable shader hardware in the early 2000s and the corset started to loosen. This trend of greater programmability has continued with compute shaders and an even more general shader programming model. However, the graphics APIs have been stuck at hiding all the hardware details from the developer which has been frustrating. For example, memory isn’t just memory in the API view even when a developer knows that it is at the hardware level and, as a result, can’t be arbitrarily passed around.
Then AMD’s Mantle came along which got a lot of the API out of the way returning power to the developer. Sadly, Mantle, Apple’s Metal and DX12 are only for one vendor which is why Khronos stepped in with Vulkan. Cross platform power to the developer… at last 😉