RPCS3 and Dolphin on macOS using gfx-portability
gfx-rs.github.io
gfx-rs.github.io
Imagine if Apple did support Vulkan natively, all Windows games via Steam Play Beta can be run on macOS easily and with support of eGPU, it would help a lot to make them run better.
All I can realistically hope for is that Apple continues to close the gap between Metal and Vulkan, so projects like Metal on Vulkan (MoltanVK), Proton (Steam Play + dxvk + Wine) can benefit with less work to do.
It'll be interesting to see what Apple does with Metal 3 in the next few years. If they're smart (they haven't been in the last few years with Mac Pro, rMBP keyboard+touchbar, etc), they'd work with the Kronos group.
It's not Metal on Vulkan, it's the other way around. Also, kind of strange to bring this up when the topic is about gfx-portability progress (which is competing with MoltenVK).
I bought it up because of the general topic of Vulkan and Metal, not because of gfx-rs itself. MoltanVK deserves a mention due to Khronos Group sponsoring it.
Both gfx-rs and MoltenVK are working in Vulkan Portability TSG, and both are promoted by the slides/talks if you read carefully. MoltenVK just gets more attention because it's packed by LunarG and used in Dota2.
And yea, the messaging is confusing because of this line on their site:
> As a first deliverable from the Vulkan Portability Initiative, Khronos members Valve, LunarG, and The Brenwill Workshop have released a collection of free and open source set of tools, SDKs, and runtime libraries to enable Vulkan development on macOS and deployment on macOS and iOS platforms
Source: https://www.khronos.org/vulkan/portability-initiative
That led me to think they’re sponsoring it.
It looks like MoltenVK was created by The Brenwill Workshop.
> Khronos members Valve, LunarG, and The Brenwill Workshop have released
It's like saying "W3C members Facebook, Instagram, WhatsApp have released ..." :D
Basically, Valve released something that they want to look like it's supported by Khronos. And this trick worked - now everybody believes it to be a Khronos product.
But the walled garden approach seems counterproductive here. In the days of Microsoft's dominance Apple made an effort to make windows formats usable on Apple because that meant it would be easier for consumers to switch to Apple without worrying about losing all their stuff from Windows. With regard to applications in which graphics API's are relevant (i.e. games) Apple still has a minuscule market-share, and it seems like they would be well served by adopting the dominant technology. Lock-in only works if you're already winning.
An advantage of all proprietary 3D APIs is the amount of out-of-box infrastructure code, debugging tools and having progressed beyond C, while Khronos APIs are still mostly C, and requiring creating mini-engine from scratch after fishing for libs.
I don't really see the issue with C APIs. IMO C is a fantastic integration point for a library which wants to have the widest reach possible. Interoperability with C is a solved problem in a wide variety of languages, so C APIs tend to be easy to integrate. Also since C is a fairly thin abstraction on top of what a computer actually does, good C APIs tend not to be opinionated about how they should be integrated.
I would consider working with C APIs to be a basic programming skill.
https://www.hpe.com/us/en/insights/articles/making-c-less-da...
Plus it is about time to move from 70s style APIs.
Except Metal is the dominant API on almost all Apple platforms. Metal supported-iOS devices are at 700 million (last year's WWDC stat) and majority of games are using Metal on iOS. You can't ignore that market, iOS games are very profitable.
Fortnite made $3M in sales in the first three days on iOS: https://www.tweaktown.com/news/61266/fortnite-mobile-makes-1...
And even on your own devices, you need to reinstall every few (days? weeks?) because the certificate expired.
Obvious choice, plus all engines that matter already support Metal.
Same situation on PS4, XBox and UWP.
The ability to easily integrate the wealth of C libraries directly into your high-level code (as opposed to, say, the verbosity of implementing a JNI) is one of the strengths of Swift.
The biggest theme on Linux Security Summit 2018 was taming security exploits on Linux kernel due to C's lack of security.
I count at least 10 talks about this subject.
https://www.youtube.com/user/TheLinuxFoundation/videos
So apparently the review process, approvals and current static validation is still not enough.
For one, the learning curve is much smoother: you can get something up on screen quickly, but only later discover the advanced features like argument buffers, manual hazard tracking, etc.
What's a C++14 shader? Metal uses MSL last time I checked...
> manually compilation of shaders
The toolchain for this in Vulkan is pretty solid. It's actually nice to be able to write shaders in a high-level language, and then compile them down to SPIR-V which is more likely to be interpreted consistently across drivers than a high-level language.
https://developer.apple.com/documentation/metal/hello_triang...