aboutsummaryrefslogtreecommitdiff
path: root/src/strategies/low_latency2/swapchain_monitor.hh
diff options
context:
space:
mode:
authorNicolas James <nj3ahxac@gmail.com>2026-04-06 17:03:35 +1000
committerNicolas James <nj3ahxac@gmail.com>2026-04-06 17:03:35 +1000
commit312d8736ae0df55c9f33e4eb5c00e4cd77e1c33f (patch)
tree170816e372c43ddc6522e059f7d6fdc8757330f2 /src/strategies/low_latency2/swapchain_monitor.hh
parenta9a083ea5c649498d2f12e611dbc7c767d152130 (diff)
Add refactored VK_NV_low_latency2 impl, (fixes many threading issues)
Diffstat (limited to 'src/strategies/low_latency2/swapchain_monitor.hh')
-rw-r--r--src/strategies/low_latency2/swapchain_monitor.hh10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/strategies/low_latency2/swapchain_monitor.hh b/src/strategies/low_latency2/swapchain_monitor.hh
index 9031bbb..47c3a75 100644
--- a/src/strategies/low_latency2/swapchain_monitor.hh
+++ b/src/strategies/low_latency2/swapchain_monitor.hh
@@ -27,13 +27,14 @@ class SwapchainMonitor final {
void signal(const DeviceContext& device) const;
};
- std::unique_ptr<std::deque<Submission>> pending_submissions{};
+ // An empty vector here represents our 'no work' state.
+ std::vector<std::deque<std::unique_ptr<Submission>>> pending_submissions{};
// A pairing of semaphore -> submissions.
// If the Submissions completes then signal the bundled semaphore.
struct SemaphoreSubmissions {
WakeupSemaphore wakeup_semaphore{};
- std::unique_ptr<std::deque<Submission>> submissions{};
+ std::vector<std::deque<std::unique_ptr<Submission>>> submissions{};
};
std::optional<SemaphoreSubmissions> semaphore_submission{};
@@ -47,6 +48,8 @@ class SwapchainMonitor final {
std::condition_variable_any cv{};
std::jthread monitor_worker{};
+ std::optional<std::chrono::steady_clock::time_point> last_signal_time;
+
void do_monitor(const std::stop_token stoken);
public:
@@ -64,7 +67,8 @@ class SwapchainMonitor final {
void notify_semaphore(const VkSemaphore& timeline_semaphore,
const std::uint64_t& value);
- void attach_work(std::unique_ptr<std::deque<Submission>> submissions);
+ void attach_work(
+ std::vector<std::deque<std::unique_ptr<Submission>>> submissions);
};
} // namespace low_latency