Una colección de utilidades relacionadas con la aplicación de parches a bibliotecas Metal ( .metallib
) en macOS, específicamente con el objetivo de restaurar la compatibilidad con hardware heredado (es decir, GPU basadas en Metal 3802 en macOS Sequoia).
MetallibSupportPkg alberga la biblioteca de Python metal_libraries
, que fue desarrollada para agilizar la aplicación de parches a Metal Library a través de lo siguiente:
aastuff
..metallib
compatibles..metallib
para que admitan las GPU Metal 3802. Notas sobre la aplicación de parches a archivos .metallib
individuales:
.metallib
es en realidad una colección de archivos .air
. Es necesario extraerlos utilizando el formato de Zhouwei._unpack_metallib_to_air()
.metallib
son en realidad archivos FAT Mach-O. Por lo tanto, es necesario adelgazarlos manualmente (la utilidad lipo
de Apple no es compatible con la arquitectura AIR64 que necesitamos)._thin_file()
.air
deben descompilarse a continuación a .ll
(LLVM IR) utilizando la utilidad metal-objdump
de Apple._decompile_air_to_ll()
_patch_ll()
.air
, utilizamos la utilidad metal
de Apple._recompile_ll_to_air()
.air
en una colección .metallib
, utilizamos la utilidad metallib
de Apple._pack_air_to_metallib()
Una vez terminado, los archivos .metallib
resultantes deberían funcionar con GPU basadas en Metal 3802 en macOS Sequoia.
MetallibSupportPkg no está destinado a usuarios generales; lo siguiente está destinado a desarrolladores.
Instale las dependencias requeridas:
python3 -m pip install -r requirements.txt
# Note Xcode is required to be installed for the `metal` and `metal-objdump` utilities
Obtener URL de IPSW:
python3 metallib.py -d
# Example result: UniversalMac_15.0_24A5279h_Restore.ipsw
Extraiga el volumen del sistema de IPSW:
python3 metallib.py -e < path_to_ipsw >
# Example result: 090-49684-056.dmg
Recupera las bibliotecas de Metal del volumen del sistema, las extraerá a 15.x-
:
python3 metallib.py -f < path_to_system_volume >
# Example result: 15.0-24A5279h
Bibliotecas de Patch Metal:
# Directory containing the Metal libraries
python3 metallib.py -p < path_to_metallib_dir >
# Individual Metal library
python3 metallib.py -p < path_to_metallib >
Convierta las bibliotecas Metal al paquete macOS:
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.