diff options
| author | Chris Forbes <chrisforbes@google.com> | 2016-09-07 11:43:52 +1200 |
|---|---|---|
| committer | Chris Forbes <chrisforbes@google.com> | 2016-09-07 16:58:24 +1200 |
| commit | 8c6b3e2ca5c408def872dbd8bbdb80f76589812c (patch) | |
| tree | 5fe50bbc96dd0d9c5dd9cfeb8dd93b0df6d3d58c /layers/core_validation.cpp | |
| parent | 6be3cdfac51fd153b8039803ce38c31af4384fcd (diff) | |
| download | usermoji-8c6b3e2ca5c408def872dbd8bbdb80f76589812c.tar.xz | |
layers: Make CmdNextSubpass more careful about side effects on failure
Signed-off-by: Chris Forbes <chrisforbes@google.com>
Diffstat (limited to 'layers/core_validation.cpp')
| -rw-r--r-- | layers/core_validation.cpp | 17 |
1 files changed, 12 insertions, 5 deletions
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) { |
