diff options
| author | Nicolas James <Eele1Ephe7uZahRie@tutanota.com> | 2026-03-31 16:15:00 +1100 |
|---|---|---|
| committer | Nicolas James <Eele1Ephe7uZahRie@tutanota.com> | 2026-03-31 16:15:00 +1100 |
| commit | 5e3837cadac73ba5b7d4085cddc48b0e816d826a (patch) | |
| tree | ced4c413506409f17806a5c6ea4864b4026ca924 /src/swapchain_monitor.hh | |
| parent | df2933fd9c0ea2a99e89a6837123dfdf8b549d4a (diff) | |
Fix vram leak in Cyberpunk 2077, reduce duplicated logic + general cleanup
Diffstat (limited to 'src/swapchain_monitor.hh')
| -rw-r--r-- | src/swapchain_monitor.hh | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/swapchain_monitor.hh b/src/swapchain_monitor.hh index b993b83..295ac5b 100644 --- a/src/swapchain_monitor.hh +++ b/src/swapchain_monitor.hh @@ -21,6 +21,9 @@ class DeviceContext; // currently have an option to frame pace, to disable low_latency mode // (become a no-op), and must track in_flight_submissions to function. class SwapchainMonitor { + private: + static constexpr auto MAX_TRACKED_IN_FLIGHT_SUBMISSIONS = 50u; + protected: const DeviceContext& device; @@ -28,7 +31,12 @@ class SwapchainMonitor { std::chrono::milliseconds present_delay = std::chrono::milliseconds{0}; bool was_low_latency_requested = false; - std::deque<QueueContext::submissions_t> in_flight_submissions; + std::deque<QueueContext::submissions_ptr_t> in_flight_submissions; + + protected: + // Small fix to avoid submissions growing limitlessly in size if this + // swapchain is never presented to. + void prune_submissions(); public: SwapchainMonitor(const DeviceContext& device, @@ -45,7 +53,7 @@ class SwapchainMonitor { public: virtual void - notify_present(const QueueContext::submissions_t& submissions) = 0; + notify_present(const QueueContext::submissions_ptr_t& submissions) = 0; }; // Provides asynchronous monitoring of submissions and signalling of some @@ -79,7 +87,7 @@ class ReflexSwapchainMonitor final : public SwapchainMonitor { public: virtual void - notify_present(const QueueContext::submissions_t& submissions) override; + notify_present(const QueueContext::submissions_ptr_t& submissions) override; }; // Much simpler synchronous waiting with no thread requirement. @@ -95,7 +103,7 @@ class AntiLagSwapchainMonitor final : public SwapchainMonitor { public: virtual void - notify_present(const QueueContext::submissions_t& submissions) override; + notify_present(const QueueContext::submissions_ptr_t& submissions) override; }; } // namespace low_latency |
