From ffcd3cff874e42ce36db0440e56514d5fdf0fa91 Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Tue, 1 Mar 2016 16:51:02 -0700 Subject: layers: gllavl#77 validate layout during clear Change-Id: I427cd1fcc6ecf115dbaf521387a909f117c13d07 --- layers/image.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'layers') diff --git a/layers/image.cpp b/layers/image.cpp index 5f354502..ecfcc38d 100644 --- a/layers/image.cpp +++ b/layers/image.cpp @@ -664,6 +664,16 @@ VK_LAYER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdClearColorImage( { VkBool32 skipCall = VK_FALSE; layer_data *device_data = get_my_data_ptr(get_dispatch_key(commandBuffer), layer_data_map); + + if (imageLayout != VK_IMAGE_LAYOUT_GENERAL || + imageLayout != VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL) + { + skipCall |= log_msg(device_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, + (uint64_t)commandBuffer, __LINE__, IMAGE_INVALID_LAYOUT, "IMAGE", + "vkCmdClearColorImage parameter, imageLayout, must be VK_IMAGE_LAYOUT_GENERAL or " + "VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL"); + } + // For each range, image aspect must be color only for (uint32_t i = 0; i < rangeCount; i++) { if (pRanges[i].aspectMask != VK_IMAGE_ASPECT_COLOR_BIT) { -- cgit v1.2.3