Allow multiple frame capture

This commit is contained in:
baldurk
2015-10-15 16:37:13 +02:00
parent e841bd9969
commit 19a13eefee
2 changed files with 6 additions and 2 deletions
+3 -1
View File
@@ -13,7 +13,7 @@ Current Support
========
* A single VkInstance/VkQueue/VkDevice triple is supported.
* Capture and replay of a single frame at a time.
* Capture and replay of single-frame captures.
* On replay you can step into each vkQueueSubmit call to see the command buffers submitted, and step into them to browse through the commands.
* The pipeline state will be displayed at each command, roughly showing the data contained in each member of the pipeline createinfo struct, as well as dynamic state.
* Simple disassembly/reflection of SPIR-V to determine which descriptors to read for read-only resources and uniform buffers. The uniform buffers will be listed separately and the member variables filled out.
@@ -31,6 +31,8 @@ On capture:
* Memory maps are not intercepted, so any modifications are saved by reading back from the mapped pointer, even if it is uncached/write combined.
* Image contents are saved out by copying aliasing their backing memory to a buffer, so will not be GPU-portable.
* Captures will not be GPU-portable where memory indices etc change.
* There might be memory leaks per-capture.
* Memory leaks each time a new capture is loaded in the replay UI.
* Unsupported or untested features:
* Subpasses
* Nested command buffer execution
@@ -936,6 +936,8 @@ VkResult WrappedVulkan::vkQueuePresentKHR(
// delete cmd buffers now - had to keep them alive until after serialiser flush.
for(size_t i=0; i < m_CmdBufferRecords.size(); i++)
m_CmdBufferRecords[i]->Delete(GetResourceManager());
m_CmdBufferRecords.clear();
GetResourceManager()->MarkUnwrittenResources();
@@ -945,7 +947,7 @@ VkResult WrappedVulkan::vkQueuePresentKHR(
}
}
if(RenderDoc::Inst().ShouldTriggerCapture(m_FrameCounter) && m_State == WRITING_IDLE && m_FrameRecord.empty())
if(RenderDoc::Inst().ShouldTriggerCapture(m_FrameCounter) && m_State == WRITING_IDLE)
{
FetchFrameRecord record;
record.frameInfo.frameNumber = m_FrameCounter+1;