summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_vulkan/vk_update_descriptor.h
diff options
context:
space:
mode:
authorGPUCode <geoster3d@gmail.com>2023-04-08 20:53:13 +0200
committerGPUCode <geoster3d@gmail.com>2023-05-01 22:13:24 +0200
commit50791cb974e462c97dc133a619ddc2066961b526 (patch)
treebf385acd61178b4f07dd220077c8a3ef528a9203 /src/video_core/renderer_vulkan/vk_update_descriptor.h
parentrenderer_vulkan: Async presentation (diff)
downloadyuzu-50791cb974e462c97dc133a619ddc2066961b526.tar
yuzu-50791cb974e462c97dc133a619ddc2066961b526.tar.gz
yuzu-50791cb974e462c97dc133a619ddc2066961b526.tar.bz2
yuzu-50791cb974e462c97dc133a619ddc2066961b526.tar.lz
yuzu-50791cb974e462c97dc133a619ddc2066961b526.tar.xz
yuzu-50791cb974e462c97dc133a619ddc2066961b526.tar.zst
yuzu-50791cb974e462c97dc133a619ddc2066961b526.zip
Diffstat (limited to '')
-rw-r--r--src/video_core/renderer_vulkan/vk_update_descriptor.h10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/video_core/renderer_vulkan/vk_update_descriptor.h b/src/video_core/renderer_vulkan/vk_update_descriptor.h
index 625bcc809..1c1a7020b 100644
--- a/src/video_core/renderer_vulkan/vk_update_descriptor.h
+++ b/src/video_core/renderer_vulkan/vk_update_descriptor.h
@@ -29,6 +29,12 @@ struct DescriptorUpdateEntry {
};
class UpdateDescriptorQueue final {
+ // 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 = 5;
+ static constexpr size_t FRAME_PAYLOAD_SIZE = 0x10000;
+ static constexpr size_t PAYLOAD_SIZE = FRAME_PAYLOAD_SIZE * FRAMES_IN_FLIGHT;
+
public:
explicit UpdateDescriptorQueue(const Device& device_, Scheduler& scheduler_);
~UpdateDescriptorQueue();
@@ -73,9 +79,11 @@ private:
const Device& device;
Scheduler& scheduler;
+ size_t frame_index{0};
DescriptorUpdateEntry* payload_cursor = nullptr;
+ DescriptorUpdateEntry* payload_start = nullptr;
const DescriptorUpdateEntry* upload_start = nullptr;
- std::array<DescriptorUpdateEntry, 0x10000> payload;
+ std::array<DescriptorUpdateEntry, PAYLOAD_SIZE> payload;
};
} // namespace Vulkan