Skip to content

docs(building): clarify from-source DP registration (ABI-stale plug-in case)#642

Open
leaiss wants to merge 2 commits into
mainfrom
docs/from-source-dp-registration-abi
Open

docs(building): clarify from-source DP registration (ABI-stale plug-in case)#642
leaiss wants to merge 2 commits into
mainfrom
docs/from-source-dp-registration-abi

Conversation

@leaiss

@leaiss leaiss commented Jun 22, 2026

Copy link
Copy Markdown
Collaborator

What

Extends the "from-source build needs a registered display processor" callout in docs/getting-started/building.md to cover the case that actually trips people up: a plug-in is registered, but it's ABI-stale.

Why

The existing callout only described a machine with nothing registered ("building from source does not register it → no display processor"). But the identical XRT_ERROR_DEVICE_CREATION_FAILED / "Failed to initialize OpenXR" failure also occurs when a plug-in is registered from a prior installer (e.g. sim-display/leia-sr from a released bundle) and a from-source runtime built ahead of that release ABI-rejects it at negotiate.

This came up debugging a colleague's from-source build: displayxr-cli selftest showed

sim-display: negotiate returned -17 (iface=0) — skipping.
leia-sr:     negotiate returned -17 (iface=0) — skipping.
no registered plug-in claimed the system — falling back to static drivers.
Result: XRT_ERROR_DEVICE_CREATION_FAILED

A new main runtime (ABI v4) rejecting the older installer-registered plug-ins. "I have DisplayXR installed and plug-ins registered" was true, yet init still failed — the existing doc gave no hint that an existing registration can be stale, nor a diagnostic.

Changes

  • Add a second paragraph: a registered plug-in is not necessarily an ABI-matched one; the same failure + fix (register the freshly-built plug-in, which overwrites the stale entry) applies.
  • Point at displayxr-cli selftest as the headless diagnostic.
  • Reword the lead from the informal "The step everyone misses on Windows" to "Windows requires an explicit plug-in registration step."

Docs-only — DetectChanges short-circuits the build jobs.

🤖 Generated with Claude Code

…n case)

The "from-source needs a registered display processor" callout only
described a machine with nothing registered. The same XRT_ERROR_DEVICE_
CREATION_FAILED / "Failed to initialize OpenXR" failure also happens when
a plug-in *is* registered but is ABI-stale — e.g. an older installer's
sim-display/leia-sr that a from-source runtime built ahead of that release
rejects at negotiate (`negotiate returned -17`, "no registered plug-in
claimed the system").

Add a second paragraph covering that case, note that "registered" does not
imply "ABI-matched", and point at `displayxr-cli selftest` as the headless
diagnostic. Also reword the lead from the informal "The step everyone
misses" to "Windows requires an explicit plug-in registration step".

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@leaiss leaiss requested a review from dfattal as a code owner June 22, 2026 17:24
The callout already names `displayxr-cli selftest` as the headless
diagnostic; also point at the per-process runtime log
(`%LOCALAPPDATA%\DisplayXR\DisplayXR_<exe>.<pid>_<ts>.log`), where the
authoritative cause (`negotiate returned …`, which plug-in was rejected)
is printed — that's where a dev hitting "Failed to initialize OpenXR"
first looks. The log path is otherwise only mentioned far down in the
dev-iteration / VS-debug sections.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant