From 5f43e07378f620e533528f0abd0d3dc49a414a6d Mon Sep 17 00:00:00 2001 From: Tobin Ehlis Date: Thu, 28 Sep 2017 13:20:53 -0600 Subject: [PATCH] layers:Fix renderPass<->cmdBuffer binding At BeginRenderPass() time bind the active renderPass to the cmdBuffer. Don't bind the renderPass used to create the framebuffer. The renderPass lifetime rules allow the renderPass used in FB creation to be destroyed after FB creation. --- layers/core_validation.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp index 9671e5f..5d1e7f5 100644 --- a/layers/core_validation.cpp +++ b/layers/core_validation.cpp @@ -4996,11 +4996,6 @@ static void AddFramebufferBinding(layer_data *dev_data, GLOBAL_CB_NODE *cb_state if (view_state) { AddCommandBufferBindingImageView(dev_data, cb_state, view_state); } - auto rp_state = GetRenderPassState(dev_data, fb_state->createInfo.renderPass); - if (rp_state) { - addCommandBufferBinding(&rp_state->cb_bindings, {HandleToUint64(rp_state->renderPass), kVulkanObjectTypeRenderPass}, - cb_state); - } } } @@ -8114,6 +8109,9 @@ VKAPI_ATTR void VKAPI_CALL CmdBeginRenderPass(VkCommandBuffer commandBuffer, con cb_node->framebuffers.insert(pRenderPassBegin->framebuffer); // Connect this framebuffer and its children to this cmdBuffer AddFramebufferBinding(dev_data, cb_node, framebuffer); + // Connect this RP to cmdBuffer + addCommandBufferBinding(&render_pass_state->cb_bindings, + {HandleToUint64(render_pass_state->renderPass), kVulkanObjectTypeRenderPass}, cb_node); // transition attachments to the correct layouts for beginning of renderPass and first subpass TransitionBeginRenderPassLayouts(dev_data, cb_node, render_pass_state, framebuffer); } -- 2.7.4