From 424eb62cdbbb1ed6d61314441926a54928d08030 Mon Sep 17 00:00:00 2001 From: CamilleLaVey Date: Tue, 28 Jul 2026 16:07:59 -0400 Subject: [PATCH] [TEST] Adjusments on deferred destruction implementation --- src/video_core/buffer_cache/buffer_cache_base.h | 1 + src/video_core/deferred_destruction_queue.h | 9 +++++++-- src/video_core/renderer_vulkan/vk_update_descriptor.cpp | 8 ++++---- src/video_core/renderer_vulkan/vk_update_descriptor.h | 4 ++-- src/video_core/texture_cache/texture_cache.h | 4 ++-- src/video_core/texture_cache/texture_cache_base.h | 4 ++-- 6 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/video_core/buffer_cache/buffer_cache_base.h b/src/video_core/buffer_cache/buffer_cache_base.h index caf9e3df47..3422291441 100644 --- a/src/video_core/buffer_cache/buffer_cache_base.h +++ b/src/video_core/buffer_cache/buffer_cache_base.h @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include diff --git a/src/video_core/deferred_destruction_queue.h b/src/video_core/deferred_destruction_queue.h index adc276f4fe..d5faf1e6aa 100644 --- a/src/video_core/deferred_destruction_queue.h +++ b/src/video_core/deferred_destruction_queue.h @@ -4,9 +4,11 @@ #pragma once #include -#include #include +#include +#include + #include "common/common_types.h" namespace VideoCommon { @@ -45,7 +47,10 @@ private: u64 sync_point; }; - std::deque entries; + using EntryDequeOptions = + boost::container::deque_options>::type; + + boost::container::deque entries; }; } // namespace VideoCommon diff --git a/src/video_core/renderer_vulkan/vk_update_descriptor.cpp b/src/video_core/renderer_vulkan/vk_update_descriptor.cpp index 44920617ff..0bb09938ef 100644 --- a/src/video_core/renderer_vulkan/vk_update_descriptor.cpp +++ b/src/video_core/renderer_vulkan/vk_update_descriptor.cpp @@ -18,10 +18,10 @@ namespace Vulkan { UpdateDescriptorQueue::UpdateDescriptorQueue(const Device& device_, size_t frame_payload_size_) : device{device_}, frame_payload_size{frame_payload_size_}, - payload{std::make_unique(frame_payload_size_ * FRAMES_IN_FLIGHT)} + payload(frame_payload_size_ * FRAMES_IN_FLIGHT) { - payload_start = payload.get(); - payload_cursor = payload.get(); + payload_start = payload.data(); + payload_cursor = payload.data(); } UpdateDescriptorQueue::~UpdateDescriptorQueue() = default; @@ -30,7 +30,7 @@ void UpdateDescriptorQueue::TickFrame() { if (++frame_index >= FRAMES_IN_FLIGHT) { frame_index = 0; } - payload_start = payload.get() + frame_index * frame_payload_size; + payload_start = payload.data() + frame_index * frame_payload_size; payload_cursor = payload_start; } diff --git a/src/video_core/renderer_vulkan/vk_update_descriptor.h b/src/video_core/renderer_vulkan/vk_update_descriptor.h index a1f053e6d6..7a5d19a92e 100644 --- a/src/video_core/renderer_vulkan/vk_update_descriptor.h +++ b/src/video_core/renderer_vulkan/vk_update_descriptor.h @@ -6,8 +6,8 @@ #pragma once -#include #include +#include #include "video_core/vulkan_common/vulkan_wrapper.h" namespace Vulkan { @@ -80,7 +80,7 @@ private: DescriptorUpdateEntry* payload_cursor = nullptr; DescriptorUpdateEntry* payload_start = nullptr; const DescriptorUpdateEntry* upload_start = nullptr; - std::unique_ptr payload; + boost::container::small_vector payload; }; // TODO: should these be separate classes instead? diff --git a/src/video_core/texture_cache/texture_cache.h b/src/video_core/texture_cache/texture_cache.h index c9adb1c3b6..8f2576a636 100644 --- a/src/video_core/texture_cache/texture_cache.h +++ b/src/video_core/texture_cache/texture_cache.h @@ -107,9 +107,9 @@ void TextureCache

::QueueEvictionDownload(Image& image) { pending_eviction_downloads.push_back(PendingEvictionDownload{ .staging = staging, .gpu_memory = gpu_memory, - .gpu_addr = image.gpu_addr, - .info = image.info, .copies = std::move(copies), + .info = image.info, + .gpu_addr = image.gpu_addr, .sync_point = runtime.CurrentSyncPoint(), }); } diff --git a/src/video_core/texture_cache/texture_cache_base.h b/src/video_core/texture_cache/texture_cache_base.h index 9cc35f3675..d079ad1f7b 100644 --- a/src/video_core/texture_cache/texture_cache_base.h +++ b/src/video_core/texture_cache/texture_cache_base.h @@ -513,9 +513,9 @@ private: struct PendingEvictionDownload { AsyncBuffer staging; Tegra::MemoryManager* gpu_memory; - GPUVAddr gpu_addr; - VideoCommon::ImageInfo info; boost::container::small_vector copies; + VideoCommon::ImageInfo info; + GPUVAddr gpu_addr; u64 sync_point; }; std::deque pending_eviction_downloads;