[pull] master from alvr-org:master#143
Open
pull[bot] wants to merge 212 commits into
Open
Conversation
* chore(ci): update deprecated actions * chore(ci): Fancy annotations uwu * chore(ci): update ci some more
* chore(xtask): Dont run submodule update * fix(linux): Fix compilitation error without jack installed
* docs(linux): fix for no steamvr dashboard on hybrid graphics * docs(linux) specify dashboard fix is for nvidia * docs(linux): note to first close the steam client before opening it with render offload
* refactor(client_openxr): ♻️ Refactor around reference spaces * Fix clippy
* Full range HDR works? * Fix full range for non-HDR * Cleanup * Adjust this note * Fix CI * Fix server * Return fractions
* fix(server_core): 🐛 Fix controllers disabling with lag * clippy
… velocities in lobby (#2608) * fix(client): 🐛 Fix controller angular velocity for some devices; show velocities in lobby * Draw velocities only in debug builds * Add push constants consts and bound checks
* Set CPU performance level * CPU and GPU perf levels * Class migration and enable the required functions for performance control * Remove old performance settings code * Add log * Fix extension activation * Remove dedicated class for performance level settings * Remove comments * Move power saving setting location and remove unused imports * Alphabetically order requested extensions. * Add performance level setting * Update text and default config * Add realtime power mode setting and add boost level * OpenXR Client performance level * Formatting * Remove commented code * Performance level refactoring * Remove powersavings performance level for lobby * More accurate performance level help strings and hide Boost level. * Combine duplicate strings. * Update help string for performance level config
* Add Pico 4 emulation mode * Update props to match controllers --------- Co-authored-by: Deandre <gitlab.deandre@phial.xyz>
* Rename some vars * Rename some vars
It is currently not possible to download OpenXR loaders, for the lynx headset because of errors on their developer portal.
* feat: ci update actions versions + fix prepare release * feat: adds build-linux + build-windows for rust ci * feat: incorporated changes from pr * added libx264-dev back in * fix: pin prepare-release linux build to ubuntu-24.04
Previously the full executable path was counted as well, but for Linux distros such as NixOS, this causes issues as Steam runs inside bubblewrap, which means the openvr server does as well, which does not has access to the full exe path.
* refactor(client_openxr): ⬆️ Update openxrs to latest release * feat(client_openxr): ✨ Switch to registered BD facial tracking extension
* chore: Fix merge groups not running on rust workflow * chore: Move artifact builds to separate file * chore(ci): Remove check-linux-old * chore (ci): pin linux checks to ubunut-24 * chore(ci): Run msrv checks in PR only, not queue
* windows ffmpeg -> 8.1 * linux ffmpeg -> 8.1 ports patches from 6.0 to 8.1 downloads latest vulkan header for compiling ffmpeg updated prepare-release linux builder to ubuntu 24.04 fixed wrong vaapi arguments being used, which cased popup errors * add vulkan headers to server_openvr build process
…oss-compilation from macOS (#3309) * Add Docker-based Linux build setup for cross-compiling from macOS Adds docker/Dockerfile.linux-build (Ubuntu 24.04, matching CI deps) and docker/build-linux.sh to build ALVR for Linux from macOS without modifying source files. Uses a named Docker volume for the Cargo target dir to avoid conflicts with the macOS target/ directory. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * feat(docker): Add Windows cross-build and fix Linux x86_64 forcing - Add Dockerfile.windows-build (Clang 19 + cargo-xwin) and build-windows.sh for cross-compiling alvr_server_openvr/dashboard/launcher for x86_64-pc-windows-msvc from macOS via Docker - Cross-compile libvpl from source in the container using clang-cl + xwin MSVC SDK with static CRT (/MT) to match ALVR's build config - Switch build-linux.sh from DOCKER_BUILDKIT=0 to docker buildx --platform linux/amd64 so the image is x86_64 on Apple Silicon hosts - Rewrite server_openvr/build.rs to use CARGO_CFG_TARGET_OS instead of cfg!(target_os=...) so Linux/Windows paths resolve correctly when cross-compiling; keep #[cfg(target_os = "linux")] only on pkg_config call sites to satisfy the Linux-only build-dependency declaration Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * feat(docker): Add cargo check subcommand to Linux and Windows build scripts Adds `./docker/build-linux.sh check` and `./docker/build-windows.sh check` that run cargo check / cargo xwin check with RUSTFLAGS='-D warnings' to catch Rust warnings before CI does. Also restores the missing #[cfg(all(target_os = "linux", feature = "gpl"))] guard on get_linux_x264_path to fix dead-code error caught by the Linux check. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(docker): Force cargo clean before check to prevent stale build script cache Without this, cargo reuses a cached compiled build.rs when its content matches a previous run, skipping recompilation and silently missing warnings even with RUSTFLAGS='-D warnings'. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* refactor(settings): Move to global, extract load/state from bindings.h - Replace singleton pattern with global `g_settings` (Settings.h/Settings.cpp) - Move `Load()`, `IsLoaded()`, `m_loaded` out of Settings class into free functions and `g_settingsLoaded` global in Settings.h/Settings.cpp - Convert Settings from class to struct in bindings.h (pure data container) - Rename `Settings::Instance()` → free function `Settings_instance()` - Revert consumer includes back to Settings.h (was bindings.h) - Replace `Instance().Load()` call sites with `Load()` Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * feat(settings): Construct Settings in Rust and pass to CppInit/InitializeStreaming - Add ServerNegotiatedStreamingConfig carrying codec/resolution/encoder params from the client handshake; embed it in ClientConnected event - Add make_settings() in server_openvr that builds the C++ Settings struct from alvr_server_core::settings() plus optional negotiated config (falls back to openvr_config for resolution/refresh rate) - CppInit and InitializeStreaming now take Settings by value; Rust side constructs and passes it, removing Settings_Load() from the C++ path - Add alvr_get_negotiated_config() and alvr_get_openvr_config_json() to the C API for consumers that need the negotiated or persisted config - Rename NegotiatedStreamingConfig/StreamConfig to ClientNegotiatedStreamingConfig/ClientStreamConfig to distinguish from the new server-side type - Add Copy to plain encoder enum types in session settings Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * feat(settings): Implement restart_settings_hash, simplify OpenvrConfig and Settings_Load - Add compute_restart_settings_hash() hashing all steamvr-restart settings and client-negotiated fields using DefaultHasher; replaces struct equality comparison for detecting when SteamVR restart is needed - Reduce OpenvrConfig to 5 client-negotiated fields only (resolution + fps); settings-derived fields read directly from settings at hash/use time - Remove Settings_Load() from C++ entirely; CppInit now uses the Settings struct passed from Rust directly, eliminating the redundant disk read - Remove contruct_openvr_config(); inlined at the single meaningful call site Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * refactor(settings): Make g_settings private, Settings_Instance returns const ptr Settings_Instance() is now a non-inline function returning const Settings*, preventing other translation units from mutating g_settings directly. Declaration moved to bindings.h; Settings.h and Settings.cpp deleted. All call sites updated from . to -> syntax. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * refactor(openvr): Rename OpenvrConfig to SteamvrHmdInitConfig Clarifies that the struct only stores the HMD init parameters required by SteamVR before InitializeStreaming() is called. Updates all references including the JSON key read by the vulkan layer and vrcompositor wrapper. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(settings): Fix Settings_Instance() call sites for const pointer return type Update all call sites to use -> instead of ., change local variable bindings from const auto& to const auto*, and replace alvr_server/Settings.h includes with alvr_server/bindings.h now that Settings.h no longer exports g_settings. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(linux): Fix missing includes in Linux C++ platform files CEncoder.h was missing <string> for std::string; EncodePipelineSW.cpp was missing the ALVR-common/packet_types.h include that defines ALVR_CABAC, ALVR_H264_PROFILE_*, and ALVR_CODEC_H264 — already present in EncodePipelineNvEnc.cpp and EncodePipelineVAAPI.cpp. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix(server_openvr): correct boolean fields typed as int in Settings m_controllerIsTracker, m_enableBodyTrackingFakeVive, and m_bodyTrackingHasLegs were declared as int but initialized with false and used as booleans throughout. Changed to bool for type correctness. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * refactor(server_openvr): normalize Settings field naming to m_camelCase m_TrackingRefOnly had a capital letter after m_, inconsistent with every other field. m_force_sw_encoding used underscore_case, the only field to do so. Renamed both to follow the established m_camelCase convention: m_TrackingRefOnly → m_trackingRefOnly m_force_sw_encoding → m_forceSwEncoding Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * refactor(server_openvr): add m_ prefix to Hmd::view_params view_params was the only private member of Hmd without the m_ prefix. Renamed to m_viewParams for consistency with all other private fields. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * chore(server_openvr): remove stale commented-out generic_trackers.clear() Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * chore(server_openvr): fix typo bindigs → bindings Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…leanups (#3314) * fix(server_core): alvr_get_time_ns always returned ~0 Instant::now().elapsed() measures duration since an instant just created, so the result was always nanoseconds away from zero. Use a static start instant so the function returns a monotonically increasing nanosecond counter from first call, as intended. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * chore(server_core): fix typos in identifiers and doc comments LASTEST_TAG_TIMESTAMPS → LATEST_TAG_TIMESTAMPS "Retr un true" → "Return true" "restart settings chache" → "restart settings cache" Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * refactor(server_openvr): rename event_loop to spawn_event_loop The function returns immediately after spawning a thread; the event loop runs inside that thread. The old name implied a blocking call. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * refactor(server_core): simplify get_dynamic_encoder_params with .map() Replace explicit if/else Some/None arms with Option::map so the return type is expressed once and the happy path stays flat. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…tion cfg (#3313) get_linux_x264_path() is defined with #[cfg(all(target_os = "linux", feature = "gpl"))] but was called from blocks guarded only by #[cfg(feature = "gpl")], causing a compile error on Windows hosts when the gpl feature is enabled. Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
The check variant was skipping setup_libvpl, causing vpl/mfx.h not found errors. Add the same $(setup_libvpl) call used by the full build; the skip-if-built guard means repeated check runs pay no extra cost. Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
#3315) Track swapchain indices internally in `m_swapchainIndices` (keyed by `ProcessResource*` found via `m_handleMap`) so that `pIndices` being null no longer causes a crash. The index is initialized on `CreateSwapTextureSet`, cleaned up in both `Destroy*` methods, and written to `*pIndices` only when non-null. Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat(server_openvr): upgrade openvr SDK from v1.16.8 to v2.15.6 Update submodule and adapt to breaking API changes: - PostPresent now takes a Throttling_t* parameter (IVRDriverDirectModeComponent_009) - ComputeInverseDistortion is a new pure virtual in IVRDisplayComponent_003 - VREvent_ChaperoneRoomSetupFinished renamed to VREvent_ChaperoneRoomSetupCommitted Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(server_openvr): track openvr headers in cargo rerun-if-changed Without this, cargo's fingerprint didn't detect openvr header changes (e.g. submodule upgrades), so cached C++ objects were reused and compile errors were silently missed in incremental builds. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
See Commits and Changes for more details.
Created by
pull[bot] (v2.0.0-alpha.1)
Can you help keep this open source service alive? 💖 Please sponsor : )