WIP: feat(tools/display-disturb): adl-emul — AMD connector-emulation probe (software HPD dummy) #54

Closed
enricobuehler wants to merge 1 commits from worktree-adl-emul-probe into main
Owner

Stall program T1, step 1 (planning: design/vdisplay-disturbance-immunity.md §9). The dead-end list marked AMD ADL connector emulation "likely Pro-gated" on field hearsay, with "probe once, log rc" as the owed falsification — never run, here or anywhere in the community record. After the third RX 9070 XT standby-sink field case, this is that probe, shippable to reporters as a single exe.

  • display-disturb adl-emul — read-only: EDIDManagement_Caps, board layout, per-connector emulation state/data. Always safe.
  • --lock [--connector N] — pin the live EDID (ConnectionData_Set) + ADL_EMUL_MODE_ALWAYS on occupied connectors: the software equivalent of an HPD-holding dummy plug. Run during a stream with the sink asleep = the direct A/B for the metronomic stall class.
  • --unlockADL_EMUL_MODE_OFF + ConnectionData_Remove (restore). Emulation can persist across reboots, so every --lock instruction ships with the --unlock pairing (driver reinstall = escape hatch).

Every call prints the bench's epoch_ms op target took_ms ok rc= line with the rc decoded — ADL_ERR_NOT_SUPPORTED(-8) vs ADL_OK on consumer Adrenalin is the whole Pro-gating question. atiadlxx.dll is bound dynamically (absent = clean exit 2); structs mirror adl_structures.h verbatim; only connectors the board-layout walk enumerated are touched.

Gates: check/clippy --all-targets -D warnings (x86_64-pc-windows-msvc cross-target) + fmt clean; native stub unaffected.

Draft until the validation ladder runs: (1) .173 bare-metal Raphael iGPU (consumer Adrenalin, end-to-end API path), (2) case-#3 reporter's 9070 XT (read-only run, then the --lock stall A/B). Green ⇒ productize as an edid_lock display-policy axis next to pnp_disable_monitors.

Stall program T1, step 1 (planning: `design/vdisplay-disturbance-immunity.md` §9). The dead-end list marked AMD ADL connector emulation "likely Pro-gated" on field hearsay, with "probe once, log rc" as the owed falsification — never run, here or anywhere in the community record. After the third RX 9070 XT standby-sink field case, this is that probe, shippable to reporters as a single exe. - `display-disturb adl-emul` — read-only: `EDIDManagement_Caps`, board layout, per-connector emulation state/data. Always safe. - `--lock [--connector N]` — pin the live EDID (`ConnectionData_Set`) + `ADL_EMUL_MODE_ALWAYS` on occupied connectors: the software equivalent of an HPD-holding dummy plug. Run during a stream with the sink asleep = the direct A/B for the metronomic stall class. - `--unlock` — `ADL_EMUL_MODE_OFF` + `ConnectionData_Remove` (restore). Emulation can persist across reboots, so every `--lock` instruction ships with the `--unlock` pairing (driver reinstall = escape hatch). Every call prints the bench's `epoch_ms op target took_ms ok rc=` line with the rc decoded — `ADL_ERR_NOT_SUPPORTED(-8)` vs `ADL_OK` on consumer Adrenalin is the whole Pro-gating question. `atiadlxx.dll` is bound dynamically (absent = clean exit 2); structs mirror `adl_structures.h` verbatim; only connectors the board-layout walk enumerated are touched. **Gates**: `check`/`clippy --all-targets -D warnings` (x86_64-pc-windows-msvc cross-target) + fmt clean; native stub unaffected. **Draft until the validation ladder runs**: (1) .173 bare-metal Raphael iGPU (consumer Adrenalin, end-to-end API path), (2) case-#3 reporter's 9070 XT (read-only run, then the `--lock` stall A/B). Green ⇒ productize as an `edid_lock` display-policy axis next to `pnp_disable_monitors`.
enricobuehler added 1 commit 2026-08-05 05:47:55 +00:00
feat(tools/display-disturb): adl-emul — AMD connector-emulation probe (software HPD dummy)
ci / web (pull_request) Successful in 1m4s
ci / docs-site (pull_request) Successful in 1m14s
ci / rust-arm64 (pull_request) Successful in 3m28s
ci / rust (pull_request) Failing after 8m55s
75d07a7e5d
The standby-sink stall program's §3 dead-end list marked ADL EmulationMode
'likely Pro-gated' on field hearsay, with 'probe once, log rc' as the owed
falsification — never run. Three RX 9070 XT field cases later (ASUS
VG32VQ1B/DP, Odyssey G60SD/DP, LG UltraGear 32GS95UE/HDMI), this is that
probe, shippable to reporters: read-only caps/board-layout/connection-state
walk by default, --lock pins the live EDID + ADL_EMUL_MODE_ALWAYS on
occupied connectors (the software HPD-holding dummy), --unlock restores.
Every call prints the bench's epoch_ms correlation line with the decoded
ADL rc — ADL_ERR_NOT_SUPPORTED(-8) vs ADL_OK on consumer Adrenalin is the
Pro-gating answer, and a --lock run during a stream with the sink asleep
is the direct A/B for the metronomic stall class.

atiadlxx.dll is bound dynamically (absent = clean exit 2), structs mirror
adl_structures.h verbatim, and the probe touches only connectors the
board-layout walk enumerated. Gates: check/clippy -D warnings (msvc
cross-target) + fmt clean; native stub unaffected.
Author
Owner

Superseded by #176, which carries this branch's commit verbatim and productizes it as the edid_lock display-policy axis (ADL FFI shared between the probe tool and the host at pf_win_display::adl_emul). #176 merged to main — closing. The probe's own validation ladder (rc evidence on a consumer RX 9070 XT, then the --lock stall A/B) transfers to the axis and remains owed before trusting the lever's effect; the tool ships unchanged for exactly that run.

Superseded by #176, which carries this branch's commit verbatim and productizes it as the `edid_lock` display-policy axis (ADL FFI shared between the probe tool and the host at `pf_win_display::adl_emul`). #176 merged to main — closing. The probe's own validation ladder (rc evidence on a consumer RX 9070 XT, then the `--lock` stall A/B) transfers to the axis and remains owed before trusting the lever's effect; the tool ships unchanged for exactly that run.
enricobuehler closed this pull request 2026-08-12 13:14:19 +00:00

Pull request closed

Please reopen this pull request to perform a merge.
This pull request is marked as a work in progress.
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: unom/punktfunk#54