Apple M1 Support for MacOS

This commit adds support for compiling Dolphin for ARM on MacOS so that it can
run natively on the M1 processors without running through Rosseta2 emulation
providing a 30-50% performance speedup and less hitches from Rosseta2.

It consists of several key changes:

- Adding support for W^X allocation(MAP_JIT) for the ARM JIT
- Adding the machine context and config info to identify the M1 processor
- Additions to the build system and docs to support building universal binaries
- Adding code signing entitlements to access the MAP_JIT functionality
- Updating the MoltenVK libvulkan.dylib to a newer version with M1 support
This commit is contained in:
Skyler Saleh
2021-01-13 06:23:57 -08:00
parent f9b0225b69
commit 4ecb3084b7
18 changed files with 284 additions and 21 deletions

View File

@ -10,6 +10,10 @@
namespace Common
{
void* AllocateExecutableMemory(size_t size);
//Allows a thread to write to executable memory, but not execute the data.
void JITPageWriteEnableExecuteDisable();
//Allows a thread to execute memory allocated for execution, but not write to it.
void JITPageWriteDisableExecuteEnable();
void* AllocateMemoryPages(size_t size);
void FreeMemoryPages(void* ptr, size_t size);
void* AllocateAlignedMemory(size_t size, size_t alignment);