- 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>
2.9 KiB
2.9 KiB
Steam Frame port: progress
Iteration 1
Step 1: build fixes, bytecode-only QML (2026-10-07)
Changes:
CMakeLists.txt:Core5Compatremoved (unused, not on the Frame).GuiPrivaterequested 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.libXtstlinked.
overlaycontroller.cpp:d3d11.handcase QRhi::D3D11only under_WIN32.- Logging: 8 active easylogging
LOG(INFO)calls becameqInfo()(overlaycontroller.cpp6,ChaperoneTabController.cpp1,MoveCenterTabController.cpp1). Commented-outLOGlines 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: 7Qt_6_PRIVATE_APIsymbols, allQRhi…(step 3). TheQQmlPrivate::AOTCompiledContextsymbols are gone (bytecode-only QML).libopenvr_api.sois 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 definitionOVRAS_STEAM_FRAME=1. - New
src/utils/platform_capabilities.hevaluates it as the only place. It holdsk_chaperoneCommitSupported,k_defaultVsyncDisabledandk_defaultCustomTickRateMs.
- CMake option
- Tick (R6):
- In "vsync disabled" mode,
m_pumpEventsTimerruns directly atcustomTickRateMs(applyTickInterval(),Qt::PreciseTimer); the 1 ms counting is gone. - Changing the setting restarts the timer.
- Setting defaults in
settings_controller.hcome from the constants: Frametrue/11 ms, otherwise unchangedfalse/20 ms.
- In "vsync disabled" mode,
- R7: with
!k_chaperoneCommitSupported:updateChaperoneResetData()andapplyChaperoneResetData()skipCommitWorkingCopy/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, defaultfalse) 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.