@leman Would you consider the situation described in the link as an example of how the lack of native support of Vulkan in macOS can harm the current user experience in macOS?
The situation between Metal and Vulkan reminds me of when Apple launched Apple Maps. The bet of creating a map app has paid off, but it affected the user experience at the beginning.
Going with your own API when you aren’t the market leader is always a bit of a gamble. But one thing Metal did was allow Apple to move faster than Vulkan. iOS had Metal in late 2014, Mac in late 2015, while Vulkan 1.0 didn’t finalize until Feb 2016. Metal has been getting iterated on, so it’s not like the API has been stagnant either. I don’t think the Apple Maps comparison in this case is particularly apt.
One thing about Apple Silicon specifically though that I wonder about is just how much existing code aimed at AMD-based Macs turn inefficient under Apple Silicon. Apple’s TBDR implementation, to my understanding, provides a number of efficiencies that you want to take advantage of to get the best performance. Apple has a talk going into detail on this for WWDC 2020. IIRC, some of the efficiencies of TBDR make up for the lower memory bandwidth compared to comparable GPUs, and allow it to punch above what folks would think of it’s weight class. But if your code happens to do things in a way that undermine those efficiences, framerate will suffer compared to what’s possible. As an anecdotal example, the M1 Max is supposed to contain a 55-60W GPU complex. Yet, I’ve yet to see games come anywhere close to that with it mostly being under 20W, making me wonder if there is a utilization problem at play or if something else is going on.
Based on the above, I wouldn’t be surprised if native support for Vulkan won’t necessarily help address framerate discrepencies, because it’s not the API per se that’s causing issues, but rather the assumptions made about how rendering passes
should be performed that is different between Apple’s GPU architecture compared to AMD/Nvidia
.
I’ll also point out that leman did answer your question earlier in the thread in a bit more detail. But the article itself makes points that suggest the issue is more the differences between Metal and DirectX. Ones that Vulkan may or may not help with.
P.S. Personally, I think it might a good idea for Apple to add some compatibility features to Metal that would more closely align to certain Vulkan and DX abstractions (wrt. to bindings btw). This will simplify the life of the porting houses without really sabotaging Metal itself, since Metal will stay superior. Also, add more advanced C++ support to MSL, an MSL to SPIRV compiler and a CUDA to MSL compiler. Metal shading language is vastly better than GLSL or HSL, if cross platform tooling were available it could help Metal adoption.