An open-source OpenXR runtime for spatial displays — 3D monitors and laptops with tracked stereo and multiview lightfield display technology.
Built on Monado by Collabora, DisplayXR strips away headset-centric infrastructure (34 VR drivers, Vulkan server compositor, tracking subsystems) and replaces it with a lightweight runtime purpose-built for 3D displays: ~150 files, 3 drivers, native compositors for every graphics API.
App (any graphics API)
|
OpenXR State Tracker
|
Core xrt interfaces
|
+----+-----+--------+--------+
| | | | |
D3D11 D3D12 Vulkan Metal OpenGL ← native compositors
| | | | |
Display Processor (LeiaSR / sim_display)
|
Display
Every graphics API gets its own native compositor — no Vulkan intermediary, no interop overhead. Vendor-specific processing (interlacing, lenticular weaving) is isolated in the display processor layer.
| API | Windows | macOS |
|---|---|---|
| D3D11 | Shipping | — |
| D3D12 | Shipping | — |
| Metal | — | Shipping |
| OpenGL | Shipping | Shipping |
| Vulkan | Shipping | Shipping |
# macOS
git clone https://github.com/DisplayXR/displayxr-runtime
cd displayxr-runtime
./scripts/setup-displayxr.sh # runtime + sim-display
./scripts/setup-displayxr.sh --with mcp # also DisplayXR MCP Tools (AI-agent / voice control):: Windows — run from an ELEVATED command prompt
git clone https://github.com/DisplayXR/displayxr-runtime
cd displayxr-runtime
scripts\setup-displayxr.bat :: runtime + Shell + Leia plug-in
scripts\setup-displayxr.bat --with mcp :: also DisplayXR MCP Tools (AI-agent / voice control)Downloads each component's installer from its GitHub Releases page (versions pinned in versions.json), runs it silently, verifies the install. See docs/getting-started/full-stack-install.md for --with-demos, --dry-run, --uninstall, and the per-component platform availability matrix.
For full control, install each component directly from its release page. Order: runtime → Shell → Leia plug-in → MCP Tools.
| Component | Windows | macOS |
|---|---|---|
| DisplayXR Runtime (required) | DisplayXRSetup-*.exe |
DisplayXR-Installer-*.pkg |
| DisplayXR Shell (optional, spatial workspace UX) | DisplayXRShellSetup-*.exe |
— (deferred) |
| Leia SR plug-in (Leia hardware only) | DisplayXRLeiaSRSetup-*.exe |
— (vendor SDK is Windows-only) |
| MCP Tools (optional, AI-agent / voice control) | DisplayXRMCPSetup-*.exe |
— (future) |
The website's Get Started page walks through the manual flow end-to-end with verification steps.
# Windows — auto-fetches vcpkg + OpenXR loader (no vendor SDK; Leia ships as a separate plug-in)
scripts\build_windows.bat all
# Outputs: _package/DisplayXRSetup-*.exe (installer) + _package/bin/
# macOS — runtime + sim-display plug-in + .pkg installer
brew install cmake ninja eigen vulkan-sdk && ./scripts/build_macos.sh --installer
# Outputs: _package/DisplayXR-Installer-*.pkg (installer) + _package/DisplayXR-macOS/
# Install: sudo installer -pkg _package/DisplayXR-Installer-*.pkg -target /
# (Gatekeeper warns on double-click — the .pkg is unsigned today; sudo installer
# from terminal bypasses Gatekeeper. Notarization tracked in issues #280/#281.)
# Run a dev build without installing
XR_RUNTIME_JSON=./build/Release/openxr_displayxr-dev.json ./your_openxr_appSee Building DisplayXR for full instructions and CMake options.
No 3D display required. The sim_display driver provides a simulated tracked display with WASD + mouse eye position control:
XR_RUNTIME_JSON=./build/openxr_displayxr-dev.json ./build/test_apps/cube_handle_vk_macos/cube_handle_vk_macos| I want to... | Start here |
|---|---|
| Build apps for 3D displays | Getting Started |
| Contribute to DisplayXR | Contributing Guide |
| Integrate my display hardware | Vendor Plug-in Onboarding |
| See the full docs index | Documentation Index |
| See the project roadmap | Roadmap |
- App Classes — handle, texture, hosted, IPC
- XR_EXT_display_info — display properties and rendering mode extension
- Kooima Projection — stereo math and projection pipelines
- Separation of Concerns — layer boundaries
- displayxr-mcp — embeddable MCP server framework. End users opt in to AI-agent / voice control by installing DisplayXR MCP Tools (releases), which writes
HKLM\Software\DisplayXR\Capabilities\MCP\Enabled=1; the runtime reads this at startup and spawns a per-app MCP server.DISPLAYXR_MCP=1(or=0) is still supported as a process-local override for CI / dev. Runtime registers Phase A handle-app introspection tools (list_sessions,get_display_info,capture_frame,tail_log, …) per app process; the reference shell hosts Phase B workspace tools. Spec atdisplayxr-mcp/docs/mcp-spec.md.
| Repo | Description |
|---|---|
| displayxr-installer | Meta-installer — one bundle that installs runtime + Shell + plug-ins |
| displayxr-shell-releases | DisplayXR Shell — spatial workspace controller (installer + bug reports) |
| displayxr-leia-plugin | Leia SR display-processor plug-in (DisplayXRLeiaSRSetup-*.exe) |
| displayxr-extensions | OpenXR extension specs and headers |
| displayxr-mcp | Embeddable MCP server framework + DisplayXR MCP Tools installer (end-user opt-in for agent / voice control) |
| displayxr-demo-gaussiansplat | 3D Gaussian Splatting reference demo |
| displayxr-unity | Unity engine plugin (UPM package) |
| displayxr-unreal | Unreal Engine plugin |
| kooima-projection | Off-axis frustum projection math library |
We welcome contributions! See the contributing guide for workflow, code style, and CI expectations.
Boost Software License 1.0