diff options
| author | Nicolas James <Eele1Ephe7uZahRie@tutanota.com> | 2026-03-30 15:54:10 +1100 |
|---|---|---|
| committer | Nicolas James <Eele1Ephe7uZahRie@tutanota.com> | 2026-03-30 15:54:10 +1100 |
| commit | 644bc4ed5edd4e3ffa88750bdacb147c75df9546 (patch) | |
| tree | 5580f05b202493ccb68d5c67ec37e10d53f3cd1d /src/swapchain_monitor.cc | |
| parent | 681bd5096ee416b50dd7338de30af7b3db385a36 (diff) | |
Fix AL2 via VK_NV_low_latency2's async implementation, fix race in TimestampPool
Diffstat (limited to 'src/swapchain_monitor.cc')
| -rw-r--r-- | src/swapchain_monitor.cc | 18 |
1 files changed, 17 insertions, 1 deletions
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 <vulkan/vulkan_core.h> @@ -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 |
