from the live-long-and-phosphor dept.
After 18 months of work, the Vulkan 1.0 graphics specification has been released:
This is a little different from the Khronos Group's past launches, however, in that this time around there will be more than a specification PDF available – there are drivers, support documentation and a free SDK, and there is even a game that you can download with a Vulkan backend. There is a multitude of companies comprising the Khronos Group, and those in the working group for Vulkan include not only AMD, Nvidia, and Intel, but game engine makers and even Oculus VR.
[...] Unlike DirectX 12, Vulkan is completely open-source and royalty-free. Anyone who wants to use the code or adjust the code to fit their personal needs is free to do so, be that for private or commercial purposes. [...] DirectX 12 is Microsoft's graphics API, and it works only on Windows 10. Metal is an API made by Apple, and although it is also a low-overhead API, it works only on Apple devices. Vulkan, by contrast, works on many platforms. You can use in on operating systems as old as Windows XP on up to Windows 10, pretty much any Linux distro including SteamOS, and Android. Interestingly enough, Apple has opted not to integrate support for Vulkan into its devices -- although it is free to do so, so a day may come when Apple devices do have Vulkan support.
The development of the API owes a lot to AMD's Mantle:
Since Khronos's last major press update almost a year ago in March of 2015, not a great deal has changed on the technical side from a high level. After being gifted Mantle 1.0 from AMD – an action that significantly sped up the development process and bypassed the need to figure out some fundamental questions about how the API should be designed – the consortium went about adapting Mantle to serve as a wider, more generic API suitable for hardware from multiple vendors across multiple OSes.
The end result is that Vulkan has its roots firmly in Mantle, through Khronos has worked to make it very clear that multiple vendors are responsible for contributing IP that ultimately went into Vulkan. And while the specific low-level details of the API are beyond the scope of this article, I do know that the shader resource binding system is significantly different from Mantle, and that's not the only system that was updated or overhauled during Vulkan's development.
More coverage at Ars and The Register. Check out Khronos Group's hub for the Vulkan 1.0 specification. Both AMD and Nvidia have released Vulkan drivers. Finally, here is the Valve-funded LunarG Vulkan-based SDK.
Since the release of Vulkan 1.0 in February 2016, the successor to OpenGL slowly but surely made its way into applications and game engines. Today, roughly two years later, the Khronos Group is releasing Vulkan 1.1 and SPIR-V 1.3 specifications, and much like Vulkan 1.0's 'hard' API launch these are accompanied by updated developer tools, open source conformance tests, and launch driver support from GPU vendors. [...] In sum, the evolution of Vulkan from 1.0 to 1.1 is three-pronged: integration of developer-requested functionalities, driver support and seamless porting of Vulkan to more platforms, and then practical implementation by way of a developed ecosystem.
Moving straight into the core changes, Vulkan 1.1 brings two new wide-ranging functionalities: protected content and subgroup operations. The former utilizes low-level restrictions such that applications can render and display using resources they cannot access or copy, in turn securing playback and display of protected content. While ostensibly for DRM purposes, Khronos noted that Vulkan was exposing GPU capability rather than pushing for hardware-level DRM, leaving usage or implementation up to the developers.
So on the one hand, developers may choose to create a highly-restrictive multi-layered DRM scheme with a high degree of granularity. On the other hand, perhaps the feature could be used for an advanced low-level adblocker, not only for browsers but one that could hook onto ad-serving mobile and desktop games and applications. All might be possible with Vulkan 1.1 and beyond. To that end, Vulkan is in many ways simply looking to enable what is possible – in the purest sense of the idea – on GPUs.
That idea carries over with the new 'subgroup operations', where a set of threads can communicate and coordinate amongst themselves where normally this would be done by accessing off-chip memory. Ultimately, this offers developers a method of parallelizing certain workloads to a very high degree, and while compute and deep learning are the more obvious use cases, subgroup operations are not limited to only compute shaders and could presumably be used for graphical purposes. Naturally, the new SPIR-V 1.3 likewise supports subgroup operations.
SPIR: "Standard Portable Intermediate Representation"