Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

The cheapest base M4 Mac Mini has 16 Gigs of RAM and plays AAA games written for Mac today.

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.



> 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.


I remember running warcraft 3 under Wine in a Lan party.

At one point, during a Dota match, every single Windows machine crashed. And my Linux machine was the only one left in the server.

So not only does it run faster but it's more stable too.


Back in 2005 or so I was playing WoW under Wine, and surprisingly it was faster on my crappy PC at that time, because it used less RAM!


Sorry, but DirectX games don't work on top of the Vulkan graphics API used by Linux without an emulation layer provided by the Proton fork of Wine.

Wine may not be an emulator, but Proton includes a completely necessary translation layer if you intend to play DirectX games on Linux.

On Mac, Apple provides an open source emulation layer, D3DMetal, to translate from DirectX to Metal which is used by Wine.


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.

Does that mean it has no overhead?


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.


> There is more substantial overhead translating to a different instruction set than in converting API calls to another API.

It's a one time only cost, since Rosetta only runs the first time you launch an app and the translation is written to disk to be used in the future.

That means there is no ongoing cost by your logic, and Proton translating an API call every time it is used is worse.


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.


That's not emulation, it compiles shaders to vulkan. DXVK commonly has a slight performance advantage over DX12 on Windows for some hardware.


> That's not emulation, it compiles shaders to vulkan.

D3DMetal compiles shades into Metal.

So it doesn't introduce overhead?


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.


You should probably read up on the subject.

> Low level Graphics APIs such as Vulkan, DirectX, Metal, and WebGPU, are converging to a model similar to the way GPUs are currently built.

https://alain.xyz/blog/comparison-of-modern-graphics-apis

Proton is not some magic software that is immune to taking a performance hit when you translate from one API to another.


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.


You have no idea what you're talking about and it's honestly kinda precious.


>The cheapest base M4 Mac Mini has 16 Gigs of RAM and plays AAA games written for Mac today.

The frame rates are quite low on the base M4. Cyberpunk 2077 test: https://www.youtube.com/watch?v=gID9S2hwJpU

I think you need an M4 Pro or a Max for a good gaming experience with AAA games.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: