aboutsummaryrefslogtreecommitdiff
path: root/src/strategies/low_latency2/queue_strategy.hh
diff options
context:
space:
mode:
authorNicolas James <nj3ahxac@gmail.com>2026-04-08 00:56:40 +1000
committerNicolas James <nj3ahxac@gmail.com>2026-04-08 00:56:40 +1000
commiteb9719cc8b9a308654ccd2c3bce8a7047b6e2a1a (patch)
tree5e72b419d3dc900a35921be5e551b17552251769 /src/strategies/low_latency2/queue_strategy.hh
parent69764a869d99e9abd0fbe10c2773d3556d7f35e8 (diff)
Refactor storing submissions into FrameSpan class, reduce AntiLag thread contention
Diffstat (limited to 'src/strategies/low_latency2/queue_strategy.hh')
-rw-r--r--src/strategies/low_latency2/queue_strategy.hh21
1 files changed, 11 insertions, 10 deletions
diff --git a/src/strategies/low_latency2/queue_strategy.hh b/src/strategies/low_latency2/queue_strategy.hh
index a090e1b..6d41027 100644
--- a/src/strategies/low_latency2/queue_strategy.hh
+++ b/src/strategies/low_latency2/queue_strategy.hh
@@ -1,8 +1,8 @@
#ifndef STRATEGIES_LOW_LATENCY2_QUEUE_STRATEGY_HH_
#define STRATEGIES_LOW_LATENCY2_QUEUE_STRATEGY_HH_
+#include "frame_span.hh"
#include "strategies/queue_strategy.hh"
-#include "submission.hh"
#include <atomic>
#include <deque>
@@ -16,26 +16,27 @@ class QueueContext;
class LowLatency2QueueStrategy final : public QueueStrategy {
public:
- static constexpr auto MAX_TRACKED_OBJECTS = 50;
+ static constexpr auto MAX_TRACKED_PRESENTS = 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<std::uint64_t, std::deque<std::unique_ptr<Submission>>>
- present_id_submissions{};
- std::deque<std::uint64_t> present_id_ring{};
- std::atomic<bool> is_out_of_band{}; // atomic so we don't need a lock check
+ std::unordered_map<std::uint64_t, std::unique_ptr<FrameSpan>> frame_spans{};
+ std::deque<std::uint64_t> stale_present_ids{};
+ std::atomic<bool> is_out_of_band{}; // atomic to avoid lock
public:
LowLatency2QueueStrategy(QueueContext& queue);
virtual ~LowLatency2QueueStrategy();
public:
- virtual void notify_submit(const VkSubmitInfo& submit,
- std::unique_ptr<Submission> submission) override;
- virtual void notify_submit(const VkSubmitInfo2& submit,
- std::unique_ptr<Submission> submission) override;
+ virtual void
+ notify_submit(const VkSubmitInfo& submit,
+ std::shared_ptr<TimestampPool::Handle> handle) override;
+ virtual void
+ notify_submit(const VkSubmitInfo2& submit,
+ std::shared_ptr<TimestampPool::Handle> handle) override;
virtual void notify_present(const VkPresentInfoKHR& present) override;
public: