diff options
| author | Mark Lobodzinski <mark@lunarg.com> | 2017-02-06 15:31:33 -0700 |
|---|---|---|
| committer | Mark Lobodzinski <mark@lunarg.com> | 2017-02-07 14:02:48 -0700 |
| commit | 882b72053b66cf24c1f9d6af93371daa537f915f (patch) | |
| tree | 460e163254164cbc836509c36f343788958280db /layers/buffer_validation.cpp | |
| parent | 8bdb2b730f8fa028d03f00d86327b59f8be238e0 (diff) | |
| download | usermoji-882b72053b66cf24c1f9d6af93371daa537f915f.tar.xz | |
layers: Update CmdResolveImage validation
Added one VU check, changed a few others from errors to warnings as
they are not explictly prohibited by the spec.
Change-Id: I041f9188325136f541afa5017350c2960432f8f7
Diffstat (limited to 'layers/buffer_validation.cpp')
| -rw-r--r-- | layers/buffer_validation.cpp | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/layers/buffer_validation.cpp b/layers/buffer_validation.cpp index 6aea8a11..2b311348 100644 --- a/layers/buffer_validation.cpp +++ b/layers/buffer_validation.cpp @@ -1237,7 +1237,7 @@ bool PreCallValidateCmdClearAttachments(core_validation::layer_data *device_data } bool PreCallValidateCmdResolveImage(core_validation::layer_data *device_data, GLOBAL_CB_NODE *cb_node, IMAGE_STATE *src_image_state, - IMAGE_STATE *dst_image_state, uint32_t regionCount, const VkImageResolve *pRegions) { + IMAGE_STATE *dst_image_state, uint32_t regionCount, const VkImageResolve *pRegions) { const debug_report_data *report_data = core_validation::GetReportData(device_data); bool skip = false; if (cb_node && src_image_state && dst_image_state) { @@ -1251,25 +1251,23 @@ bool PreCallValidateCmdResolveImage(core_validation::layer_data *device_data, GL for (uint32_t i = 0; i < regionCount; i++) { if (pRegions[i].srcSubresource.layerCount == 0) { char const str[] = "vkCmdResolveImage: number of layers in source subresource is zero"; - // TODO: Verify against Valid Use section of spec. Generally if something yield an undefined result, it's - // invalid/error - skip |= log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, + skip |= log_msg(report_data, VK_DEBUG_REPORT_WARNING_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, reinterpret_cast<uint64_t>(cb_node->commandBuffer), __LINE__, DRAWSTATE_MISMATCHED_IMAGE_ASPECT, "IMAGE", str); } - if (pRegions[i].dstSubresource.layerCount == 0) { char const str[] = "vkCmdResolveImage: number of layers in destination subresource is zero"; - - // TODO: Verify against Valid Use section of spec. Generally if something yield an undefined result, it's - // invalid/error - skip |= log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, + skip |= log_msg(report_data, VK_DEBUG_REPORT_WARNING_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, reinterpret_cast<uint64_t>(cb_node->commandBuffer), __LINE__, DRAWSTATE_MISMATCHED_IMAGE_ASPECT, "IMAGE", str); } - - // TODO: VALIDATION_ERROR_01339 - + if (pRegions[i].srcSubresource.layerCount != pRegions[i].dstSubresource.layerCount) { + 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_01339, "IMAGE", + "vkCmdResolveImage: layerCount in source and destination subresource of pRegions[%d] does not match. %s", i, + validation_error_map[VALIDATION_ERROR_01339]); + } if ((pRegions[i].srcSubresource.aspectMask != VK_IMAGE_ASPECT_COLOR_BIT) || (pRegions[i].dstSubresource.aspectMask != VK_IMAGE_ASPECT_COLOR_BIT)) { char const str[] = @@ -1282,13 +1280,13 @@ bool PreCallValidateCmdResolveImage(core_validation::layer_data *device_data, GL if (src_image_state->createInfo.format != dst_image_state->createInfo.format) { char const str[] = "vkCmdResolveImage called with unmatched source and dest formats."; - skip |= log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, + skip |= log_msg(report_data, VK_DEBUG_REPORT_WARNING_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, reinterpret_cast<uint64_t>(cb_node->commandBuffer), __LINE__, DRAWSTATE_MISMATCHED_IMAGE_FORMAT, "IMAGE", str); } if (src_image_state->createInfo.imageType != dst_image_state->createInfo.imageType) { char const str[] = "vkCmdResolveImage called with unmatched source and dest image types."; - skip |= log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, + skip |= log_msg(report_data, VK_DEBUG_REPORT_WARNING_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, reinterpret_cast<uint64_t>(cb_node->commandBuffer), __LINE__, DRAWSTATE_MISMATCHED_IMAGE_TYPE, "IMAGE", str); } |
