From 7584d36922669808b7c8a62667380453687b0ad9 Mon Sep 17 00:00:00 2001 From: ameerj <52414509+ameerj@users.noreply.github.com> Date: Sun, 25 Dec 2022 15:47:41 -0500 Subject: [PATCH] texture_cache: Use Common::ScratchBuffer for swizzle buffers --- src/video_core/texture_cache/texture_cache.h | 8 ++++---- src/video_core/texture_cache/texture_cache_base.h | 5 +++-- src/video_core/texture_cache/util.cpp | 6 +++--- src/video_core/texture_cache/util.h | 3 ++- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/video_core/texture_cache/texture_cache.h b/src/video_core/texture_cache/texture_cache.h index 6d7d8226f..27c82cd20 100644 --- a/src/video_core/texture_cache/texture_cache.h +++ b/src/video_core/texture_cache/texture_cache.h @@ -42,8 +42,8 @@ TextureCache
::TextureCache(Runtime& runtime_, VideoCore::RasterizerInterface& // These values were chosen based on typical peak swizzle data sizes seen in some titles static constexpr size_t SWIZZLE_DATA_BUFFER_INITIAL_CAPACITY = 8_MiB; static constexpr size_t UNSWIZZLE_DATA_BUFFER_INITIAL_CAPACITY = 1_MiB; - swizzle_data_buffer.reserve(SWIZZLE_DATA_BUFFER_INITIAL_CAPACITY); - unswizzle_data_buffer.reserve(UNSWIZZLE_DATA_BUFFER_INITIAL_CAPACITY); + swizzle_data_buffer.resize_destructive(SWIZZLE_DATA_BUFFER_INITIAL_CAPACITY); + unswizzle_data_buffer.resize_destructive(UNSWIZZLE_DATA_BUFFER_INITIAL_CAPACITY); // Make sure the first index is reserved for the null resources // This way the null resource becomes a compile time constant @@ -746,11 +746,11 @@ void TextureCache
::UploadImageContents(Image& image, StagingBuffer& staging)
return;
}
const size_t guest_size_bytes = image.guest_size_bytes;
- swizzle_data_buffer.resize(guest_size_bytes);
+ swizzle_data_buffer.resize_destructive(guest_size_bytes);
gpu_memory->ReadBlockUnsafe(gpu_addr, swizzle_data_buffer.data(), guest_size_bytes);
if (True(image.flags & ImageFlagBits::Converted)) {
- unswizzle_data_buffer.resize(image.unswizzled_size_bytes);
+ unswizzle_data_buffer.resize_destructive(image.unswizzled_size_bytes);
auto copies = UnswizzleImage(*gpu_memory, gpu_addr, image.info, swizzle_data_buffer,
unswizzle_data_buffer);
ConvertImage(unswizzle_data_buffer, image.info, mapped_span, copies);
diff --git a/src/video_core/texture_cache/texture_cache_base.h b/src/video_core/texture_cache/texture_cache_base.h
index 67e8acf25..4fd677a80 100644
--- a/src/video_core/texture_cache/texture_cache_base.h
+++ b/src/video_core/texture_cache/texture_cache_base.h
@@ -17,6 +17,7 @@
#include "common/literals.h"
#include "common/lru_cache.h"
#include "common/polyfill_ranges.h"
+#include "common/scratch_buffer.h"
#include "video_core/compatible_formats.h"
#include "video_core/control/channel_state_cache.h"
#include "video_core/delayed_destruction_ring.h"
@@ -417,8 +418,8 @@ private:
std::unordered_map