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; }