From 8543b6b9c0412fd0a826f9b25bb68e0d420c3193 Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Fri, 9 Dec 2016 11:00:21 +1300 Subject: [PATCH] layers: Complain in AcquireNextImageKHR if the swapchain is replaced V2: Tweak error language for Ian Signed-off-by: Chris Forbes --- layers/core_validation.cpp | 8 ++++++++ layers/core_validation_error_enums.h | 1 + 2 files changed, 9 insertions(+) diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp index 7d79e2c..9a420b7 100644 --- a/layers/core_validation.cpp +++ b/layers/core_validation.cpp @@ -12244,6 +12244,14 @@ VKAPI_ATTR VkResult VKAPI_CALL AcquireNextImageKHR(VkDevice device, VkSwapchainK } auto swapchain_data = getSwapchainNode(dev_data, swapchain); + + if (swapchain_data->replaced) { + skip_call |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT, + reinterpret_cast(swapchain), __LINE__, DRAWSTATE_SWAPCHAIN_REPLACED, "DS", + "vkAcquireNextImageKHR: This swapchain has been replaced. The application can still " + "present any images it has acquired, but cannot acquire any more."); + } + auto physical_device_state = getPhysicalDeviceState(dev_data->instance_data, dev_data->physical_device); if (physical_device_state->vkGetPhysicalDeviceSurfaceCapabilitiesKHRState != UNCALLED) { uint64_t acquired_images = std::count_if(swapchain_data->images.begin(), swapchain_data->images.end(), diff --git a/layers/core_validation_error_enums.h b/layers/core_validation_error_enums.h index 145e7e8..c016005 100644 --- a/layers/core_validation_error_enums.h +++ b/layers/core_validation_error_enums.h @@ -151,6 +151,7 @@ enum DRAW_STATE_ERROR { DRAWSTATE_SWAPCHAIN_TOO_MANY_IMAGES, DRAWSTATE_SWAPCHAIN_BAD_PRESENT_MODE, DRAWSTATE_SWAPCHAIN_BAD_FORMAT, + DRAWSTATE_SWAPCHAIN_REPLACED, }; // Shader Checker ERROR codes -- 2.7.4