diff options
| author | 2023-04-23 21:37:13 +0200 | |
|---|---|---|
| committer | 2023-04-29 15:31:38 +0200 | |
| commit | 4bc5469f52157cd18e697120df40e40e32365e89 (patch) | |
| tree | 43879297dd91ac1ab824010610e724c37ec3cb95 /src/video_core/renderer_vulkan | |
| parent | Address Feedback & Clang Format (diff) | |
| download | yuzu-4bc5469f52157cd18e697120df40e40e32365e89.tar.gz yuzu-4bc5469f52157cd18e697120df40e40e32365e89.tar.xz yuzu-4bc5469f52157cd18e697120df40e40e32365e89.zip | |
Texture Cache: Release stagging buffers on tick frame
Diffstat (limited to 'src/video_core/renderer_vulkan')
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_texture_cache.cpp | 13 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_texture_cache.h | 5 |
2 files changed, 16 insertions, 2 deletions
diff --git a/src/video_core/renderer_vulkan/vk_texture_cache.cpp b/src/video_core/renderer_vulkan/vk_texture_cache.cpp index da3841bb3..d0a7d8f35 100644 --- a/src/video_core/renderer_vulkan/vk_texture_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_texture_cache.cpp | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | // SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project | 1 | // SPDX-FileCopyrightText: Copyright 2019 yuzu Emulator Project |
| 2 | // SPDX-License-Identifier: GPL-3.0-or-later | 2 | // SPDX-License-Identifier: GPL-3.0-or-later |
| 3 | 3 | ||
| 4 | #include <algorithm> | 4 | #include <algorithm> |
| @@ -1342,6 +1342,17 @@ void Image::UploadMemory(const StagingBufferRef& map, std::span<const BufferImag | |||
| 1342 | UploadMemory(map.buffer, map.offset, copies); | 1342 | UploadMemory(map.buffer, map.offset, copies); |
| 1343 | } | 1343 | } |
| 1344 | 1344 | ||
| 1345 | void Image::DownloadMemory(VkBuffer buffer, VkDeviceSize offset, | ||
| 1346 | std::span<const VideoCommon::BufferImageCopy> copies) { | ||
| 1347 | std::array buffer_handles{ | ||
| 1348 | buffer, | ||
| 1349 | }; | ||
| 1350 | std::array buffer_offsets{ | ||
| 1351 | offset, | ||
| 1352 | }; | ||
| 1353 | DownloadMemory(buffer_handles, buffer_offsets, copies); | ||
| 1354 | } | ||
| 1355 | |||
| 1345 | void Image::DownloadMemory(std::span<VkBuffer> buffers_span, std::span<VkDeviceSize> offsets_span, | 1356 | void Image::DownloadMemory(std::span<VkBuffer> buffers_span, std::span<VkDeviceSize> offsets_span, |
| 1346 | std::span<const VideoCommon::BufferImageCopy> copies) { | 1357 | std::span<const VideoCommon::BufferImageCopy> copies) { |
| 1347 | const bool is_rescaled = True(flags & ImageFlagBits::Rescaled); | 1358 | const bool is_rescaled = True(flags & ImageFlagBits::Rescaled); |
diff --git a/src/video_core/renderer_vulkan/vk_texture_cache.h b/src/video_core/renderer_vulkan/vk_texture_cache.h index bdaf43ba4..c656c5386 100644 --- a/src/video_core/renderer_vulkan/vk_texture_cache.h +++ b/src/video_core/renderer_vulkan/vk_texture_cache.h | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | // SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project | 1 | // SPDX-FileCopyrightText: Copyright 2019 yuzu Emulator Project |
| 2 | // SPDX-License-Identifier: GPL-3.0-or-later | 2 | // SPDX-License-Identifier: GPL-3.0-or-later |
| 3 | 3 | ||
| 4 | #pragma once | 4 | #pragma once |
| @@ -138,6 +138,9 @@ public: | |||
| 138 | void UploadMemory(const StagingBufferRef& map, | 138 | void UploadMemory(const StagingBufferRef& map, |
| 139 | std::span<const VideoCommon::BufferImageCopy> copies); | 139 | std::span<const VideoCommon::BufferImageCopy> copies); |
| 140 | 140 | ||
| 141 | void DownloadMemory(VkBuffer buffer, VkDeviceSize offset, | ||
| 142 | std::span<const VideoCommon::BufferImageCopy> copies); | ||
| 143 | |||
| 141 | void DownloadMemory(std::span<VkBuffer> buffers, std::span<VkDeviceSize> offsets, | 144 | void DownloadMemory(std::span<VkBuffer> buffers, std::span<VkDeviceSize> offsets, |
| 142 | std::span<const VideoCommon::BufferImageCopy> copies); | 145 | std::span<const VideoCommon::BufferImageCopy> copies); |
| 143 | 146 | ||