From c1849ddc8e0adc2322305c67589735b59c043c4e Mon Sep 17 00:00:00 2001 From: lizzie Date: Tue, 23 Jun 2026 05:49:08 +0000 Subject: [PATCH] Revert "fixup descriptor" This reverts commit 5c790d94b01a4d92563a9923e40e86ceb85642eb. --- .../renderer_vulkan/vk_update_descriptor.cpp | 11 ++++++++--- src/video_core/renderer_vulkan/vk_update_descriptor.h | 5 +---- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/video_core/renderer_vulkan/vk_update_descriptor.cpp b/src/video_core/renderer_vulkan/vk_update_descriptor.cpp index d06434ebe3..7de4bfd938 100644 --- a/src/video_core/renderer_vulkan/vk_update_descriptor.cpp +++ b/src/video_core/renderer_vulkan/vk_update_descriptor.cpp @@ -18,7 +18,8 @@ namespace Vulkan { UpdateDescriptorQueue::UpdateDescriptorQueue(const Device& device_) : device{device_} { - payload_start = payload_cursor = payload.data(); + payload_start = payload.data(); + payload_cursor = payload.data(); } UpdateDescriptorQueue::~UpdateDescriptorQueue() = default; @@ -32,8 +33,12 @@ void UpdateDescriptorQueue::TickFrame() { } void UpdateDescriptorQueue::Acquire(Scheduler& scheduler) { - if (std::distance(payload_start, payload_cursor) + MIN_ENTRIES > ptrdiff_t(FRAME_PAYLOAD_SIZE)) { - LOG_WARNING(Render_Vulkan, "Payload overflow {}, waiting for worker thread", std::distance(payload_start, payload_cursor)); + // Minimum number of entries required. + // This is the maximum number of entries a single draw call might use. + static constexpr size_t MIN_ENTRIES = 0x400; + + if (std::distance(payload_start, payload_cursor) + MIN_ENTRIES >= FRAME_PAYLOAD_SIZE) { + LOG_WARNING(Render_Vulkan, "Payload overflow, waiting for worker thread"); scheduler.WaitWorker(); 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 d1cb331e47..6e9f5d2829 100644 --- a/src/video_core/renderer_vulkan/vk_update_descriptor.h +++ b/src/video_core/renderer_vulkan/vk_update_descriptor.h @@ -27,13 +27,10 @@ union DescriptorUpdateEntry { }; class UpdateDescriptorQueue final { - // Minimum number of entries required. This is the maximum number of entries a single draw call might use. - static constexpr size_t MIN_ENTRIES = 0x400; // This should be plenty for the vast majority of cases. Most desktop platforms only // provide up to 3 swapchain images. static constexpr size_t FRAMES_IN_FLIGHT = 8; - // Mario Jamboree on minigames uses up to 0x21xxx entries at a time - static constexpr size_t FRAME_PAYLOAD_SIZE = 0x24000; + static constexpr size_t FRAME_PAYLOAD_SIZE = 0x20000; static constexpr size_t PAYLOAD_SIZE = FRAME_PAYLOAD_SIZE * FRAMES_IN_FLIGHT; public: