Caught Up to DirectX 12 in a Single Day
The future is not certain, but Khronos Group did what they needed to.
I'm not just talking about the specification. Members of the Khronos Group have also released compatible drivers, SDKs and tools to support them, conformance tests, and a proof-of-concept patch for Croteam's The Talos Principle. To reiterate, this is not a soft launch. The API, and its entire ecosystem, is out and ready for the public on Windows (at least 7+ at launch but a surprise Vista or XP announcement is technically possible) and several distributions of Linux. Google will provide an Android SDK in the near future.
I'm going to editorialize for the next two paragraphs. There was a concern that Vulkan would be too late. The thing is, as of today, Vulkan is now just as mature as DirectX 12. Of course, that could change at a moment's notice; we still don't know how the two APIs are being adopted behind the scenes. A few DirectX 12 titles are planned to launch in a few months, but no full, non-experimental, non-early access game currently exists. Each time I say this, someone links the Wikipedia list of DirectX 12 games. If you look at each entry, though, you'll see that all of them are either: early access, awaiting an unreleased DirectX 12 patch, or using a third-party engine (like Unreal Engine 4) that only list DirectX 12 as an experimental preview. No full, released, non-experimental DirectX 12 game exists today. Besides, if the latter counts, then you'll need to accept The Talos Principle's proof-of-concept patch, too.
But again, that could change. While today's launch speaks well to the Khronos Group and the API itself, it still needs to be adopted by third party engines, middleware, and software. These partners could, like the Khronos Group before today, be privately supporting Vulkan with the intent to flood out announcements; we won't know until they do… or don't. With the support of popular engines and frameworks, dependent software really just needs to enable it. This has not happened for DirectX 12 yet, and, now, there doesn't seem to be anything keeping it from happening for Vulkan at any moment. With the Game Developers Conference just a month away, we should soon find out.
But back to the announcement.
Vulkan-compatible drivers are launching today across multiple vendors and platforms, but I do not have a complete list. On Windows, I was told to expect drivers from NVIDIA for Windows 7, 8.x, 10 on Kepler and Maxwell GPUs. The standard is compatible with Fermi GPUs, but NVIDIA does not plan on supporting the API for those users due to its low market share. That said, they are paying attention to user feedback and they are not ruling it out, which probably means that they are keeping an open mind in case some piece of software gets popular and depends upon Vulkan. I have not heard from AMD or Intel about Vulkan drivers as of this writing, one way or the other. They could even arrive day one.
On Linux, NVIDIA, Intel, and Imagination Technologies have submitted conformant drivers.
Drivers alone do not make a hard launch, though. SDKs and tools have also arrived, including the LunarG SDK for Windows and Linux. LunarG is a company co-founded by Lens Owen, who had a previous graphics software company that was purchased by VMware. LunarG is backed by Valve, who also backed Vulkan in several other ways. The LunarG SDK helps developers validate their code, inspect what the API is doing, and otherwise debug. Even better, it is also open source, which means that the community can rapidly enhance it, even though it's in a releasable state as it is. RenderDoc, the open-source graphics debugger by Crytek, will also add Vulkan support. ((Update (Feb 16 @ 12:39pm EST): Baldur Karlsson has just emailed me to let me know that it was a personal project at Crytek, not a Crytek project in general, and their GitHub page is much more up-to-date than the linked site.))
The major downside is that Vulkan (like Mantle and DX12) isn't simple.
These APIs are verbose and very different from previous ones, which requires more effort.
Image Credit: NVIDIA
There really isn't much to say about the Vulkan launch beyond this. What graphics APIs really try to accomplish is standardizing signals that enter and leave video cards, such that the GPUs know what to do with them. For the last two decades, we've settled on an arbitrary, single, global object that you attach buffers of data to, in specific formats, and call one of a half-dozen functions to send it.
Compute APIs, like CUDA and OpenCL, decided it was more efficient to handle queues, allowing the application to write commands and send them wherever they need to go. Multiple threads can write commands, and multiple accelerators (GPUs in our case) can be targeted individually. Vulkan, like Mantle and DirectX 12, takes this metaphor and adds graphics-specific instructions to it. Moreover, GPUs can schedule memory, compute, and graphics instructions at the same time, as long as the graphics task has leftover compute and memory resources, and / or the compute task has leftover memory resources.
This is not necessarily a “better” way to do graphics programming… it's different. That said, it has the potential to be much more efficient when dealing with lots of simple tasks that are sent from multiple CPU threads, especially to multiple GPUs (which currently require the driver to figure out how to convert draw calls into separate workloads — leading to simplifications like mirrored memory and splitting workload by neighboring frames). Lots of tasks aligns well with video games, especially ones with lots of simple objects, like strategy games, shooters with lots of debris, or any game with large crowds of people. As it becomes ubiquitous, we'll see this bottleneck disappear and games will not need to be designed around these limitations. It might even be used for drawing with cross-platform 2D APIs, like Qt or even webpages, although those two examples (especially the Web) each have other, higher-priority bottlenecks. There are also other benefits to Vulkan.
The WebGL comparison is probably not as common knowledge as Khronos Group believes.
Still, Khronos Group was criticized when WebGL launched as "it was too tough for Web developers".
It didn't need to be easy. Frameworks arrived and simplified everything. It's now ubiquitous.
In fact, Adobe Animate CC (the successor to Flash Pro) is now a WebGL editor (experimentally).
Open platforms are required for this to become commonplace. Engines will probably target several APIs from their internal management APIs, but you can't target users who don't fit in any bucket. Vulkan brings this capability to basically any platform, as long as it has a compute-capable GPU and a driver developer who cares.
Thankfully, it arrived before any competitor established market share.
Way to GO Khronos! Now it’s
Way to GO Khronos! Now it’s time to attack that Death Star known as the M$ windows 10 ecosystem and DX12! Look out Nefarious Nadella, there is now Vulkan and no need for your cloud of spyware/ad pushing/CPU cycles stealing bloatware OS!
Yea, lets do that. What
Yea, lets do that. What motherboard feature do you need to enable to boot and run your computer from a graphics API?
grub
grub
Why Vulkan runs under Steam
Why Vulkan runs under Steam OS(Debian based) so don’t make a fool of yourself! Who needs the DX12/Windows only crap, when there will be the cross platform Vulkan graphics API becoming available under linux/BSD/other non M$ OSs! You are such an egregious FOOL to think that I ment running a graphics API as an “OS”!
the asshole strikes again.
the asshole strikes again.
That describes youself
That describes youself perfectly! Thanks for letting us know!
Let’s de-escalate this,
Let's de-escalate this, folks.
How about we re-escalate?
How about we re-escalate? Have you seen videos on YouTube of Talos Principle Vulkan Beta vs DX11? Vulkan runs at about 50-70% of the total speed of DX11. Not exactly a great first showing.
DX10 was slower than DX9 at
DX10 was slower than DX9 at launch, too, and same with DX10 to DX11, and those didn't even require re-engineering how work is queued. The Vulkan port was also done by one guy, in three months, with a game that's optimized for DX11-like constraints. Croteam devs are amazing, but everything should take a grain of salt.
Heck, when Unreal Engine 4.9 launch with experimental DX12 support, I converted my project and brought the camera out to the corner of my most detailed map (~10,000 draw calls). I experienced about a 20% drop in performance compared to DX 11. Epic Games has since changed a lot of their "RHI" backend for DX12 and probably Vulkan, so I'll probably do more comparisons in 4.11 when it launches.
This is what I was alluding to when I said that Vulkan is neck-and-neck with DX12 until further notice. We'll need to see how Epic and other engine/middleware devs optimize for the APIs. It's possible that they can squeeze more out of DX12, or maybe more out of Vulkan, or maybe it'll be parity. Hopefully it will be based on their merits, not just memories.
This post is what all tech
This post is what all tech discussions ought to be like. Doubleplusone for the informed commentary 🙂
Available for Fedora 23 right
Available for Fedora 23 right now
$ sudo dnf copr enable ajax/vulkan
$ sudo dnf install vulkan anvil vkcube
$ vulkaninfo
Thanks from Fedora23_Fanboy
All I’m going to say, is that
All I’m going to say, is that there’s a reason in the past 30 years we’ve gone away from APIs and Programming Languages that leave memory management up to the developer. Except a LOT of bugs.
I honestly expect the first wave of Vulkan/DX12 native games to be disasters on the scale of Arkham Knight.
Just like all mantle titles
Just like all mantle titles oh wait no that was a gameworks exclusive!
Not with Gaming engines, and
Not with Gaming engines, and SDKs there to hold the hand of the script kiddies! There will even be an OpenGL to Vulkan translation layer that will still allow for that code to be ported over, while still allowing for the metallically challenged to work with Vulkan!
There will be SDKs that automate the memory management features for those that do not have the ability to manage the metal! There always has been software tool chains to help the cubical monkeys to get along with their job! There will be automated designers to generate the necessary code for the slack-jaws and keep them from having to understand all that only a competent systems software engineer understands!
Arkham Knight is the fault of the lead programmers, the bean counters, and the HR folks that hired the developers in the first place, no gaming engine and API will protect against incompetent programmers and management more interested in profits at the expense of QC!
hey us slack-jaws gotta go
hey us slack-jaws gotta go home and take care of the kids, the wife, and the wives of code junkies. Without us there is no industry to sale stuff too
Yes your wife Brandeen who is
Yes your wife Brandeen who is also your sister! “Code junkies” more like spaghetti code junkies and the usual script Kiddies with no knoledge of computer hardware! There are plenty of non slack-jaws out there to keep the economy going, while the slack-jaws only cause problems! Keep trying to call yourselves programmers but that is only fooling the other slack-jaws!
Eh, don’t blame the
Eh, don’t blame the developers for crap like that. It’s the publishers pushing ridiculous deadlines and pushing stuff out before it’s finished.
Developers can be crap TOO!
Developers can be crap TOO! Just like the others who think that they know their way around a computing system, just look at all those cubicles and watch the monkeys ramdomly pecking at the keys! GIGO is more the product of the QC methods in some of those development houses!
Arkham Knight was a disaster
Arkham Knight was a disaster because dev used outdated bottleneck UE3.
it’s funny how i grew from
it’s funny how i grew from loving to hating microsoft in the last decade, gaming as trivial as it may seem, it’s one of the major things that drive ppl to use a specific OS, if Valve really commits to SteamOS/vulkan, gamers will start migrating, and softwares will start rolling in on linux, we just might have a real alternative to microshiet.
ok back to earth, Devs really need to step up and pick Vulkan, the install base is larger.
Based on what I’ve read about
Based on what I’ve read about DX12 vs Vulkan, other than Microsoft’s “encouraging”, I’m not really seeing any reason why devs would want to use DX12 – Vulkan does everything just as well, while being significantly more cross-platform.
Hopefully this means that the days of needing to run Microsoft’s malware are numbered.
Xbox One might cause some
Xbox One might cause some issues with that, but who knows.
It had way more issues that
It had way more issues that that. It’s why I returned mine 3 days after I got it for Christmas.
Preliminary Intel Linux
Preliminary Intel Linux drivers are also available today for Broadwell and Skylake (sources also hint at eventual support back to Sandy Bridge). https://01.org/linuxgraphics/blogs/jekstrand/2016/open-source-vulkan-drivers-intel-hardware
I did a side by side
I did a side by side comparison and whilst DX11 was faster, it was great to see Vulkan actually running in a game (The Talos Principle) and whilst it is new, I expect after some more work, it will be flying along. Great stuff and great to see.
https://www.youtube.com/watch?v=8oi7SudxllU&feature=youtu.be
Yeah. I’m in with the
Yeah. I’m in with the alternative crowd here too. Linux hasn’t milked me for a monthly fee yet.
Will Nvidia be “fully
Will Nvidia be “fully compliant” like they were with DX12? You know where later it turned out some features had limited resources and other was software emulation.
So where is AMD’s conformant
So where is AMD’s conformant driver.
Hint: Nowhere
Hint:
Hint: http://support.amd.com/en-us/kb-articles/Pages/Radeon-Vulkan-Beta.aspx
Considering NV is the HEAD of
Considering NV is the HEAD of KHRONOS, yes, they’ll be compliant.
Very excited for this and
Very excited for this and would like to see it getting used in more upcoming titles. Will make the switch to a Linux based OS so much faster for gaming.
You mean how every DX API
You mean how every DX API release works, with various optional feature levels?
No, I want to be able to game
No, I want to be able to game nicely on something other than Windows like Linux.
No conformant AMD driver but
No conformant AMD driver but Nvidia has conformant drivers for Android, Linux and Windows.
So much for AMD’s leg up because they donated Mantel.
I dont know what you are
I dont know what you are talking about. You can download AMDs beta driver since yesterday: http://support.amd.com/en-us/kb-articles/Pages/Radeon-Vulkan-Beta.aspx
This is a nonconformant
This is a nonconformant driver. Read his post carefully. The reason why they said that it’s Beta is because the couldn’t get a single one of their cards to be conformant with the API. AMD is not on the list as of the launch date:
https://www.khronos.org/conformance/adopters/conformant-products
Sooooo glad to be able to
Sooooo glad to be able to keep my perfectly functional Windows 7 setup and forget about NSA approved Orwellian OS 10. Long live to Khronos and Vulkan!
Yeah. Win7 was M$s best
Yeah. Win7 was M$s best AFAIC. This will help it from becoming a crippled sister, but sooner or later it’s going to have a hardware line drawn in the sand. And … uhhhh … watch those updates anyhow. Most people who use 7 and XP can be listened in on anyhow.