diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_master_semaphore.h | 5 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_staging_buffer_pool.cpp | 3 |
2 files changed, 7 insertions, 1 deletions
diff --git a/src/video_core/renderer_vulkan/vk_master_semaphore.h b/src/video_core/renderer_vulkan/vk_master_semaphore.h index f336f1862..33216d24a 100644 --- a/src/video_core/renderer_vulkan/vk_master_semaphore.h +++ b/src/video_core/renderer_vulkan/vk_master_semaphore.h | |||
| @@ -24,6 +24,11 @@ public: | |||
| 24 | return current_tick; | 24 | return current_tick; |
| 25 | } | 25 | } |
| 26 | 26 | ||
| 27 | /// Returns the last known GPU tick. | ||
| 28 | [[nodiscard]] u64 KnownGpuTick() const noexcept { | ||
| 29 | return gpu_tick; | ||
| 30 | } | ||
| 31 | |||
| 27 | /// Returns the timeline semaphore handle. | 32 | /// Returns the timeline semaphore handle. |
| 28 | [[nodiscard]] VkSemaphore Handle() const noexcept { | 33 | [[nodiscard]] VkSemaphore Handle() const noexcept { |
| 29 | return *semaphore; | 34 | return *semaphore; |
diff --git a/src/video_core/renderer_vulkan/vk_staging_buffer_pool.cpp b/src/video_core/renderer_vulkan/vk_staging_buffer_pool.cpp index 9b5786fcb..7a1232497 100644 --- a/src/video_core/renderer_vulkan/vk_staging_buffer_pool.cpp +++ b/src/video_core/renderer_vulkan/vk_staging_buffer_pool.cpp | |||
| @@ -175,8 +175,9 @@ StagingBufferRef StagingBufferPool::GetStreamBuffer(size_t size) { | |||
| 175 | } | 175 | } |
| 176 | 176 | ||
| 177 | bool StagingBufferPool::AreRegionsActive(size_t region_begin, size_t region_end) const { | 177 | bool StagingBufferPool::AreRegionsActive(size_t region_begin, size_t region_end) const { |
| 178 | const u64 gpu_tick = scheduler.GetMasterSemaphore().KnownGpuTick(); | ||
| 178 | return std::any_of(sync_ticks.begin() + region_begin, sync_ticks.begin() + region_end, | 179 | return std::any_of(sync_ticks.begin() + region_begin, sync_ticks.begin() + region_end, |
| 179 | [this](u64 sync_tick) { return !scheduler.IsFree(sync_tick); }); | 180 | [gpu_tick](u64 sync_tick) { return gpu_tick < sync_tick; }); |
| 180 | }; | 181 | }; |
| 181 | 182 | ||
| 182 | StagingBufferRef StagingBufferPool::GetStagingBuffer(size_t size, MemoryUsage usage) { | 183 | StagingBufferRef StagingBufferPool::GetStagingBuffer(size_t size, MemoryUsage usage) { |