diff --git a/src/renderer_vk.cpp b/src/renderer_vk.cpp index 79a7687d5..ff355db6e 100644 --- a/src/renderer_vk.cpp +++ b/src/renderer_vk.cpp @@ -2760,41 +2760,48 @@ VK_IMPORT_DEVICE VK_CHECK(vkDeviceWaitIdle(m_device) ); releaseSwapchainFramebuffer(); releaseSwapchain(); - + uint32_t numPresentModes(10); VkPresentModeKHR presentModes[10]; vkGetPhysicalDeviceSurfacePresentModesKHR(m_physicalDevice, m_surface, &numPresentModes, presentModes); uint32_t presentModeIdx = numPresentModes; - VkPresentModeKHR preferredPresentMode[] = { + static const VkPresentModeKHR preferredPresentMode[] = + { VK_PRESENT_MODE_FIFO_KHR, VK_PRESENT_MODE_FIFO_RELAXED_KHR, VK_PRESENT_MODE_MAILBOX_KHR, VK_PRESENT_MODE_IMMEDIATE_KHR, }; - bool has_vsync[] = { true, true, true, false }; - bool vsync = (flags & BGFX_RESET_VSYNC ? true : false); + static const bool hasVsync[] = { true, true, true, false }; + BX_STATIC_ASSERT(BX_COUNTOF(preferredPresentMode) == BX_COUNTOF(hasVsync) ); + + const bool vsync = !!(flags & BGFX_RESET_VSYNC); for (uint32_t ii = 0; ii < BX_COUNTOF(preferredPresentMode); ++ii) { for (uint32_t jj = 0; jj < numPresentModes; ++jj) { - if ((presentModes[jj] == preferredPresentMode[ii]) && (vsync == has_vsync[ii])) + if (presentModes[jj] == preferredPresentMode[ii] + && vsync == hasVsync[ii]) { presentModeIdx = jj; - BX_TRACE("present mode: %d", (int)preferredPresentMode[ii]); + BX_TRACE("present mode: %d", preferredPresentMode[ii]); break; } } + if (presentModeIdx < numPresentModes) { break; } } + if (presentModeIdx == numPresentModes) { presentModeIdx = 0; } + m_sci.presentMode = presentModes[presentModeIdx]; VkSurfaceCapabilitiesKHR surfaceCapabilities;