diff --git a/neo/sys/DeviceManager.h b/neo/sys/DeviceManager.h index 0cc238cd..7cfd8e34 100644 --- a/neo/sys/DeviceManager.h +++ b/neo/sys/DeviceManager.h @@ -54,7 +54,7 @@ struct DeviceCreationParameters uint32_t backBufferHeight = 720; uint32_t backBufferSampleCount = 1; // optional HDR Framebuffer MSAA uint32_t refreshRate = 0; - uint32_t swapChainBufferCount = 3; // SRS - hardcode to 3 for Vsync modes and linux surfaceCaps.minImageCount = 3 + uint32_t swapChainBufferCount = NUM_FRAME_DATA; // SRS - default matches GPU frames, can be overridden by renderer nvrhi::Format swapChainFormat = nvrhi::Format::RGBA8_UNORM; // RB: don't do the sRGB gamma ramp with the swapchain uint32_t swapChainSampleCount = 1; uint32_t swapChainSampleQuality = 0; diff --git a/neo/sys/DeviceManager_VK.cpp b/neo/sys/DeviceManager_VK.cpp index 5d084155..a3ea0779 100644 --- a/neo/sys/DeviceManager_VK.cpp +++ b/neo/sys/DeviceManager_VK.cpp @@ -559,13 +559,9 @@ bool DeviceManager_VK::pickPhysicalDevice() auto surfaceFmts = dev.getSurfaceFormatsKHR( m_WindowSurface ); auto surfacePModes = dev.getSurfacePresentModesKHR( m_WindowSurface ); - if( surfaceCaps.minImageCount > m_DeviceParams.swapChainBufferCount || - ( surfaceCaps.maxImageCount < m_DeviceParams.swapChainBufferCount && surfaceCaps.maxImageCount > 0 ) ) - { - errorStream << std::endl << " - cannot support the requested swap chain image count:"; - errorStream << " requested " << m_DeviceParams.swapChainBufferCount << ", available " << surfaceCaps.minImageCount << " - " << surfaceCaps.maxImageCount; - deviceIsGood = false; - } + // SRS/Ricardo Garcia rg3 - clamp swapChainBufferCount to the min/max capabilities of the surface + m_DeviceParams.swapChainBufferCount = Max( surfaceCaps.minImageCount, m_DeviceParams.swapChainBufferCount ); + m_DeviceParams.swapChainBufferCount = surfaceCaps.maxImageCount > 0 ? Min( m_DeviceParams.swapChainBufferCount, surfaceCaps.maxImageCount ) : m_DeviceParams.swapChainBufferCount; if( surfaceCaps.minImageExtent.width > requestedExtent.width || surfaceCaps.minImageExtent.height > requestedExtent.height ||