• Hey Guest. Check out your NeoGAF Wrapped 2025 results here!

Khronos announces Vulkan (previously GLNext/Next-gen OpenGL)

It is my hope that a few years from now we will all look back upon this as the day PC gaming finally broke free of Microsoft's grip. Yes, there is a lot of work to be done, but this time I believe that all the necessary pieces are in place to bring about an actual revolution in the industry.

SteamOS with Vulkan? I would at least be skeptical.
 
I'm not 100% convinced of that. If the clean slate, standardized IR and improved conformance testing of Vulkan combined manage to solve most of OpenGL's glaring problems then I don't see why it wouldn't become more widely used on (Windows) PC as well.

Are there any penalties to using OGL (or Vulkan) on Windows? The general lower performance in OGL renderers is entirely to do with the state of drivers and not because of additional overheads or anything, right?
 
Both of those games are running on the id Tech 5 engine which is the exception rather than the rule.

However, Valve has presumably been working on supporting OpenGL with Source 2, and there seems to be some experimental OpenGL support in Unreal Engine 4.

Pretty sure all of the current Source games support OpenGL, and it is possible to switch the renderer in Windows to OpenGL through the command line terminal. The OpenGL support in UE4 isn't experimental either as it is there for Mac and Linux support. There is a dedicated Mac client for UE4. There are also quite a few different branches of UE3 with OpenGL support.

Are there any penalties to using OGL (or Vulkan) on Windows? The general lower performance in OGL renderers is entirely to do with the state of drivers and not because of additional overheads or anything, right?

We are going to have to wait and see on Vulkan. But there really aren't any performance penalties using OpenGL in Windows. Though generally when it comes to OpenGL, Nvidia's OpenGL driver performance has always been a little better than AMD or Intel's. On Linux Nvidia pretty much dominates performance. But Vulkan may change the tides for AMD though if it is based on their Mantle API.
 
Are there any penalties to using OGL (or Vulkan) on Windows? The general lower performance in OGL renderers is entirely to do with the state of drivers and not because of additional overheads or anything, right?

Conceptually there should not be any penalty for OGL. It's however hard to pinpoint wether the lower performance we see today is solely up to drivers either. It is entirely possibly that there are differences in all parts of the pipeline (engines being mainly optimized for DX on Windows, driver development being focused on DX on Windows and perhaps Microsoft is able to work more efficiently due to them taking DX into account when designing the rest of the OS while Mantle/OGL/Vulkan are more like Add Ons).

Looking at the quite different driver overheads we see on AMD and Nvidia cards when both are using DX11 it's quite clear that each of those components can play a big role when it comes to performance bottlenecks and that even though in theory they perform the same function the specific implementation can make for quite a big difference.
 
With Apple on board does this mean they won't be many versions behind in supporting it like they are with OpenGL on mac?

Step up your game, Apple.
 
I agree with everything you just said (except, of course, that the llvm IR is only the smartest low-level IR, since obviously the smartest high-level IR is INSPIRE ;)).

It would be quite a hindrance for future tool development not to be able to use the latest version of llvm.
You just got me some Wednesday reading material - thanks!
 
EDIT:

Here is the full SPIR-V specification from Khronos.


As much I think SPIR-V is paramount and the way forward, I think they'll face the exact same issue the original SPIR had in OCL: SPIR being based on llvm IR is both a blessing and a curse. It's a blessing because it is the arguably smartest IR out there (from the publicly available knowhow). It's a curse because there's no such thing as a standard llvm IR - it changes a few times per llvm revision, so from llvm's side it's a moving target. I think it'd be very nice if llvm thinktank sat dawn and devised a standard SSA, with versioning, BC and all. Otherwise we'll get yet another case of modern llvm not talking SPIR.

From the look of it SPIR-V is not actually based on LLVM IR at all. The whitepaper makes no mention of it, and the IR listing they give looks nothing like any LLVM IR I've ever seen.

OpenCL kernel:

Code:
__kernel void add(__global int* in1, __global int* in2, __global int* out) {
    size_t i = get_local_id(0);
    out[i] = in1[i] + in2[i];
}

which compiles to:

VAuKusb.png


I know the opensource Intel Linux GPU team had a very hard time getting LLVM IR to work as the shader IR for their Mesa driver under Linux, so its possible Khronos has become wary of using it as a base for SPIR-V. Odd considering regular old SPIR is most definitely LLVM based.
 
That's the key reason why Vulkan may be good. Legacy support and member politicking were said to be holding the API back (as far as our gaming hobby is concerned anyways).

http://richg42.blogspot.co.uk/2014/05/things-that-drive-me-nuts-about-opengl.html

yeah. The OGL 2.1 to 3.0 transition took so long and irreparably damaged openGL as a gaming api primarily due to this. AFAIK it was the graphics productivity and tools bloc that was constantly putting up barriers to evolving the api.
 
