From 8c6b3e2ca5c408def872dbd8bbdb80f76589812c Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Wed, 7 Sep 2016 11:43:52 +1200 Subject: layers: Make CmdNextSubpass more careful about side effects on failure Signed-off-by: Chris Forbes --- layers/core_validation.cpp | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'layers/core_validation.cpp') diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp index 12a8ee7e..df2c6c92 100644 --- a/layers/core_validation.cpp +++ b/layers/core_validation.cpp @@ -10069,14 +10069,21 @@ VKAPI_ATTR void VKAPI_CALL CmdNextSubpass(VkCommandBuffer commandBuffer, VkSubpa if (pCB) { skip_call |= validatePrimaryCommandBuffer(dev_data, pCB, "vkCmdNextSubpass"); skip_call |= addCmd(dev_data, pCB, CMD_NEXTSUBPASS, "vkCmdNextSubpass()"); - pCB->activeSubpass++; - pCB->activeSubpassContents = contents; - TransitionSubpassLayouts(dev_data, pCB, &pCB->activeRenderPassBeginInfo, pCB->activeSubpass); skip_call |= outsideRenderPass(dev_data, pCB, "vkCmdNextSubpass"); } lock.unlock(); - if (!skip_call) - dev_data->device_dispatch_table->CmdNextSubpass(commandBuffer, contents); + + if (skip_call) + return; + + dev_data->device_dispatch_table->CmdNextSubpass(commandBuffer, contents); + + if (pCB) { + lock.lock(); + pCB->activeSubpass++; + pCB->activeSubpassContents = contents; + TransitionSubpassLayouts(dev_data, pCB, &pCB->activeRenderPassBeginInfo, pCB->activeSubpass); + } } VKAPI_ATTR void VKAPI_CALL CmdEndRenderPass(VkCommandBuffer commandBuffer) { -- cgit v1.2.3