Browse Source
Merge pull request #12382 from liamwhite/image-limit
renderer_vulkan: allow up to 7 swapchain images
pull/15/merge
Fernando S
2 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with
6 additions and
6 deletions
-
src/video_core/fence_manager.h
-
src/video_core/renderer_vulkan/vk_present_manager.cpp
-
src/video_core/renderer_vulkan/vk_update_descriptor.h
-
src/video_core/texture_cache/texture_cache_base.h
|
|
|
@ -270,7 +270,7 @@ private: |
|
|
|
|
|
|
|
std::jthread fence_thread; |
|
|
|
|
|
|
|
DelayedDestructionRing<TFence, 6> delayed_destruction_ring; |
|
|
|
DelayedDestructionRing<TFence, 8> delayed_destruction_ring; |
|
|
|
}; |
|
|
|
|
|
|
|
} // namespace VideoCommon |
|
|
|
@ -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) { |
|
|
|
|
|
|
|
@ -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; |
|
|
|
|
|
|
|
|
|
|
|
@ -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; |
|
|
|
|