Eine Sammlung von Dienstprogrammen zum Patchen von Metal-Bibliotheken ( .metallib
) in macOS, insbesondere mit dem Ziel, die Unterstützung für ältere Hardware (nämlich Metal 3802-basierte GPUs unter macOS Sequoia) wiederherzustellen.
MetallibSupportPkg beherbergt die Python-Bibliothek metal_libraries
, die entwickelt wurde, um das Patchen von Metal Library wie folgt zu optimieren:
aastuff
..metallib
Dateien..metallib
Dateien, um Metal 3802-GPUs zu unterstützen. Hinweise zum Patchen einzelner .metallib
Dateien:
.metallib
Datei ist eigentlich eine Sammlung von .air
Dateien. Sie müssen sie im Zhouwei-Format extrahieren._unpack_metallib_to_air()
.metallib
-Dateien sind tatsächlich FAT Mach-O-Dateien. Daher müssen sie manuell verdünnt werden (Apples lipo
Dienstprogramm unterstützt nicht die von uns benötigte AIR64-Architektur)._thin_file()
.air
Dateien müssen als nächstes mit dem Dienstprogramm metal-objdump
von Apple in .ll
(LLVM IR) dekompiliert werden._decompile_air_to_ll()
_patch_ll()
.air
zu kompilieren, verwenden wir metal
Dienstprogramm von Apple._recompile_ll_to_air()
.air
in eine .metallib
Sammlung zu packen, verwenden wir das metallib
Dienstprogramm von Apple._pack_air_to_metallib()
Sobald sie fertig sind, sollten die resultierenden .metallib
Dateien mit Metal 3802-basierten GPUs in macOS Sequoia funktionieren.
MetallibSupportPkg ist nicht für die Verwendung durch allgemeine Benutzer gedacht, das Folgende richtet sich an Entwickler.
Installieren Sie die erforderlichen Abhängigkeiten:
python3 -m pip install -r requirements.txt
# Note Xcode is required to be installed for the `metal` and `metal-objdump` utilities
IPSW-URL abrufen:
python3 metallib.py -d
# Example result: UniversalMac_15.0_24A5279h_Restore.ipsw
Extrahieren Sie das Systemvolumen aus IPSW:
python3 metallib.py -e < path_to_ipsw >
# Example result: 090-49684-056.dmg
Metal-Bibliotheken vom Systemvolume abrufen und nach 15.x-
extrahieren:
python3 metallib.py -f < path_to_system_volume >
# Example result: 15.0-24A5279h
Patch Metal-Bibliotheken:
# Directory containing the Metal libraries
python3 metallib.py -p < path_to_metallib_dir >
# Individual Metal library
python3 metallib.py -p < path_to_metallib >
Konvertieren Sie Metal-Bibliotheken in ein macOS-Paket:
python3 metallib.py -z < path_to_metallib_dir >
# Example result: MetallibSupportPkg-15.0-24A5279h.pkg
usage: metallib.py [-h] [-d] [-e EXTRACT] [-f FETCH] [-p PATCH] [-b BUILD_SYS_PATCH] [-z BUILD_PKG] [-c]
Download, extract, fetch, and patch Metal libraries.
options:
-h, --help show this help message and exit
-d, --download Download the latest IPSW.
-e EXTRACT, --extract EXTRACT
Extract the system volume from an IPSW.
-f FETCH, --fetch FETCH
Fetch Metal libraries from the system volume.
-p PATCH, --patch PATCH
Patch Metal libraries.
-b BUILD_SYS_PATCH, --build-sys-patch BUILD_SYS_PATCH
Build a system patch dictionary.
-z BUILD_PKG, --build-pkg BUILD_PKG
Build a macOS package.
-c, --continuous-integration
Run in continuous integration mode.