Metal is a hidden tax that isn't obvious, but it's there.
Metal is a hidden tax that isn't obvious, but it's there.
After all, scientists don’t write much CUDA oriented for game development anymore or custom maths shaders, they have their own CUDA libraries helping them in their own domains better than what a gamedev orienter Vulkan would do. Any percent shaved off developer time and running time is worth a lot of money.
The Apple Metal platform surely is customized to the needs of Apple, its devices and its users ultimate needs, in a way Vulkan will never be. Unified memory on recent Apple silicon M1 M2 M3 where RAM and VRAM are somehow merged.
Maybe the society of worldwide developers had better things to do than spend precious time on Vulkan.
Vulkan is everyone's ticket out of that mess. Not only does it provide Apple an industry-standard API for third-parties to develop on, it flips the DirectX problem on it's head. Because you support Vulkan 1.3 you get DXVK support alongside DX9, DX11 and DX12 support. Now it doesn't matter what third parties do, because you win every time; Steam Deck politics.
The status-quo is simply detracting from the value of using MacOS; the only feasible explanation is that Apple is hoping to somehow force developers into using Metal natively. Outside Tomb Raider and Resident Evil, I just don't see it happening.
> The Apple Metal platform surely is customized to the needs of Apple
That clearly doesn't stop anyone from writing Vulkan drivers for the hardware, though. OP appears to be blatant evidence of this.
For example; CUDA is well-customized to Nvidia's specific hardware, but their hardware also supports Vulkan drivers. Same goes for Intel with oneAPI and AMD's ROCm; all of them still support Vulkan. Apple is quite literally one of the only mainstream manufacturers that does not support it.
I'm told the problem is some legal spat between Apple and Khronos that has led to a "no Khronos standards anywhere at Apple" policy. I don't know the details beyond that.
Steam Deck handles it just fine, alongside OpenGL. You use Vulkan to run DirectX games, OpenGL to accelerate the desktop and browser (can soon be replaced with Vulkan too) and fall back to OpenGL for everything else. I'm not aware of any desktop stuff the Steam Deck can't do; it edits video, it runs Blender, it can browse the web and compile apps.
Granted, Vulkan of course isn't a panacea here. But without it, stuff like the Steam Deck simply wouldn't exist. Vulkan is valuable because it provides a preservation layer for Windows software that Apple is unwilling to support themselves.
With Vulkan, they would have to wait for a committee to approve required changes, and still they could not probably optimize it to match their GPU an CPU hardware profiles in such an efficient way.
And not least at all, to optimize the developer experience and tools. Apple GPU debugging tools are probably the best tools you get for graphics development debugging, and you get that only on macOS.
IMO Metal is a nicer API than Vulkan. At the same time, you can ask, why should Microsoft get to keep DirectX, and not just write a Vulkan driver ?
That doesn't stop them from implementing both Metal and Vulkan.
They support both. And sometimes the Vulkan driver is faster than their native DirectX one too.
Or just make proprietary extensions?
There's no clean answer here. You push that mentality of "Customers first" too hard, and you get the PS3; an unwieldy architecture that devs are forced to support but end up with worse ports than the Xbox 360. The customer doesn't necessarily "win" here.
You push developers first too hard and you get Linux. You can do anything you want if you dig deep enough. But as we all know, the common consumer barely reads the tutorial, let alone learns how to configure complex settings in a CLI.
There needs to be some middle ground, and not making developers duplicate their work for every new private business is at least a starting point.
>Maybe the society of worldwide developers had better things to do than spend precious time on Vulkan.
Given MacOS's marketshare, I'm sure they did. Let's not pretend that the few metal games we have on Desktop wasn't built on the grounds of some Candy Crush clone that generated billions of dollars 10 years ago and justified the forced upgrade (we can definitely justify from there if "making candy crush run faster" is a better thing to do. But it pays the bills, I guess).
Very few devs want to support Mac and the numbers speak for themselves.
not making developers duplicate their work for every new private business is at least a starting point.
Im sure we all understand the benefits of a unified API / same abstraction layer. It’s about how the abstraction is leaking in real life and how to squeeze every last percent of developer’s experience and final application speedBut money talks and game engines want a slice of that sweet apple pie.
I'm not sure "more" is the right term here. There are about 1.3 billion iPhone users worldwide. Sure, Vulkan covers more OS environments, but how important is that to a game developer vs. total available users? Does Vulkan user reach exceed 1.3 billion?
If you only care about latest Android versions, and Samsung and Google phones, sure go Vulkan.
You want to get into the iOS gaming market, go Metal. By definition you've expressed you don't care about the other OS's.
You want to make a AAA game, you probably don't go Metal if you want enough market coverage to recoup your costs - though I will be delighted to be proven wrong when a AAA iPhone game comes.
If Apple want to change their "AAA game" attractiveness they need to address this. It's not that hard - the article took a month but even a year is fine. Apple just needs to get it done, but it doesn't seem like they care to make User<->GameDev relationship easy. Either the gamedev needs a whole other version of their game on Metal. Or the users have to do a lot of homework and fiddling to get a modern AAA game to run.
I wonder if they have Vulkan internally and simply know their GPU won't look good in direct comparisons - which is fair; beating or even leveling with nVidia is hard. But if anyone can show AMD and Intel how to do it....
Likewise you don't care about Vulkan. You care about DirectX and whatever Playstation has
...exactly. Which is why, unless you're given a license to re-impliment DirectX, it makes so much more sense to use Vulkan and it's DX9 through DX12 translation layer.
What am I missing here?
And the translation layer exists largely due to Valve business decisions, not because "community came together or something". This glorious amazing support didn't even really exist until 2018 (when it was launched with official support of 27 games)
1. Apple has never truly cared about gaming on the Mac
2. iOS only supports Metal, and Metal serves Apple extremely well
3. Apple's dropping of 32-bit apps and switching to M* chips has hurt gaming on Macs much more than any perceived harm from not supporting Vulkan.
Google was starting to offer a DirectX porting kit on the same year they decided to ramp down Stadia, there is even a GDC talk on it.
My hot take is that when AAA games will be shipped on mac os they will not use porting kit in runtime and just call Metal. Imho API court battles are fun to watch from afar.
Maybe it'd be interesting to contemplate a world in which red team, green team, and blue team all have their own proprietary APIs and there are no cross-vendor abstractions, but that's not what we're discussing here.
Maybe Metal is customized to Apple's needs but how is it customized to Apple user's needs? One thing is for sure, had Apple been using Vulkan, the porting process to macOS would have been much easier.
Porting the 3D renderer to another 3D API isn't the hard part of a game port, but also:
Apple is offering a D3D12 porting toolkit since a little while which TBH makes a lot more sense than native Vulkan support (since there are so many more D3D12 games than Vulkan games):
It would make more sense... if GPTK behaved like DXVK.
But instead, you're not allowed to distribute games with it, you can't easily modify it, and Apple themselves doesn't commit to supporting or updating it. Unlike Proton, which is community maintained, GPTK is Apple-maintained. If something breaks, your best option for "fixing" it is to run upstream DXVK on a properly supported machine.