Contribute
DisplayXR is open source and vendor-neutral. Whether you want to add a feature, an extension, or a new platform, here's how the project is laid out and where to start.
You do not need a spatial display to work on one. The runtime ships sim_display, a simulated tracked panel in an ordinary 2D window with the viewer's eye position on your mouse and keyboard — side-by-side, anaglyph or blended. It is the same driver the official Khronos conformance suite runs against in CI, so the path you develop on is the path that gets tested.
Understand the design first
Where the code lives
DisplayXR is a multi-repo project under the DisplayXR org. External contributors PR directly against the relevant repo.
Core
displayxr-runtimeCore OpenXR runtime with native compositors for D3D11, D3D12, Vulkan, Metal, and OpenGL — on Windows, macOS, and Android, plus a Vulkan-only compositor on desktop Linux (Preview, shipping as .deb packages).
displayxr-extensionsOpenXR extension specs and headers for tracked spatial display capabilities.
Engine plugins
displayxr-unityUnity engine plugin (UPM package) with eye-tracked stereo rendering, sample scenes, and standalone editor preview.
displayxr-unity-samplesReady-to-open Unity sample projects — Built-in/URP/HDRP pipeline tests plus a transparent Desktop Avatar showcase — wired to the DisplayXR Unity plugin, with one shared installer. Consolidates the earlier per-feature test repos into a single monorepo.
displayxr-unrealUnreal Engine plugin (UE 5.7) with eye-tracked Kooima stereo, camera- and display-centric rigs, Blueprint components, material expression nodes, and zero-copy atlas handoff. Windows, macOS, Android.
Libraries & tools
displayxr-commonShared math and common library — off-axis (Kooima) projection, atlas tiling, and window/canvas helpers consumed by the runtime, engine plugins, and demos from a single source of truth.
displayxr-mcpTiny embeddable Model Context Protocol server framework, plus the DisplayXR MCP Tools installer that end users download to opt in to AI-agent / voice control. The framework lets the runtime, the reference shell, and any third-party workspace controller expose live spatial state and control to AI agents (Claude Code, voice CLIs, custom drivers); the installer writes a registry capability flag the runtime and shell read at startup.
displayxr-vendor-templateVendor-neutral starter kit for building a DisplayXR display-processor plug-in — the ABI, discovery, and build scaffolding a new 3D-display maker needs, with no vendor SDK required. Fork it to bring up a plug-in against the sim_display path, then swap in your own weaver.
displayxr-cef-hostThe original proof that XR_DXR_weave works — not a browser to use, which is DisplayXR Browser. A small CEF (Chromium Embedded Framework) offscreen-render app that hands the runtime a stereo texture and a window rect and composites the weaved result; it never weaves itself. Kept as the smallest worked example of driving the weave from your own present-owner without forking Chromium, and because it builds in minutes where the browser fork takes hours. Note that it is pinned to weave spec v1 while the runtime is on v9, so it does not exercise batched submit, the 2D overlay atlas, N-view input, the Android handle kinds, or IPC brokering — treat it as a starting point to read, not a current conformance harness.
Demo apps
displayxr-demo-gaussiansplatReal-time 3D Gaussian Splatting viewer (.spz / .ply) for spatial displays. Windows, macOS, Linux, Android.
displayxr-demo-modelviewerGlasses-free 3D glTF 2.0 PBR model viewer (OpenXR + Vulkan). Drag-and-drop a .glb / .gltf model. Windows, macOS, Linux, Android.
displayxr-demo-mediaplayerSpatial media player — stereo photos, GPU-decoded video with synchronized audio, and folder slideshows, with playback controllable by AI agents. Windows, macOS, Linux, Android.
displayxr-demo-avatarA transparent, click-through 3D avatar that floats over your desktop (OpenXR + native Vulkan) — weaved in 3D with a flat 2D speech bubble beside it, and clicks passing through to whatever is behind. Showcases the see-through transparency and mixed 2D/3D display-zone path, now with live desktop content composited under the weave on all four platforms.
displayxr-demo-earthviewStreaming glasses-free 3D city viewer on Google Photorealistic 3D Tiles (OpenXR + Vulkan). Fly the full-scale world camera-style, or double-click to frame a neighborhood as a tabletop diorama. Requires a Google Map Tiles API key.
displayxr-webInline-3D web samples and the JS helper library for the DisplayXR Browser — the DisplayXR analog of the webxr-samples gallery, served via GitHub Pages.
Workspace controllers
displayxr-shell-releasesReference spatial workspace controller — a 3D window manager with multi-app compositing, 2D window capture, dynamic layouts, and focus-adaptive rendering. Windows, with a macOS build in beta. Ships as a standalone installer; build your own controller for verticals, kiosks, or OEM-branded workspaces using the same extension surface.
displayxr-browserDisplayXR Browser — a Chromium that renders the web normally and weaves glasses-free inline 3D on DisplayXR hardware, on Windows and Android. The productization of the inline-3D browser work validated by the CEF host, with a GPU-resident weave (no per-frame CPU readback). Security updates follow Chrome stable: every Chrome stable point release is rebuilt and published automatically when the browser's own code is untouched upstream, and verified on a DisplayXR display first when it is not. Pinned in the org version matrix as `browser`, and installable via the dev orchestrator with `--with browser`; it is deliberately not in the all-in-one bundle, because a full standalone browser is not part of the display stack the default install lays down.
Key decisions (ADRs)
Architecture Decision Records capture why the runtime is built the way it is. A few you'll want before touching the pipeline — the full set is in docs/adr.
ADR-001Native compositors per graphics APIADR-007The compositor never weaves (that's the display processor's job)ADR-019Vendor plug-in / aux boundaryADR-022Per-mode capability flags + frozen enumerated app structsADR-025Android vendor display processors run out-of-processADR-027Display zones — decoupled mixed 2D/3D layout with per-zone rigsADR-035The service owns arbitration, runs one compositor pipeline, and isolates its satellitesAdd a feature, extension, or platform
The deep guides live in the runtime repo; these are the entry points. (Writing a plug-in for a 3D-display panel instead? See the Display Vendors guide.)
Pick up an issue
Runtime dev issues live in the runtime repo; external contributors open a PR directly against it. New here? Filter for good first issue.