When did the rest of the industry drop Direct3D for Vulcan?
The industry uses Direct3D on Windows and XBox, Metal on Mac and iOS devices, Gnm on Playstation, and Nvn on Switch.
Aside from a subset of Android, what popular platform uses Vulkan by default?
DXVK is currently only used as a drop in replacement for DX9 games. DX10 has been forgotten (thank god), DXVK's D3D11 implementation is not good, and more and more games are going on D3D12 which affords a hell of a lot of control.
Additionally, DirectX is not just a graphics API, it's also sound (XACT and XAudio2), ray tracing (DXR), Input handling (XInput & DirectInput), CUDA-like calculations (DirectCompute), storage handling (DirectStorage), etc. Most of these have either an alright equivalent (DXR has an equivalent in Vulkan with extensions, and that's about it, and Valve's input implementation is _really good_, but it's not a usable API as far as I know.) or a wildly inferior alternative (at least for the PC space that is Windows/Linux/MacOS). D3D12 also is one of the drivers of new GPU programming features in the PC space (once again, the console side of things is a bit weirder, although MS does bring some lessons in from the Xbox side of things), while Vulkan is kind of stuck doing everything as extensions that may or may not be available, and Metal is still a piece of shit.
So, yeah, no, DirectX is far from irrelevant.
Remember, to start, Windows only officially supports DirectX. OpenGL and Vulkan comes from your GPU vendor and Microsoft waives all responsibility for them. Vulkan is, quite literally, a 3rd-party API that can run on Windows - not something Windows supports or endorses.
Xbox does not support Vulkan. DirectX or get rejected.
Only 60% of Android devices support Vulkan. Guess you’ll also need ANGLE or OpenGL for backwards compatibility.
PlayStation does not support Vulkan. Better learn gnm, gnmx, and PSSL.
Nintendo Switch has Vulkan but it is almost unusably slow, on a console that is already not known for speed. Better use NVN if you want anything decent.
iOS does not support Vulkan. Better use Metal.
So… what does Vulkan support, exactly? Windows, Linux, and not enough of Android. If your game only runs on desktop, it’s a good option - but why not target DirectX? Windows, Linux with Proton, and most of the Xbox support all in one. For this reason, I have yet to see a Vulkan game that does not have a DirectX mode.
Blaming macOS for being proprietary is disingenuous in an industry full of Proprietary APIs.
Windows doesn't "support" the DirectX version shipped by your GPU vendor either. The drivers shipped by your GPU vendor, and all the APIs provided by them, are supported by your GPU vendor.
So the real thing we're talking about is hardware vendors. Nvidia and AMD support Vulkan, OpenGL, and DirectX where applicable. Apple only supports Metal. The console vendors have always had weird variant APIs based on the open standards but not identical, except MS where the console is very close to desktop Direct X.
On mobile hardware vendors ubiquitously support OpenGL ES and there's widespread support for Vulkan.
So it's complicated. In the desktop space, as a percentage of market share, Vulkan is extremely widely supported. Same with mobile. Consoles have always been an odd man out.
So Apple, which doesn't sell a console, is absolutely breaking from the pack in the markets they target.
If you consider 60% of Android users, and 0% of iOS users, "widely supported," sure. That's less than half of mobile phones in use right now, making Vulkan the odd-one-out on mobile as well. You certainly can't build a mobile app right now that only uses Vulkan without cutting out huge parts of your audience.
> So Apple, which doesn't sell a console, is absolutely breaking from the pack in the markets they target.
Apple wants the same API on all of their devices, and I can't blame them. They are the odd-ones-out in Desktop only.
But does that really matter? If you are making a game only for Desktop, namely Windows, and weren't going to just use DirectX for some reason, it does (which I think, nowadays, is a rare situation). But if you are targeting any game consoles, or any mobile phones, you're adding multiple graphics APIs anyway and Metal is just another one.
But that's what we're talking about, if it weren't for Apple Vulkan would be a near ubiquitous desktop and mobile API. Apple is the one standing in the way of that.
If Vulkan were a near ubiquitous mobile and desktop API, _maybe_ the console vendors would be more willing to tolerate it.
Ubiquitous desktop: Windows
Uniquitous gaming consoles: XBox and Playstation
Ubiquitous phones (worldwide): Android
APPLE IS RESPONSIBLE FOR VULKAN NOT BEING EVERYWHERE (not in Windows, not on XBox, not on Playstation, not on 40% of Android devices)
Sony only cares about their console(s), so they prefer to focus on optimization rather than compatibility. (While Nintendo cares more about gameplay than graphics.)
Isn't that 40% of Android devices old / very cheap ?
Apple is one of the biggest (and especially, most profitable) companies in the world, and with great power comes...
Because only Apple has the power and hence the responsibility, not the tiny helpless companies Microsoft and Sony (~99% of consoles, 76% of desktop).
Edit: don't forget, Apple absolutely must support Vulkan (and others don't) because Metal is proprietary and non-cross-platform (just like any other graphics API on all major platforms) even though Vulkan appeared two years later than Metal (but neither Microsoft nor Sony are expected to drop their APIs which also appeared earlier than Vulkan).
Did I get that logic right?
Total addressable market matters here. 100% of Android-based VR headsets support Vulkan. Granted, that's mostly the Quest 2, but it's not the only HMD in town anymore.
Also, a lot lot lot of Android devices are garbage-tier <$100 that you wouldn't want to target anyways because you won't get any sales on them. So the % of Android devices supporting Vulkan may be misleading in the sense that you might be aiming for a segment of devices with much, much higher, if not complete, support for Vulkan.
Metal came out in 2014, Vulkan in 2016.
Better for someone else to build a Vulkan API on top of Metal, which is what has happened. It's not perfect, but it's the only thing that can work. The pressure on Apple should be for Metal to better support Vulkan by providing APIs it needs to work optimally.
Beyond that, Apple might want to contribute to the Vulkan-on-Metal implementation... though they're only going to do that if it makes strategic sense, which I don't see. For cross-platform, what makes more sense is to encourage games to use a higher-level engine that supports metal among its platforms, like Unity and Unreal.
Typically, if a game maker wants to make cross-platform a priority, they wouldn't target just Vulkan, they'd target a cross-platform framework. That would be true whether Vulkan was supported by Apple or not. And if they don't make cross-platform a priority, the chances of a mac port go down regardless.
So...
We're looking at the incremental gain of Apple providing first-party support for Vulkan vs the existing third-party support. Looks like a lot of work for Apple for little gain. Just doesn't seem worth it to me. Also, the Vulkan version would always be out-of-date since Apple would pin the supported version to an OS release, and would need to be conservative about it, since they aren't going to hold an OS release for Vulkan.
Really, Vulkan on macOS is much better done by the interested third parties, and the focus on Apple should be to get them to better support a Vulcan API on top of Metal.
I'm confused. Your previous statement was saying the main point is that Apple have kept a bad API.
> Vulkan is what people are using and Vulkan can translate from DirectX. Apple is shutting themselves off from the rest of the industry with this move, which I would argue (judging by how many Mac users wish they could game) is a bad thing.
Possibly, FSVO translate, but I don't think anyone was commenting on this new point. More with the previous points.
Android is following with 32-bit deprecation this year, actually. Pixel 7 doesn’t support 32-bit apps.