5 ms·
From what I understand, Apple decided to force Metal upon everyone instead of using Vulkan like the rest of the industry. This causes friction with game develo
by candiddevmike 4y ago
From what I understand, Apple decided to force Metal upon everyone instead of using Vulkan like the rest of the industry. This causes friction with game development.
- smoldesu 4y agoThat's part of the problem. MacOS actually had the same Proton compatibility layer as Linux a few years ago, but with Catalina Apple changed what you're allowed to run on your Mac and it broke completely. Neither Valve nor Codeweavers have gotten DXVK or Proton to run on MacOS since, IIRC.
- gjsman-1000 4y agoApple depreciated 32-bit, a year before Apple Silicon came out, which allowed them to more precisely target 64-bit processor speed without legacy baggage. Apple Silicon on iOS had dropped 32-bit years before and they didn’t want to bring it back for macOS. Android is following with 32-bit deprecation this year, actually. Pixel 7 doesn’t support 32-bit apps.
- smoldesu 4y agoReal shame, Diablo 2 still runs great on modern hardware.
- sirn 4y agoThat doesn't sound right. Codeweavers has been shipping fairly recent version of DXVK alongside with MoltenVK since CrossOver 20. On community side there's Gcenx/DXVK-macOS[1] that patched DXVK to work with some of Apple GPU quirks in some games and closely track upstream. [1]: https://github.com/Gcenx/DXVK-macOS https://github.com/Gcenx/DXVK-macOS
- mcphage 4y ago> From what I understand, Apple decided to force Metal upon everyone instead of using Vulkan like the rest of the industry Metal came out in 2014, Vulkan in 2016.
- smoldesu 4y agoThat doesn't really change anything. If Apple uses a bad API because they thought of it first, they're still using a bad API.
- saagarjha 4y agoMetal is generally a nicer API to use than Vulkan.
- smoldesu 4y agoIt could cook my breakfast for me, and it would still be useless if it exclusively targets Apple products. People use Vulkan because it targets multiple platforms. There's nothing stopping Apple from providing both APIs, and if Apple's API is truly nicer to use than Vulkan, then Apple has nothing to worry about.
- jmull 4y agoVulkan is counter to Apple's vertical integration approach. It would be a foundational API, sitting between their graphics hardware and their OS, yet one they don't control. 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.
- smoldesu 4y agoWell, thus-far it has failed. We have Factorio, Tomb Raider and one of the Resident Evil games running on MacOS - most of which had to implement Metal by hand. If you're right, Apple's strategy needs to change.
- GeekyBear 4y ago> instead of using Vulkan like the rest of the industry When did the rest of the industry drop Direct3D for Vulcan?
- smoldesu 4y agoWhen DirectX became irrelevant: https://github.com/doitsujin/dxvk https://github.com/doitsujin/dxvk
- GeekyBear 4y agoSorry, but this seems extremely disingenuous. 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?
- smoldesu 4y agoIf you want to claim that Direct3D is king, I'll agree with you. I'm merely pointing out that all of the DirectX libraries are fairly irrelevant when they run just fine without DirectX.
- ohgodplsno 4y agoOoof, I've seen some bad takes but this one is a really bad one. 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.
- gjsman-1000 4y agoYes… and no. 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.
- maccard 4y agoIf you're _really_ aiming for cross platform support, an RHI is only the beginning of your problems though. Replacing the rendering code may not be _trivial_ but if you're stuck at that point you're likely going to struggle with networking, filesystem, permissions, user accounts, store requirements. Modern rendering APIs are _similar enough_ in feature sets and abstraction layers that it's not an insurmountable task.
- nickelpro 4y agoYou're doing a bit of slight of hand on Windows support. 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.