From b27ebad899936d1476403ce3154c699fc65563ec Mon Sep 17 00:00:00 2001 From: Matt Date: Sun, 19 Jul 2026 10:55:36 -0700 Subject: [PATCH] dolphin: support Vulkan swapchains with more than eight images --- Source/Core/DolphinLibretro/Vulkan.cpp | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/Source/Core/DolphinLibretro/Vulkan.cpp b/Source/Core/DolphinLibretro/Vulkan.cpp index e806feef4bf8..bc463c7ceb9a 100644 --- a/Source/Core/DolphinLibretro/Vulkan.cpp +++ b/Source/Core/DolphinLibretro/Vulkan.cpp @@ -77,16 +77,17 @@ static struct } initInfo; static bool DEDICATED_ALLOCATION; -#define VULKAN_MAX_SWAPCHAIN_IMAGES 8 +struct VkSwapchainImage +{ + VkImage handle; + VkDeviceMemory memory; + retro_vulkan_image retro_image; +}; + struct VkSwapchainKHR_T { uint32_t count; - struct - { - VkImage handle; - VkDeviceMemory memory; - retro_vulkan_image retro_image; - } images[VULKAN_MAX_SWAPCHAIN_IMAGES]; + std::vector images; std::mutex mutex; std::condition_variable condVar; int current_index; @@ -270,7 +271,7 @@ vkCreateSwapchainKHR(VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInf chain.count++; swapchain_mask >>= 1; } - assert(chain.count <= VULKAN_MAX_SWAPCHAIN_IMAGES); + chain.images.resize(chain.count); for (uint32_t i = 0; i < chain.count; i++) { @@ -448,7 +449,7 @@ static VKAPI_ATTR void VKAPI_CALL vkDestroySwapchainKHR(VkDevice device, VkSwapc vkFreeMemory(device, chain.images[i].memory, pAllocator); } - memset(&chain.images, 0x00, sizeof(chain.images)); + chain.images.clear(); chain.count = 0; chain.current_index = -1; }