Use the OpenVR SDK's bin/linuxarm64 library on aarch64
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>
This commit is contained in:
+6
-1
@@ -343,7 +343,12 @@ endif ()
|
||||
if (WIN32)
|
||||
set(OPENVR_LIB_DIR ${CMAKE_SOURCE_DIR}/third-party/openvr/lib/win64)
|
||||
elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64|arm64|ARM64)$")
|
||||
set(OPENVR_LIB_DIR ${CMAKE_SOURCE_DIR}/third-party/openvr/lib/linuxarm64)
|
||||
# bin/, not lib/: the SDK's lib/linuxarm64/libopenvr_api.so looks for the
|
||||
# VR path registry in the fixed path /data/work/openvrpaths.vrpath instead
|
||||
# of ~/.config/openvr, so on the Steam Frame it never finds SteamVR
|
||||
# ("Installation path could not be located"). bin/linuxarm64 (SDK 2.15.6)
|
||||
# uses ~/.config/openvr.
|
||||
set(OPENVR_LIB_DIR ${CMAKE_SOURCE_DIR}/third-party/openvr/bin/linuxarm64)
|
||||
else ()
|
||||
set(OPENVR_LIB_DIR ${CMAKE_SOURCE_DIR}/third-party/openvr/lib/linux64)
|
||||
endif ()
|
||||
|
||||
@@ -189,6 +189,31 @@
|
||||
- **Not tested yet:** the fix itself on the Frame (T1, T11). No local x86 build was at hand
|
||||
for a test without a display.
|
||||
|
||||
### Fix: OpenVR library for aarch64 (2026-10-07)
|
||||
|
||||
- **Problem (second deploy):** with the display fix, `--force-install-manifest` got as far
|
||||
as `VR_Init` and failed there: "Installation path could not be located (110)", and on
|
||||
stderr "Unable to read VR Path Registry from /data/work/openvrpaths.vrpath".
|
||||
`~/.config/openvr/openvrpaths.vrpath` on the Frame is correct (runtime `/opt/steamvr`).
|
||||
- **Cause:** the package shipped `third-party/openvr/lib/linuxarm64/libopenvr_api.so`. It is
|
||||
byte-identical to the OpenVR SDK 2.15.6's `lib/linuxarm64` and looks for the path registry
|
||||
in the fixed path `/data/work/openvrpaths.vrpath`. The SDK's `bin/linuxarm64` library
|
||||
(used by the template, verified on the Frame) and SteamVR's own one in
|
||||
`/opt/steamvr/bin/linuxarm64` don't contain that path. OVRAS's `third-party/openvr` had no
|
||||
`bin/linuxarm64`.
|
||||
- **Fix:**
|
||||
- New file `third-party/openvr/bin/linuxarm64/libopenvr_api.so` from the SDK v2.15.6
|
||||
(`raw.githubusercontent.com/ValveSoftware/openvr/v2.15.6/bin/linuxarm64/…`, SHA-256
|
||||
`cc3671d2…47e9`).
|
||||
- `CMakeLists.txt`: `OPENVR_LIB_DIR` = `bin/linuxarm64` for aarch64 only. x86_64 and
|
||||
Windows are unchanged.
|
||||
- Rejected: setting `VR_PATHREG_OVERRIDE` in the scripts. It wouldn't help when SteamVR
|
||||
autostarts OVRAS.
|
||||
- **Result:** cross build and package succeed. The package contains the new library (no
|
||||
`/data/work`), `Qt_6_PRIVATE_API` without `QVulkan*`: 0, RUNPATH `$ORIGIN`. Package
|
||||
1.6 MB (was 3.0 MB, the old library was 5.4 MB).
|
||||
- **Not tested yet:** on the Frame (T1).
|
||||
|
||||
### Test checklist on the Frame (step 5)
|
||||
|
||||
Deploy: `build_scripts/steamframe/deploy-to-frame.sh <user>@<frame>` (SteamVR running).
|
||||
|
||||
@@ -19,7 +19,7 @@ point for continuing the work on any computer.
|
||||
- Linux x86_64 build.
|
||||
- aarch64 cross build: no private Qt API except `QVulkan*`, Qt 6.8, GLIBC ≤ 2.38.
|
||||
- Render tests with OpenGL and Vulkan; Vulkan with validation layers and no messages.
|
||||
- Release package (3.0 MB).
|
||||
- Release package (1.6 MB).
|
||||
- **Next step:** test checklist T1–T11 on the Frame ([PROGRESS.md](PROGRESS.md)), record
|
||||
the results there, then assessment.
|
||||
- **After that:** iteration 2. R5 hides the features that are native in SteamVR or don't
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user