> Emulation overhead is also an issue for Proton on Linux
Nope because Proton is based on WINE, which stands for Wine Is Not An Emulator. Windows executables on Linux are running natively at full speed like any other Linux program.
Wine implements the Windows ABI and is just here to answer the system calls those executables are making.
In fact, most Windows games are running faster under Linux.
DXVK, VKD3D, D3DMetal, etc. are translation layers. You're implying they're far more heavyweight than they actually are. The real reason Windows games don't run as well on Macs is that they're usually built for x86_64 instead of ARM.
As someone who has used both Windows and Linux to game on the same x86_64 device, the performance hit with Proton is pretty much negligible (and sometimes games actually run faster on Linux).
> DXVK, VKD3D, D3DMetal, etc. are translation layers.
Rosetta is a translation layer that only operates the first time you run a given x86 app on Mac, and creates an ARM translation that is written to disk and used in the future.
There is more substantial overhead translating to a different instruction set than in converting API calls to another API. Looking at basic benchmarks should be enough to demonstrate this. IIRC it's like 80% of the performance or something when using Rosetta as compared to native.
Also, Rosetta is more like a transpiler, since it basically recompiles the binary, whereas the others are literally layers that basically take calls in one API and translate them to another. They're pretty much the same thing as ANGLE.
I'm talking about the overhead post-translation for Rosetta. Translating optimized code from one architecture to another is difficult, which is why there is a performance hit.
Not very much at runtime. The main problem with metal is that it's not really compatible with DX12 or vulkan. DX12 and Vulkan are very similar, metal is not. I'm sure the conversion isn't as 1-1 and you lose some performance by doing stuff esoterically.
Proton is not an emulator. Games running on Proton typically have slightly better GPU performance than native DX. It's mostly a compiler.
It's sort of like saying that C++ is inherently a performance hit over C because you have to do more translation. Well, no, the translation happens ahead of time, and the result of the translation might be better suited to run on the hardware. For example, C++ has semantics that allow optimizations that are impossible in C. Rust ALSO has semantics that allow optimizations that are impossible in C.
But, I'm being sloppy here. Proton is many tools, and DXVK is just one of them, WINE is another.
But, of the modern graphics APIs, Metal is the most unique. And it does have good reason - the M series chips do have some unique GPU hardware that allows them to do certain things faster.
It's just that those things aren't generally useful or automatic, WE have to set it up. But we can't do that if we use automatic translation.
The performance boost is needed when you are running Windows games under emulation.
Emulation overhead is also an issue for Proton on Linux or Windows on ARM.