←back to thread

183 points ahamez | 1 comments | | HN request time: 0s | source
Show context
giancarlostoro ◴[] No.43631399[source]
Does something like Whisky work in the new macOS Apple Silicon world? I assume its quite a bit slower to simulate Windows while at the same time translating x86 to Apple Silicon. I ask because this would be a justified break from this project, it's kind of a nightmare setup, you're better off just buying a $300 Windows laptop at Walmart or something.
replies(16): >>43631425 #>>43631427 #>>43631429 #>>43631434 #>>43631436 #>>43631438 #>>43631452 #>>43631463 #>>43631466 #>>43631470 #>>43631504 #>>43631606 #>>43631696 #>>43632362 #>>43632689 #>>43639329 #
1. Rhedox ◴[] No.43632689[source]
It actually works really well. Rosetta is fast enough (together with the incredible single thread performance of Apple CPUs).

There are some pain points that Apple could easily fix:

- Add a barrier API that more closely resembles that of Vulkan, which is easier to use and more flexible than both Metal and D3D12. Microsoft also basically copied the Vulkan barrier API in a D3D12 update but no games use that yet. The regular D3D12 barrier API can be implemented very well on top of the Vulkan barrier model but maps poorly to Metal.

- Open source MetalD3D and/or the Metal shader converter.

- Document the Metal shader bytecode format. It has been reverse engineered and it's mostly just LLVM bitcode anyway. Right now some tools like MoltenVK compile to Metal Shading Language (modified C++) which then gets compiled to Apple Intermediate Representation which then gets compiled to something the GPU can work with.

- Add a bunch of other Metal features like strict robustness guarantees (return 0 for out of bounds reads).

- Support optionally making specific folders in the file system case insensitive. The Linux kernel got support for that for Wine.

- Support the weird Windows NT sync edge cases in the kernel. The Linux kernel also recently got support for that for Wine.

- Add an API to Metal to allow mapping Metal buffers at a specific address in memory to help running 32 bit games.

- Add an optional reduced precision mode for x87 in Rosetta. (Turn the software emulated 80 bit floats into proper 64 bit floats).