Overview
Vulkan is a new open standard API by Khronos that offers low-level control of GPUs for graphics and general purpose computation. It has been designed from the ground up around the capabilities of modern hardware.-
Direct GPU control with minimal driver overhead
For example, data is written directly to GPU memory instead of using calls equivalent to glUniform. Applications can implement their own memory allocation strategies. (Source)
Another feature is the render pass, which offers control over loading of render targets at the start and end of renders, which is very useful for tiling architectures.
-
Multi-threading friendly architecture
Multiple threads can create and populate command buffers at the same time, which can then be submitted to the GPU by a separate thread.
-
Unified API for desktop, mobile and embedded platforms
There is no equivalent of OpenGL ES, Vulkan offers the same API on all platforms.
-
Intermediate bytecode for shaders
The driver accepts shaders in the SPIR-V bytecode format. Khronos will supply a separate compiler for GLSL that targets this intermediate format. Third-party developers will be able to write their own compilers for other languages.
API
The official specification isn't going to be released until later this year, but some details can be gathered from various sources.
The blog post linked above offers some insight. API calls have thevk prefix and functions take the state that they will
change as their first parameter.
vkCmdBindDescriptorSet(cmdBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, textureDescriptorSet[0], 0);
vkQueueSubmit(graphicsQueue, 1, &cmdBuffer, 0, 0, fence);
vkMapMemory(staticUniformBufferMemory, 0, (void **)&data);
// ...
vkUnmapMemory(staticUniformBufferMemory);
All hardware that supports OpenGL 4.3 / OpenGL ES 3.1 (Subset) or later can also support Vulkan.
A talk by Khronos on March 5 has offered some more insight into
the API. The Vulkan API still uses no special types, instead
settling for stdint.h types. The closest thing to
the concept of a context is now a command buffer.
Synchronization is done using events and allows for fences
and resource barriers. The full presentation can be watched
below.
The slides are also available (mirrored while Khronos link is broken).
SPIR-V
Khronos has published a whitepaper that provides an introduction to the SPIR-V intermediate language.
The provisional specification is also available.
Drivers
Valve has been working on open source Linux drivers for Intel GPUs (Source).
Tools
Valve, LunarG, Codeplay and other parties are already developing tools. Displayed below is an introduction video of a Vulkan debugger being developed by Valve and LunarG.
Khronos has announced that these utilities will be available at the same time as the first drivers. (Source)
LunarG also states that these tools and the first drivers will be available to developers in 2015. (Source)
Demos
Imagination Technologies has developed a proof-of-concept driver for Vulkan for their PowerVR GPUs. They have ported an OpenGL ES 3.0 demo to Vulkan.Valve has developed a Vulkan driver for Linux that targets Intel GPUs. (Source) They've shown Dota 2 running with this driver.