Are there any penalties to using OGL (or Vulkan) on Windows? The general lower performance in OGL renderers is entirely to do with the state of drivers and not because of additional overheads or anything, right?

most ogl games target older ogl versions due to compability issues. ogl has for a while had far less overhead than current dx.

the real penalty/difficulty is making sure users have up to date drivers, many casual users have gpus supporting the latest standards but never update their gpu drivers. I'm hoping maybe steam can do something to help here.
 
Here is the full SPIR-V specification from Khronos.
Thanks for the link.

From the look of it SPIR-V is not actually based on LLVM IR at all. The whitepaper makes no mention of it, and the IR listing they give looks nothing like any LLVM IR I've ever seen.
It's a verbatim derivation of llvm IR. I can literally translate it to llvm SSA as I read the example you posted ; )

Of course they've actually properly 'forked' llvm IR, but that does not help my original concern - all this tech is heavily reliant on llvm. And until llvm bigwigs sit on their behinds and provide a stable IR 'ABI', everybody will be body-balancing on a proverbial surfboard (think ms windows and their non-existent ABI).
 
rdKnMj1.jpg


Yes, but you know this gif comes to mind, unless they discontinue OGL. I am just being very sceptical with the decision to branch out from the brand, just like I was with Mantle API.

Would you rather they kept the crufty old api? The one that nobody (in game development) wants to use?

There is a reason DX has been successful. They weren't afraid to develop with the times, nor afraid to break backwards compatibility.
 
I wonder if we could actually see "real" "AAA" Windows games written with Vulkan rather than DirectX.
Does Dota 2 count as "real AAA" for you? If so you can already see it working in the debugger.

Other than that Gabe Newell stated on the Vulkan page that they will use it for their future games, of which L4D3 might be the first to come out.
 
I wonder to what extent Vulkan will change fundamental GL conventions. Will Vulkan be left handed? Will Vulkan use row vectors?
 
Read the actual article that supplements the video. This hasn't got all the effects etc in as it was made during the development of Vulkan
But the specularities are not missing. They're just broken. Just pay attention to the floor.
 
In fact Khronos has confirmed that AMD has contributed Mantle towards the development of Vulkan, and though we need to be clear that Vulkan is not Mantle, Mantle was used to bootstrap the process and speed its development, making Vulkan a derivation of sorts of Mantle

Anandtech
 
[*]LLVM = apparently not an acronym, but the name of a compiler / toolchain project
[*]LLVM IR = Intermediate Representation used by the LLVM project

LLVM = Low Level Virtual Machine

I don't think the full name is used any more however.

Yes, that was apparently the old name. The website now says:

Which sounds a little snobbish but eh. :P

LLVM is a library suite that aids in the development and building up of compilers. It is not a virtual machine. Not really sure how the history of the name came to be. Targeting LLVM specs, your compiler does gain the benefit of portability. Not unlike targeting POSIX compliance.
 
LLVM is a library suite that aids in the development and building up of compilers. It is not a virtual machine. Not really sure how the history of the name came to be. Targeting LLVM specs, your compiler does gain the benefit of portability. Not unlike targeting POSIX compliance.
It started out as a pseudo VM, literally. During apple's early OSX-on-intel days llvm was responsible for getting GLSL and transforming it on the fly (incl. jitting it) to either intel's abominable GMA900, or when the code was too much for that (read: often) to the CPU.

LLVM started out as a GLSL low-level abstraction layer.
 
I don't think POSIX compliance is a good analogy either.

Basically you have compiler front ends that create an intermediate representation similar to MSIL in .Net or Java Bytecode. Instead of running that inside a VM (like those languages do) the LLVM backend turns them into native code.

Perhaps that's how the VM part slipped into the name.

The benefit is clear however - you only have to write the compiler frontend yourself which turns the programming language into the LLVM IR. The compilation process itself is done by the common backend (for each platform) and that's where the interesting stuff like register allocation and automatic code optimization happen.

Basing your IR on that is likely to be smart as there already are people around who know how to work with that. Other than that I don't really see much benefit as the backend has to target GPUs rather than CPUs so you won't be using any existing LLVM backend like for example for x86 and the frontends are also different given that GLSL is different from regular languages like C++.

Perhaps I'm missing something there?
 
I don't think POSIX compliance is a good analogy either.
It indeed isn't a good one.

Basically you have compiler front ends that create an intermediate representation similar to MSIL in .Net or Java Bytecode. Instead of running that inside a VM (like those languages do) the LLVM backend turns them into native code.
LLVM can also run its IR non-natively, Java-bytecode style.

Basing your IR on that is likely to be smart as there already are people around who know how to work with that. Other than that I don't really see much benefit as the backend has to target GPUs rather than CPUs so you won't be using any existing LLVM backend like for example for x86 and the frontends are also different given that GLSL is different from regular languages like C++.

