diff options
| author | 2021-10-23 00:25:19 +0200 | |
|---|---|---|
| committer | 2021-11-16 22:11:32 +0100 | |
| commit | c5dbd93adb0566f0b2b09657b4340cc3da59d703 (patch) | |
| tree | c3298f72485dc8ddc77c1c8e322f21a1c8247471 /src/video_core/buffer_cache | |
| parent | HostShader: Fix gaussian and add attribution. (diff) | |
| download | yuzu-c5dbd93adb0566f0b2b09657b4340cc3da59d703.tar.gz yuzu-c5dbd93adb0566f0b2b09657b4340cc3da59d703.tar.xz yuzu-c5dbd93adb0566f0b2b09657b4340cc3da59d703.zip | |
VulkanBufferCache: Avoid adding barriers between multiple copies.
Diffstat (limited to 'src/video_core/buffer_cache')
| -rw-r--r-- | src/video_core/buffer_cache/buffer_cache.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/video_core/buffer_cache/buffer_cache.h b/src/video_core/buffer_cache/buffer_cache.h index d350c9b36..43bed63ac 100644 --- a/src/video_core/buffer_cache/buffer_cache.h +++ b/src/video_core/buffer_cache/buffer_cache.h | |||
| @@ -853,12 +853,14 @@ void BufferCache<P>::CommitAsyncFlushesHigh() { | |||
| 853 | } | 853 | } |
| 854 | if constexpr (USE_MEMORY_MAPS) { | 854 | if constexpr (USE_MEMORY_MAPS) { |
| 855 | auto download_staging = runtime.DownloadStagingBuffer(total_size_bytes); | 855 | auto download_staging = runtime.DownloadStagingBuffer(total_size_bytes); |
| 856 | runtime.PreCopyBarrier(); | ||
| 856 | for (auto& [copy, buffer_id] : downloads) { | 857 | for (auto& [copy, buffer_id] : downloads) { |
| 857 | // Have in mind the staging buffer offset for the copy | 858 | // Have in mind the staging buffer offset for the copy |
| 858 | copy.dst_offset += download_staging.offset; | 859 | copy.dst_offset += download_staging.offset; |
| 859 | const std::array copies{copy}; | 860 | const std::array copies{copy}; |
| 860 | runtime.CopyBuffer(download_staging.buffer, slot_buffers[buffer_id], copies); | 861 | runtime.CopyBuffer(download_staging.buffer, slot_buffers[buffer_id], copies, false); |
| 861 | } | 862 | } |
| 863 | runtime.PostCopyBarrier(); | ||
| 862 | runtime.Finish(); | 864 | runtime.Finish(); |
| 863 | for (const auto& [copy, buffer_id] : downloads) { | 865 | for (const auto& [copy, buffer_id] : downloads) { |
| 864 | const Buffer& buffer = slot_buffers[buffer_id]; | 866 | const Buffer& buffer = slot_buffers[buffer_id]; |