From a6eb629273ca43dfadc2295a8c18b5b46761028c Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Fri, 9 Dec 2016 10:39:26 +1300 Subject: [PATCH] layers: Track whether a swapchain has been replaced If a swapchain is used as VkSwapchainCreateInfoKHR::oldSwapchain, then it is replaced. This occurs even if the new swapchain creation fails. Signed-off-by: Chris Forbes --- layers/core_validation.cpp | 3 +++ layers/core_validation_types.h | 1 + 2 files changed, 4 insertions(+) diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp index 6992041..7d79e2c 100644 --- a/layers/core_validation.cpp +++ b/layers/core_validation.cpp @@ -11984,6 +11984,9 @@ VKAPI_ATTR VkResult VKAPI_CALL CreateSwapchainKHR(VkDevice device, const VkSwapc } // Spec requires that even if CreateSwapchainKHR fails, oldSwapchain behaves as replaced. + if (old_swapchain_state) { + old_swapchain_state->replaced = true; + } surface_state->old_swapchain = old_swapchain_state; return result; diff --git a/layers/core_validation_types.h b/layers/core_validation_types.h index 838a82c..298848a 100644 --- a/layers/core_validation_types.h +++ b/layers/core_validation_types.h @@ -292,6 +292,7 @@ class SWAPCHAIN_NODE { safe_VkSwapchainCreateInfoKHR createInfo; VkSwapchainKHR swapchain; std::vector images; + bool replaced = false; SWAPCHAIN_NODE(const VkSwapchainCreateInfoKHR *pCreateInfo, VkSwapchainKHR swapchain) : createInfo(pCreateInfo), swapchain(swapchain) {} }; -- 2.7.4