diff --git a/renderdoc/driver/vulkan/vk_core.h b/renderdoc/driver/vulkan/vk_core.h index 6251201ea..867be90db 100644 --- a/renderdoc/driver/vulkan/vk_core.h +++ b/renderdoc/driver/vulkan/vk_core.h @@ -1199,6 +1199,12 @@ private: void ApplyInitialContents(); + void AddEventResourceUsage(ResourceId id, ResourceUsage usage) + { + RDCASSERT(IsLoading(m_State)); + m_LoadingEventNode.AddResourceUsage(id, usage); + } + rdcarray m_Events; VulkanEventNode m_LoadingEventNode; rdcarray m_EventNodes; diff --git a/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp index 4467de2d2..b14f8bb7b 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp @@ -425,14 +425,14 @@ void WrappedVulkan::AddImplicitResolveResourceUsage(uint32_t subpass) uint32_t attIdx = rpinfo.subpasses[subpass].resolveAttachments[i]; if(attIdx == VK_ATTACHMENT_UNUSED) continue; - ResourceId image = m_CreationInfo.m_ImageView[fbattachments[attIdx]].image; - m_LoadingEventNode.AddResourceUsage(image, ResourceUsage::ResolveDst); + AddEventResourceUsage(m_CreationInfo.m_ImageView[fbattachments[attIdx]].image, + ResourceUsage::ResolveDst); attIdx = rpinfo.subpasses[subpass].colorAttachments[i]; if(attIdx == VK_ATTACHMENT_UNUSED) continue; - image = m_CreationInfo.m_ImageView[fbattachments[attIdx]].image; - m_LoadingEventNode.AddResourceUsage(image, ResourceUsage::ResolveSrc); + AddEventResourceUsage(m_CreationInfo.m_ImageView[fbattachments[attIdx]].image, + ResourceUsage::ResolveSrc); } // also add any discards on the final subpass @@ -441,10 +441,8 @@ void WrappedVulkan::AddImplicitResolveResourceUsage(uint32_t subpass) for(size_t i = 0; i < rpinfo.attachments.size(); i++) { if(rpinfo.attachments[i].storeOp == VK_ATTACHMENT_STORE_OP_DONT_CARE) - { - ResourceId image = m_CreationInfo.m_ImageView[fbattachments[i]].image; - m_LoadingEventNode.AddResourceUsage(image, ResourceUsage::Discard); - } + AddEventResourceUsage(m_CreationInfo.m_ImageView[fbattachments[i]].image, + ResourceUsage::Discard); } } } @@ -2310,13 +2308,10 @@ bool WrappedVulkan::Serialise_vkCmdBeginRenderPass(SerialiserType &ser, VkComman { if(rpinfo.attachments[i].loadOp == VK_ATTACHMENT_LOAD_OP_CLEAR || rpinfo.attachments[i].loadOp == VK_ATTACHMENT_LOAD_OP_DONT_CARE) - { - ResourceId image = m_CreationInfo.m_ImageView[fbattachments[i]].image; - m_LoadingEventNode.AddResourceUsage( - image, rpinfo.attachments[i].loadOp == VK_ATTACHMENT_LOAD_OP_CLEAR - ? ResourceUsage::Clear - : ResourceUsage::Discard); - } + AddEventResourceUsage(m_CreationInfo.m_ImageView[fbattachments[i]].image, + rpinfo.attachments[i].loadOp == VK_ATTACHMENT_LOAD_OP_CLEAR + ? ResourceUsage::Clear + : ResourceUsage::Discard); } rdcarray imgBarriers = GetImplicitRenderPassBarriers(); @@ -2930,13 +2925,10 @@ bool WrappedVulkan::Serialise_vkCmdBeginRenderPass2(SerialiserType &ser, { if(rpinfo.attachments[i].loadOp == VK_ATTACHMENT_LOAD_OP_CLEAR || rpinfo.attachments[i].loadOp == VK_ATTACHMENT_LOAD_OP_DONT_CARE) - { - ResourceId image = m_CreationInfo.m_ImageView[fbattachments[i]].image; - m_LoadingEventNode.AddResourceUsage( - image, rpinfo.attachments[i].loadOp == VK_ATTACHMENT_LOAD_OP_CLEAR - ? ResourceUsage::Clear - : ResourceUsage::Discard); - } + AddEventResourceUsage(m_CreationInfo.m_ImageView[fbattachments[i]].image, + rpinfo.attachments[i].loadOp == VK_ATTACHMENT_LOAD_OP_CLEAR + ? ResourceUsage::Clear + : ResourceUsage::Discard); } rdcarray imgBarriers = GetImplicitRenderPassBarriers(); @@ -4598,10 +4590,7 @@ bool WrappedVulkan::Serialise_vkCmdPipelineBarrier( bufBarriers.back().dstQueueFamilyIndex); if(IsLoading(m_State)) - { - m_LoadingEventNode.AddResourceUsage(GetResID(pBufferMemoryBarriers[i].buffer), - ResourceUsage::Barrier); - } + AddEventResourceUsage(GetResID(pBufferMemoryBarriers[i].buffer), ResourceUsage::Barrier); } } @@ -4616,10 +4605,7 @@ bool WrappedVulkan::Serialise_vkCmdPipelineBarrier( imgBarriers.back().dstQueueFamilyIndex); if(IsLoading(m_State)) - { - m_LoadingEventNode.AddResourceUsage(GetResID(pImageMemoryBarriers[i].image), - ResourceUsage::Barrier); - } + AddEventResourceUsage(GetResID(pImageMemoryBarriers[i].image), ResourceUsage::Barrier); } } @@ -4639,9 +4625,7 @@ bool WrappedVulkan::Serialise_vkCmdPipelineBarrier( { VulkanCreationInfo::Image &imgInfo = m_CreationInfo.m_Image[GetResID(b.image)]; if(!imgInfo.external) - { - m_LoadingEventNode.AddResourceUsage(GetResID(b.image), ResourceUsage::Discard); - } + AddEventResourceUsage(GetResID(b.image), ResourceUsage::Discard); } } } @@ -4845,10 +4829,8 @@ bool WrappedVulkan::Serialise_vkCmdPipelineBarrier2(SerialiserType &ser, bufBarriers.back().dstQueueFamilyIndex); if(IsLoading(m_State)) - { - m_LoadingEventNode.AddResourceUsage( - GetResID(DependencyInfo.pBufferMemoryBarriers[i].buffer), ResourceUsage::Barrier); - } + AddEventResourceUsage(GetResID(DependencyInfo.pBufferMemoryBarriers[i].buffer), + ResourceUsage::Barrier); } } @@ -4863,10 +4845,8 @@ bool WrappedVulkan::Serialise_vkCmdPipelineBarrier2(SerialiserType &ser, imgBarriers.back().dstQueueFamilyIndex); if(IsLoading(m_State)) - { - m_LoadingEventNode.AddResourceUsage( - GetResID(DependencyInfo.pImageMemoryBarriers[i].image), ResourceUsage::Barrier); - } + AddEventResourceUsage(GetResID(DependencyInfo.pImageMemoryBarriers[i].image), + ResourceUsage::Barrier); } } @@ -4894,9 +4874,7 @@ bool WrappedVulkan::Serialise_vkCmdPipelineBarrier2(SerialiserType &ser, { VulkanCreationInfo::Image &imgInfo = m_CreationInfo.m_Image[GetResID(b.image)]; if(!imgInfo.external) - { - m_LoadingEventNode.AddResourceUsage(GetResID(b.image), ResourceUsage::Discard); - } + AddEventResourceUsage(GetResID(b.image), ResourceUsage::Discard); } } } @@ -7918,12 +7896,9 @@ bool WrappedVulkan::Serialise_vkCmdBeginRendering(SerialiserType &ser, VkCommand if(att->loadOp == VK_ATTACHMENT_LOAD_OP_CLEAR || att->loadOp == VK_ATTACHMENT_LOAD_OP_DONT_CARE) - { - ResourceId image = m_CreationInfo.m_ImageView[GetResID(att->imageView)].image; - m_LoadingEventNode.AddResourceUsage(image, att->loadOp == VK_ATTACHMENT_LOAD_OP_CLEAR - ? ResourceUsage::Clear - : ResourceUsage::Discard); - } + AddEventResourceUsage(m_CreationInfo.m_ImageView[GetResID(att->imageView)].image, + att->loadOp == VK_ATTACHMENT_LOAD_OP_CLEAR ? ResourceUsage::Clear + : ResourceUsage::Discard); } AddEvent(); @@ -8239,22 +8214,18 @@ bool WrappedVulkan::Serialise_vkCmdEndRendering(SerialiserType &ser, VkCommandBu if((dynAtts[i].resolveMode && !(dynAtts[i].resolveMode & VK_RESOLVE_MODE_CUSTOM_BIT_EXT)) && dynAtts[i].imageView != VK_NULL_HANDLE && dynAtts[i].resolveImageView != VK_NULL_HANDLE) { - m_LoadingEventNode.AddResourceUsage( - m_CreationInfo.m_ImageView[GetResID(dynAtts[i].imageView)].image, - ResourceUsage::ResolveSrc); + AddEventResourceUsage(m_CreationInfo.m_ImageView[GetResID(dynAtts[i].imageView)].image, + ResourceUsage::ResolveSrc); - m_LoadingEventNode.AddResourceUsage( + AddEventResourceUsage( m_CreationInfo.m_ImageView[GetResID(dynAtts[i].resolveImageView)].image, ResourceUsage::ResolveDst); } // also add any discards if(dynAtts[i].storeOp == VK_ATTACHMENT_STORE_OP_DONT_CARE) - { - m_LoadingEventNode.AddResourceUsage( - m_CreationInfo.m_ImageView[GetResID(dynAtts[i].imageView)].image, - ResourceUsage::Discard); - } + AddEventResourceUsage(m_CreationInfo.m_ImageView[GetResID(dynAtts[i].imageView)].image, + ResourceUsage::Discard); } AddEvent(); @@ -8525,22 +8496,18 @@ bool WrappedVulkan::Serialise_vkCmdEndRendering2EXT(SerialiserType &ser, if((dynAtts[i].resolveMode && !(dynAtts[i].resolveMode & VK_RESOLVE_MODE_CUSTOM_BIT_EXT)) && dynAtts[i].imageView != VK_NULL_HANDLE && dynAtts[i].resolveImageView != VK_NULL_HANDLE) { - m_LoadingEventNode.AddResourceUsage( - m_CreationInfo.m_ImageView[GetResID(dynAtts[i].imageView)].image, - ResourceUsage::ResolveSrc); + AddEventResourceUsage(m_CreationInfo.m_ImageView[GetResID(dynAtts[i].imageView)].image, + ResourceUsage::ResolveSrc); - m_LoadingEventNode.AddResourceUsage( + AddEventResourceUsage( m_CreationInfo.m_ImageView[GetResID(dynAtts[i].resolveImageView)].image, ResourceUsage::ResolveDst); } // also add any discards if(dynAtts[i].storeOp == VK_ATTACHMENT_STORE_OP_DONT_CARE) - { - m_LoadingEventNode.AddResourceUsage( - m_CreationInfo.m_ImageView[GetResID(dynAtts[i].imageView)].image, - ResourceUsage::Discard); - } + AddEventResourceUsage(m_CreationInfo.m_ImageView[GetResID(dynAtts[i].imageView)].image, + ResourceUsage::Discard); } AddEvent(); @@ -10401,8 +10368,8 @@ bool WrappedVulkan::Serialise_vkCmdBeginCustomResolveEXT( renderstate.dynamicRendering.color[i].loadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE; renderstate.dynamicRendering.color[i].storeOp = VK_ATTACHMENT_STORE_OP_STORE; - ResourceId image = m_CreationInfo.m_ImageView[resolveImageView].image; - m_LoadingEventNode.AddResourceUsage(image, ResourceUsage::Discard); + AddEventResourceUsage(m_CreationInfo.m_ImageView[resolveImageView].image, + ResourceUsage::Discard); } else { diff --git a/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp index 75db1a45e..3f8f6e9df 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp @@ -1106,7 +1106,7 @@ bool WrappedVulkan::SerialiseUnmap(SerialiserType &ser, VkDeviceMemory memory, u } if(IsLoading(m_State)) - m_LoadingEventNode.AddResourceUsage(GetResID(memory), ResourceUsage::CPUWrite); + AddEventResourceUsage(GetResID(memory), ResourceUsage::CPUWrite); const Intervals &bindings = m_CreationInfo.m_Memory[GetResID(memory)].bindings; @@ -1462,7 +1462,7 @@ bool WrappedVulkan::Serialise_vkFlushMappedMemoryRanges(SerialiserType &ser, VkD if(IsReplayingAndReading() && MemRange.memory != VK_NULL_HANDLE && MemRange.size > 0) { if(IsLoading(m_State)) - m_LoadingEventNode.AddResourceUsage(GetResID(MemRange.memory), ResourceUsage::CPUWrite); + AddEventResourceUsage(GetResID(MemRange.memory), ResourceUsage::CPUWrite); VkResult ret = ObjDisp(device)->MapMemory(Unwrap(device), Unwrap(MemRange.memory), MemRange.offset, diff --git a/renderdoc/driver/vulkan/wrappers/vk_sync_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_sync_funcs.cpp index ca0e7e985..c9747d295 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_sync_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_sync_funcs.cpp @@ -809,9 +809,7 @@ bool WrappedVulkan::Serialise_vkCmdWaitEvents( { const VkImageMemoryBarrier &b = pImageMemoryBarriers[i]; if(b.image != VK_NULL_HANDLE && b.oldLayout == VK_IMAGE_LAYOUT_UNDEFINED) - { - m_LoadingEventNode.AddResourceUsage(GetResID(b.image), ResourceUsage::Discard); - } + AddEventResourceUsage(GetResID(b.image), ResourceUsage::Discard); } } @@ -1320,9 +1318,7 @@ bool WrappedVulkan::Serialise_vkCmdWaitEvents2(SerialiserType &ser, VkCommandBuf const VkImageMemoryBarrier2 &b = depInfo.pImageMemoryBarriers[i]; if(b.image != VK_NULL_HANDLE && b.oldLayout == VK_IMAGE_LAYOUT_UNDEFINED && b.newLayout != VK_IMAGE_LAYOUT_UNDEFINED) - { - m_LoadingEventNode.AddResourceUsage(GetResID(b.image), ResourceUsage::Discard); - } + AddEventResourceUsage(GetResID(b.image), ResourceUsage::Discard); } }