aboutsummaryrefslogtreecommitdiff
path: root/layers/core_validation.cpp
diff options
context:
space:
mode:
authorChris Forbes <chrisforbes@google.com>2016-09-07 13:52:28 +1200
committerChris Forbes <chrisforbes@google.com>2016-09-07 16:58:25 +1200
commit17970efc48a4a606337361f32bfb6224b72c8987 (patch)
tree4b7f48fae934a47059b5dca9f217b5e23dbbb55b /layers/core_validation.cpp
parent1ba3bf459e699206d13e40697dcb1df93e0b9fd2 (diff)
downloadusermoji-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.cpp13
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,