From 6578f451c1e5afed43b5bedf08150eaad0b84bdd Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 8 Jan 2016 00:12:18 +0100 Subject: [PATCH] Mark sure to frame-reference indirect argument buffers --- .../driver/vulkan/wrappers/vk_draw_funcs.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/renderdoc/driver/vulkan/wrappers/vk_draw_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_draw_funcs.cpp index 87eab494d..c9b2218b9 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_draw_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_draw_funcs.cpp @@ -1200,6 +1200,11 @@ void WrappedVulkan::vkCmdDrawIndirect( Serialise_vkCmdDrawIndirect(localSerialiser, commandBuffer, buffer, offset, count, stride); record->AddChunk(scope.Get()); + + record->MarkResourceFrameReferenced(GetResID(buffer), eFrameRef_Read); + record->MarkResourceFrameReferenced(GetRecord(buffer)->baseResource, eFrameRef_Read); + if(GetRecord(buffer)->sparseInfo) + record->cmdInfo->sparse.insert(GetRecord(buffer)->sparseInfo); } } @@ -1261,6 +1266,11 @@ void WrappedVulkan::vkCmdDrawIndexedIndirect( Serialise_vkCmdDrawIndexedIndirect(localSerialiser, commandBuffer, buffer, offset, count, stride); record->AddChunk(scope.Get()); + + record->MarkResourceFrameReferenced(GetResID(buffer), eFrameRef_Read); + record->MarkResourceFrameReferenced(GetRecord(buffer)->baseResource, eFrameRef_Read); + if(GetRecord(buffer)->sparseInfo) + record->cmdInfo->sparse.insert(GetRecord(buffer)->sparseInfo); } } @@ -1389,5 +1399,10 @@ void WrappedVulkan::vkCmdDispatchIndirect( Serialise_vkCmdDispatchIndirect(localSerialiser, commandBuffer, buffer, offset); record->AddChunk(scope.Get()); + + record->MarkResourceFrameReferenced(GetResID(buffer), eFrameRef_Read); + record->MarkResourceFrameReferenced(GetRecord(buffer)->baseResource, eFrameRef_Read); + if(GetRecord(buffer)->sparseInfo) + record->cmdInfo->sparse.insert(GetRecord(buffer)->sparseInfo); } }