Files
OpenVR-AdvancedSettings-frame/docs/steamframe/PROGRESS.md
T
Matthias JanetschekandClaude Opus 5.5 423ea57db7 Add a Steam Frame build option; no chaperone commit at start; timer-based tick
- CMake option OVRAS_STEAM_FRAME. It is evaluated only in
  src/utils/platform_capabilities.h, which turns it into named capability
  constants and platform defaults.
- Where the chaperone can't be committed (Steam Frame: it shifts the play
  area), MoveCenterTabController no longer commits the working copy at start-up
  or when applying reset data, and doesn't create the init autosave profile.
  Skips are logged once.
- In "vsync disabled" mode the pump timer now runs directly at the custom tick
  rate instead of firing every 1 ms and counting. The Frame defaults to this
  mode at 11 ms (~90 Hz).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 13:35:46 +02:00

60 lines
2.9 KiB
Markdown

# Steam Frame port: progress
## Iteration 1
### Step 1: build fixes, bytecode-only QML (2026-10-07)
**Changes:**
- **`CMakeLists.txt`:**
- `Core5Compat` removed (unused, not on the Frame).
- `GuiPrivate` requested explicitly. This is temporary, until step 3 replaces QRhi.
- `QT_QMLCACHEGEN_ARGUMENTS --only-bytecode`.
- OpenVR library directory per architecture (`linux64` / `linuxarm64` / `win64`), for
linking and for the copy next to the binary.
- `RPATH $ORIGIN`.
- `libXtst` linked.
- **`overlaycontroller.cpp`:** `d3d11.h` and `case QRhi::D3D11` only under `_WIN32`.
- **Logging:** 8 active easylogging `LOG(INFO)` calls became `qInfo()`
(`overlaycontroller.cpp` 6, `ChaperoneTabController.cpp` 1,
`MoveCenterTabController.cpp` 1). Commented-out `LOG` lines are left unchanged.
- Only changed lines are formatted (`git clang-format`).
**Results (x86_64, Arch, Qt 6.11.1, GCC):**
- The build succeeds, with 1463 compiler warnings, as in `qt6`.
- `objdump -T`: 7 `Qt_6_PRIVATE_API` symbols, all `QRhi…` (step 3). The
`QQmlPrivate::AOTCompiledContext` symbols are gone (bytecode-only QML).
- `libopenvr_api.so` is resolved from the binary's directory (`ldd`).
- Not started: without a running SteamVR the start hangs in OpenVR init (expected; tested
on the Frame in step 5).
### Step 2: platform option, R7, tick (2026-10-07)
**Changes:**
- **Platform option:**
- CMake option `OVRAS_STEAM_FRAME` (default OFF) sets the compile definition
`OVRAS_STEAM_FRAME=1`.
- New `src/utils/platform_capabilities.h` evaluates it as the only place. It holds
`k_chaperoneCommitSupported`, `k_defaultVsyncDisabled` and `k_defaultCustomTickRateMs`.
- **Tick (R6):**
- In "vsync disabled" mode, `m_pumpEventsTimer` runs directly at `customTickRateMs`
(`applyTickInterval()`, `Qt::PreciseTimer`); the 1 ms counting is gone.
- Changing the setting restarts the timer.
- Setting defaults in `settings_controller.h` come from the constants: Frame `true`/11 ms,
otherwise unchanged `false`/20 ms.
- **R7:** with `!k_chaperoneCommitSupported`:
- `updateChaperoneResetData()` and `applyChaperoneResetData()` skip
`CommitWorkingCopy`/`RevertWorkingCopy`. Each logs once per function.
- The init autosave profile is skipped.
**Results:**
- Both variants (default and `-DOVRAS_STEAM_FRAME=ON`) build on x86_64. The definition is
only set in the Frame variant (`compile_commands.json`).
- Not tested at runtime yet (Frame, step 5).
**Notes:**
- Another commit at start-up remains, but only on opt-in. `SetWidget()` applies a chaperone
profile and commits when "auto-apply chaperone" (`autoApplyChaperoneToggle`, default
`false`) is on. That's a chaperone-profile feature, so it belongs to R5 (iteration 2).
- clang-format reflows comment blocks next to new comments. Separate new comments from
existing commented-out code with a blank line, otherwise the diff grows.