Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
dbdb3c0
Add opt-in Alder Lake-P boot resource readout
b00t0x Oct 24, 2026
b419c1c
Add Alder Lake-P resource and fixed TC HDMI building blocks
b00t0x Oct 24, 2026
acb9512
Preserve explicit ADL-P load-only recovery boundaries
b00t0x Oct 24, 2026
fae299f
Separate Display13 framebuffer preflight from render admission
b00t0x Oct 24, 2026
1f8b054
Connect Display13 TC boot memory, lane power and DDC preparation
b00t0x Oct 24, 2026
d32edc1
Connect Display13 TC mode and guarded native TMDS startup
b00t0x Oct 24, 2026
1ad6fb0
Assemble physical ADL-P TC1 framebuffer-only candidate
b00t0x Oct 24, 2026
66fcab8
Isolate Display13 port probing during framebuffer bring-up
b00t0x Oct 24, 2026
3537f0f
Dispatch framebuffer-only profiles through host and firmware setup
b00t0x Oct 24, 2026
aaa1803
Exercise outer kext dispatch for framebuffer-only profiles
b00t0x Oct 24, 2026
3ed8c7a
Prepare Display13 scanout at the native controller boundary
b00t0x Oct 24, 2026
e98d3f7
Defer Display13 framebuffer opens until AGDC registration
b00t0x Oct 24, 2026
ec80f87
Mask excluded Display 13 north HPD sources before IRQ admission
b00t0x Oct 24, 2026
88a77d0
Derive Combo HPD exclusions from validated native connector policy
b00t0x Oct 24, 2026
7cfd89d
Connect ADL-P fuse resources to the shared Display13 render path
b00t0x Oct 24, 2026
d240599
Select Display13 fixed HDMI routes from firmware topology
b00t0x Oct 24, 2026
ac8d7d2
Share Display13 accelerator reservations across fixed TC outputs
b00t0x Oct 24, 2026
db3aa6d
Name mobile Display13 selection independently of Render enablement
b00t0x Oct 24, 2026
9bb5b63
Select mobile Display13 backends from physical ADL-P and RPL-P identi…
b00t0x Oct 24, 2026
69bfa6d
Scope native graphics policy registration to admitted Display13 clients
b00t0x Oct 24, 2026
75404d1
Align mobile display configuration and remaining roadmap
b00t0x Oct 24, 2026
635bae4
Fix Display13 cold TC ownership and isolate reversible leaf failures
b00t0x Oct 24, 2026
4ed65c4
Select fixed Display13 TC routing by physical capabilities
b00t0x Oct 24, 2026
8aedae7
Acquire fixed TC DDI power after enabling its PLL
b00t0x Oct 24, 2026
7ede901
Initialize modular FIA lanes before Display 13 TC HDMI clocks
b00t0x Oct 24, 2026
437603e
Generalize Tiger Lake fixed DP routing and FIA lifecycle
b00t0x Oct 24, 2026
13f798d
Integrate fixed Display13 TC SST DP after HDMI boot
b00t0x Oct 24, 2026
47666de
Connect Display13 DP training reservations and link lifecycle
b00t0x Oct 24, 2026
4e7606c
Share required framebuffer donor runtime corrections across display b…
b00t0x Oct 24, 2026
44fd008
Clarify validated fixed DisplayPort scope on Display13
b00t0x Oct 25, 2026
ef2e58d
Validate Display13 TC SST sources through boot scanout memory handoff
b00t0x Oct 25, 2026
c0b6e6d
Connect fixed TC DP boot handoff to native power and path ownership
b00t0x Oct 25, 2026
6608a86
Classify firmware DP SST by transport mode while preserving payload s…
b00t0x Oct 25, 2026
f17e6e5
Guard shared lane hook argument reads by the exact donor caller
b00t0x Oct 25, 2026
646a8ca
Own framebuffer donor contracts before hardware backend dispatch
b00t0x Oct 25, 2026
ab090d0
Preserve framebuffer ownership across publication and failed teardown
b00t0x Oct 25, 2026
17a7145
Preserve the first Display13 watermark latch rejection details
b00t0x Oct 25, 2026
4a5fee7
Defer Display13 live latch proof until a scanout surface is attached
b00t0x Oct 25, 2026
d9af9ea
Extend Display13 native DDI activation wait by physical port
b00t0x Oct 25, 2026
07cee2b
Qualify scaled firmware scanout and park secondary fixed TC boot outputs
b00t0x Oct 25, 2026
b50454c
Capture fixed TC firmware ports outside active GOP routes
b00t0x Oct 25, 2026
61fc632
Release cold unused fixed TC firmware ownership before native startup
b00t0x Oct 25, 2026
32db464
Pass mutable diagnostic record to IOKit property publication
b00t0x Oct 25, 2026
616dc2e
Document verified multi-output and scaled firmware boot handoff
b00t0x Oct 25, 2026
9f48087
Preserve Display13 path ownership when resource retirement fails
b00t0x Oct 25, 2026
614abec
Select external link waits and TC preparation by display and PHY cont…
b00t0x Oct 25, 2026
c0f16c5
Preserve active ADL-S PLL owners across Combo hotplug
b00t0x Oct 25, 2026
36f405e
Retire unadopted ADL-S firmware consumers before native startup
b00t0x Oct 25, 2026
d5f0f07
Wait for Combo AUX readiness before enabling fixed DP links
b00t0x Oct 25, 2026
e980280
Cover first and inherited AUX references in readiness tests
b00t0x Oct 25, 2026
f9d28a9
Avoid absent ADL-S DDI C request during native release
b00t0x Oct 26, 2026
7bf717c
Replay ADL-S DDI power correction across supported connector assignments
b00t0x Oct 26, 2026
9d3ef97
Share Combo PLL ownership and repair DDI requests in the common donor…
b00t0x Oct 26, 2026
68dd7a5
Share bounded GOP waits and buffer stop sequence
b00t0x Oct 26, 2026
6094ef9
Fix byte addressing of display platform records
b00t0x Oct 26, 2026
805f3c3
Exercise production wiring admission in port wait replay
b00t0x Oct 26, 2026
919e9af
Prepare WEX 0.6.0 release
b00t0x Oct 26, 2026
9337cd7
Update Display13 connector and boot handoff limits
b00t0x Oct 26, 2026
280c2b2
Clarify release scope and keep user documentation current
b00t0x Oct 26, 2026
9a6c40a
Acknowledge XPS13Plus compiler reference work
b00t0x Oct 26, 2026
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
7 changes: 7 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,13 @@ Source attribution, licenses and reproducible test fixtures remain here.
Keep release notes in CHANGELOG.md under an exact version heading. Release CI
extracts that section; do not maintain a separate release-note template.

