aboutsummaryrefslogtreecommitdiff
path: root/src/swapchain_monitor.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/swapchain_monitor.cc')
-rw-r--r--src/swapchain_monitor.cc18
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