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.