From aef8f2aa8534a48ba1898b5fd712c82970c30afd Mon Sep 17 00:00:00 2001 From: Thomas Louis Date: Wed, 11 Jan 2017 00:17:08 +0100 Subject: [PATCH] layers: GH1355, Fix bad swapchain image accesses vkAcquireNextImageKHR throws Access Violation Exception. Added a new error enum value and created an error check in vkAcquireNextImageKHR to avoid index out of bounds exception (thrown in core_validation) within the application. Change-Id: Ie7fe2d3830e26c21b09290054cc39bc55e534cbc --- 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 4087178..2db93ba 100644 --- a/layers/core_validation.cpp +++ b/layers/core_validation.cpp @@ -12413,6 +12413,14 @@ VKAPI_ATTR VkResult VKAPI_CALL AcquireNextImageKHR(VkDevice device, VkSwapchainK acquired_images); } } + + if (swapchain_data->images.size() == 0) { + skip_call |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_WARNING_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT, + reinterpret_cast(swapchain), __LINE__, DRAWSTATE_SWAPCHAIN_IMAGES_NOT_FOUND, "DS", + "vkAcquireNextImageKHR: No images found to acquire from. Application probably did not call " + "vkGetSwapchainImagesKHR after swapchain creation."); + } + lock.unlock(); if (skip_call) diff --git a/layers/core_validation_error_enums.h b/layers/core_validation_error_enums.h index c016005..4f9c230 100644 --- a/layers/core_validation_error_enums.h +++ b/layers/core_validation_error_enums.h @@ -152,6 +152,7 @@ enum DRAW_STATE_ERROR { DRAWSTATE_SWAPCHAIN_BAD_PRESENT_MODE, DRAWSTATE_SWAPCHAIN_BAD_FORMAT, DRAWSTATE_SWAPCHAIN_REPLACED, + DRAWSTATE_SWAPCHAIN_IMAGES_NOT_FOUND, }; // Shader Checker ERROR codes -- 2.7.4