Metallib支援包
15.2-24C5073e
與修補 macOS 中的 Metal 庫 ( .metallib
) 相關的實用程式集合,特別是為了恢復對舊硬體(即 macOS Sequoia 上基於 Metal 3802 的 GPU)的支援。
MetallibSupportPkg 包含metal_libraries
python 函式庫,該函式庫的開發是為了透過以下方式簡化 Metal 函式庫修補:
aastuff
進行解密。.metallib
檔案。.metallib
檔案以支援 Metal 3802 GPU。有關修補各.metallib
檔案的注意事項:
.metallib
檔案其實是.air
檔案的集合。需要使用周偉的格式來提取它們。_unpack_metallib_to_air()
.metallib
檔案其實是 FAT Mach-O 文件。因此,它們需要手動稀疏(Apple 的lipo
實用程式不支援我們需要的 AIR64 架構)。_thin_file()
metal-objdump
實用程式將.air
檔案反編譯為.ll
(LLVM IR)。_decompile_air_to_ll()
_patch_ll()
.air
,我們使用 Apple 的metal
實用程式。_recompile_ll_to_air()
.air
打包到.metallib
集合中,我們使用 Apple 的metallib
實用程式。_pack_air_to_metallib()
完成後,產生的.metallib
檔案應可與 macOS Sequoia 中基於 Metal 3802 的 GPU 配合使用。
MetallibSupportPkg 不適合一般使用者使用,以下內容適合開發人員使用。
安裝所需的依賴項:
python3 -m pip install -r requirements.txt
# Note Xcode is required to be installed for the `metal` and `metal-objdump` utilities
取得 IPSW URL:
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
補丁金屬庫:
# 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.