From a4229fe34849edcff033b701de0ab7c0b0363761 Mon Sep 17 00:00:00 2001 From: praydog Date: Fri, 22 Dec 2023 17:33:07 -0800 Subject: [PATCH] OpenXR: Rework "Ignore Virtual Desktop Checks" logic --- src/mods/vr/runtimes/OpenXR.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/mods/vr/runtimes/OpenXR.cpp b/src/mods/vr/runtimes/OpenXR.cpp index 3ed90106..a237c43b 100644 --- a/src/mods/vr/runtimes/OpenXR.cpp +++ b/src/mods/vr/runtimes/OpenXR.cpp @@ -51,7 +51,9 @@ void OpenXR::on_system_properties_acquired(const XrSystemProperties& system_prop spdlog::info("[OpenXR] OpenXR system orientation: {}", system_properties.trackingProperties.orientationTracking); spdlog::info("[OpenXR] OpenXR system position: {}", system_properties.trackingProperties.positionTracking); - if (std::string_view{system_properties.systemName}.find("SteamVR/OpenXR") != std::string_view::npos) try { + const auto should_check_vd = !this->ignore_vd_checks->value(); + + if (should_check_vd && std::string_view{system_properties.systemName}.find("SteamVR/OpenXR") != std::string_view::npos) try { spdlog::info("[OpenXR] Detected SteamVR/OpenXR, checking for Virtual Desktop Streamer..."); // Now double check that the Virtual Desktop streamer executable is running @@ -1637,8 +1639,7 @@ XrResult OpenXR::end_frame(const std::vector& qua // Dummy projection layers for Virtual Desktop. If we don't do this, timewarp does not work correctly on VD. // the reasoning from ggodin (VD dev) is that VD composites all layers using the top layer's pose (apparently) // I am actually not sure why this fixes the issue, but it does. and even makes the SteamVR overlay work completely fine. - const auto should_push_dummy = !this->ignore_vd_checks->value() && - this->push_dummy_projection == true && + const auto should_push_dummy = this->push_dummy_projection == true && !pipelined_stage_views.empty() && this->ever_submitted == true;