Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .github/release-notes.md

This file was deleted.

4 changes: 3 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -73,12 +73,14 @@ jobs:
GH_REPO: ${{ github.repository }}
RELEASE_TAG: ${{ github.ref_name }}
run: |
python3 tools/release_notes.py "$RELEASE_TAG" > release-notes.md
cd dist
sha256sum -c SHA256SUMS
if gh release view "$RELEASE_TAG" --json isDraft --jq .isDraft > release-state; then
test "$(cat release-state)" = true
else
gh release create "$RELEASE_TAG" --verify-tag --draft \
--title "$RELEASE_TAG" --notes-file ../.github/release-notes.md
--title "$RELEASE_TAG" --notes-file ../release-notes.md
fi
gh release edit "$RELEASE_TAG" --notes-file ../release-notes.md
gh release upload "$RELEASE_TAG" ./*.pkg SHA256SUMS --clobber
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ validation progress, host details and test captures outside this repository,
including while the repository is private.

Build: python3 tools/build.py
Test: python3 tools/test.py dist/WhateverXe-Graphics-0.1.0.pkg
Test: python3 tools/test.py dist/WhateverXe-Graphics-0.2.0.pkg

Preserve signed payloads exactly unless deliberately updating and requalifying
an asset. Never sign original Apple compiler backends again. Keep signed bundles
Expand Down
20 changes: 20 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Changelog

## 0.2.0

Works with WEX **0.3.0 or newer** on previously supported GPUs. The newly added GPUs require WEX **0.5.0**; updating both components is recommended.

### Added

- Add graphics drivers for Alder Lake-S support and the additional GPU models accepted by WEX 0.5.0.

### Fixed

- Fix observed Chrome drawing failures and incorrect rendering with antialiasing enabled.
- Correct rendering errors on smaller integrated GPUs.

See the [WEX compatibility and known issues](https://github.com/b00t0x/WhateverXe#compatibility) for tested hardware and remaining limitations.

## 0.1.0

Initial signed graphics package for WhateverXe 0.3.0 or newer, covering Big Sur through Tahoe.
23 changes: 21 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,12 @@ independent release versions. AppleIntelTGLCompat is included in the package;
its source and shared headers remain in the WEX repository. One TGLCompat build
is shared by all supported macOS versions through the Common payload.

See the [changelog](CHANGELOG.md) for changes in each package version.

## Requirements

- Intel macOS, with the WEX/OpenCore configuration described in the WEX README.
- WhateverXe **0.3.0 or newer**, with Lilu.
- WhateverXe **0.3.0 or newer**, with Lilu; **0.5.0** is needed for the newly added GPUs.
- [AMFIPass 1.4.1 Mod](extras/AMFIPass-v1.4.1-Mod-RELEASE.zip), loaded through OpenCore. The ordinary upstream AMFIPass is not a substitute for this signing chain.
- SIP configuration `csr-active-config=03080000` (value `0x803`). Full SIP is not supported by this package.

Expand All @@ -35,6 +37,23 @@ updates. The current payloads target builds 20G1443, 21H1320, 22H730, 23J631,
24H32 and 25G241. Check the WEX documentation and release notes before updating
macOS. `amfi=0x80` and `ipc_control_port_options=0` are not required.

## Relationship to WEX

WEX supplies the OS/GPU adaptations and display control. This package supplies
the graphics drivers, their compiler components and AppleIntelTGLCompat, which
provides shared driver services. The release numbers do not have to match.

Graphics 0.2.0 retains the interfaces used by WEX 0.3.0/0.4.0 for previously
supported GPUs. Its Chrome/rendering fixes can therefore be used without WEX
0.5.0. Newly added GPUs and features that need changes on both sides require
WEX 0.5.0 and Graphics 0.2.0. Safari-update compatibility and the WEX display
startup fixes require the updated WEX plugin.

Hardware regression testing for this release used updated development versions
of both components. Compatibility
with older WEX versions was checked in code and with CPU interface tests, not
with a new full hardware regression run. Updating both is recommended.

## Using other OCLP root patches

If you also use OCLP for other root patches, use the
Expand Down Expand Up @@ -79,7 +98,7 @@ On macOS with Xcode Command Line Tools and Python 3.10 or newer:

```sh
python3 tools/build.py
python3 tools/test.py dist/WhateverXe-Graphics-0.1.0.pkg
python3 tools/test.py dist/WhateverXe-Graphics-0.2.0.pkg
```

The test also needs Node.js and `rcodesign` 0.29.0; CI supplies both. The builder
Expand Down
21 changes: 19 additions & 2 deletions README_ja.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,12 @@ OpenCore・EFIの設定は別途必要です。
AppleIntelTGLCompatはpkgに含まれますが、ソースと共有ヘッダーはWEXリポジトリで管理します。
全対応macOSで単一ビルドを使用し、Common payloadに収録しています。

各pkgバージョンの変更点は[CHANGELOG](CHANGELOG.md)を参照してください。

## 必要な構成

- WEXのREADMEに記載されたWEX・OpenCore構成を使用するIntel macOS。
- LiluとWhateverXe **0.3.0以上**。
- LiluとWhateverXe **0.3.0以上**。今回追加したGPUには**0.5.0**が必要です。
- OpenCoreから読み込む[AMFIPass 1.4.1 Mod](extras/AMFIPass-v1.4.1-Mod-RELEASE.zip)。通常のupstream版AMFIPassでは、本資材の署名チェーンに対応できません。
- SIP設定`csr-active-config=03080000`(値`0x803`)。本pkgはSIP全面有効化には対応していません。

Expand All @@ -33,6 +35,21 @@ AppleIntelTGLCompatはpkgに含まれますが、ソースと共有ヘッダー
macOS更新前にWEXの説明とリリースノートを確認してください。
`amfi=0x80`と`ipc_control_port_options=0`は不要です。

## WEXとの関係

WEXはOS・GPUへの適応処理と表示制御を担当します。本pkgはグラフィックスドライバー、
コンパイラー関連部品、およびドライバー共通サービスを提供するAppleIntelTGLCompatを含みます。
両者のリリース番号を揃える必要はありません。

Graphics 0.2.0は、従来対応GPUについてWEX 0.3.0/0.4.0が使う呼出し仕様を維持しています。
そのためChrome・描画の修正だけならWEX 0.5.0を必須としません。
今回追加したGPUなど、双方の変更を使う機能にはWEX 0.5.0とGraphics 0.2.0が必要です。
Safari更新への対応やWEX側の表示初期化修正には、新しいWEXプラグインが必要です。

今回の実機回帰試験は両方を更新した開発版で行っています。旧WEXとの互換性はコードとCPU上の
呼出し仕様の試験で確認しており、その組合せでの実機回帰は追加実施していません。
通常は両方の更新を推奨します。

## OCLPの他のroot patchとの併用

他のroot patchのためにOCLPを併用する場合は、
Expand Down Expand Up @@ -74,7 +91,7 @@ Xcode Command Line ToolsとPython 3.10以上を用意したmacOSで実行しま

```sh
python3 tools/build.py
python3 tools/test.py dist/WhateverXe-Graphics-0.1.0.pkg
python3 tools/test.py dist/WhateverXe-Graphics-0.2.0.pkg
```

検証にはNode.jsと`rcodesign` 0.29.0も必要です。CIでは両方を用意します。
Expand Down
7 changes: 4 additions & 3 deletions docs/SOURCES.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ for this repository.
Source and its shared headers remain in
[WhateverXe](https://github.com/b00t0x/WhateverXe). All supported macOS versions
use one RELEASE build of AppleIntelTGLCompat 0.5.0 from WEX commit
[`cfd968e`](https://github.com/b00t0x/WhateverXe/tree/cfd968e80fb48f5b0943ff4e20c7ade3f6918e63/AppleIntelTGLCompat).
[`31826af`](https://github.com/b00t0x/WhateverXe/tree/31826afc837977e1f09f5109173d5a2b577aff78/AppleIntelTGLCompat).
Build that checkout with `python3 tools/build.py --release`, then sign the
resulting kext with the Mod chain before importing the complete bundle into
`payloads/Common/Library/Extensions/`. The package contains no per-OS provider
Expand All @@ -25,9 +25,10 @@ The provider source and its shared headers belong to the same WEX revision.

## Graphics and compiler payloads

`payloads/Common` contains the shared TGLCompat kext and GL bundle. OS-named
`payloads/Common` contains the shared TGLCompat kext, GL bundle and compiler adapter. OS-named
directories contain complete signed graphics/framebuffer, Metal, VA and OpenCL
units. Compiler adapter/backend units accompany the later OS payloads; Big Sur uses its native compiler plugin.
units. The same compiler adapter serves Monterey through Tahoe; its unchanged Apple
backend and runtime accompany those OS payloads. Big Sur uses its native compiler plugin.
The imported assets preserve the established Data paths and OS-specific ABI
adaptations. The builder never rewrites them or chooses hardware/connector paths.

Expand Down
6 changes: 3 additions & 3 deletions docs/payload-provenance.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@
"provider_source_repository": "https://github.com/b00t0x/WhateverXe",
"providers": {
"Common": {
"source_commit": "cfd968e80fb48f5b0943ff4e20c7ade3f6918e63",
"source_commit": "31826afc837977e1f09f5109173d5a2b577aff78",
"source_file": "AppleIntelTGLCompat/AppleIntelTGLCompat.cpp",
"source_file_sha256": "f095a0a42fb91749b66e0f53152eefdae3c2d1348bd5a50b2bbc5de4d4dfb7e7",
"source_file_sha256": "b97a1edc5cb3df8b6b5172acccb2e1cd57346315c04c2dbc1ca7948daa0a4690",
"version": "0.5.0",
"configuration": "RELEASE",
"build_command": "python3 tools/build.py --release",
"sha256": "202dd85ca41fae8d655887728ca352c33a82075d0c22f245a23258ee8b1038c7"
"sha256": "bc4343a57498d0af58935689a15696b47497240dd0e1ac83c26a1a4a683ae4b5"
}
},
"amfipass_sha256": "71f41de42e355d2a83e6f093ef34a5b24d0a9c9a9085830b2317f1b874f56250",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -313,7 +313,7 @@
<key>IOPCIClassMatch</key>
<string>0x03000000&amp;0xff000000</string>
<key>IOPCIPrimaryMatch</key>
<string>0x9a408086 0x9a498086 0x9a788086</string>
<string>0x9a408086 0x9a498086 0x9a788086 0x9a608086 0x9a688086 0x9a708086 0x46808086 0x46828086 0x46888086 0x468a8086 0x468b8086 0x46908086 0x46928086 0x46938086 0xa7808086 0xa7818086 0xa7828086 0xa7838086 0xa7888086 0xa7898086 0xa78a8086 0xa78b8086</string>
<key>IOProbeScore</key>
<integer>1000</integer>
<key>IOProviderClass</key>
Expand Down
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@
<key>IOPCIClassMatch</key>
<string>0x03000000&amp;0xff000000</string>
<key>IOPCIPrimaryMatch</key>
<string>0x9a408086 0x9a498086 0x9a788086</string>
<string>0x9a408086 0x9a498086 0x9a788086 0x9a608086 0x9a688086 0x9a708086 0x46808086 0x46828086 0x46888086 0x468a8086 0x468b8086 0x46908086 0x46928086 0x46938086 0xa7808086 0xa7818086 0xa7828086 0xa7838086 0xa7888086 0xa7898086 0xa78a8086 0xa78b8086</string>
<key>IOProbeScore</key>
<integer>80000</integer>
<key>IOProviderClass</key>
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -313,7 +313,7 @@
<key>IOPCIClassMatch</key>
<string>0x03000000&amp;0xff000000</string>
<key>IOPCIPrimaryMatch</key>
<string>0x9a408086 0x9a498086 0x9a788086</string>
<string>0x9a408086 0x9a498086 0x9a788086 0x9a608086 0x9a688086 0x9a708086 0x46808086 0x46828086 0x46888086 0x468a8086 0x468b8086 0x46908086 0x46928086 0x46938086 0xa7808086 0xa7818086 0xa7828086 0xa7838086 0xa7888086 0xa7898086 0xa78a8086 0xa78b8086</string>
<key>IOProbeScore</key>
<integer>1000</integer>
<key>IOProviderClass</key>
Expand Down
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@
<key>IOPCIClassMatch</key>
<string>0x03000000&amp;0xff000000</string>
<key>IOPCIPrimaryMatch</key>
<string>0x9a408086 0x9a498086 0x9a788086</string>
<string>0x9a408086 0x9a498086 0x9a788086 0x9a608086 0x9a688086 0x9a708086 0x46808086 0x46828086 0x46888086 0x468a8086 0x468b8086 0x46908086 0x46928086 0x46938086 0xa7808086 0xa7818086 0xa7828086 0xa7838086 0xa7888086 0xa7898086 0xa78a8086 0xa78b8086</string>
<key>IOProbeScore</key>
<integer>80000</integer>
<key>IOProviderClass</key>
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -313,7 +313,7 @@
<key>IOPCIClassMatch</key>
<string>0x03000000&amp;0xff000000</string>
<key>IOPCIPrimaryMatch</key>
<string>0x9a408086 0x9a498086 0x9a788086</string>
<string>0x9a408086 0x9a498086 0x9a788086 0x9a608086 0x9a688086 0x9a708086 0x46808086 0x46828086 0x46888086 0x468a8086 0x468b8086 0x46908086 0x46928086 0x46938086 0xa7808086 0xa7818086 0xa7828086 0xa7838086 0xa7888086 0xa7898086 0xa78a8086 0xa78b8086</string>
<key>IOProbeScore</key>
<integer>1000</integer>
<key>IOProviderClass</key>
Expand Down
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@
<key>IOPCIClassMatch</key>
<string>0x03000000&amp;0xff000000</string>
<key>IOPCIPrimaryMatch</key>
<string>0x9a408086 0x9a498086 0x9a788086</string>
<string>0x9a408086 0x9a498086 0x9a788086 0x9a608086 0x9a688086 0x9a708086 0x46808086 0x46828086 0x46888086 0x468a8086 0x468b8086 0x46908086 0x46928086 0x46938086 0xa7808086 0xa7818086 0xa7828086 0xa7838086 0xa7888086 0xa7898086 0xa78a8086 0xa78b8086</string>
<key>IOProbeScore</key>
<integer>80000</integer>
<key>IOProviderClass</key>
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -313,7 +313,7 @@
<key>IOPCIClassMatch</key>
<string>0x03000000&amp;0xff000000</string>
<key>IOPCIPrimaryMatch</key>
<string>0x9a408086 0x9a498086 0x9a788086</string>
<string>0x9a408086 0x9a498086 0x9a788086 0x9a608086 0x9a688086 0x9a708086 0x46808086 0x46828086 0x46888086 0x468a8086 0x468b8086 0x46908086 0x46928086 0x46938086 0xa7808086 0xa7818086 0xa7828086 0xa7838086 0xa7888086 0xa7898086 0xa78a8086 0xa78b8086</string>
<key>IOProbeScore</key>
<integer>1000</integer>
<key>IOProviderClass</key>
Expand Down
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@
<key>IOPCIClassMatch</key>
<string>0x03000000&amp;0xff000000</string>
<key>IOPCIPrimaryMatch</key>
<string>0x9a408086 0x9a498086 0x9a788086</string>
<string>0x9a408086 0x9a498086 0x9a788086 0x9a608086 0x9a688086 0x9a708086 0x46808086 0x46828086 0x46888086 0x468a8086 0x468b8086 0x46908086 0x46928086 0x46938086 0xa7808086 0xa7818086 0xa7828086 0xa7838086 0xa7888086 0xa7898086 0xa78a8086 0xa78b8086</string>
<key>IOProbeScore</key>
<integer>80000</integer>
<key>IOProviderClass</key>
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -313,7 +313,7 @@
<key>IOPCIClassMatch</key>
<string>0x03000000&amp;0xff000000</string>
<key>IOPCIPrimaryMatch</key>
<string>0x9a408086 0x9a498086 0x9a788086</string>
<string>0x9a408086 0x9a498086 0x9a788086 0x9a608086 0x9a688086 0x9a708086 0x46808086 0x46828086 0x46888086 0x468a8086 0x468b8086 0x46908086 0x46928086 0x46938086 0xa7808086 0xa7818086 0xa7828086 0xa7838086 0xa7888086 0xa7898086 0xa78a8086 0xa78b8086</string>
<key>IOProbeScore</key>
<integer>1000</integer>
<key>IOProviderClass</key>
Expand Down
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@
<key>IOPCIClassMatch</key>
<string>0x03000000&amp;0xff000000</string>
<key>IOPCIPrimaryMatch</key>
<string>0x9a408086 0x9a498086 0x9a788086</string>
<string>0x9a408086 0x9a498086 0x9a788086 0x9a608086 0x9a688086 0x9a708086 0x46808086 0x46828086 0x46888086 0x468a8086 0x468b8086 0x46908086 0x46928086 0x46938086 0xa7808086 0xa7818086 0xa7828086 0xa7838086 0xa7888086 0xa7898086 0xa78a8086 0xa78b8086</string>
<key>IOProbeScore</key>
<integer>80000</integer>
<key>IOProviderClass</key>
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -313,7 +313,7 @@
<key>IOPCIClassMatch</key>
<string>0x03000000&amp;0xff000000</string>
<key>IOPCIPrimaryMatch</key>
<string>0x9a408086 0x9a498086 0x9a788086</string>
<string>0x9a408086 0x9a498086 0x9a788086 0x9a608086 0x9a688086 0x9a708086 0x46808086 0x46828086 0x46888086 0x468a8086 0x468b8086 0x46908086 0x46928086 0x46938086 0xa7808086 0xa7818086 0xa7828086 0xa7838086 0xa7888086 0xa7898086 0xa78a8086 0xa78b8086</string>
<key>IOProbeScore</key>
<integer>1000</integer>
<key>IOProviderClass</key>
Expand Down
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@
<key>IOPCIClassMatch</key>
<string>0x03000000&amp;0xff000000</string>
<key>IOPCIPrimaryMatch</key>
<string>0x9a408086 0x9a498086 0x9a788086</string>
<string>0x9a408086 0x9a498086 0x9a788086 0x9a608086 0x9a688086 0x9a708086 0x46808086 0x46828086 0x46888086 0x468a8086 0x468b8086 0x46908086 0x46928086 0x46938086 0xa7808086 0xa7818086 0xa7828086 0xa7838086 0xa7888086 0xa7898086 0xa78a8086 0xa78b8086</string>
<key>IOProbeScore</key>
<integer>80000</integer>
<key>IOProviderClass</key>
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
2 changes: 1 addition & 1 deletion tools/policy.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"package_version": "0.1.0",
"package_version": "0.2.0",
"systems": [
{
"name": "Big Sur",
Expand Down
30 changes: 30 additions & 0 deletions tools/release_notes.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#!/usr/bin/env python3
"""Print a version's CHANGELOG section for its GitHub Release body."""
import argparse
import re
from pathlib import Path


def release_notes(changelog, version):
version = version.removeprefix('v')
sections = re.split(r'^## (.+)\n', changelog, flags=re.MULTILINE)
matches = [body.strip() for heading, body in zip(sections[1::2], sections[2::2])
if heading == version]
if len(matches) != 1 or not matches[0]:
raise ValueError(f'Expected one nonempty CHANGELOG section for {version}')
return matches[0] + '\n'


def main():
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument('version', help='release tag, with or without a v prefix')
args = parser.parse_args()
changelog = Path(__file__).resolve().parents[1] / 'CHANGELOG.md'
try:
print(release_notes(changelog.read_text(), args.version), end='')
except ValueError as error:
parser.error(str(error))


if __name__ == '__main__':
main()
Loading