diff options
| author | Mark Lobodzinski <mark@lunarg.com> | 2017-02-07 13:44:57 -0700 |
|---|---|---|
| committer | Mark Lobodzinski <mark@lunarg.com> | 2017-02-07 14:02:48 -0700 |
| commit | d326d3b21d55c58b1f8bd5699394a9d70f85d353 (patch) | |
| tree | 62099ccbf39f941819b7bcb3c00f08bbb9d9a8a1 /layers/buffer_validation.cpp | |
| parent | 21a9545f151c15d6f413d98eaf5411f2fd8074b0 (diff) | |
| download | usermoji-d326d3b21d55c58b1f8bd5699394a9d70f85d353.tar.xz | |
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
Diffstat (limited to 'layers/buffer_validation.cpp')
| -rw-r--r-- | layers/buffer_validation.cpp | 16 |
1 files changed, 7 insertions, 9 deletions
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<uint64_t>(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<uint64_t>(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; |
