MetallibSupportPkg
15.2-24C5073e
macOS での Metal ライブラリ ( .metallib
) のパッチ適用に関連するユーティリティのコレクション。特に、レガシー ハードウェア (つまり、macOS Sequoia 上の Metal 3802 ベースの GPU) のサポートを回復することを目的としています。
MetallibSupportPkg には、 metal_libraries
Python ライブラリが含まれています。これは、以下を通じて Metal ライブラリのパッチ適用を合理化するために開発されました。
aastuff
使用して復号化します。.metallib
ファイルを抽出します。.metallib
ファイルにパッチを適用します。個々の.metallib
ファイルにパッチを適用する場合の注意事項:
.metallib
ファイルは、実際には.air
ファイルのコレクションです。 zhouwei の形式を使用して抽出する必要があります。_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.