auto cb_node = getCBNode(dev_data, commandBuffer);
auto src_image_state = getImageState(dev_data, srcImage);
auto dst_image_state = getImageState(dev_data, dstImage);
+
if (cb_node && src_image_state && dst_image_state) {
skip |= ValidateMemoryIsBoundToImage(dev_data, src_image_state, "vkCmdResolveImage()", VALIDATION_ERROR_02541);
skip |= ValidateMemoryIsBoundToImage(dev_data, dst_image_state, "vkCmdResolveImage()", VALIDATION_ERROR_02542);
- // Update bindings between images and cmd buffer
- AddCommandBufferBindingImage(dev_data, cb_node, src_image_state);
- AddCommandBufferBindingImage(dev_data, cb_node, dst_image_state);
- std::function<bool()> function = [=]() {
- return ValidateImageMemoryIsValid(dev_data, src_image_state, "vkCmdResolveImage()");
- };
- cb_node->validate_functions.push_back(function);
- function = [=]() {
- SetImageMemoryValid(dev_data, dst_image_state, true);
- return false;
- };
- cb_node->validate_functions.push_back(function);
-
skip |= ValidateCmd(dev_data, cb_node, CMD_RESOLVEIMAGE, "vkCmdResolveImage()");
- UpdateCmdBufferLastCmd(dev_data, cb_node, CMD_RESOLVEIMAGE);
skip |= insideRenderPass(dev_data, cb_node, "vkCmdResolveImage()", VALIDATION_ERROR_01335);
+
+ if (!skip) {
+ // Update bindings between images and cmd buffer
+ AddCommandBufferBindingImage(dev_data, cb_node, src_image_state);
+ AddCommandBufferBindingImage(dev_data, cb_node, dst_image_state);
+ std::function<bool()> function = [=]() {
+ return ValidateImageMemoryIsValid(dev_data, src_image_state, "vkCmdResolveImage()");
+ };
+ cb_node->validate_functions.push_back(function);
+ function = [=]() {
+ SetImageMemoryValid(dev_data, dst_image_state, true);
+ return false;
+ };
+ cb_node->validate_functions.push_back(function);
+ UpdateCmdBufferLastCmd(dev_data, cb_node, CMD_RESOLVEIMAGE);
+ }
} else {
assert(0);
}
lock.unlock();
- if (!skip)
+ if (!skip) {
dev_data->dispatch_table.CmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount,
pRegions);
+ }
}
bool setEventStageMask(VkQueue queue, VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask) {