ソースを参照

renderer_vulkan: allow up to 7 swapchain images

Liam 2 年 前
コミット
7fc06260d1

+ 1 - 1
src/video_core/fence_manager.h

@@ -270,7 +270,7 @@ private:
 
     std::jthread fence_thread;
 
-    DelayedDestructionRing<TFence, 6> delayed_destruction_ring;
+    DelayedDestructionRing<TFence, 8> delayed_destruction_ring;
 };
 
 } // namespace VideoCommon

+ 3 - 3
src/video_core/renderer_vulkan/vk_present_manager.cpp

@@ -293,10 +293,10 @@ void PresentManager::RecreateSwapchain(Frame* frame) {
 }
 
 void PresentManager::SetImageCount() {
-    // We cannot have more than 5 images in flight at any given time.
-    // FRAMES_IN_FLIGHT is 7, and the cache TICKS_TO_DESTROY is 6.
+    // We cannot have more than 7 images in flight at any given time.
+    // FRAMES_IN_FLIGHT is 8, and the cache TICKS_TO_DESTROY is 8.
     // Mali drivers will give us 6.
-    image_count = std::min<size_t>(swapchain.GetImageCount(), 5);
+    image_count = std::min<size_t>(swapchain.GetImageCount(), 7);
 }
 
 void PresentManager::CopyToSwapchain(Frame* frame) {

+ 1 - 1
src/video_core/renderer_vulkan/vk_update_descriptor.h

@@ -31,7 +31,7 @@ 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 = 7;
+    static constexpr size_t FRAMES_IN_FLIGHT = 8;
     static constexpr size_t FRAME_PAYLOAD_SIZE = 0x20000;
     static constexpr size_t PAYLOAD_SIZE = FRAME_PAYLOAD_SIZE * FRAMES_IN_FLIGHT;
 

+ 1 - 1
src/video_core/texture_cache/texture_cache_base.h

@@ -474,7 +474,7 @@ private:
     };
     Common::LeastRecentlyUsedCache<LRUItemParams> lru_cache;
 
-    static constexpr size_t TICKS_TO_DESTROY = 6;
+    static constexpr size_t TICKS_TO_DESTROY = 8;
     DelayedDestructionRing<Image, TICKS_TO_DESTROY> sentenced_images;
     DelayedDestructionRing<ImageView, TICKS_TO_DESTROY> sentenced_image_view;
     DelayedDestructionRing<Framebuffer, TICKS_TO_DESTROY> sentenced_framebuffers;