From 644bc4ed5edd4e3ffa88750bdacb147c75df9546 Mon Sep 17 00:00:00 2001 From: Nicolas James Date: Mon, 30 Mar 2026 15:54:10 +1100 Subject: Fix AL2 via VK_NV_low_latency2's async implementation, fix race in TimestampPool --- src/swapchain_monitor.cc | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'src/swapchain_monitor.cc') diff --git a/src/swapchain_monitor.cc b/src/swapchain_monitor.cc index 09fa8ba..adeb315 100644 --- a/src/swapchain_monitor.cc +++ b/src/swapchain_monitor.cc @@ -1,5 +1,6 @@ #include "swapchain_monitor.hh" #include "device_context.hh" +#include "helper.hh" #include @@ -23,7 +24,7 @@ void SwapchainMonitor::WakeupSemaphore::signal( VkSemaphoreSignalInfo{.sType = VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO, .semaphore = this->timeline_semaphore, .value = this->value}; - THROW_NON_VKSUCCESS(device.vtable.SignalSemaphore(device.device, &ssi)); + THROW_NOT_VKSUCCESS(device.vtable.SignalSemaphore(device.device, &ssi)); } void SwapchainMonitor::do_swapchain_monitor(const std::stop_token stoken) { @@ -109,4 +110,19 @@ void SwapchainMonitor::notify_present( this->cv.notify_one(); } +void SwapchainMonitor::wait_until() { + // No reason to lock when using VK_AMD_anti_lag. + if (this->in_flight_submissions.empty()) { + return; + } + + const auto last_submissions = this->in_flight_submissions.back(); + this->in_flight_submissions.clear(); + if (last_submissions->empty()) { + return; + } + + last_submissions->back()->tail_handle->await_time(); +} + } // namespace low_latency \ No newline at end of file -- cgit v1.2.3