3 ms·
This is entirely a misleading point. DXVK, Wine and Proton are full of patches that exist to support individual games. It is not just a translation layer, as m
by serbuvlad 19d ago
This is entirely a misleading point. DXVK, Wine and Proton are full of patches that exist to support individual games.
It is not just a translation layer, as much as a great effort of the open source community to force-port every game in existence to Linux. The effort also includes stuff like ntsync that gives the Linux kernel Windows-y APIs for performance.
I doubt Apple has any interest in any of that. I don't really blame them.
And purely in principle, why are we all going through so much effort to save game devs from writing good OS-independent arch-independent code?
- bigyabai 19d agoThat is the point. Valve is maintaining the patches; Apple has to do nothing besides support compliant Vulkan 1.2+ drivers (which their community already does). Apple doesn't need to implement ntsync to support Proton or DXVK, either. macOS' synchronization primitives do the job just as well as esync or fsync does. > why are we all going through so much effort to save game devs from writing good OS-independent arch-independent code? Because Apple doesn't support OS-independent APIs. They also don't support old runtimes, so users will inevitably have to run the Windows version once the native code breaks. Valve ported several of their games natively to macOS, and almost every single one of them is broken on modern Macs. Valve didn't change the game tech, it's all runtime breakage.
- serbuvlad 19d agoFrom what I understand you're saying that Apple should provide 2 things: (1) Vulkan drivers and (2) backwards compatibility forever. I don't really know enough about graphics to discuss point (1). From what I understand, Apple GPUs don't really fit the Vulkan model too cleanly, and the Asahi Vulkan drivers are significantly less performant than Metal (how much of that is due to beta/community status vs. architectural bottleneck I have no idea). But let's say they provide (1). Providing (2) would simply be a big mistake. It is a huge mistake of Windows, of the C++ programming language and of the x86 ISA (none of which are very good). Linux distros do not provide this either, beyond the core kernel syscalls and glibc. It is certainly a very big ask and not something trivial.
- bigyabai 19d agoI'm only asking for (1); Apple can keep breaking APIs forever as long as they support the libraries that enable Proton. (2) is precisely the reason why nobody can port games to macOS anymore, and largely why ARM is a second-class citizen in PC gaming too. You cannot depreciate things like AVX or 32-bit library execution modes, and then demand native builds get made to 20-year-old games. Apple Silicon's ISA extensions like AMX are not a replacement for x86's SIMD extensions, it's not standardized through Arm or supported in Asahi either. Native Mac games need to incorporate Apple's proprietary and unstable tech like Metal and the Apple Silicon microarchitecture, which makes their games unstable and difficult to support in the long term. Translation is Apple Silicon's only choice for game preservation and mainstream game support. > Apple GPUs don't really fit the Vulkan model too cleanly This is a misconception that stems from Metal's preference for tile-based deferred rendering pipelines. Vulkan 1.3 is fully viable on the M1 onward, which is enough to support DirectX 12 translation in Proton. The performance of Asahi's drivers are not any worse than the official Vulkan drivers that Arm provides for TBDR-optimized GPUs like the Mali line.
- serbuvlad 19d agoEverything you said about (2) is wrong imo. Games should simply not be written for a particular architecture. The rendering part of the game engine should already be abstracted away from the particular rendering API (there are other significant platforms which do not support Vulkan: PS5 and Xbox, which your game should be capable of targeting). And the math library should have fallbacks to standard C (or standard C++ etc.) and then specialized implementations for AVX, NEON, SVE, etc. Nothing else needs to be architecture specific. Now, sure, NEON is slower than AVX-256/512. But backending to NEON or even standard C is certainly going to be faster than running stuff over an x86-to-ARM translation layer. Sooner or later the Steam Deck 2 will release, probably on an ARM platform (if the Steam Frame compatibility layers go well), and millions upon millions upon millions of dollars of electricity will simply be wasted running x86-to-ARM, Win32-to-Linux and Direct3D-to-Vulkan dynamic compatibility layers when, if the games were well written in the first place, they could simply be trivially recompiled. > 32-bit library execution modes If your application assumes pointers are 32-bits, or any particular size, or even any set of particular sizes, it's completely broken. As for (1), if Asahi Vulkan drivers are really good, that just goes to show why Apple isn't supporting Vulkan. Metal applications seem to be faster, and Apple wants to push devs to make their apps for the faster API.