It seems like Vulkan is being pushed really hard lately. Is it possible it might become THE cross-platform graphics interface and we start seeing truly platform agnostic games?
Graphics API is not the only, or even primary bottleneck for portability. You see this in every hackernews thread about Vulkan, but most developers are using portable engines where the graphics api (among many other things) is entirely abstracted and they still don't do day one ports because porting to a new platform is rarely free, even when all technical challenges are solved.
No. Companies that matter are MS (they are still pushing DirectX), Apple (Metal or bust), Sony and Nintendo (each console has its API). Without full platform owner support Vulcan will be a second class citizen with all kinds of performance and compatibility issues.
Aside from the strong contingency Khronos Group carries, Vulkan's cross-platform support is in part due to its very good codebase, which enables easier integration.
Sure. Microsoft was also a member of Khronos 15–20 years ago, when (according to an acquaintance who used to work for a GPU vendor) they did every underhanded thing they could to disrupt the OpenGL spec / committee, while simultaneously working on their end to make sure it wouldn’t be a competitive way to develop Windows software.
Being a member (by itself) doesn’t mean anything. Without talking to anyone involved or knowing additional context, it’s impossible to know whether the companies on the committee are productive collaborators, passive onlookers, or active opponents of Vulkan.
>Sure. Microsoft was also a member of Khronos 15–20 years ago, when (according to an acquaintance who used to work for a GPU vendor) they did every underhanded thing they could to disrupt the OpenGL spec / committee, while simultaneously working on their end to make sure it wouldn’t be a competitive way to develop Windows software.
You're talking about the pre-Khronos OpenGL Fahrenheit deal, which is largely public knowledge. Microsoft announced a joint project with SGI to support OpenGL on Windows, then put all their resources into DirectX while SGI spent two years building their section. The only unprovable part is that this was their goal all along, but the leaked combat plan against free software at the same time leaves little doubt.
You’re right this was mostly pre-Khronos. Apologies, I’m not an expert in the history of OpenGL. But I believe he was also talking about the period after the Fahrenheit deal, in maybe 2000–2005. He talked about MS sending people to OpenGL committee meetings and intentionally trying to gum up the process and prevent interoperability. I don’t really know the details, and this is all second-hand and poorly remembered from a conversation a decade ago. So take it with some salt.
They quit the OpenGL board in 2003, and though I don't doubt they continued to be antagonistic between 99 and then I can't see their voice pulling that much weight after Fahrenheit.
Not trying to be rude, I'm sure your friend knew far more at the time than I ever have. Just seems better to base this on provable events so people don't see "my connected friend said..." and write it off as a conspiracy. Microsoft is trying to act as an ally to free software again, and people seem far too trusting of their motives.
And as stated in that article, work is also being made to implement Vulkan on DirectX, allowing Vulkan apps to be distributed through the Windows Store (which requires DirectX).
Nintendo Switch supports Vulkan. I expect we'll see Vulkan support quite strongly in the next generation of consoles (besides maybe Microsoft's)
A cross-platform API will never be first-class on a console. The GPU in the Switch is a generic Tegra Maxwell with full OpenGL and DirectX (unusable, obviously) support, yet Nintendo still pushes NVN as the first class.
PS4 has GNX, etc. Only Xbox has that chance since it has DirectX, but fat chance seeing that on OS X or Linux/*BSD
If you want good performance on xbox you still have to use console specific APIs, in every engine I've worked with xbox is a special platform. I haven't done xbox development post dx12, but afaik xbox one still has console specific apis with dx12. Most PC games are not uwp (steam can't host uwp games), so extra work needs to be done to support both uwp and win32 as well as console specific direct3d.
How many gamers do you think are going to give up Steam and go to the Windows Store?
Similarly, how many Xbox One developers are going to bother with UWP, either?
Given UWP allows the use of Win32 because nobody would use it if it didn't, it seems pretty likely that if games start using Vulkan then UWP will end up with Vulkan, too. Microsoft Store needs games more than games need UWP.
UWP makes use of Win32 as implementation detail, all the Win32 APIs considered legacy are not supported.
"This subset of APIs was chosen to support key scenarios for Windows Runtime apps that were not already covered by the Windows Runtime, HTML/CSS, or other supported languages or standards. The Windows App Certification Kit ensures that your app uses only this subset of the Win32 and COM API."
> Similarly, how many Xbox One developers are going to bother with UWP, either?
Probably zero, but they won't bother with Vulkan also.
If they are targeting something else besides the XBox, they already have a portable game engine in place, or as typical in the games industry, contracts in place with companies specialized in doing game ports.
Win32 is legacy, the Desktop Bridge sessions on channel 9 always show how easy it is to import apps into the store and slowly convert them into UWP ones.
The next release of Windows will even add support for command line UWP apps, and Office 2016 is only available via the store on Windows 10.
As for Steam vs Windows Store, not everyone is on Steam and the Store also allows for XBox games, which has a much bigger portfolio.
Plus you are forgetting the scenario where Apple or Microsoft, might eventually just buy Valve.
Doesn't really matter what Microsoft wants. Valve's an extremely profitable private company. They need to be for sale for Microsoft to buy them, and Gabe doesn't seem to be the selling type.
I doubt they will ever truely deprecate win32. Too many old applications that will never get updated to UWP but that people are still using, there will be too much backlash.
UWP is a massive improvement, as it puts applications in secure sandboxes, a strategy that basically every other platform is already doing.
Sure, Microsoft faces an uphill battle since backwards compatibility is the name of their game, and few consumer-facing OSes today have a continuous platform going back over two decades.
Apparently Apple doesn't really want anything to do with it[1]. I don't know that I'd hold my breath on the major game consoles picking it as the defacto way of doing things, over their close-to-the-metal graphics APIs, either. I'd be shocked if Microsoft bagged DirectX. And ultimately, Unreal and Unity are going to have whatever backends they need for whatever systems they are on, and most developers are going to be working through whatever the engine exposes, so they won't really care.
Besides, there are many other dimensions of platform-dependentness. You've either got to go lowest-common denominator, or you've got to special case for the platforms that are more capable.
There are two elements in your question: 1. Vulkan becoming "THE" cross-platform graphics API and 2. This leading to games being truly platform agnostic.
For 1, we already have OpenGL which theoretically is the true cross-platform graphics API. Vulkan adds another option for when you want more low level control (i've heard - i think from some Nvidia presentation - that a better way to think of Vulkan is as a GPU abstraction API that you use to build your own graphics API). For many years already, anyone who cared about writing a cross platform renderer with a single API, at least on desktop systems, would use OpenGL.
For 2, generally speaking game engines tend to be platform agnostic and they were platform since the days of PS2 and original XBox and while there used to be engines that only supported a single playtform at the time, over the years this became less and less common and instead the engines are designed with portability in mind - especially since the last 10 years or so all games tend to be ported to Windows, XBox360 (or One for the latest gen) and PS3 (or PS4 for the latest gen) and each of those systems has their own specific APIs. Note that to do 2, all engines had to also support multiple graphics APIs by introducing their own abstraction layer for the native graphics API. Also note that an engine being platform agnostic doesn't necessarily mean that a game using this engine will be platform agnostic (e.g. UE4 does support Linux but you do not see all UE4 games supporting Linux).
So basically, 1 cannot lead to 2 because 2 was already a thing for a long time.
Now i will make an assumption here that what you really wanted to ask is that if Vulkan would make it more likely for Windows games to also be ported to Linux and OS X. Personally i wouldn't expect this to be any more likely than it would be without Vulkan (that is, the only cross platform option would be OpenGL), mainly because of Direct3D which allows a developer to support both Windows and XBox, where as Vulkan (and OpenGL) only supports desktop systems. The extra systems that Vulkan and OpenGL enable (Linux and OS X) have a very tiny market share that may not be worth the effort (not only in terms of programmer time). So i expect the situation to be exactly the same as with OpenGL: used mainly by those who focus on desktop systems and by those who use middleware and do not have much of a cost overhead to support Linux and OS X. And by those who prefer it for philosophical reasons, of course.
It is really amazing what the hackers behind Wine have been doing for the last 20+ years. There's not a foundation or some commercial backing behind the project if I remember right.