README describes the current state, not release-by-release changes. Recommend
latest component releases instead of accumulating per-version dependency tables.
Use GPU family names rather than internal display-generation labels in README
prose. CHANGELOG describes the affected behavior and OS range; applications used
for validation are not the scope of a general fix. Credit reference repositories
when their work informed a change.

## Build and test

Build with `python3 tools/build.py`; run CPU tests with `python3 tools/test.py`.
Expand Down
2 changes: 1 addition & 1 deletion AppleIntelTGLCompat/AppleIntelTGLCompat.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ static uint32_t read32(void *access, unsigned long offset) {
// it does not read plugin boot arguments or depend on framebuffer globals.
// The provider pins the immutable binding until reboot, like the donor owner.
extern "C" uint32_t xelpProbeCapabilities(uint32_t schema,uint32_t configABI) {
return schema==XELP::ProbeCapabilityABI && configABI==XELP::ProbeABI ? XELP::ProbeDisplay13ComboDP : 0;
return schema==XELP::ProbeCapabilityABI && configABI==XELP::ProbeABI ? XELP::ProbeDisplay13ComboDP|XELP::ProbeDisplay13FixedTC|XELP::ProbeDisplay13FixedDP : 0;
}
extern "C" bool xelpConfigureDisplay(void *controller,const XELP::ProbeConfig *config) {
if(!controller || !config || !config->valid())return false;
Expand Down
38 changes: 38 additions & 0 deletions AppleIntelTGLCompat/GraphicsPolicy.plist
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>WEX Display13 graphics policy</key>
<dict>
<key>CFBundleIdentifier</key>
<string>com.apple.driver.AppleGraphicsDevicePolicy</string>
<key>Default</key>
<dict>
<key>unload</key>
<false/>
</dict>
<key>IOClass</key>
<string>AppleGraphicsDevicePolicy</string>
<key>IOMatchCategory</key>
<string>AppleGraphicsDevicePolicy</string>
<key>IONameMatch</key>
<string>IntelFBClientControl</string>
<key>IOParentMatch</key>
<dict>
<key>IOPropertyMatch</key>
<dict>
<key>N97FramebufferBackendReady</key>
<true/>
</dict>
<key>IOProviderClass</key>
<string>AppleIntelFramebufferController</string>
</dict>
<key>IOProbeScore</key>
<integer>1000</integer>
<key>IOProviderClass</key>
<string>IntelFBClientControl</string>
<key>IOResourceMatch</key>
<string>IOKit</string>
</dict>
</dict>
</plist>
18 changes: 18 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,23 @@
# Changelog

## 0.6.0

Use the latest [WhateverXe Graphics](https://github.com/b00t0x/WhateverXe-Graphics/releases) package.

### Added

- Add Alder Lake-H/P/U and Raptor Lake-H/P/U GPU support with automatic resource detection and VBT-selected fixed HDMI routes.
- Add experimental fixed TC DisplayPort output with matching AUX wiring; Alder Lake-H has been tested through a DP-to-HDMI adapter.
- Support startup with multiple fixed TC displays, including supported firmware-scaled boot displays.

### Fixed

- Improve display clock ownership, output shutdown and reuse across the shared external-display paths.
- Stop display teardown and reuse when required shutdown steps fail.
- [WhateverXe Graphics 0.3.0](https://github.com/b00t0x/WhateverXe-Graphics/releases) fixes shader compilation failures on Sonoma–Tahoe by expanding supported AIR inputs.

Alder Lake-H hardware checks cover Big Sur–Tahoe. Other newly accepted mobile configurations remain untested. Internal panels and Type-C-managed output on the newly supported mobile GPUs still need implementation; existing DisplayPort reconnection and Sequoia App Store video hangs remain unresolved. See the [README](https://github.com/b00t0x/WhateverXe#tested-features-and-known-issues) for coverage and limits.

## 0.5.0

The newly added GPUs require [WhateverXe Graphics 0.2.0](https://github.com/b00t0x/WhateverXe-Graphics/releases). Its rendering fixes also benefit previously supported GPUs; updating both components is recommended.
Expand Down
62 changes: 44 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,8 @@ This project is experimental and requires the signed graphics package from
[WhateverXe Graphics](https://github.com/b00t0x/WhateverXe-Graphics). It installs
the graphics stack under `/Library` and updates the Auxiliary Kernel Collection
(AuxKC), without patching System files or snapshots. WEX and the graphics package
have independent release versions. Graphics **0.2.0** is needed for the GPUs
added in WEX **0.5.0** and supplies the latest rendering fixes. Previously
supported Tiger Lake/Alder Lake-N configurations can retain Graphics 0.1.0,
but will not receive the new package fixes or features requiring its updated
components. Use WEX 0.5.0 with Graphics 0.2.0 for the complete set of current features and fixes.
have independent release versions. Use the latest releases of both WEX and
WhateverXe Graphics.

## Compatibility

Expand Down Expand Up @@ -42,6 +39,7 @@ Graphics; GPU generation and connector routing are handled by WEX.
| --- | --- |
| Tiger Lake-U | 48- and 80-EU graphics; desktop-style and laptop display layouts |
| Alder Lake-N | 16- and 24-EU graphics; two HDMI displays |
| Alder Lake-H | 96-EU graphics (`46A6`); fixed TC HDMI and DisplayPort through a DP-to-HDMI adapter |
| Alder Lake-S | UHD Graphics 770 (`4690`); HDMI, DisplayPort and a USB-C port wired as fixed DisplayPort |

These are tested configurations within each family, not a guarantee for every
Expand All @@ -53,6 +51,7 @@ for OS coverage and remaining problems.
- Other supported Tiger Lake-U/H35 configurations, including 96-EU graphics.
- Tiger Lake-H45 (GT1): `9A60`, `9A68`, `9A70`.
- Other supported Alder Lake-N configurations and Twin Lake.
- Other Alder Lake-H/P/U and Raptor Lake-H/P/U configurations with supported fixed HDMI or fixed TC DisplayPort wiring.
- Other supported Alder Lake-S configurations, Alder Lake-HX, Raptor Lake-S and Raptor Lake-HX.

These devices use implemented support shared with the tested families. Their
Expand All @@ -62,8 +61,9 @@ limits are listed in [device selection](docs/device-selection.md).

### Further implementation required

- Alder Lake-H/P/U and Raptor Lake-H/P/U: additional graphics and display support
is needed. These are distinct from the HX products listed above.
- On Alder Lake-N / Twin Lake and Alder Lake-H/P/U / Raptor Lake-H/P/U,
internal eDP panels, Combo-PHY DisplayPort and Type-C-managed output need
further implementation. Accepting the GPU ID does not enable these outputs.
- Rocket Lake-S: its display power and clock handling differ from Tiger Lake.
It is not supported by this release, and no hardware validation is scheduled.

Expand Down Expand Up @@ -93,7 +93,7 @@ supported. With the signed graphics package and linked Mod AMFIPass,
Tahoe requires `CoreMedia / AllowOnePassMetalScaling` to be disabled; the
WhateverXe Graphics installer applies this setting.

Boot the target OS with WEX **0.3.0 or newer** (0.5.0 for newly added GPUs) before installing the graphics
Boot the target OS with the latest WEX before installing the latest graphics
pkg. If an older Xe System patch is installed, restore it using its original
recovery procedure first. The pkg does not change EFI, System files, snapshots
or SIP settings. See [installation and removal](https://github.com/b00t0x/WhateverXe-Graphics#install)
Expand Down Expand Up @@ -123,6 +123,23 @@ On supported GPUs, WhateverXe also normalizes the detected Intel Management
Engine device name to `IMEI`, as WhateverGreen does. A separate ACPI rename
from `HECI` or `MEI` to `IMEI` is unnecessary.

Tiger Lake automatically selects VBT-described fixed DisplayPort routes on TC1–TC4 when AUX wiring matches the native controller. Fixed DP and DP Alt Mode use the detected FIA layout. TC3/TC4 fixed DP and non-modular FIA support are implemented but have not been verified on hardware. TC5/TC6 and cross-routed AUX require further backend support.

Alder Lake-N / Twin Lake and Alder Lake-H/P/U / Raptor Lake-H/P/U use
VBT-described Combo A/B and fixed TC1–TC4 HDMI routes. Experimental fixed
TC1–TC4 SST DisplayPort requires matching VBT AUX wiring. The explicit
Alder Lake-N HDMI property applies only to Combo routes.

ADL-H has been tested with fixed HDMI outputs and a DP-to-HDMI adapter,
including three connected displays at startup, firmware-scaled boot displays
and DP reconnection. Direct DP sinks and other GPUs in these families have
not been verified with the fixed TC DP path. MST, USB-C DP Alt Mode,
Thunderbolt and cross-routed AUX remain unsupported on these GPUs.

ADL-P/RPL-P uses its physical ID and detected GPU resources automatically.
No device-ID override or machine-specific AGDP kext is required.
`-wex-noaccel` retains framebuffer-only operation.

### Internal-panel brightness

Add `SSDT-PNLF` to OpenCore to enable internal-display brightness control.
Expand Down Expand Up @@ -167,10 +184,20 @@ GPU backend selection is independent of hardware test coverage: untested PCI
revisions use the same family implementation. Revision-specific behavior is
added when a documented difference or observed failure requires it.

The supported Display 13 backend selects Y-tiled scanout automatically;
`AAPL,GfxYTile` is not required in OpenCore. Existing values are preserved.
Do not use the Apple driver's `-yTileDisable` argument with this backend:
its X-tiled scanout path is unsupported. Display 12 tiling selection is unchanged.
Alder Lake-N / Twin Lake and Alder Lake-H/P/U / Raptor Lake-H/P/U select
Y-tiled scanout automatically; `AAPL,GfxYTile` is not required in OpenCore.
Existing values are preserved. Do not use the Apple driver's `-yTileDisable`
argument on these GPUs: their X-tiled scanout path is unsupported.

For framebuffer bring-up, the optional `-wex-noaccel` argument disables accelerator
startup. On Alder Lake-N / Twin Lake and Alder Lake-H/P/U / Raptor Lake-H/P/U,
it also skips GPU resource probing while preserving the
framebuffer's independent boot-memory and MMIO checks. It does not enable an
otherwise unsupported display backend.

Temporary development diagnostic: `-wex-adlp-readout` captures ADL-P boot resources while keeping GPU driver admission disabled. It is not required for supported hardware.
`-wex-adlp-load-only` blocks both native framebuffer and accelerator probes/starts on a selected ADL-P/RPL-P device, for load-only diagnostics without GPU initialization.
`-wex-display13-offline` keeps native display controller initialization enabled on Alder Lake-N / Twin Lake and Alder Lake-H/P/U / Raptor Lake-H/P/U but reports selected outputs as disconnected, isolating HPD/EDID and mode programming for framebuffer diagnostics. It does not establish display operation.

## Tested features and known issues

Expand All @@ -179,20 +206,18 @@ its X-tiled scanout path is unsupported. Display 12 tiling selection is unchange
| Tiger Lake / Alder Lake-N | Big Sur–Tahoe: dual 1920×1080 at 60 Hz output, Metal/MPS, OpenGL, OpenCL, hardware H.264 encode/decode, HEVC decode, display sleep/wake, Safari video decoding and Widevine playback |
| Tiger Lake laptops | Big Sur–Tahoe: internal 1366×768 eDP display, brightness control, HDMI and USB-C DisplayPort Alt Mode, up to three simultaneous displays; USB-C reconnection remains unreliable |
| Alder Lake-N | Big Sur/Tahoe: automatic Y tiling without an EFI `AAPL,GfxYTile` setting |
| Alder Lake-H | Big Sur–Tahoe: Metal, OpenGL, hardware H.264 encode/decode, HEVC decode and three displays using fixed HDMI and a DP-to-HDMI adapter |
| Alder Lake-S | Big Sur–Tahoe: Metal, OpenGL, OpenCL, hardware H.264 encode/decode, HEVC decode and three displays (two 1080p60 and one 720p60); Safari video playback; Widevine checked on Big Sur and Tahoe |
| Tiger Lake / Alder Lake-S | Tahoe: Chrome hardware-accelerated Canvas, WebGL and WebGPU |

These results cover tested systems, not every GPU, display, adapter or dock.
The listed resolutions describe test coverage; they are not a fixed resolution
limit imposed by WEX.

On Big Sur–Tahoe, WebKit GPU access to the Data GPU drivers uses its valid
Apple platform signature and service identifier, independently of Safari’s
installation or update location.

### Known issues and limits

- Some image-conversion operations can crash the application.
- App Store video playback can freeze the GPU on Sequoia.
- Reconnecting a monitor to a dedicated DisplayPort connector can leave the
screen black or freeze the computer. USB-C DisplayPort Alt Mode reconnection
can also freeze the computer; this has been reproduced on both Big Sur and
Expand All @@ -210,8 +235,7 @@ installation or update location.

## Roadmap

- Alder Lake-H/P/U and Raptor Lake-H/P/U support.
- USB-C and internal-display support on Display 13 GPUs.
- Complete DisplayPort, USB-C and internal-display support on Alder Lake-N / Twin Lake and Alder Lake-H/P/U / Raptor Lake-H/P/U.
- Improve display reconnection reliability and investigate full system sleep/wake.

## Build and test
Expand Down Expand Up @@ -240,3 +264,5 @@ WhateverGreen source is not a build dependency.

WhateverXe retains WhateverGreen's copyright notices and BSD-3-Clause license.
See [LICENSE.txt](LICENSE.txt). Lilu and MacKernelSDK are separate dependencies.

Thanks to [JulioNectar/XPS13Plus](https://github.com/JulioNectar/Hackintosh-XPS13Plus-IrisXe-Tahoe) for sharing its Xe graphics work. Its compiler adapter and LLVM bridge informed the OS-native AIR conversion used in WhateverXe Graphics.
Loading
Loading