From d326d3b21d55c58b1f8bd5699394a9d70f85d353 Mon Sep 17 00:00:00 2001 From: Mark Lobodzinski Date: Tue, 7 Feb 2017 13:44:57 -0700 Subject: layers: Correct BlitImage check and add VU ID This check was only getting performed for depth/stencil images. Enabled for all image types and added correct valid usage ID. Change-Id: Ie2a8dcded8a55da73527fb435987eaa538c8d5e1 --- layers/buffer_validation.cpp | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) (limited to 'layers/buffer_validation.cpp') diff --git a/layers/buffer_validation.cpp b/layers/buffer_validation.cpp index 2b311348..2de17dea 100644 --- a/layers/buffer_validation.cpp +++ b/layers/buffer_validation.cpp @@ -1387,6 +1387,13 @@ bool PreCallValidateCmdBlitImage(core_validation::layer_data *device_data, GLOBA "vkCmdBlitImage: layerCount in source and destination subresource of pRegions[%d] does not match. %s", i, validation_error_map[VALIDATION_ERROR_01304]); } + + if (pRegions[i].srcSubresource.aspectMask != pRegions[i].dstSubresource.aspectMask) { + skip |= log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, + reinterpret_cast(cb_node->commandBuffer), __LINE__, VALIDATION_ERROR_01303, "IMAGE", + "vkCmdBlitImage: aspectMask members for pRegion[%d] do not match. %s", i, + validation_error_map[VALIDATION_ERROR_01303]); + } } VkFormat src_format = src_image_state->createInfo.format; @@ -1430,16 +1437,7 @@ bool PreCallValidateCmdBlitImage(core_validation::layer_data *device_data, GLOBA for (uint32_t i = 0; i < regionCount; i++) { VkImageAspectFlags srcAspect = pRegions[i].srcSubresource.aspectMask; - VkImageAspectFlags dstAspect = pRegions[i].dstSubresource.aspectMask; - if (srcAspect != dstAspect) { - std::stringstream ss; - ss << "vkCmdBlitImage: Image aspects of depth/stencil images should match"; - // TODO: Verify against Valid Use section of spec, if this case yields undefined results, then it's an error - skip |= log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, - reinterpret_cast(cb_node->commandBuffer), __LINE__, DRAWSTATE_INVALID_IMAGE_ASPECT, - "IMAGE", "%s", ss.str().c_str()); - } if (vk_format_is_depth_and_stencil(src_format)) { if ((srcAspect != VK_IMAGE_ASPECT_DEPTH_BIT) && (srcAspect != VK_IMAGE_ASPECT_STENCIL_BIT)) { std::stringstream ss; -- cgit v1.2.3