Skip to content

Latest commit

 

History

History
74 lines (53 loc) · 3.38 KB

File metadata and controls

74 lines (53 loc) · 3.38 KB

DisplayXR Overview

An open-source OpenXR runtime for glasses-free 3D displays — autostereoscopic monitors and laptops that deliver head-tracked stereoscopic 3D without worn hardware.

Why DisplayXR?

3D display vendors each ship their own SDK. Apps built against one vendor's SDK don't work on another's hardware. DisplayXR solves this by providing a single, vendor-neutral OpenXR runtime that works across all 3D displays:

  • Future-proof — write once, run on any supported 3D display
  • Standards-based — OpenXR is the Khronos industry standard for XR
  • No interop overhead — native compositors for every graphics API (D3D11, D3D12, Metal, OpenGL, Vulkan)

Architecture

App (any graphics API)
        |
   OpenXR State Tracker
        |
   Core xrt interfaces
        |
   +----+-----+--------+--------+
   |    |     |        |        |
 D3D11 D3D12 Vulkan  Metal   OpenGL   <-- native compositors
   |    |     |        |        |
   Display Processor (vendor-specific: vendor plug-in / sim_display)
        |
   Display

Each graphics API gets its own native compositor — no Vulkan intermediary, no format conversion, no GPU compatibility surprises. The display processor layer is where vendor-specific code lives (interlacing, lenticular weaving, etc.), cleanly separated from the rest of the stack.

Compositor Status

API Windows macOS
D3D11 Shipping —
D3D12 Shipping —
Metal — Shipping
OpenGL Shipping Shipping
Vulkan Shipping Shipping

OpenXR Extensions

DisplayXR extends OpenXR with custom extensions for 3D display support:

Extension Purpose
XR_DXR_display_info Display geometry, eye tracking, rendering mode enumeration and switching
XR_DXR_win32_window_binding App provides its own Win32 HWND for rendering
XR_DXR_cocoa_window_binding App provides a Cocoa NSView for rendering (macOS)
XR_DXR_android_surface_binding App provides an Android Surface for rendering

See the formal extension specifications for full details.

Simulation Driver

You don't need a 3D display to develop against DisplayXR. The sim_display driver provides a simulated tracked 3D display with keyboard-controlled eye position, letting you test the full OpenXR pipeline on any machine:

XR_RUNTIME_JSON=./build/openxr_displayxr-dev.json ./build/test_apps/handle/cube_handle_vk_macos/cube_handle_vk_macos

Use WASD + mouse to move the simulated eye position and observe perspective-correct stereo rendering.

Production Components

The diagram above shows the in-process path — a single app talking directly to the display. In production, DisplayXR also includes a service (for multi-app and sandboxed browsers). A privileged client can act as a workspace controller via the XR_DXR_spatial_workspace extensions, composing multiple apps in a shared 3D space — the DisplayXR Shell is our reference workspace controller. See Production Components for how all the pieces fit together.

Next Steps