@@ -24,7 +24,9 @@ static void invoke_begin_render_pass_event(const reshade::vulkan::device_impl *d
2424 const VkImageView *attachments = nullptr ;
2525
2626 // Attachments may optionally be provided directly, rather than through the framebuffer object, when VK_KHR_imageless_framebuffer is used
27- if (const auto attachment_begin_info = find_in_structure_chain<VkRenderPassAttachmentBeginInfo>(begin_info, VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO))
27+ if (const auto attachment_begin_info =
28+ find_in_structure_chain<VkRenderPassAttachmentBeginInfo>(
29+ begin_info, VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO))
2830 {
2931 attachments = attachment_begin_info->pAttachments ;
3032 assert (subpass.num_color_attachments <= attachment_begin_info->attachmentCount );
@@ -257,6 +259,14 @@ VkResult VKAPI_CALL vkBeginCommandBuffer(VkCommandBuffer commandBuffer, const Vk
257259 reshade::invoke_addon_event<reshade::addon_event::begin_render_pass>(cmd_impl, 0 , nullptr , nullptr );
258260 }
259261 }
262+ else if (const auto rendering_info =
263+ find_in_structure_chain<VkCommandBufferInheritanceRenderingInfo>(
264+ inheritance_info.pNext , VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO))
265+ {
266+ cmd_impl->_is_in_render_pass = true ;
267+
268+ reshade::invoke_addon_event<reshade::addon_event::begin_render_pass>(cmd_impl, 0 , nullptr , nullptr );
269+ }
260270 }
261271#endif
262272
@@ -938,6 +948,8 @@ void VKAPI_CALL vkCmdClearAttachments(VkCommandBuffer commandBuffer, uint32_t at
938948 {
939949 const auto cmd_impl = device_impl->get_private_data_for_object <VK_OBJECT_TYPE_COMMAND_BUFFER>(commandBuffer);
940950
951+ assert (cmd_impl->_is_in_render_pass );
952+
941953 temp_mem<reshade::api::rect> rect_data (rectCount);
942954 for (uint32_t i = 0 ; i < rectCount; ++i)
943955 {
@@ -1193,6 +1205,7 @@ void VKAPI_CALL vkCmdBeginRenderPass(VkCommandBuffer commandBuffer, const VkRend
11931205#if RESHADE_ADDON
11941206 const auto cmd_impl = device_impl->get_private_data_for_object <VK_OBJECT_TYPE_COMMAND_BUFFER>(commandBuffer);
11951207
1208+ assert (!cmd_impl->_is_in_render_pass );
11961209 assert (cmd_impl->current_render_pass == VK_NULL_HANDLE);
11971210
11981211 cmd_impl->current_subpass = 0 ;
@@ -1214,6 +1227,7 @@ void VKAPI_CALL vkCmdNextSubpass(VkCommandBuffer commandBuffer, VkSubpassContent
12141227#if RESHADE_ADDON
12151228 const auto cmd_impl = device_impl->get_private_data_for_object <VK_OBJECT_TYPE_COMMAND_BUFFER>(commandBuffer);
12161229
1230+ assert (cmd_impl->_is_in_render_pass );
12171231 assert (cmd_impl->current_render_pass != VK_NULL_HANDLE);
12181232
12191233 reshade::invoke_addon_event<reshade::addon_event::end_render_pass>(cmd_impl);
@@ -1233,6 +1247,7 @@ void VKAPI_CALL vkCmdEndRenderPass(VkCommandBuffer commandBuffer)
12331247#if RESHADE_ADDON
12341248 const auto cmd_impl = device_impl->get_private_data_for_object <VK_OBJECT_TYPE_COMMAND_BUFFER>(commandBuffer);
12351249
1250+ assert (cmd_impl->_is_in_render_pass );
12361251 assert (cmd_impl->current_render_pass != VK_NULL_HANDLE);
12371252
12381253 reshade::invoke_addon_event<reshade::addon_event::end_render_pass>(cmd_impl);
@@ -1309,6 +1324,7 @@ void VKAPI_CALL vkCmdBeginRenderPass2(VkCommandBuffer commandBuffer, const VkRen
13091324#if RESHADE_ADDON
13101325 const auto cmd_impl = device_impl->get_private_data_for_object <VK_OBJECT_TYPE_COMMAND_BUFFER>(commandBuffer);
13111326
1327+ assert (!cmd_impl->_is_in_render_pass );
13121328 assert (cmd_impl->current_render_pass == VK_NULL_HANDLE);
13131329
13141330 cmd_impl->current_subpass = 0 ;
@@ -1330,6 +1346,7 @@ void VKAPI_CALL vkCmdNextSubpass2(VkCommandBuffer commandBuffer, const VkSubpass
13301346#if RESHADE_ADDON
13311347 const auto cmd_impl = device_impl->get_private_data_for_object <VK_OBJECT_TYPE_COMMAND_BUFFER>(commandBuffer);
13321348
1349+ assert (cmd_impl->_is_in_render_pass );
13331350 assert (cmd_impl->current_render_pass != VK_NULL_HANDLE);
13341351
13351352 reshade::invoke_addon_event<reshade::addon_event::end_render_pass>(cmd_impl);
@@ -1349,6 +1366,7 @@ void VKAPI_CALL vkCmdEndRenderPass2(VkCommandBuffer commandBuffer, const VkSubpa
13491366#if RESHADE_ADDON
13501367 const auto cmd_impl = device_impl->get_private_data_for_object <VK_OBJECT_TYPE_COMMAND_BUFFER>(commandBuffer);
13511368
1369+ assert (cmd_impl->_is_in_render_pass );
13521370 assert (cmd_impl->current_render_pass != VK_NULL_HANDLE);
13531371
13541372 reshade::invoke_addon_event<reshade::addon_event::end_render_pass>(cmd_impl);
@@ -1702,6 +1720,8 @@ void VKAPI_CALL vkCmdBeginRendering(VkCommandBuffer commandBuffer, const VkRende
17021720#if RESHADE_ADDON
17031721 const auto cmd_impl = device_impl->get_private_data_for_object <VK_OBJECT_TYPE_COMMAND_BUFFER>(commandBuffer);
17041722
1723+ assert (!cmd_impl->_is_in_render_pass );
1724+
17051725 invoke_begin_render_pass_event (cmd_impl, pRenderingInfo);
17061726
17071727 cmd_impl->_is_in_render_pass = true ;
@@ -1717,6 +1737,8 @@ void VKAPI_CALL vkCmdEndRendering(VkCommandBuffer commandBuffer)
17171737#if RESHADE_ADDON
17181738 const auto cmd_impl = device_impl->get_private_data_for_object <VK_OBJECT_TYPE_COMMAND_BUFFER>(commandBuffer);
17191739
1740+ assert (cmd_impl->_is_in_render_pass );
1741+
17201742 reshade::invoke_addon_event<reshade::addon_event::end_render_pass>(cmd_impl);
17211743
17221744 std::memset (cmd_impl->current_color_attachments , 0 , sizeof (cmd_impl->current_color_attachments ));
@@ -1813,7 +1835,9 @@ void VKAPI_CALL vkCmdPushDescriptorSetKHR(VkCommandBuffer commandBuffer, VkPipel
18131835 update.descriptors = write.pBufferInfo ;
18141836 break ;
18151837 case VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR:
1816- if (const auto write_acceleration_structure = find_in_structure_chain<VkWriteDescriptorSetAccelerationStructureKHR>(write.pNext , VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR))
1838+ if (const auto write_acceleration_structure =
1839+ find_in_structure_chain<VkWriteDescriptorSetAccelerationStructureKHR>(
1840+ write.pNext , VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR))
18171841 {
18181842 assert (update.count == write_acceleration_structure->accelerationStructureCount );
18191843 update.descriptors = write_acceleration_structure->pAccelerationStructures ;
0 commit comments