Perhaps I'm missing something there?
LLVM has R600 (VLIW5/VLIW4) AMD targets as well as NV PTX (nvidia's internal GPU low-level abstraction level) backends. And while I'm not aware if AMD use the R600 backend for production purposes, CUDA uses llvm heavily.

Apropos, while on the subject - sony's ps4 compiler toolchain is entirely llvm/clang based. Actually, sony contributed a lot to the llvm codebase over the course of the past two years.
 
No, not really. Maybe you don't have the various options for interacting with the windowing system, but other than that I can't think of anything.

Can you still use fullscreen exclusive mode? I've heard (from byuu, iirc) that it's a Windows concept and maybe it's in my head, but a lot of SDL-based games seem to not support it.
 
You can read that either as "Mantle is dead" or "Mantle has been superseded by Vulkan and DX12" depending on how charitable you want to be. The result is the same though.

They literally say to use the other guys stuff if you want 1.0 functionality. Damn. Well, it lasted about as long as I thought this would last. Now to go ahead and get FreeSync over and done with.
 
Sounds good. I hope this will be successful and bring more AAA games to Linux. The sooner I can say goodbye to Windows and move to an open plattform the better.
 
Sounds good. I hope this will be successful and bring more AAA games to Linux. The sooner I can say goodbye to Windows and move to an open plattform the better.

I love my Linux for sure but I use Windows, too. What exactly bothers you with Windows?
 
They literally say to use the other guys stuff if you want 1.0 functionality. Damn. Well, it lasted about as long as I thought this would last. Now to go ahead and get FreeSync over and done with.

I don't think you have been paying attention...
 
TheHellsLord said:
ES3.1 support in the hardware will not mean all that much given that an OS update is still necessary as mobile devices don't allow you to "sideload" graphics drivers all that easily (e.g. rooting devices).

I read the Open GL ES 3.1 support in a more inclusive way. I thought it was referring to the class of capabilities not just to mobile platforms. I can create an Open GL ES 3.1 context on my desktop machine today. IIRC, the main addition to ES3.1 over 3.0 was glDispatchCompute and its kin as well as some instanced drawing routines. So I think they were basically saying that all modern GPUs will be supported.

The Anandtech article sees it similarly.
http://www.anandtech.com/show/9038/next-generation-opengl-becomes-vulkan-additional-details-released

As for hardware support for Vulkan, Khronos tells us that Vulkan should work on any platform that supports OpenGL ES 3.1 and later, which is essentially all modern GPUs, and desktop GPUs going some distance back.

Interesting quote from ashecitism's link

First, let's clear out something: SPIR-V has nothing to do with SPIR, it's a new thing which marketing thought it was a good idea to name two products with different version values. Ohhh, I can't wait to battle against the confusions this idea will lead to. SPIR-V is not tied to LLVM, it's a fully specified and self-contained specification, it can represent both graphics code and compute code for any API, including Vulcan, OpenCL, OpenGL, OpenGL ES or WebGL. If we trust that the industry is interested in solving actual developers' problems, it would eventually be used for Direct3D, Metal and consoles.

LOL, sure enough. There will be some confusion.
 
It's going to be interesting to watch for sure! Valve are probably going to show something from the new Source Engine as the screenshot from the release was a Dota2 debug screenshot.
Hopefully they are going to announce when driver support will be available and when the public can get it's hands on the API.

Wonder when it's going to get uploaded. Hopefully rather fast!

Also they said that Arkham Knight and Witcher 3 were hitting Linux so I guess they are going to utilize Vulkan.
 
I'm not sure if it's already been uploaded elsewhere but the talk labeled as glnext presented by Valve, Frostbite, Epic etc is now available on GDC Vault.

http://gdcvault.com/browse/gdc-15

Cannot directly link to it because it's locked behind a registration wall but it's still free to watch. Just need to put in personal info (can be fake if you want).
 
I'm still a Junior and I can't make a new topic so apologies if this is an off-topic necrobump but Khronos just released the SPIR-V version 1.0 specification to coincide with SC '15. The specification documents are available at the Khronos registry. I would assume that a full 1.0 spec for Vulkan is not that far behind. Thought some GAFfers might be interested.
 
I'm still a Junior and I can't make a new topic so apologies if this is an off-topic necrobump but Khronos just released the SPIR-V version 1.0 specification to coincide with SC '15. The specification documents are available at the Khronos registry. I would assume that a full 1.0 spec for Vulkan is not that far behind. Thought some GAFfers might be interested.
We are really interested, thanks!
 
TheHellsLord said:
engines being mainly optimized for DX on Windows
There are engines where DX is the only native implementation (and everything else runs under DX wrapper) so it's more than just optimization problem.

Durante said:
I wonder if we could actually see "real" "AAA" Windows games written with Vulkan rather than DirectX.
In a twisted way, Vulcan is the best chance DX12 has to get "proper" support, as it promises to lift the need for software to have legacy API support (and with it, legacy pipeline designs).
And given its purpoted mantle-origins, why would it be a question over what kind of games you can write against it?
 
Top Bottom