---
status: accepted (feasibility gate passed 2026-06-10 — spikes S1 + S2)
---

# v1 is a standalone direct-mode compositor, not a runtime driver

The Beyond is a stock SteamVR lighthouse HMD, so the obvious v1 was an IMU-only SteamVR pose
driver that reuses Valve's compositor and distortion for free. We chose instead to build Sauna
as a standalone host app acting as its own compositor — read the Tundra IMU directly, fuse 3DOF,
render the virtual screen, apply our own distortion correction, present via direct mode on the
stock EDID — because v1 must be SteamVR-free, must reach low-power Linux targets (Steam Deck,
ARM handhelds) where SteamVR is a poor fit, and the streaming-bridge stretch needs a compositor
we own.

## Considered options

- **SteamVR IMU-only pose driver** — fastest first light, free distortion/compositor/QoL.
  Rejected: defines v1 as a SteamVR accessory and excludes low-power/Linux targets.
- **Render-surface SDK** — rejected: builds a platform before there is a product.
- **Extended-mode (desktop monitor) presentation as primary** — rejected: DWM adds ~1 frame of
  latency and caps at 1920²/eye vs native 2544²; retained as a degraded fallback mode.

## Consequences

- We own distortion correction, sensor fusion, present, and safety UX (recenter, OLED burn-in
  protection).
- Present path is a per-platform backend behind one interface (amended after spike S2):
  **Windows = D3D12 + NVAPI DirectMode** (the NDA HMD NVAPI; `VK_NV_acquire_winrt_display`
  is dead on consumer Windows — specialized-display support is edition-gated, absent on
  Win11 Pro); **Linux = Vulkan + `VK_EXT_acquire_drm_display`** (Steam Deck rung, unproven).
  The render core can still be Vulkan: DM surfaces are shared handles, made for interop.
- Distribution consequence: the Windows backend depends on NDA NVAPI headers/libs — fine in
  private/partner builds, must be resolved (binary backend or redistribution terms) before
  any open-source release.
- Feasibility gate PASSED 2026-06-10: own-process 5088×2544@75 vsync-locked present, zero
  errors (`spikes/s2-vulkan-direct/FINDINGS.md`). Remaining fallback if DM ever regresses:
  extended-mode side-by-side fullscreen (degraded: DWM latency, 1920²/eye).
