diff options
| author | Nicolas James <nj3ahxac@gmail.com> | 2026-04-06 17:03:35 +1000 |
|---|---|---|
| committer | Nicolas James <nj3ahxac@gmail.com> | 2026-04-06 17:03:35 +1000 |
| commit | 312d8736ae0df55c9f33e4eb5c00e4cd77e1c33f (patch) | |
| tree | 170816e372c43ddc6522e059f7d6fdc8757330f2 /src/strategies/low_latency2/swapchain_monitor.hh | |
| parent | a9a083ea5c649498d2f12e611dbc7c767d152130 (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.hh | 10 |
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 |
