Коллекция утилит, связанных с исправлением библиотек Metal ( .metallib
) в macOS, в частности с целью восстановления поддержки устаревшего оборудования (а именно графических процессоров на базе Metal 3802 в macOS Sequoia).
MetallibSupportPkg содержит библиотеку Python metal_libraries
, которая была разработана для оптимизации внесения исправлений в Metal Library посредством следующего:
aastuff
..metallib
..metallib
для поддержки графических процессоров Metal 3802. Примечания относительно исправления отдельных файлов .metallib
:
.metallib
на самом деле представляет собой набор файлов .air
. Необходимо извлечь их в формате zhouwei._unpack_metallib_to_air()
.metallib
на самом деле являются файлами FAT Mach-O. Поэтому их необходимо прореживать вручную (утилита Apple lipo
не поддерживает нужную нам архитектуру AIR64)._thin_file()
.air
необходимо затем декомпилировать в .ll
(LLVM IR) с помощью утилиты metal-objdump
от Apple._decompile_air_to_ll()
_patch_ll()
.air
мы используем metal
утилиту Apple._recompile_ll_to_air()
.air
в коллекцию .metallib
, мы используем утилиту metallib
от Apple._pack_air_to_metallib()
После завершения полученные файлы .metallib
должны работать с графическими процессорами на базе Metal 3802 в macOS Sequoia.
MetallibSupportPkg не предназначен для использования обычными пользователями, следующая информация предназначена для разработчиков.
Установите необходимые зависимости:
python3 -m pip install -r requirements.txt
# Note Xcode is required to be installed for the `metal` and `metal-objdump` utilities
Получить URL-адрес IPSW:
python3 metallib.py -d
# Example result: UniversalMac_15.0_24A5279h_Restore.ipsw
Извлекаем системный том из IPSW:
python3 metallib.py -e < path_to_ipsw >
# Example result: 090-49684-056.dmg
Извлеките библиотеки Metal из системного тома, они будут извлечены в 15.x-
:
python3 metallib.py -f < path_to_system_volume >
# Example result: 15.0-24A5279h
Библиотеки 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 >
Конвертируйте библиотеки Metal в пакет 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.