diff options
| author | Chris Forbes <chrisforbes@google.com> | 2016-09-07 13:52:28 +1200 |
|---|---|---|
| committer | Chris Forbes <chrisforbes@google.com> | 2016-09-07 16:58:25 +1200 |
| commit | 17970efc48a4a606337361f32bfb6224b72c8987 (patch) | |
| tree | 4b7f48fae934a47059b5dca9f217b5e23dbbb55b /layers/core_validation.cpp | |
| parent | 1ba3bf459e699206d13e40697dcb1df93e0b9fd2 (diff) | |
| download | usermoji-17970efc48a4a606337361f32bfb6224b72c8987.tar.xz | |
layers: Make CmdEndRenderPass 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 | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp index e5048e89..5d3e1609 100644 --- a/layers/core_validation.cpp +++ b/layers/core_validation.cpp @@ -10127,14 +10127,21 @@ VKAPI_ATTR void VKAPI_CALL CmdEndRenderPass(VkCommandBuffer commandBuffer) { skip_call |= outsideRenderPass(dev_data, pCB, "vkCmdEndRenderpass"); skip_call |= validatePrimaryCommandBuffer(dev_data, pCB, "vkCmdEndRenderPass"); skip_call |= addCmd(dev_data, pCB, CMD_ENDRENDERPASS, "vkCmdEndRenderPass()"); + } + lock.unlock(); + + if (skip_call) + return; + + dev_data->device_dispatch_table->CmdEndRenderPass(commandBuffer); + + if (pCB) { + lock.lock(); TransitionFinalSubpassLayouts(dev_data, pCB, &pCB->activeRenderPassBeginInfo); pCB->activeRenderPass = nullptr; pCB->activeSubpass = 0; pCB->activeFramebuffer = VK_NULL_HANDLE; } - lock.unlock(); - if (!skip_call) - dev_data->device_dispatch_table->CmdEndRenderPass(commandBuffer); } static bool logInvalidAttachmentMessage(layer_data *dev_data, VkCommandBuffer secondaryBuffer, uint32_t primaryAttach, |
