Extensions
Custom OpenXR extensions that enable tracked spatial display capabilities not covered by the base OpenXR specification.
Why custom extensions?
Standard OpenXR was designed for headsets and controllers. Tracked spatial displays have different requirements: they need to communicate display geometry, support window-hosted compositing, and provide spatial display models that don't map to existing OpenXR concepts.
DisplayXR defines focused extensions to fill these gaps while remaining compatible with the OpenXR architecture and extension model. The goal is practical interoperability, not a competing specification.
Display capability
What the runtime tells apps about the 3D display they're rendering on.
App window binding
How an app hands its native window to the runtime so the compositor can output into it.
XR_EXT_win32_window_bindingShippingWin32 Window Binding
Allows applications to bind an existing Win32 HWND to the DisplayXR session. The runtime composites into the application's own window rather than creating a separate one.
XR_EXT_cocoa_window_bindingShippingCocoa Window Binding
macOS equivalent of the Win32 window binding. Binds an NSView to the session for compositor output into the application's window.
XR_EXT_macos_gl_bindingShippingmacOS GL Binding
macOS-specific OpenGL context binding for the Cocoa window-binding path. Lets GL apps share a CAOpenGLLayer-backed surface with the runtime compositor.
Workspace controller surface
How a swappable workspace controller (the DisplayXR Shell, or any third-party / OEM / vertical equivalent) drives multi-app composition and the launcher on top of the runtime.
XR_EXT_spatial_workspaceShippingSpatial Workspace
Defines how a privileged workspace controller process drives multi-app composition, window pose, hit-test, and capture on the runtime. The contract that lets the DisplayXR Shell — or any OEM, vertical, kiosk, or AI-agent controller — replace the spatial-desktop layer without runtime modifications.
XR_EXT_app_launcherShippingApp Launcher
Companion to spatial_workspace: lets a workspace controller register launcher tiles, query installed apps, and drive launch/lifecycle events. Decouples the launcher UX from the runtime.
Extension philosophy
- ●Minimal scope — each extension does one thing well. No monolithic specs.
- ●OpenXR-compatible — follows the standard extension registration and dispatch model.
- ●Vendor-independent — designed for any tracked spatial display, not tied to a specific hardware vendor.
- ●Explicitly versioned — specs evolve through clear versioning so apps and runtimes can negotiate capabilities.
All extension specifications and headers are in the displayxr-extensions repository.