Very interesting post. So ... the subtext that a lot of people aren't calling out explicitly is that this round of new APIs has been done in cooperation with the big engines. The Mantle spec is effectively written by Johan Andersson at DICE, and the Khronos Vulkan spec basically pulls Aras P at Unity, Niklas S at Epic, and a couple guys at Valve into the fold. This begs the question: what about DirectX 12 and Apple's…
That last quote really resonates with my experience of software dev in general. "easy" API's generally do it by making a ton of assumptions. Modifying those assumptions becomes a huge pain point and that's if the API even allows you to modify that particular assumption.
Former Nvidia Dev's Thoughts on Vulkan/Mantle
81–90 of 163 posts
Re: Former Nvidia Dev's Thoughts on Vulkan/Mantle
#82Earlier quoted context omitted.
About your last paragraph, I would say that that is even more important to optimize and to make low level layers for than graphical game engines (believe it or not :)). The thing is while gaming is seen as a "performance critical" application, where it is natural to want the maximum performance to be squeezed out of your hardware, Web development is just a behemoth of inefficiency, and we think that that is the norm…
Hi, I'm working on a library to allow something like this (rendering web UI's with a WebGL backend). It's in very early stages. Feedback is very welcome: https://github.com/davedx/lustro
If you do see any performance benefits it likely will be because you support less features than what a modern day browser supports with HTML/CSS. But in my opinion you could probably achieve faster speeds with Canvas in a similar manner.
Re: Former Nvidia Dev's Thoughts on Vulkan/Mantle
#83Earlier quoted context omitted.
Write your whole webapp in WebGL? Edit: Seriously, how feasible is that? Creating a GUI framework on top of WebGL and creating an abstraction layer (which the original article advises against) would be a huge performance boost comparing to current webpages, wouldn't it?
WebGL should never have been invented, at least on current architectures. It's a ticking bomb, precisely for the reasons this articles explored - drivers are complex and buggy black boxes that lie in kernel space so ring 0 access is never too far from reach for many exploits. WebGL has a potential to be exploit vector much more severe than what we've seen with other auxiliary web technologies like JavaScript or Java…
We've started creeping that way with a lot of the newer HTML5 stuff, but we have a long way to go.
Re: Former Nvidia Dev's Thoughts on Vulkan/Mantle
#84Re: Former Nvidia Dev's Thoughts on Vulkan/Mantle
#85Earlier quoted context omitted.
About your last paragraph, I would say that that is even more important to optimize and to make low level layers for than graphical game engines (believe it or not :)). The thing is while gaming is seen as a "performance critical" application, where it is natural to want the maximum performance to be squeezed out of your hardware, Web development is just a behemoth of inefficiency, and we think that that is the norm…
Hi, I'm working on a library to allow something like this (rendering web UI's with a WebGL backend). It's in very early stages. Feedback is very welcome: https://github.com/davedx/lustro
Re: Former Nvidia Dev's Thoughts on Vulkan/Mantle
#86The idea that nVidia and AMD are detecting your games, and then replacing shaders, optimizing around bugs, etc should be absolutely terrifying. And vice versa, the idea of having to fix every major game's incredibly broken code is equally terrifying. And it's a huge hit to all of us indie devs, who don't get the five-star treatment to maximize performance of our games. So overall, I'd say this is a step in the right…
Actually it's par for the course, if you care about backwards compatibility. Raymond Chen has many, many stories about the absolutely heroic lengths Microsoft has gone to ensure that popular, yet broken, programs continue to work smoothly between Windows upgrades [1][2][3][4][5].
On Depending on Undocumented Behavior:
[1] http://blogs.msdn.com/b/oldnewthing/archive/2003/12/23/45481...
[2] http://blogs.msdn.com/b/oldnewthing/archive/2003/10/15/55296...
Why Not Just Block Programs that rely on Undocumented Behavior?
[3] http://blogs.msdn.com/b/oldnewthing/archive/2003/12/24/45779...
Who cares about backwards compatibility? (A lot of people):
[4] http://blogs.msdn.com/b/oldnewthing/archive/2006/11/06/99999...
Hardware breaks between upgrades, too:
[5] http://blogs.msdn.com/b/oldnewthing/archive/2003/08/28/54719...
Joel Spolsky's (somewhat dated) "How Microsoft Lost the API War" gives a good overview of the above concerns:
Re: Former Nvidia Dev's Thoughts on Vulkan/Mantle
#87Re: Former Nvidia Dev's Thoughts on Vulkan/Mantle
#88Very interesting post. So ... the subtext that a lot of people aren't calling out explicitly is that this round of new APIs has been done in cooperation with the big engines. The Mantle spec is effectively written by Johan Andersson at DICE, and the Khronos Vulkan spec basically pulls Aras P at Unity, Niklas S at Epic, and a couple guys at Valve into the fold. This begs the question: what about DirectX 12 and Apple's…
About your last paragraph, I would say that that is even more important to optimize and to make low level layers for than graphical game engines (believe it or not :)). The thing is while gaming is seen as a "performance critical" application, where it is natural to want the maximum performance to be squeezed out of your hardware, Web development is just a behemoth of inefficiency, and we think that that is the norm…
Let's imagine a world where a browser is just a secure place to execute code. You get vulkan, io, networking, input, camera access in a cross platform way.
So, how do search engines find any info? How do you share links to content? How do you support braille readers? Browser extensions?
I'd argue those things are pretty essential to the web as we know it (well maybe not the extensions) and I might also argue that some of the inefficiencies of the web environment are a direct result of making the decisions that the most important part of the web is a common semi scannable and linkable format, HTML.
Re: Former Nvidia Dev's Thoughts on Vulkan/Mantle
#89Earlier quoted context omitted.
Write your whole webapp in WebGL? Edit: Seriously, how feasible is that? Creating a GUI framework on top of WebGL and creating an abstraction layer (which the original article advises against) would be a huge performance boost comparing to current webpages, wouldn't it?
To be fair, I think the takeaway isn't don't make/use abstraction layers, but don't make a one-size-fits-all abstraction and then hide the lower level stuff. A targeted abstraction that correctly supports the domain you are in is still a good thing. That's what the engine developers end up being here, an abstraction on top of this low level API that gives many devs exactly what they want. Edit: To be clear, I don't t…
No file systems, no network protocols, no processes; just a very thin layer that lets userspace implement those if/how it wants to.
Re: Former Nvidia Dev's Thoughts on Vulkan/Mantle
#90These are the vanishingly few people who have actually seen the source to a game, the driver it's running on, and the Windows kernel it's running on, and the full specs for the hardware. Nobody else has that kind of access or engineering ability. One option is to release the source of the drivers, making it possible for motivated engine developers to do this without explicit access to AMD developers. If they did this…
It seems to me, based on this article, that providing support to major game studios and releasing driver updates to accommodate their games is a major revenue source for GPU manufacturers. I guess that's why only Intel releases open source drivers: their GPUs aren't really expected to provide high performance for games. I guess with Vulcan/Mantle, the drivers are just trivial hardware abstraction layers, so the GPU m…