The Future of Graphics Programming: The Vulkan API
home.seekscale.com
home.seekscale.com
EDIT: Or acquisitions...
Nevertheless, thanks for the link, this was incredibly informative and well-written.
Of course, OpenGL may still be bloated and slow, but at least consistently so.
Currently I see it only mattering on Android (if Google cares about it) and GNU/Linux.
Unless Apple proves me wrong by adding Vulkan support, I would say they were on the meetings more to learn how to improve Metal than anything else.
Where?
Still, I'm not sure who would develop such a framework. It could be a new backend for ANGLE (the framework browsers use to implement OpenGL on top of Direct3D). It might also be too difficult - the whole point of Vulkan is to avoid GPU drivers having to have vast, complex, buggy and slow OpenGL compatibility layers, and OpenGL-on-Vulkan may end up just reimplementing the same thing with the same pitfalls.
Whether that will be in the form of an explicit OpenGL-on-Vulkan library, or just similar things within vendor driver implementations, I can't say. Graphics card drivers are already enormous and contain a lot of backward compatibility code.
Are we back to the Glide days?
Contrary to urban myths, game consoles never used OpenGL as such, only GL like APIs (the PS3 PSGL wasn't really used).
Apple also only adopted OpenGL on MacOS X due to NeXTStep, before it used QuickDraw 3D.
Surely you have to do this with OpenGL as well.
OpenGL is a good concept, but it's real-world usage turned it into an ugly mess with a too deep reliance on the competence of the developer.
If GPU APIs were programming languages OpenGL would be Visual Basic. You're shielded from 90% of the more difficult aspects of accessing the GPU, for a performance cost. Vulkan would be akin to C.
For example: if you use OpenGL the GPU driver will tons of things (costing performance) to make sure that you don't update a texture while the GPU is using it - even if you know what you are doing (e.g. updating a portion of the texture that isn't being used for the render). Vulkan will get right out of your way and let you do what you want: even update a texture while its in use and potentially cause a bug/driver crash or other issues.
The interviewer made this assumption in the second question:
> Vulkan will “replace” OpenGL
Which given my above explanation you will see is probably not true. OpenGL is incredibly valuable because it's so simple - Vulkan and OpenGL simply don't compete with each other, they solve slightly different problems.
tldr: OpenGL is great. But, the hardware model it is based on is long outdated. The mantra for the past decade has been "Do your work in huge batches if your want peak performance". But, modern hardware is very capable of getting great perf out of lots of small batches if they are set up correctly. Unfortunately, doing that in OGL requires complicated extensions to work around the old design (AZDO).
That's the big driver. But, there's also a lot of good improvements over OGL that can be made given the past 30 years of hindsight. Not the least of which is a much simpler, more consistent, more reliable, more maintainable driver model (ex: Don't ship a custom, rushed, underfunded compiler in every OS update of every Android device and just point at the spec doc when people complain that they each parse the same code slightly differently from each other.)
This can, as I see it, only lead to giving more power to the big companies and shafting the indie developers and linux gamers... So in general, fuck those people!
Today, GPU vendors write big, complex, closed-source drivers offering high-level APIs that as a result are buggier and harder for FOSS-developers to keep up with and make FOSS replacements for.
With Vulkan, GPU vendors should write smaller/simpler drivers, in theory making it easier/cheaper for them to provide good drivers and probably reducing the amount of work needed to produce a replacement FOSS-driver.
The complexity and the high-level APIs is supposed to move out of the driver and into libraries and engines, and many such will be FOSS and probably more portable than the FOSS kernel drivers can be. Please correct me if I'm wrong, though, as I'm not a graphics guy, but I was happy for FOSS when I first read about Vulkan.
http://www.gdcvault.com/play/1022018/
This is being spearheaded by Valve so the idea that they want to do anything to harm indie developers or linux gamers is simply incorrect.
- The day The Khronos Group releases the Vulkan specifications is when they plan to open-source their Intel Linux driver.
http://www.phoronix.com/scan.php?page=news_item&px=LunarG-Vu...This is exactly the same as OpenGL - OpenGL is an open standard, and has an open-source implementation by the name of [Mesa](http://www.mesa3d.org/).
As other people have said, OpenGL is to Vulkan as C# is to C. For large-scale engine developers, it's quite clear which you'd want to use, under-the-hood.
Besides, just writing the C# runtime environment in C makes an awful lot of sense.
I think that's kind of misleading. Mesa lags years behind any current OpenGL standard.