README: status, new Steam Frame facts (Steam's generated app manifest,
OpenVR library, display and font metrics) and open points. PROGRESS:
partial results of T1, T2 and T4, and what is open next.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
On the Steam Frame, the fixed 1200x800 layout lost about its bottom
quarter. Measured with --snapshot: fonts and DPI are as intended, but
the controls ran in the Material style. The qt6 branch changed
mainwidget.qml's "import QtQuick.Controls" into
"import QtQuick.Controls.Material", which fixes Material for all
controls and even overrides QT_QUICK_CONTROLS_STYLE. Material's insets
and padding make the navigation buttons 65 px tall instead of 45 px
(Fusion) or 49 px (Basic, Qt 5's default style renamed); nothing in the
file uses Material.
mainwidget.qml imports QtQuick.Controls again, and main.cpp sets Fusion
explicitly, so the sizes are the same on every platform instead of
depending on Qt 6's per-platform default. With Basic the last navigation
button is still cut off on the Frame; with Fusion everything fits.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
On the Steam Frame, the fixed 1200x800 QML layout overflows: about the
bottom quarter is cut off and the navigation icons overlap their text.
Forcing 96 DPI and switching the Quick Controls style didn't help, so the
cause has to be measured rather than guessed.
- SetWidget() logs the application font (family, pt, px), what 20 pt
(MyText) is in px, the screen's DPI and the device pixel ratio.
- --snapshot <file> writes the rendered overlay (RenderBackend::readback)
as PNG at most once per second while it is visible. A time interval,
because OVRAS only renders when the scene changes. Written to a
temporary file and renamed, so readers never see a partial file.
- run.sh passes arguments after the graphics API to the program.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
On master, easylogging's Debug level was disabled unless OVRAS was built
with debugSymbolsAndLogs (ENABLE_DEBUG_LOGGING). The qt6 branch switched
to qDebug() and lost that: debugLoggingEnabled was left unused, and all
debug output reached the log. On the Steam Frame it filled with
"updateAllPulseData done." about every 11 ms, as the audio tab reads the
microphone's mute state on every tick.
setUpLogging() now disables debug output through a logging filter rule.
QT_LOGGING_RULES="*.debug=true" takes precedence and turns it on again
for troubleshooting without a rebuild.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Steam writes every VR app the user owns into its generated
steamapps.vrmanifest, installed or not. Whoever owns OVRAS on Steam
therefore always has steam.overlay.1009850 registered, as a steam:// URL
without a working directory, and --force-install-manifest failed with
"Could not find working directory of already installed application:
VRApplicationError_PropertyNotSet" (found on the Steam Frame).
Such an entry has no manifest file to remove, so OVRAS now leaves it
alone and adds its own manifest. Whether SteamVR accepts a second
manifest for the key, and which entry it then uses, is not documented:
logApplicationEntry() logs what SteamVR reports for the key after
installing, so a test on the Frame shows it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
On the Steam Frame, VR_Init failed with "Installation path could not be
located": the SDK's lib/linuxarm64/libopenvr_api.so (2.15.6) reads the VR
path registry from the fixed path /data/work/openvrpaths.vrpath instead
of ~/.config/openvr. The SDK's bin/linuxarm64 library of the same version
uses ~/.config/openvr; the vrdashboard template ships it and was verified
on the Frame. It is added as a new file (third-party/openvr had no
bin/linuxarm64, and "bin" is gitignored, hence force-added), and aarch64
builds link against and ship it. x86_64 and Windows are unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The first deploy to the Steam Frame aborted in install.sh: OVRAS creates
its QApplication before it handles --force-install-manifest, and Qt's
default platform plugin (xcb) aborts when there is no display, as over
SSH. Registering and unregistering draw nothing, so the generated
install.sh and uninstall.sh now run them with QT_QPA_PLATFORM=offscreen.
The normal start keeps DISPLAY=:0, as rendering needs a real context.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
When -desktop is given on the command line then the settings menu is shown on
the desktop instead of an vr overlay.
When -nosound is given on the command line then there are no sound
effects.
Added chaperone profiles
Added separate supersampling sliders for applications/compositor
Added asynchronous reprojection on/off switch
Merged in Microphone Control Overlay
Added Push-to-Talk profiles
Updated to OpenVR 1.0.3
Requires at least SteamVR beta 1477423729.
not compatible with OpenGL versions >= 3.0. NVIDIA does not care, but
unfortunately AMD does.
Also tweaked some other qt & opengl settings for more pleasant visuals.