Very impressive work, and a great testament to the value of shared, iterative and open components.
I'll be curious how long it takes Proton to be ported, though I suspect even with an optimal Vk implementation, many games will run terribly due to the difference in GPU architecture + arm translation overhead + proton itself (however negligible).
Still, I remain optimistic that more games will target unified memory and ARM in the future on desktops, as SoCs become more prevalent like the snapdragon.
There will be a small bit of irony if the gaming experience on Asahi ends up easier and more straightforward than MacOS.
Really just drives home how big of a mistake it was ignoring Vulkan for the past decade on Apple's behalf, but lord knows they won't admit that until it's too late.
Vulkan would likely not really have helped macOS gaming in any form. I consider it a red herring that people point to.
The number of games that run natively on Vulkan is negligible. The number of games that run on Metal by comparison (natively) is orders of magnitude higher.
If we're ONLY talking about the ability to use Proton, Apple does now have Game Porting Toolkit that does effectively the same thing with comparable performance characteristics if you take out the other contributing overhead elements.
Vulkan probably wouldn't help macOS gaming from a users' point of view, but it sure would be nice for us engine developers. There aren't many Vulkan games, but the big 3 non-in-house game engines (Unreal, Unity, Godot) are all committed to supporting Vulkan in addition to Metal, so we (collectively, the engine dev community) currently have to support both. Dropping Metal would reduce the amount of engineer time spent chasing down Metal-specific bugs (which is not inconsequential), which allows us to spend more time on actually interesting features that users want.
Metal is a hidden tax that isn't obvious, but it's there.
Interesting point of view that could also be the other way around, Vulkan support being a hidden tax for the love of open source and free software rather than something really useful the market needed on top of others APIs / GPU architectures / platforms, pushed by a subset / minority of developers more ideological than practical grounded developers who accept that competition of private standards will bring out the best user experience, each platform having its customized architecture.
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.
Coverage. Metal only covers Apple. Vulkan covers so much more.
But 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?
OS coverage vs pure numbers is something for the game developer to be worried about, and by extension the game engine devs.
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....
AAA don't care about Vulkan, they care about Apple, Sony, Nintendo and Microsoft proprietary APIs.
minor nitpick: did care when Google Stadia was in the list. But it did not worked out and everyone took a big L on that and now Vulkan support has been mostly purged already.
The reason why Stadia is no more, is exactly because they don't care.
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.
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?
Surely there are more Android users than iPhone users worldwide, and if you target Android you target Vulkan.
Only if we don't care about those using devices where OpenGL ES is still more stable, with less buggy drivers.
If you only care about latest Android versions, and Samsung and Google phones, sure go Vulkan.
My brother in Christ, OpenGL ES is officially depreciated on all Apple platforms. It is not "more stable, with less buggy drivers", I've used it.
I thought we are talking about Android, and which APIs makes business sense, when AAA actually want to get paid, instead of having to pay back store returns.
How many iphone users will pay 60 dollars for a game, like you can try and achieve on Steam or Switch? I feel like the iOS game market is pretty different.
More money is spent/made made on iOS gaming than on traditional PC gaming, even if the $60 up front model isn't something iOS users are willing to accept. I almost think they're right to tolerate mtx models btw. At least if games are f2p, companies aren't releasing them broken/unfinished.
Can't release unfinished/broken games, when what they're releasing are not games at all.
It feels unlikely. Much smaller companies (Broadcom, Qualcomm) have no trouble writing compliant Vulkan drivers (let alone singular people), so I find it hard to give Apple the pass here. Assuming good faith on their part, Vulkan should be available; or at least some kind of cross-platform API target. Otherwise people are just going to ignore Mac and keep focusing on DirectX, like the status quo.
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.
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.
Metal allows Apple to squeeze that extra performance out of their devices. They have full control over, and can implement whatever they need to deliver Apple Vision Pro for example.
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.
Sure, but a lot of extra work for something like that. Also, Apple Walled Garden..
They support both. And sometimes the Vulkan driver is faster than their native DirectX one too.
Or just make proprietary extensions?
Your example of taking games that dare go the full Metal route makes me wonder : to which projects was adding 100% native Vulkan compatibility / support worth the resources spent on this and not something else ? What’s the full Vulkan platform having a dedicated OS running solely Vulkan with a Vulkan based GPU and for which real life uses ?
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.
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.
Sigh, sadly that sounds in-character. Pour one out for the users that didn't get their feature because a C-suite needed to make a point with their temper-tantrum.
Like in the OpenGL days, Vulkan keeps playing catch up with the games consoles, and DirectX APIs, and it is already a extension mess just like OpenGL, an achievment in a quarter of OpenGL's lifetime.
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):
https://developer.apple.com/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.
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.
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.
You're confusing device-specific APIs with OS-specific APIs. There's a big difference. DX11, DX12, Metal, etc. are themselves all abstraction layers over what are in some cases very different hardware designs. (This will eventually become less so with Apple moving to in-house GPUs, but for now it's still true--Metal targets NVIDIA and AMD GPUs as well as Apple's M1/M2s.)
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.
I'd take Metal anyday over Vulkan though. It's simply the much more ergonomic and much better designed API. A native Vulkan version only really makes sense if Android needs to be supported (and this will be a rough ride because of the poor state of Android Vulkan drivers).
That's a shame, Metal supports proportionally less software and is maintained by a megalomaniac.
Bugs notwithstanding (which I agree are a significant concern for Metal), I'd frankly much prefer to work with a well-designed, streamlined API like Metal instead of a needlesly verbose and complex Vulkan.
The commercial engine developers also don't have any qualms supporting GNM, GNMX, NVN.
You can't ship Game Porting Toolkit with your game, though. DXVK doesn't have this limitation, and developers use it all the time. In effect, this means the number of games you get with native Vulkan coverage is a magnitude higher than the total sum of all Metal-native desktop titles.
This isn't completely true. Crossover is allowed to ship the GPTK components for API translation (which they currently do as of 23.5) and games are allowed to embed Crossover elements like they did in the pre-Metal days with Cider etc.
All this talk of DXVK doesn’t explain why games based on engines with native metal support aren’t on a Mac either.
Crossover is a paid product, and even then has pretty poor DX12 support compared to Proton. Up until a couple years ago it didn't work at all.
Again; if Apple had just supported Vulkan alongside Metal like a normal non-paranoid company, their users wouldn't be caught in the middle of this. It's such a blatantly obvious solution with no user-facing downsides. It's shocking that anyone would defend the status-quo when it's so notoriously and obviously broken.
Your assertions aren’t backed by history though.
Prior to metal and Vulkan, many games used Cider to target Mac despite having the same APi (at that point, an up to date OpenGL).
And many of the current game devs do have Metal versions of their engines that they target towards iOS, yet don’t have a macOS version.
The fact of the matter is that it comes down to market share. Macs have historically not had a large user base that also had capable GPUs. It’s not been worth supporting that tiny market share
It’s the same on Linux. Why are there so few Linux native games? The argument that Vulkan would have solved this is completely incongruent with the reality of the state of gaming.
This will inevitably go back to “well at least we could have used proton” but that’s also not true, and besides there’s GPTK. And then the argument becomes circular , because all evidence points to: devs just don’t care about Mac’s from a support perspective. You can make it easier, they still won’t come until the possible demographic size is larger.
and even with DXVK, what about all the other platform specific differences? Vulkan wouldn't solve those either.
I mean I owned a Mac back then, I remember pretty fondly that pre-Catalina MacOS was a fairly well-targeted platform. OpenGL was working for them; you could play first-person shooters, online games with fancy graphics, the kit and kaboodle. Things weren't perfect, but there was a lot of functional cross-platform software back when Apple commit to maintaining common APIs. You cannot deny that an entire ecosystem of software that was once cross-platform had to now choose sides, if they would support Metal or OpenGL. I watched it collapse with a single system update.
My brother in Christ, the "reality of the state of gaming" is that Mac owners are buying Steam Decks just to access the games Apple tries to kneecap. Vulkan fixed it, and Valve commoditized Apple's compliment.
I don't want things to be this way. I think Mac owners should have easy access to the games they want to play, but Apple insisted otherwise for so long and refused to ever admit that they were wasting their time. It's part of the reason I got rid of my Mac so I could daily-drive Linux; they were wrong, and other platforms were right.
Go back and see how many of those games were running Cider though. The switch to kill 32-bit games killed more games than the deprecation of OpenGL did. The number of games that targeted OpenGL was ALSO shockingly low.
This is something that OSS fans do not want to reconcile: Open source graphics APIs have LONG lost out to proprietary graphics APIs in gaming. OpenGL had a very small base in games, Vulkan is even smaller.
and again, you went exactly back to where I knew you would and pre-empted it because it's the obvious playbook of answers. Vulkan didn't fix gaming on Linux. Proton did. And again, you ignore the key part of the sentence: NATIVE
Linux has fewer *native* AAA games than macOS. Vulkan has not solved that.
The SteamDeck is a product targeted at gamers that provided a new value proposition: AAA gaming on the go. Which further reinforces my point that API is irrelevant to the discussion, its about demographic. Apple has a strong gaming demographic on the mobile side (with metal no less).
The steam deck didn't introduce new Vulkan/Proton capabilities. Why was Linux gaming stagnant before it? Doesn't that exactly reinforce that its the form factor proposition that made it skyrocket?
Why do you have tunnel vision on "native". It's a pretty meaningless distinction at this point. No steam deck users cares that all the games they are playing aren't "native".
Precisely. Modern games incorporate all manner of middleware to add functionality. Compression, video codecs, shading, ray tracing, physics, animation, anti-cheat. What's one more piece of software in the pile to abstract away platform-specific interfaces?
Also Wine it's just a Win32 subsystem for Unix with a PE loader. Also, a hint: on NT Systems, Win32 it's another subsystem on top of the NT kernel. I'm pretty sure Windows 95/98 software under 2000/XP doesn't run 'directly' in the same they did under their original OSes.
It did. If you want to parade around how cool Cider is, it doesn't make much sense to venerate the update that killed it.
Imagine all the Steam Deck users that are pissed because they can't play Resident Evil 8 and Tomb Raider natively! They must be super upset, and envious of Apple's superior native version. Surely.
Hey, here's a magic question for you; which do you think will get supported longer, a DirectX title running on Proton or an Apple-native title running on Apple software. Do you trust Apple to keep supporting your game as long as Proton would keep supporting it?
Considering backward compatibility on ios my bet is on proton for sure.
You are utterly wrong. Current Wine doesn't even need multilib.
but it in fact did! You can play 90% of games on linux precisely because of Vulkan. Just boot Steam Deck or whatever and play. There is no way it would work out without Vulkan
Vulkan has nothing to do with the Steam Deck being able to run PC games other than being the API that DXVK and VKD3D-proton translate DirectX calls into. Vulkan isn’t the magic bullet, it’s just another API in the stack. The “magic” is the phenomenal amount of effort that has gone into those DirectX translation libraries.
Vulkan makes the work easier, but it is not what makes those games portable.
Yes and no. DXVK didn't happen on top of opengl as the impendence mismatch between OpenGL and DX is too large. Wine had working but slow DX9 to OGL; incomplete, buggy and slow DX11 to OGL; and no hope for DX12 to OGL. DX9, DX11 and DX12 are all much easier (but not easy, mind) to map to Vulkan.
As Steam Deck is running AMD, a conversion layer on top of Mesa Gallium would have been possible, but again DX12 support never materialized.
Vulkan has a lot of features made specifically so that implementing portability layers like DXVK and Zink would be possible and performant.
This has been a key project in the past few years and lots of work went into it. For more info, look up Vulkan portability initiative.
And I address Proton specifically in my comment and also address why it’s not an indicator of increased gaming support on Mac.
I truly feel half of the replies here are glossing over the things I’ve already covered and perhaps are people who haven’t actually tried the equivalent Mac solutions and seen where the resultant deficiencies lie or the delta between platforms that proton would also have to bridge further.
Vulkan isn’t the magical silver bullet people think it is.
Conversely, I'm convinced that you haven't tried Proton and are trying to defend Cider and Whiskey as analogs when in-fact they are pale imitations. Gaming on Mac is derelict; you can get a few games working, but it's still absolutely pathetic stood-up next to Windows or even modern Linux. The number of playable desktop games is just a blowout for MacOS.
We've all used tinker-tool applications to get a random app running through WINE, but DXVK is more than that. It is the solution to a problem Apple refuses to address, and even Apple is willing to admit that they need DirectX translation in order to make games run on Apple Silicon. How is the future of gaming on Mac going to look any different if we continue to follow in the footsteps of Cider? How long do you think that shanty-utopia will be supported on the latest OS update?
While it might be true, I'd recommend to check if the licenses do, in fact, recurse this way.
They might not.
I think you make a good point in general, but "likely not really have helped macOS gaming in any form" I think is taking it too far. The reason why many developers only use dx11/12 is because adding more graphics backends increases their support surface unnecessarily, being that Vulkan only works on Windows (and Linux), while dx11/12 work on Windows on Xbox. As an extreme example of this, apparently Cyberpunk 2077 ran Vulkan on Stadia but did not enable it for Windows as an option. (Because what is the point?) If Vulkan worked on both Windows and Mac then developers would have more reason to support it. It would likely also mean game engines would put more time into making Vulkan better. For a related example, Apple had to individually contribute it's Metal backend to Blender because (presumably) nobody wanted to work on it.[0] Why? Because they already have to support OpenGL, Cuda, OptiX, Intel OneAPI, ROCm HIP, and Vulkan. Clearly, something is very wrong with graphics APIs right now. If Apple supported Vulkan, it would have allowed everyone who is not Windows to benefit by making Vulkan become more standard. Luckily Xbox seems to be kind of dying right now so perhaps supporting dx11/12 will not be as important in the future. But the point is if you have a small portion of the market it just doesn't make sense for developers to spend time entering that market for little reward.
Another major point is the development cycle. Since Metal only works on Apple devices that makes developing for it more annoying for game developers which are mainly using Windows. It means they will have to switch to a Mac device to debug issues with their Metal backend. By supporting Vulkan Apple would allow for a much smoother developer experience. (While Metal Developer Tools for Windows exists, as I understand it it only allows you to compile shaders for Metal on Windows, but to actually test that anything works you will need an actual MacOS device.).
[0] https://code.blender.org/2023/01/introducing-the-blender-met...
Many engines support Metal, in addition to the plethora of console specific APIs. Saying DX11/12 works on Xbox is glossing over that that it's not actually the same DX12 that works on desktop.
You then say that if they used Vulkan, it would mean they wouldn't have to debug on a Mac. This is overly optimistic. Even in the OpenGL days, you'd have to test on all platforms because there's so many variances. In general, the game designers are rarely working multi platform, and it's down to the engine devs themselves + QA. Neither should or would be blindly trusting that things are portable. Vulkan/DX on AMD/NVIDIA also perform differently enough that you can't just assume parity.
Your other statement about nobody wanting to work on Metal for Blender is a bit odd too. There's no current Vulkan or DX backend for it. Does that mean they're not desired either? AMD and NvidiA contribute support for their favoured API's as well, like Optix that people still desire.
This didn't prove itself out when OpenGL was a thing. OpenGL was everywhere but barely used.
That doesn't mean that Vulkan would replace it though. Windows gaming still eclipses Linux, and game developers have to target multiple APIs either way. There's very little upside to them switching to Vulkan for it.
Also bear in mind that DX is much more than D3D. It's a lot of APIs. There's many reasons to use DX beyond just the 3D graphics APIs.
I didn't mean this, just that you can actually run whatever shaders you compile rather than needing a Mac just to see your output. My point was that you would get "a smoother developer experience," which is true.
Vulkan has some pretty strict conformance tests[0]. It's not like you are going to run into differences between conformant Vulkan implementations every day. It's very different from not being able to run the shaders you've compiled at all. You just need to know what extensions are supported. Also, Apple's support for OpenGL was never good. They only supported OpenGL 4.1 for years while 4.5 was out, for example. I don't know if Apple's OpenGL was ever even conformant, being that 4.1 is not listed on the site.[1]
There is actually (as an experimental feature currently).[2] And Khronos did not have to send developers to implement it for them. My understanding is that Blender also implemented CUDA/Optix themsleves and only got help from Nvidia, rather than Nvidia implement the whole thing for them, although I could easily be wrong there.
OpenGL was not nearly as performant as direct X. When Direct X came out people switched to it. Vulkan and dx12 are very similar however.
Yeah, because each console wants their own special graphics API to force on everyone instead of using an open standard, despite Xbox and Playstation GPUs being from AMD which supports Vulkan on it's consumer GPUs.
And many don't, including the engines of a lot of AAA games like Elden Ring, Cyber Punk 2077 and Baldur's Gate 3 (although CDPR are now switching to UE5). And studios are generally using modified versions of UE so my guess is that means they are generally making low level changes sometimes, and so it makes sense to me that they sometimes may write their Dx/ Vulkan code for different things sometimes. (this is just my guess. I admit to being uninformed here). Even if not there are still ways that you could program something in UE without writing any direct DX/Vulkan code that could still result in worse performance for one of the backends vs. the other. That is why on games that support multiple graphics backends oftentimes one is better than the other. And developers will release updates improving only certain backends. Adding an extra platform like MacOS is not simply clicking a button. although it is easier today than before, if it was that simple, then literally every UE game would be on MacOS. (Yes, you do 'just click a button' to support MacOS in UE5, but there is still more to it than that.) And increasing the surface area of platform divergence does nothing to help the situation. Also, while it doesn't matter for Apple, having to maintain multiple backends adds needless extra work for engine developers
[0] https://docs.vulkan.org/guide/latest/vulkan_cts.html
[1] https://www.khronos.org/conformance/adopters/conformant-prod...
[2] https://code.blender.org/2023/10/vulkan-project-update/
Ultimately, the whole discussion surrounding technologies is discussing the consequences of the problems, not the problem itself.
The problem is that Apple, since it decided it was going to make its own GPUs for all its devices, deemed it necessary to simplify their support. Apple's Metal API is custom-made to the silicon Apple is making, and Apple keeps Metal development strictly focused on their hardware. Of course they could have chosen to support more APIs, but the strength of iOS clearly helped them decide to move iOS game developers to the Mac, rather than try to court the so-called AAA companies who are stuck in an x86, Windows+console, heat up the wazoo world. That whole world is difficult to reconcile with Apple's priorities.
Do you have any examples of this? My guess is that the API, being higher level than vk/dx, is designed for ease of use by developers, not to expose hardware level details. In fact Vulkan would be more suitable for that as it is lower level.
What do you mean by this? Are there a lot of mobile game studios publishing on MacOS now? (this is a legitimate question)
Why is that? The only actual barrier there is x86. But Vulkan is not related to x86 anyway. It is only related inasmuchas they are both not supported by Apple. But this discussion is itslef about if Apple should support Vulkan, so the reasoning here seems circular. Also, if Apple doesn't like x86 games that is fine because they don't support x86. So it's not like they are not support Vulkan because they think developers will start distributing x86 games to their customers because that's impossible.
I mean, it will use the same about of energy as any other demanding application like Blender or video editing. And you can always lower the graphical settings to make it consume less power. Similarly mobile game developers would likely increase the graphical settings for a mobile game that they port to MacOS.
I don't really know if it counts as 'exposing hardware details,' and I may be wrong, but this could be an example of where in their API it does make more sense for Apple Metal being separate.
The example I am thinking of is with MTLBuffers and storage options. You have several different storage options for MTLBuffers that wouldn't necessarily make sense on non-apple hardware and especially non-apple silicon. Options that are not backwards compatible with intel macs. When I go to use MTKTextureLoader with the newTexture command, I can set in the options an MTKTextureLoader.Option.StorageMode as shared storage. On Apple silicon, this means that the it is a shared buffer by both the CPU and GPU since with the apple silicon architecture the came peice of memory can be accessed by both. There are a bunch of different storage options that may not apply to other configurations outside of the Apple silicon configurations.
Metal is not generally higher level than VK/D3D12, instead it's a mix of high- and low-level features (where the low level features typically had been added in later Metal versions and are optional to use).
You can stick to the convenient high level parts of Metal v1 (which feels a lot like the spiritual successor to D3D11) if that's good enough (which often is), but if needed there are lower level and more explicit features that match or in some parts go beyond what Vulkan and D3D12 have to offer (AFAIK argument buffers allow a couple of things that are not possible on D3D12 or Vulkan, or at least would require vendor specific extensions on Vulkan - like setting the PSO via an argument buffer, recorded in a compute shader).
Oh man with every fibre of my being do I wish this were true. I’m debugging a different Vulkan driver bug almost every 2 weeks. PC drivers are passable, mobile drivers are a joke. Shader miscompilations everywhere. Performance traps. Arm Mali drivers currently implement vkCmdPipelineBarrier2 by calling vkCmdPipelineBarrier in a loop for every individual barrier instead of issuing a single barrier. I’ve measured Barrier2 as almost 10 times slower than the older version, only on Arm drivers though.
You have to test everywhere
It isn't perfect but it's so much better than it used to be.
Mobile drivers are still a problem, and part of the problem is that they passed their conformance tests years ago, and the test suite has improved a lot since then.
But it's a giant surface area to test, it is not perfect. But still better than what we had 10 years ago.
Can you expand on this? What happens / doesn’t happen when clicking that button? Is debugging the additional effort, or incompatibilities?
Sure, but supporting two variants of Vulkan is less work than having to support two incompatible APIs. It's not a binary thing.
The problem is that there isn't two variants, there is an extension soup of Vulkan variants.
I get by just fine with "one variant" using all the Vulkan 1.3 features that are ubiquitously available on desktop (= almost all of them) platforms with up to date drivers.
The fact that there's n+1 extensions does not mean you have to support 2^(n+1) combinations. I can't recall a single situation where I would've needed even two code paths to get something done in the past few years.
Situations where you need two or more code paths only arise if you use new hardware features like mesh shaders or ray tracing. For "software" features like dynamic rendering or dynamic states (both of which simplify things a lot), there's no need for a fallback on desktop, just require a recent driver version and you're good.
That said, the mobile driver support situation and lack of long term updates is an issue if mobile support is required.
> Vulkan would likely not really have helped macOS gaming in any form
Why not? With fully conformant Vulkan you could have run all the games that work in Wine without being hit by limitations of MoltenVK that affect performance and compatibility, same as you can run them on Linux now. So Vulkan could totally be very crucial for making gaming on macOS not being some second class experience.
Apple simply demonstrate they don't care about gaming and gamers. They only care about "approved by Apple way of gaming" which is totally not the same thing but which Apple always does for everything anyway, shoving in users' faces "we know better than you what you need".
That's why I will always say that gamers should avoid using Apple.
You can't "just support Vulkan", it's too low level. To benefit, the implementation would have to target the GPU specifically since Apple GPUs are different from discrete GPUs.
Well, Asahi / Mesa developers demonstrated that they can "just support Vulkan" on Apple's hardware as the linked post explains. So Apple never had any excuse for not doing it. Their reasons for sabotaging Vulkan support were always political, not technical.
Sabotaging? Metal came before Vulkan.
How does that stop Apple from supporting Vulkan on their system? It is pure political sabotaging. And you can't pull any excuses like "it requires effort". Apple have pools of cash to do the right thing for users and developers. They simply very intentionally oppose it due to their dinosaur lock-in mentality.
A blog post is different from a real compliant commercial implementation. Other reasons you couldn't do it include eg someone with a patent on it won't license it to you.
Mesa's implementation will get a compliance certification once it's ready. I don't see why they would have problems with that - other Vulkan drivers got compliance from Khronos once they passed needed tests. Patent FUDs are nonsense - no one else has such issues and many drivers already exist and work fine.
The real reasons are not good at all (i.e. Apple's obsession with lock-in) and have no excuse.
https://github.com/KhronosGroup/MoltenVK proves that it is possible, but it is limited by having to go through Metal.
If Apple would add native Vulkan support to macOS, it would most likely also go through a Metal "emulation layer" (just like their GL implementation, or the D3D12 implementation in the Game Porting Toolkit).
Because everyone knows from MoltenVK, Metal-based API implementations are just so efficient.
Anything's possible, but it wouldn't be performant. MoltenVK is just about as good as an untuned native Vulkan client would be.
Yep, that's unfortunately true...
https://www.carette.xyz/posts/state_of_vulkan_2024/
Star Citizen is another one recently moving to Vulkan, they just rolled it out as a graphics option in 3.23, and it's slated to replace DX11 once it's working well
> Vulkan Renderer has now been enabled in Star Citizen. This new renderer will be off by default but has been added to the Graphics settings menu. In this first release, the focus is on hardware/driver issues, stability, and any major performance issues. At this point we do not expect Vulkan to be outperforming D3D11 on the CPU usage due to the fact we haven't enabled multi-threading of the rendering submission yet, but do expect CPU performance to be within a 30% margin. Once we have multi-threading enabled we expect a significant net-gain. On the GPU side we should be closer to parity.
> Performance improvements and stability improvements will be on-going throughout 3.23, with the aim to make Vulkan the default and more performant implementation in a following release. In the meantime we appreciate any and all feedback towards this.
> Additionally, you may see a few new folders now in Star Citizen's appdata. These relate to our new Graphics Settings file (just includes the Graphics Renderer setting for now), Vulkan's Shader Cache, and Vulkan's Pipeline Cache.
> We are currently working with AMD and Nvidia to improve functionality and compatibility for later Driver Releases. It is recommended that you update to the latest GPU drivers for this release but there are still a few known issues that could cause instability and crashes with Vulkan until a later AMD/Nvidia Driver update. If you run into major issues you may want to swap back to DX 11. If the game crashes on launch after switching to Vulkan, you can reset this by deleting your shader folders in %localappdata%\Star Citizen
https://robertsspaceindustries.com/comm-link//19915-Star-Cit...
> Star Citizen is another one recently moving to Vulkan, they just rolled it out as a graphics option in 3.23, and it's slated to replace DX11 once it's working well
Does it work well in Wine on Linux with Vulkan renderer now? I tried a long time ago and I was waiting for their Vulkan option to revisit it.
Haven't tried it, but this person says no
https://www.reddit.com/r/starcitizen/comments/1cl0bwn/star_c...
Interesting. Looks like it works but with poor performance. I guess I'll wait for them to finish the rest of the work to enable more parallelism first.
Also, did they start using EAC? That usually works very badly in Wine unless developers flip some switch to allow it on their side?
It does have EAC, but I don't think it's as aggressively enforced as some games since people are still able to run it on Linux.
There's a Linux Users Group that would know much more about it than I do.
https://robertsspaceindustries.com/orgs/LUG
Why is this article comparing game engines with games?
What do you mean? I guess most engines support Vulkan but that's not the point of the article, but you might be referring to something else.
I'd be curious to see how many Vulkan-native games there are that don't run under Proton. The only one that comes to mind is Destiny 2, but that was more because of anticheat as I remember it.
Much of the Vulkan support was motivated by Stadia, not so much because Stadia was successful, but because Google was throwing huge amounts of money at developers to port their games to Stadia regardless. When Stadia was discontinued at the end of 2022, sure enough the number of new Vulkan games immediately plummeted.
these days, is the way to win in the industry to basically pour money into the popularity contest of your own dev kit vs. Nvidia's and others?
You mean iOS games?
It is still Metal, regardless.
You are literally comparing a bunch of gambling apps to a library of desktop gaming experiences.
"It is still Metal, regardless" you say, with your mind scrolling full of Zynga dice-rolling games and Supercell micro-transaction machines.
I am comparing what brings money home, big boys club money, versus hippie feel good complaints.
But since there are more Android phones, there are more devices supporting Vulkan than devices supporting Metal.
Only if you ignore the facts that Vulkan is only a required API since Android 10, it is an ecosystem full of buggy drivers, there are no updates, what exact version of Vulkan and extension spaghetti varies widely by phone, and only Samsung and Google Pixel phones, do actually offer a sane Vulkan experience.
Everyone that wants to keep their 3D sanity keeps targeting OpenGL ES, which is exactly why Google is now doing ANGLE on top of Vulkan as means to pressure OEMs to deliver proper Vulkan drivers.
Firstly, several games engines and rendering libraries support it.
Secondly, it does not have to be _native_, on top of Vulkan you can run OpenGL and Direct3D emulation layers, which will cover most of the rest. macOS has long since abandoned their native OpenGL drivers, and MoltenVK has many caveats.
So? If no one is using that support to ship PC games using Vulkan, who cares? Those same engines all support Metal, so clearly this is irrelevant to the question of Mac gaming.
When it's the only way to interface with MacOS and especially IOS, I'm not surprised. But that says more about Apple as a platform than Vulkan as a graphics API.
yup, only took some 9 years after they abandoned Khronos to get it up and running. I'm sure nothing signifigant would have developed in that time.
Why would that be ironic. Apple wilfully is holding gaming back on OSX by ignoring Vulkan and having a pure shit opengl implementation.
You may have a good point with the opengl thing. But the number of games that run on Vulkan is so vanishingly small that we can't credibly say that not having a Vulkan driver holds Apple back on gaming. I'd bet any money that the number of games that work on Metal is wayyyy higher than the minuscule number of games that run on Vulkan. Which should tell you how few Vulkan games there are.
Really? 7 out of the 10 most popular games on Steam work fine if you have Vulkan 1.3 drivers: https://www.protondb.com/explore?sort=playerCount
of the top 10, I count 3:
Counter Strike 2 Dota 2 Stardew Valley
How are you getting 7/10 unless you're also counting games that happen to run under Proton, which aren't native? And regardless, that's a really small sample size to extrapolate from, when it's easy to get a more extensive list that is around ~250 games total.
https://www.vulkan.org/made-with-vulkan https://www.pcgamingwiki.com/wiki/List_of_Vulkan_games
Of which, a massive percentage are based on engines that have Metal support as well.
I'm sorting by playercount, which seems to be corroberated here: https://steamcharts.com/top
I am counting Proton games because they very explicitly are supported by sufficient Vulkan coverage. In case you weren't paying attention that's kinda the only reason anyone cares about Apple Silicon getting Vulkan 1.3 coverage in the first place.
You're right, when we push it out to 1000 titles it gets closer to 80% playable: https://www.protondb.com/dashboard
...yeah, you keep telling yourself that. One day, they'll definitely flip the switch on MacOS support. Certainly.
Okay, so you're counting non-native games when the discussion is AGAIN clearly about native games. If we're talking about translation layers, then it's irrelevant because Whisky/Crossover can run them as well.
This is just you being completely disingenuous now and purposefully avoiding the actual point of the discussion.
I think it's absolutely fair to count games that are able to run in Linux with Proton via DXVK + Vulcan. Since it's well established and relatively popular thanks to Valve's efforts with the Steam Deck and Proton.
Given those efforts, if Apple/Mac had support for Vulkan, Valve would probably make it all just as available on Mac as they do on Linux for Proton.
Even with Vulkan support on macOS it would be harder for Valve to make many games accessible as they do on Linux – unlike Linux, macOS does not support running 32-bit binaries anymore.
You'd be correct a few years ago, but not anymore. WOW64 mode is pretty good nowadays.
Well - they might. I don't think Valve would hate being the gaming gateway for Mac as well as for PC, but they have great Linux support because of the Steam Deck.
If I'm not mistaken, supporting MacOS with Proton was the implicit plan before Apple disabled 32-bit support in Catalina. Several people seem to have gotten early builds to compile on Mac with usable performance: https://github.com/ValveSoftware/Proton/issues/1344
This was never about native games. It would be very convenient if Proton didn't exist and native games were the only playable option, but in many cases Proton titles run better than native Windows. It's an equivalent, if not superior, experience.
It would be a lot more disingenuous if the Steam Deck didn't exist and Linux gaming was a farce. But... it's not. And the only thing stopping Apple from enjoying the same spoils is a little bit of humility.
Dxvk is notoriously bad on moltenvk. I have tried and have completely given up running it.
The amount of games that work with Vulkan may be very small, but at least they have a chance of working. The de facto standard API for games on computers, DirectX, will never receive a port.
If you think Vulkan support for games is insignificant, look at Metal support.
I think Vulkan makes a lot of sense for macOS, actually; the Nintendo Switch, to which tons of games have been ported already, uses the ARM+Vulkan design and has a relatively weak GPU (but much weaker, as it's very old). It's not quite native, but a lot of supporting libraries that work on the Switch will also work on Mac. Everyone is talking about porting Windows games to Mac, but with the way things are developing, porting Switch games to Mac may actually make more sense, assuming Nintendo's promises for the upcoming Switch replacement are to be believed.
Metal is supported on iOS. You know, one of the largest gaming platforms in the world.
THE largest gaming platform in the world. Users, sales, number of games, hours played.
I challenge you to find one metric where the iPhone isn't number one.
Not true on either users, number of games, or hours played.
Remember, android exists, and supports vk.
Only since version 10, as required API, it was optional between Android 7 and 10, and unless you are into Samsung or Google Pixel Android phones, good luck.
Enjoyable gaming experiences?
And yet most popular games on phones (both ios and android) are complete shit full of predatory practices with appalling gameplay and simple graphics, which barely benefit from those fancy graphics API anyway and could be reworked within weeks to use any other API.
I do know apple is trying to push for AAA games on iphone but so far its a small drip on a giant cesspool.
If you want actual good games, be it indies, AA or AAA, you go for one of the three consoles, windows or steam deck/linux.
What happens if we exclude games that could run in a browser canvas with no webgl support? They don't really benefit from the API choice.
Apple did just that with the Game Porting Toolkit.
Pretty much all iOS games run on top of Metal.
They'll never admit it. They only caved on USB-C because they were legally required to. They won't cave on this, or NVidia support, or putting the charge port on the side of the mouse and not the belly, etc.
Nobody required USB-C charging for laptops and iPads. It would have happened on iPhones eventually too.
They were the (one of the) first ones to usb-c on laptops. I don’t think they were ever planning to do usb-c on the iPhone, they had no reason to be this late.
They didn't have a technical reason to be that late, but they probably had a marketing reason -- and I don't mean "they made money by licensing Lightning." (They did, obviously, but I don't think it was raking in big bucks, at least not Apple standards.)
When the iPhone switched to Lightning from the clunky 34-pin iPod connector, a whole lot of people got pissed off with Apple and stayed pissed off with them for years. Literally years. People were convinced Apple did it just to sell more cables. So if you're Apple, and you know the history of the last time you forced everyone to buy new cables, and now you have orders of magnitude more people using your phone…you probably put this off as absolutely long as possible.
Would they have gotten there without pressure from the EU? Honestly, I think so -- I used to agree with you, but when the iPad Air, not just the Pro, went to USB-C, I changed my mind.
When Apple went up on stage and announced Lightning, they said "this is our connector for the next 10 years".
10 years later, almost on the dot, they replaced Lightning on the iPhone with USB-C.
Doesn't seem weird at all to me.
It wouldn't be weird if they simply picked one side and stuck with it. They put USB-C on Mac, because obviously Lightning couldn't fill the role they wanted with Thunderbolt. And then they made iPhones Lightning because... they wanted to sell IP to cable manufacturers. And they made the Magic Trackpad/Keyboard accessories use Lightning because... why again? It's just USB, it probably takes more work to make a Lightning peripheral than a USB-C one.
The more you think about MFi and Lightning design patents the harder it is to believe that they were simply being honest and sticking to their word.
When they made Lightning USB didn't even have an agreed-upon charging standard. Much less all the other requirements Apple had for the cable.
Do not try and pretend that USB was any good when Lightning was announced. And even USB-C is a mess of conflicting and confusing optional specifications.
Certainly one that Apple didn't struggle to navigate, considering they designed Thunderbolt around the specification.
Apple did USB-C on the iPad before the Europeans forced them to do USB-C at all. They could have kept developing Lighting, it supported USB-3 speeds for one device (the first iPad Pro), but they instead chose to rally around the common standard. USB-C on phones was a certainty, it was clear to everyone. The problem is not that Apple didn't want to standardize, it's that they didn't want to be forced.
In the history of technology, Apple has chosen to switch connectors countless times. Every single time people complain, and every time Apple has the same exact reason for choosing a specific connector: its the one that makes sense for its customers when the device is released.
Speaking of, can you buy a Magic Trackpad that uses USB-C yet? I've got a Magic Trackpad 2 that requires this annoying special cable no one uses and it ends up making me buy trashy gas-station connectors to feed it power.
Maybe we're still waiting for that one to make "sense for it's customers when the device was released". Good grief.
I'm always unsure about this because it only supported USB 3 host for one specific accessory, the camera adapter. I question whether that implementation was just a hack or something that could've scaled to proper USB client support and others.
There was never a USB 3 Lightning to USB-A or USB-C cable.
They did the exact opposite of rally. USB-C on iPhone took an extra eight years. Even if I agree it was a "certainty", that's far too long.
They did not want to standardize. The idea of forcing them didn't come up in any significant way until after they proved that.
And I don't know what their laziness about USB 3 is supposed to prove. They didn't consider 3 support necessary for USB-C either.
Actually they had one, they released the Lightning connector by claiming they would stick with it for at least a decade. And they did exactly that.
Admit what? That they had their own API before anyone even thought about Vulkan? That they have Metal running on one of the most popular platforms in the world (iOS)? That other major platforms don't support Vulkan (Xbox, Playstation; Windows supports DX and defers Vulkan support to GPU vendors)?
Admit that Metal isn't enough.
People were more willing to write a DirectX translation framework for Vulkan than Mac users were willing to write one for Metal. And now with Game Porting Toolkit we basically have confirmation that nothing has been stopping Mac users from playing DirectX games with DXVK besides... working Vulkan drivers.
So it would be nice to see Apple's explanation for being so insular. Especially when their "solution" is repackaged and relicensed free software that we've all been using for years.
By what criteria?
There were significantly more games playable on Mac than for Linux for years, even after Vulkan's introduction. Apple hurt gaming on Mac by dropping 32-bit support and changing CPU architectures significantly more than any fantasy about not supporting Vulkan (which is really not supported by most major platforms, and isn't supported by game developers either).
And it wasn't some vague nebulous people willing to write a DirectX translation framework. It was Steam pursuing its business strategy (and doing an amazing job of it). Before steam not a single person could be bothered to get off their asses and do a similar job for any platform.
...games? Isn't that what we're talking about? How Apple suffers from spurning the gaming industry, and does absolutely nothing to improve the scenario?
Oh, well this is just wrong. Box86 had "solved" the x86 -> ARM translation path before Apple Silicon even existed, albeit slowly. The 32-bit depreciation was bad, but wasn't a dealbreaker for applications like WINE; there is a working codepath for WOW64 in WINE today.
Once again; the OP's post is about how they currently have games working on Linux that are flat-out unplayable on MacOS. Whether you want to blame fantasy features or not, Apple has clearly made some sort of arbitrary limitation on the userland capabilities that has stopped developers from doing this in MacOS and forced them onto Linux. Seems to me that the pretty clear difference is in the title of the article; Asahi supports Vulkan 1.3, MacOS does not.
Before Steam, there was no incentive to develop it. But people most certainly did do the same, job for multiple platforms. Codeweavers wrote several D3D translation layers over the years, WINE had multiple old and slow DX drivers (DirectX-D3DX9) that semi-worked, and even without that you could still run most titles through software acceleration.
And look; if Steam goes rogue and decides to drop support for all platforms but Android Wear, we don't really have to worry that much. The important work is upstreamed in DXVK and distributed by multiple parties, not just Valve. Frankly, the biggest advantage Valve still holds over the community is how smoothly their UI goes from clicking "play" to launching the game. I struggle to imagine a situation where Valve goes full-Monty and the community suffers for it.
Metal was released in June 2014[0], and Vulkan development started a month later, in July 2014[1].
You can interpret that in a few different ways: perhaps Khronos saw Metal's release, went "oh shit, we need to do something", and scrambled to start development of a new API over the next month. Or maybe Khronos (and Valve and others) were already talking about something new for some time before that, and only got a fire lit under themselves after Apple's Metal release. Or maybe the two aren't related at all.
Yes, it took a further two years for any kind of reasonable Vulkan support to be out there, but either way, I think it's a bit disingenuous to say Apple was a trailblazer with absolutely no peer here.
Regardless, the gaming situation on macOS is still... not great. Certainly some game developers have adopted Metal, but overall the main target is still DirectX, and I feel like contemporary/modern OpenGL (ES?) still probably leads Metal. Hell, at this point, Vulkan might have seen more general adoption than Metal has.
[0] https://en.wikipedia.org/wiki/Metal_(API)#History
[1] https://en.wikipedia.org/wiki/Vulkan#History
There are no two interpretations. Metal was released before Khronos even had their "kick off meeting". The official introduction of Khronos didn't happen until 2015. Vulkan 1.0 was released in 2016.
Prior to 2014 there was no Vulkan, and no idea of Vulkan. Sevral companies (AMD among them) tried to peddle their own proprietary APIs as a potential future direction after OpenGL.
And yes, Khronos scrambled to have a modern API after both Microsoft and Apple ended up having one.
No. It took two more years to just release version 1. And even in 2024 it's somewhat laughable to talk about "reasonable Vulkan support" when the major gaming platforms (Windows, Xbox, Playstation) don't support it (Windows supports DX natively, and Vulkan support is left to the whims of GPU vendors). The actual support for Vulkan is declining: https://carette.xyz/posts/state_of_vulkan_2024/
The trailblazer was Microsoft. What is disingenuous is to pretend that Vulkan was anywhere at the forefront or that Apple had to pay any attention to it, or that Apple is somehow in the wrong for not supporting it.
Of course it doesn't. Because iOS exists, supports Metal, and is a major gaming platform
Maybe so. But they did cave on/rethink decisions around: the MagSafe adapter; butterfly switches; laptop thinness generally (but only a little); onboard HDMI/SD; touchbar controls (for now).
Not saying that means they'll immediately see the light WRT 3D graphics APIs. Just that they aren't universally hostile to revising prior decisions.
People who keep saying this have surprisingly short/bad memories. And very little idea of the state of the industry.
- Apple already shipped Metal version 1 a full year before Vulkan was even an idea. iPhone, one of the largest casual gaming platforms in the world, is Metal
- Windows and Xbox is DirectX
- Playstation is their own thing (keep forgetting what it's called)
That leaves Android (mostly underpowered and fractured to even run games properly) and Switch who really support Vulkan.
That doesn't stop them from implementing two APIs at once, like every single GPU hardware vendor in existence. But given their avoidance of OpenGL and OpenCL, we should have always assumed Apple's goal was to usurp Open interfaces and replace them with only proprietary options. What else could they intend to signal?
Yes. DirectX is covered almost in it's entirety by DXVK. It's harder to find a DirectX game that isn't playable with Vulkan than one that is.
https://www.protondb.com/explore?sort=playerCount
Yeah, and it keeps biting them in the ass when they have to then backport Playstation-native titles to PC with DirectX. It's a notoriously redundant process.
Well also Windows, Linux, BSD, HaikuOS, Google Fuchsia, QNX, Stadia and Tizen.
And hardware wise you can't forget that Intel, AMD, Nvidia, ARM, Qualcomm and Broadcomm all support it in their GPUs.
Apple created OpenCL. It was nvidia who made everyone else avoid it.
What does that prove, though? Apple gave up. Ironically, now Nvidia is one of the only remaining companies that supports OpenCL anymore.
Apple is experiencing firsthand what the lack of a CUDA analog does to a company. Whether or not they care is up to them, but clearly the laser-focus on high-performance GPU compute is not doing Apple Silicon any favors in the server space or in the desktop.
It proves that the idea that Apple avoided OpenCL is ludicrous.
Where does Apple support OpenCL today then?
It still works on Apple Silicon
Sure, sure, like Google, Intel and AMD aren't to blame for having made a mess out of OpenCL on their products.
Go ahead, blame literally every single person except the lead maintainer and developer of the project.
The reality is that Google, AMD and Intel have more than enough time since 2009, to provide a developer experience, and drivers, that would make people actually use OpenCL instead of CUDA.
Instead, Google created the proprietary Renderscript for Android, while AMD and Intel kept delivering broken drivers, partial implementations of OpenCL, never delivered a proper OpenCL 2.x implemenation with mature C++ support, IDE and GPGPU graphical debuggers.
Apple is not a GPU vendor.
You mean a non-official non-supported wrapper. No one is stopping you to create such a wrapper for Metal/VK. Oh wait, it exists
Has nothing to do with the reality of Vulkan support
The only API Windows supports natively is DirectX. It's up to the whims of the GPU vendors to provide support for Vulkan.
Stadia is a very major player, true. Considering it's dead. TVs as gaming platforms (that's what Tizen is) are non-existent in the grand scheme of things. Neither is Fuchsia. Or HaikuOS.
The only winner here is Linux, but that really only works through the thankless work of maintaining the DX->Vulkan wrappers. Again, nothing is stopping you from doing the same work for Metal.
This is only true if you forget how Vulkan came about.
My timing is only a bit off.
Apple released Metal in 2014
Vulkan as a project was started a month later, also in 2014. Officially announced in 2015. First version released in 2016.
Playstation has two API, GNM and GNMX, low level and high level variants.
Switch does have OpenGL 4.6 and Vulkan support, however if you want the full power of the games console, you need to use NVN instead.
Supporting a different 3D API is really not the complicated or time consuming part of porting a game to another platform, especially when the target API is Metal.
The poor game support on macOS is a mix of Apple apathy towards gaming and the low potential sales numbers.
Also, of the few new Vulkan apps being released (a whopping 9 in 2023), most actually only support a single platform:
https://carette.xyz/posts/state_of_vulkan_2024/
Apple also offers a D3D12 porting toolkit now (basically D3D12 running on top of Metal, same thing like Proton is D3D running on top of Vulkan) which business-wise makes a lot more sense than native Vulkan support since there are many more D3D12 games than Vulkan games: https://developer.apple.com/games/
If you have a graphics programmer on hand, no. The vast majority of indie devs are powerless in that domain, though. I don't see many attempts out there to make it easier for them either.
Maintenance is always the time consuming part, be it simple or complex work. People aren't going to support Linux even if Vulkan theoretically makes it straightforward, because the time needed to maintain it isn't worth the lack of customers. Steam + Proton gives even less incentive to bother. So that advantage doesn't translate to much business value when evaluating DX12 vs. Vulkan.
This is an issue going all the way back to the OpenGL vs. D3D days. Nothing fundamentally changes as long as Microsoft completely swamps the PC gaming market.
If you have somebody on the team who was able to write a Vulkan rendering engine, then that same person can also easily pop out a Metal port ... just be careful, that person probably never wants to touch Vulkan again afterwards ;)
Otherwise I would expect that the game either uses a library which abstracts away the differences between the system 3D APIs (shameless plug: https://github.com/floooh/sokol, but also BGFX, WebGPU or AFAIK SDL3 is also getting a cross-platform 3D API), or uses a complete game engine like Godot, Unity or Unreal.
This is the only thing that matters, it's not the initial port that's the problem, but the long term maintenance and customer support and that often doesn't make business sense on non-mainstream platforms like Linux or macOS. But a cross-platform 3D API doesn't make any of that easier (you'll still have to struggle with driver bugs for instance, or just plain weird configurations, especially on Linux systems - unless going through Proton which I'm sure works around a ton of compatibility issues and driver bugs under the hood).
Which is why I ask; which should we prefer, a native port that Apple will depreciate for some reason or a community-supported translation layer that's based on a reasonable cross-platform standard?
I owned an iPhone, I know that the apps you pay for all eventually break, and instead of fixing it Apple will only tell you to complain to the developer. Compare that to Steam, where I can still play Far Cry 2 and Fallout: New Vegas in perfect emulation, likely for the foreseeable future.
Now they do. After 5 years of people begging them for DXVK, Apple gives us... a downstream fork of DXVK retooled for Metal.
I really just feel bad for Mac owners. Like; you could be playing Apex Legends with us, but can't. Like I said, these changes to Asahi will likely make it easier than MacOS to play games on. Who would use MacOS for gaming when Steam Play works out-of-box on Linux? A masochist, I say.
I doubt anyone buys a Mac to install Asahi on it
All sales are initially low before a market is grown.
If Apple wanted a machine that was also a great gaming machine, they could have that, and that market would then grow. The fact that they even have a gaming market at all left, shows that the appetite is there. (Of all the machines I have it installed on, Baldur's Gate 3 for example looks best on my Mac screen thanks to the HDR stuff)
Even if Apple supported Vulkan that doesn't mean AAA games would be ported to Mac soon. AAA require beefy GPUs and Apple silicon isn't going to match Nvidia.
You've got it backwards. Before M1, most Macs that regular consumers owned were incredibly bad GPU-wise. M1 was an enormous upgrade and finally made Mac usable for gaming for the average Mac owner. But years of most Macs being useless for gaming drove the game devs away.
Unfortunately, I don't think simply having a powerful GPU is enough to make people care. The M1 is almost 5 years old now, and I haven't seen a single major games studio go out of their way to target Apple Silicon. If anything, people are giving up on the platform now that OpenGL is more or less entirely broken and Metal is mandatory. Porting to MacOS is like committing to a console ecosystem where things constantly change and you're expected to pay the price. Windows developers don't like that; they want to push one build out and support it for the next decade.
Hope springs eternal, but there's a reason we want Vulkan. Native gaming on Mac is awful; it is quite literally the worst gaming experience you can have between Linux and Windows, both of which can run DirectX games without issue. If we had functioning Vulkan drivers on Mac, we wouldn't be begging and grovelling for games to work; they just would, like on Steam Deck.
AAA can make use of beefy GPUs, but equally it can run on more pedestrian hardware.
If AAA games sold only to those with desktops and high end graphics cards, PC gaming would have died a long time ago. Even today, many games run fine on Pascal era graphics cards, and they certainly run fine on mid range laptop versions of Nvidias 4050 & 4060.
Apples silicon can keep up with those, plus the simpler, less diverse hardware on Mac would probably lead to better optimisation if the market was big enough.
I'm not saying Vulkan is the only thing holding gaming from Apple computers, because I think the control Apple has over software distribution on Mac is also something that scares large publishers away from investing in the platform.
I don't think I know a single AAA game released in the past decade that requires a beefier GPU than Apple ships. It would be complete financial suicide for a studio whose development budget runs in the tens and even hundreds of millions these days) to limit their customer base to the relative handful of gamers who have their hands on the latest and greatest graphics cards.
Linux market share is considerably ahead of macOS according to the Steam hardware survey. Just this past month, Linux is sitting at 2.32% compared to macOS at 1.47%.
Genuine question: is it actually reasonable to compare desktop/laptop OS market share with handheld market share? Like... what does that actually tell us? I suppose in the case of gaming it can be useful, since at this point more games are played on Linux (due to SteamDeck) than on macOS. But otherwise, I always get a weird feeling when someone lumps these stats together.
I guess part of the weirdness I feel is when people say "Linux is the most used OS in the world" because of all the Android devices floating around, which is super misleading, since "Linux" isn't really an OS on its own anymore. (Technically it never was, but I'm not one of the "GNU/Linux" pedants, so...) Android and GNU/Linux are very distinct, very different OSes, so it makes no sense to lump them together. "Linux is the most-used kernel in the world" is a more accurate statement, but, again, I'm not really sure what that actually tells us in practical terms.
I think it is actually a reasonable thing to compare. I've had similar thoughts on the Android comparison. Yes, Linux is the most widely used kernel in the world, but that doesn't mean that desktop GNU/Linux is up to the same level of usability. That doesn't mean that desktop GNU/Linux would provide a good touchscreen experience on a tablet. It could, but the entire userspace software stack is completely different.
I think what it does indicate is that the kernel is featureful, stable, extensible, reliable, and a good base to build products and services from.
SteamOS on the Steam Deck is a close cousin of desktop GNU/Linux, purpose built for gaming. It might be a handheld, but it's also a PC. I think the popularity of the device tells us that the compatibility of Linux with Windows software, games especially, is good enough for the average person. It tells us that people are willing to tolerate a bit of a learning curve and some differences to what they're accustomed to so long as the value is there, and 95% of things just work.
It's also worth noting that many Steam Deck users choose to continue using SteamOS, based on Linux, to run their Windows games, in spite of the fact that their device will also run Windows.
In this case it seems fine, as SteamDeck is not very distinct from a regular PC and SteamOS is really just a Linux distribution. Anything compatible with SteamDeck can be ran on other Linux installations, as well as other form factors.
Gaming on MacOS isn't hard, it's just bad.
It's kinda both. I think there's ample demand and opportunity to create a simplified Asahi install script optimized for pushbutton gaming. The biggest constraining factor is disc space.
Vulkan is the arguably worst of the modern GPU APIs. It's not all that portable since you have to check for sooo many differences in architecture. It requires the most amount of manual synchronization. It lacks a higher-level shading language (you generally have to pick a library that implements some other higher level language and let it generate SPIR-V for you and pray it works portably).
Except for projects like this, Vulkan really only exists on Linux and Android. It'a not really a thing on Windows. Sure, some games are using it, but they're like 1% or less.
Metal is arguably the best of the 3 APIs, though of course it was easier to do without having any legacy behind it and without being designed by committee.
Lack of Vulkan support is just one (small) reason gaming doesn't really exist on Mac.
IMO it's more down to Apple's historic view on videogames and software compatibility in general- they are okay with frequently breaking things (like they did with 32bit apps) and expect developers to just constantly accomodate that. With a giant iOS market and its deluge of relatively small free-to-play/service-based games, it's a worthy model for devs to pursue (until the game is unprofitable, and then, in a couple of years, it's delisted as incompatible).
For a more traditional desktop/console style gaming, where a long tail is expected, with little further support, it's a tough proposition to release on a platform that has a miniscule market share AND constantly breaks. Its own graphics API is just a cherry on top, I think
A ton of games which don't require dxvk are running at 60+ FPS. See https://vt.social/@lina/112524118075585601
Alyssa, the machine that she is, has also been working on improving FEX performance recently.
Alyssa did some work for Valve, they might have an interest in FEX for some ARM version of Proton.
Good thing that we can all benefit from it