Don't use capture writer after it is destroyed. Closes #2121

This commit is contained in:
baldurk
2020-12-16 17:24:53 +00:00
parent 402d43f915
commit 0e054d864c
4 changed files with 20 additions and 8 deletions
+5 -2
View File
@@ -2080,6 +2080,8 @@ bool WrappedID3D11Device::EndFrameCapture(void *dev, void *wnd)
captureWriter = new StreamWriter(StreamWriter::InvalidStream);
}
uint64_t captureSectionSize = 0;
{
WriteSerialiser ser(captureWriter, Ownership::Stream);
@@ -2149,11 +2151,12 @@ bool WrappedID3D11Device::EndFrameCapture(void *dev, void *wnd)
}
UnlockForChunkFlushing();
captureSectionSize = captureWriter->GetOffset();
}
RDCLOG("Captured D3D11 frame with %f MB capture section in %f seconds",
double(captureWriter->GetOffset()) / (1024.0 * 1024.0),
m_CaptureTimer.GetMilliseconds() / 1000.0);
double(captureSectionSize) / (1024.0 * 1024.0), m_CaptureTimer.GetMilliseconds() / 1000.0);
RenderDoc::Inst().FinishCaptureWriting(rdc, m_CapturedFrames.back().frameNumber);
+5 -2
View File
@@ -2436,6 +2436,8 @@ bool WrappedID3D12Device::EndFrameCapture(void *dev, void *wnd)
captureWriter = new StreamWriter(StreamWriter::InvalidStream);
}
uint64_t captureSectionSize = 0;
{
WriteSerialiser ser(captureWriter, Ownership::Stream);
@@ -2521,11 +2523,12 @@ bool WrappedID3D12Device::EndFrameCapture(void *dev, void *wnd)
}
RDCDEBUG("Done");
captureSectionSize = captureWriter->GetOffset();
}
RDCLOG("Captured D3D12 frame with %f MB capture section in %f seconds",
double(captureWriter->GetOffset()) / (1024.0 * 1024.0),
m_CaptureTimer.GetMilliseconds() / 1000.0);
double(captureSectionSize) / (1024.0 * 1024.0), m_CaptureTimer.GetMilliseconds() / 1000.0);
RenderDoc::Inst().FinishCaptureWriting(rdc, m_CapturedFrames.back().frameNumber);
+5 -2
View File
@@ -2299,6 +2299,8 @@ bool WrappedOpenGL::EndFrameCapture(void *dev, void *wnd)
captureWriter = new StreamWriter(StreamWriter::InvalidStream);
}
uint64_t captureSectionSize = 0;
{
WriteSerialiser ser(captureWriter, Ownership::Stream);
@@ -2384,11 +2386,12 @@ bool WrappedOpenGL::EndFrameCapture(void *dev, void *wnd)
RDCDEBUG("Done");
}
captureSectionSize = captureWriter->GetOffset();
}
RDCLOG("Captured GL frame with %f MB capture section in %f seconds",
double(captureWriter->GetOffset()) / (1024.0 * 1024.0),
m_CaptureTimer.GetMilliseconds() / 1000.0);
double(captureSectionSize) / (1024.0 * 1024.0), m_CaptureTimer.GetMilliseconds() / 1000.0);
RenderDoc::Inst().FinishCaptureWriting(rdc, m_CapturedFrames.back().frameNumber);
+5 -2
View File
@@ -1994,6 +1994,8 @@ bool WrappedVulkan::EndFrameCapture(void *dev, void *wnd)
captureWriter = new StreamWriter(StreamWriter::InvalidStream);
}
uint64_t captureSectionSize = 0;
{
WriteSerialiser ser(captureWriter, Ownership::Stream);
@@ -2076,11 +2078,12 @@ bool WrappedVulkan::EndFrameCapture(void *dev, void *wnd)
RDCDEBUG("Done");
}
captureSectionSize = captureWriter->GetOffset();
}
RDCLOG("Captured Vulkan frame with %f MB capture section in %f seconds",
double(captureWriter->GetOffset()) / (1024.0 * 1024.0),
m_CaptureTimer.GetMilliseconds() / 1000.0);
double(captureSectionSize) / (1024.0 * 1024.0), m_CaptureTimer.GetMilliseconds() / 1000.0);
RenderDoc::Inst().FinishCaptureWriting(rdc, m_CapturedFrames.back().frameNumber);