152
\$\begingroup\$

Khronos Group (the standards body behind OpenGL) has just announced Vulkan:

Vulkan is the new generation, open standard API for high-efficiency access to graphics and compute on modern GPUs. This ground-up design, previously referred to as the Next Generation OpenGL Initiative, provides applications direct control over GPU acceleration for maximized performance and predictability.

Their page is quite marketese/jargon-heavy, as is the press release… In simple terms, what does Vulkan mean to game developers? (Gabe Newell is quoted as being strongly in favour, without further explanation.)

What exactly is Vulkan's relationship to OpenGL? Its previous name "glNext" (short for "Next Generation OpenGL Initiative") makes it sound like a replacement.


Update: The Vulkan 1.0 spec was released on 16-02-2016.

\$\endgroup\$
  • 3
    \$\begingroup\$ Qo'noS and Vulcan... \$\endgroup\$ – IllidanS4 Mar 4 '15 at 20:02
  • 14
    \$\begingroup\$ Translation for people who don't catch the Star Trek drift: Khronos and Vulkan sound like Qo'noS and Vulcan; the homeworld planets of the Klingon and Vulcan races. Leonard Nimoy, the actor of Spock (a very popular character) recently died on 2015-02-27, so speculation abounds that the name was a tribute. However, it was coincidental: The Vulkan trademark request was filed on 2015-02-19; before Nimoy's death. \$\endgroup\$ – Anko Mar 4 '15 at 22:59
  • 7
    \$\begingroup\$ Also Mantle -> Lava -> Volcano -> Vulkan. \$\endgroup\$ – jmegaffin Mar 5 '15 at 1:17
  • 1
    \$\begingroup\$ @Boreal Vulkan == Volcano in many languages (German, Russian (adjusted for cyr.), etc). So it's Mantle -> Lava -> Vulkan (Volcano) really :) \$\endgroup\$ – user362515 Jul 11 '15 at 19:55
  • 1
    \$\begingroup\$ Just talk in Gnomes Per Second \$\endgroup\$ – bobobobo Jun 14 '16 at 23:06
120
\$\begingroup\$

Vulkan is a new API for hardware-accelerated graphics (and general computation) via traditional GPUs. OpenGL will continue to be developed, as it is a higher-level API than Vulkan is intended to be. Originally referred to "glNext," one can infer that Vulkan was likely going to end up being "OpenGL 5," but that the standards body eventually decided that a new name would better coincide with the relatively clean break the API purports to make from existing OpenGL paradigms.

Vulkan's practical advantages to game developers are primarily about control (as in, allowing more of it, potentially allowing for better optimizations at the cost of significantly more up-front work on the developer's part). Specifically:

  • The API is oriented around asynchronous generation of command buffers across multiple threads and sequenced processing of those buffers to a command pipeline. This reflects the realities of modern hardware. Most high-profile and/or high-performance software built on OpenGL today implement this kind of behavior themselves; having the API support this itself means that developers need not implement and maintain that framework themselves, or that they can do so with less effort.
  • Thread and memory management tasks are left to the application, not the driver, allowing game developers more control over those behaviors and thus potentially more accurate tailoring of those behaviors to their individual game's needs.
  • Validation and diagnostics layers can be independently enabled, allowing in theory for better tools integration with the API (something OpenGL itself has suffered from) and disabling of excessive validation, in theory allowing "the graphics on level three" to be that much more performant.
  • There's no hard API differential between mobile and desktop versions, which will in theory ease the porting of cross-platform games and if nothing else reduce version-checking headaches that everybody hates.

Vulkan's very C-like / OpenGL-like in superficial structure (the look and feel of the API calls, et cetera. It is, however, better typed (in that not everything is a bare int; there are relevant typedefs and so on).

It is much lower-level than OpenGL. One can expect a jump in operational setup and complexity between OpenGL and Vulkan as was seen in the D3D9 to D3D10 transition, which exposed a lot more of the under-the-cover details of GPU device operation to the API client. The transition is actually more akin to D3D11 to 12, since D3D12 is itself a very similar API to Vulkan, capability-wise.

\$\endgroup\$
  • 18
    \$\begingroup\$ It may be worthwhile to point out that Vulkan is basically a highly-iterated version of Mantle: community.amd.com/community/amd-blogs/amd-gaming/blog/2015/03/… The API conventions seem somewhat similar to DSA OpenGL, except with the ubiquitous gl prefix replaced with vk: blog.imgtec.com/powervr/… \$\endgroup\$ – jmegaffin Mar 3 '15 at 21:55
  • \$\begingroup\$ I'd been assuming this would be the case, but hadn't seen any evidence until that link, thanks. \$\endgroup\$ – Josh Mar 3 '15 at 21:59
  • 3
    \$\begingroup\$ FYI, you'll be able to replace the speculation and guessing with (some) hard fact after Valve's presentation on Thursday and the moratorium on Khronos members revealing more details is (mostly) lifted. \$\endgroup\$ – Sean Middleditch Mar 4 '15 at 0:25
  • 4
    \$\begingroup\$ I find the shader bytecode thing slightly amusing, considering there used to be a simple assembly-like language for shaders, and then it was replaced by a complex language (GLSL), and now we're going back to a simple bytecode language. \$\endgroup\$ – immibis Mar 4 '15 at 4:38
  • 2
    \$\begingroup\$ I thought Vulkan, like Mantle, would stand next to OpenGL for more low-level access, not replace it completely. At least that is what I've read so far. Or will Vulkan cover both low-level and high-level operations? \$\endgroup\$ – Roy T. Mar 5 '15 at 9:24
18
\$\begingroup\$

To elaborate on OpenGL's future:

OpenGL might achieve comparable performance to Vulkan, in draw calls per second, but also regarding general driver overhead:

\$\endgroup\$
  • 11
    \$\begingroup\$ This isn't actually an answer to the question on its own. \$\endgroup\$ – MichaelHouse Mar 5 '15 at 15:52
1
\$\begingroup\$

Khronos recently announced the release of the all-new Vulkan API, which will complement (and in some cases replace) OpenGL and OpenGL ES. Vulkan is a low-overhead API designed to bring code “closer to metal”, boosting performance and efficiency. It is based on AMD’s Mantle API, and the final spec is expected later this year.

In this post - A Brief Overview Of Vulkan API - Toptal Technical Editor Nermin Hajdarbegovic explains why Vulkan could be a big deal in the long run. It may take a while, but this cross-platform API could drastically improve 3D performance on certain devices, especially the multi-core application processors that are used in billions of smartphones and tablets.

\$\endgroup\$
  • 2
    \$\begingroup\$ "Khronos recently announced the release of the all-new Vulkan API" Um, not as of Aug 18 it hasn't. It has not been "released" by any definition of that term. It's Dec 8 now, and it still hasn't been released. \$\endgroup\$ – Nicol Bolas Dec 8 '15 at 16:29
  • 2
    \$\begingroup\$ @NicolBolas - It has now. It was launched today: khronos.org/vulkan \$\endgroup\$ – beatgammit Feb 16 '16 at 22:37

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.