

And by now we can translate DX9-12 and OpenGL to Vulkan and Metal, or Vulkan to Metal, and a game based on OpenGL ES may even see a performance boost by the translation.


Translating the graphics would be much easier, as Quest uses either OpenGL ES or Vulkan, both of which would be available on Windows (OpenGL ES is a simplified subset of OpenGL). Android emulators for Windows and MacOS exist, but for performance reasons they try to download the APK for the same architecture as the machine the emulator is running on from the Playstore first, and only emulate the foreign CPU architecture if there is no other way, with a huge loss in performance. On the other hand x86 has a lot of instruction flags not available on ARM, requiring expensive emulation there, and one of the reasons the M1/M2 Macs are so fast when running Intel binaries with the Rosetta 2 translation is that Apple extended the ARMv8 instruction set on their own silicon to also be able to handle x86 flags. ARM has more registers than x86, allowing it to emulate all the x86 registers without workarounds, while x86 has to pay a heavy penalty when simulating registers in RAM. A CPU with lots of registers for very fast internal data handling has advantages for emulation, because it can use those to cover both the registers of the emulated platform plus those needed for managing the emulation. It is harder to emulate ARM on x86 than the other way around.
