blob: 37c44a548bc80e01252d139bb4a500c4305110f5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
#ifndef STRATEGIES_ANTI_LAG_QUEUE_STRATEGY_HH_
#define STRATEGIES_ANTI_LAG_QUEUE_STRATEGY_HH_
#include "strategies/queue_strategy.hh"
#include <deque>
#include <memory>
#include <mutex>
namespace low_latency {
class QueueContext;
class AntiLagQueueStrategy final : public QueueStrategy {
private:
std::mutex mutex;
std::deque<std::unique_ptr<Submission>> pending_submissions;
public:
AntiLagQueueStrategy(QueueContext& queue);
virtual ~AntiLagQueueStrategy();
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_present(const VkPresentInfoKHR& present) override;
public:
// Wait for all pending submissions to complete. Resets pending submissions
// once done.
void await_complete();
};
} // namespace low_latency
#endif
|