From 312d8736ae0df55c9f33e4eb5c00e4cd77e1c33f Mon Sep 17 00:00:00 2001 From: Nicolas James Date: Mon, 6 Apr 2026 17:03:35 +1000 Subject: Add refactored VK_NV_low_latency2 impl, (fixes many threading issues) --- src/strategies/low_latency2/queue_strategy.hh | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src/strategies/low_latency2/queue_strategy.hh') diff --git a/src/strategies/low_latency2/queue_strategy.hh b/src/strategies/low_latency2/queue_strategy.hh index 223f559..a090e1b 100644 --- a/src/strategies/low_latency2/queue_strategy.hh +++ b/src/strategies/low_latency2/queue_strategy.hh @@ -2,12 +2,31 @@ #define STRATEGIES_LOW_LATENCY2_QUEUE_STRATEGY_HH_ #include "strategies/queue_strategy.hh" +#include "submission.hh" + +#include +#include +#include +#include +#include namespace low_latency { class QueueContext; class LowLatency2QueueStrategy final : public QueueStrategy { + public: + static constexpr auto MAX_TRACKED_OBJECTS = 50; + + // Mapping of present_id's to submissions. Grabbed later by the device + // strategy when we present and actually can associate them to some + // vkSwapchainKHR. + std::mutex mutex{}; + std::unordered_map>> + present_id_submissions{}; + std::deque present_id_ring{}; + std::atomic is_out_of_band{}; // atomic so we don't need a lock check + public: LowLatency2QueueStrategy(QueueContext& queue); virtual ~LowLatency2QueueStrategy(); @@ -18,6 +37,9 @@ class LowLatency2QueueStrategy final : public QueueStrategy { virtual void notify_submit(const VkSubmitInfo2& submit, std::unique_ptr submission) override; virtual void notify_present(const VkPresentInfoKHR& present) override; + + public: + void notify_out_of_band(); }; } // namespace low_latency -- cgit v1.2.3