From 3bfaf929e632523913508cf7670107bea9c17677 Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 13 Mar 2020 10:43:00 +0000 Subject: [PATCH] Add a timer for logging overall capture duration & size --- renderdoc/driver/d3d11/d3d11_device.cpp | 6 ++++++ renderdoc/driver/d3d11/d3d11_device.h | 2 ++ renderdoc/driver/d3d12/d3d12_device.cpp | 6 ++++++ renderdoc/driver/d3d12/d3d12_device.h | 2 ++ renderdoc/driver/gl/gl_driver.cpp | 6 ++++++ renderdoc/driver/gl/gl_driver.h | 2 ++ renderdoc/driver/vulkan/vk_core.cpp | 6 ++++++ renderdoc/driver/vulkan/vk_core.h | 2 ++ 8 files changed, 32 insertions(+) diff --git a/renderdoc/driver/d3d11/d3d11_device.cpp b/renderdoc/driver/d3d11/d3d11_device.cpp index 92a688d48..286a34d2e 100644 --- a/renderdoc/driver/d3d11/d3d11_device.cpp +++ b/renderdoc/driver/d3d11/d3d11_device.cpp @@ -1673,6 +1673,8 @@ void WrappedID3D11Device::StartFrameCapture(void *dev, void *wnd) if(!IsBackgroundCapturing(m_State)) return; + m_CaptureTimer.Restart(); + m_State = CaptureState::ActiveCapturing; m_AppControlledCapture = true; @@ -1988,6 +1990,10 @@ bool WrappedID3D11Device::EndFrameCapture(void *dev, void *wnd) UnlockForChunkFlushing(); } + RDCLOG("Captured D3D11 frame with %f MB capture section in %f seconds", + double(captureWriter->GetOffset()) / (1024.0 * 1024.0), + m_CaptureTimer.GetMilliseconds() / 1000.0); + RenderDoc::Inst().FinishCaptureWriting(rdc, m_CapturedFrames.back().frameNumber); m_State = CaptureState::BackgroundCapturing; diff --git a/renderdoc/driver/d3d11/d3d11_device.h b/renderdoc/driver/d3d11/d3d11_device.h index 40073c3bd..9e2ab261d 100644 --- a/renderdoc/driver/d3d11/d3d11_device.h +++ b/renderdoc/driver/d3d11/d3d11_device.h @@ -347,6 +347,8 @@ private: CaptureState m_State; bool m_AppControlledCapture = false; + PerformanceTimer m_CaptureTimer; + ReplayStatus m_FailedReplayStatus = ReplayStatus::APIReplayFailed; std::set m_CachedStateObjects; diff --git a/renderdoc/driver/d3d12/d3d12_device.cpp b/renderdoc/driver/d3d12/d3d12_device.cpp index f80b915df..52a65ad60 100644 --- a/renderdoc/driver/d3d12/d3d12_device.cpp +++ b/renderdoc/driver/d3d12/d3d12_device.cpp @@ -1778,6 +1778,8 @@ void WrappedID3D12Device::StartFrameCapture(void *dev, void *wnd) if(!IsBackgroundCapturing(m_State)) return; + m_CaptureTimer.Restart(); + m_AppControlledCapture = true; m_SubmitCounter = 0; @@ -2147,6 +2149,10 @@ bool WrappedID3D12Device::EndFrameCapture(void *dev, void *wnd) RDCDEBUG("Done"); } + RDCLOG("Captured D3D12 frame with %f MB capture section in %f seconds", + double(captureWriter->GetOffset()) / (1024.0 * 1024.0), + m_CaptureTimer.GetMilliseconds() / 1000.0); + RenderDoc::Inst().FinishCaptureWriting(rdc, m_CapturedFrames.back().frameNumber); SAFE_DELETE(m_HeaderChunk); diff --git a/renderdoc/driver/d3d12/d3d12_device.h b/renderdoc/driver/d3d12/d3d12_device.h index 9c54bcfeb..d2c24abe9 100644 --- a/renderdoc/driver/d3d12/d3d12_device.h +++ b/renderdoc/driver/d3d12/d3d12_device.h @@ -452,6 +452,8 @@ private: Threading::RWLock m_CapTransitionLock; CaptureState m_State; + PerformanceTimer m_CaptureTimer; + uint32_t m_SubmitCounter = 0; D3D12InitParams m_InitParams; diff --git a/renderdoc/driver/gl/gl_driver.cpp b/renderdoc/driver/gl/gl_driver.cpp index a152ef749..58f670326 100644 --- a/renderdoc/driver/gl/gl_driver.cpp +++ b/renderdoc/driver/gl/gl_driver.cpp @@ -2144,6 +2144,8 @@ void WrappedOpenGL::StartFrameCapture(void *dev, void *wnd) if(!IsBackgroundCapturing(m_State)) return; + m_CaptureTimer.Restart(); + SCOPED_LOCK(glLock); m_State = CaptureState::ActiveCapturing; @@ -2355,6 +2357,10 @@ bool WrappedOpenGL::EndFrameCapture(void *dev, void *wnd) } } + RDCLOG("Captured GL frame with %f MB capture section in %f seconds", + double(captureWriter->GetOffset()) / (1024.0 * 1024.0), + m_CaptureTimer.GetMilliseconds() / 1000.0); + RenderDoc::Inst().FinishCaptureWriting(rdc, m_CapturedFrames.back().frameNumber); m_State = CaptureState::BackgroundCapturing; diff --git a/renderdoc/driver/gl/gl_driver.h b/renderdoc/driver/gl/gl_driver.h index 3840284c3..355036a53 100644 --- a/renderdoc/driver/gl/gl_driver.h +++ b/renderdoc/driver/gl/gl_driver.h @@ -138,6 +138,8 @@ private: CaptureState m_State; bool m_AppControlledCapture = false; + PerformanceTimer m_CaptureTimer; + bool m_MarkedActive = false; bool m_UsesVRMarkers; diff --git a/renderdoc/driver/vulkan/vk_core.cpp b/renderdoc/driver/vulkan/vk_core.cpp index 96132c8f8..1dbc35b8f 100644 --- a/renderdoc/driver/vulkan/vk_core.cpp +++ b/renderdoc/driver/vulkan/vk_core.cpp @@ -1531,6 +1531,8 @@ void WrappedVulkan::StartFrameCapture(void *dev, void *wnd) if(!IsBackgroundCapturing(m_State)) return; + m_CaptureTimer.Restart(); + m_AppControlledCapture = true; m_SubmitCounter = 0; @@ -2004,6 +2006,10 @@ bool WrappedVulkan::EndFrameCapture(void *dev, void *wnd) } } + RDCLOG("Captured Vulkan frame with %f MB capture section in %f seconds", + double(captureWriter->GetOffset()) / (1024.0 * 1024.0), + m_CaptureTimer.GetMilliseconds() / 1000.0); + RenderDoc::Inst().FinishCaptureWriting(rdc, m_CapturedFrames.back().frameNumber); SAFE_DELETE(m_HeaderChunk); diff --git a/renderdoc/driver/vulkan/vk_core.h b/renderdoc/driver/vulkan/vk_core.h index 792edb931..e95ede805 100644 --- a/renderdoc/driver/vulkan/vk_core.h +++ b/renderdoc/driver/vulkan/vk_core.h @@ -279,6 +279,8 @@ private: CaptureState m_State; bool m_AppControlledCapture = false; + PerformanceTimer m_CaptureTimer; + bool m_MarkedActive = false; uint32_t m_SubmitCounter = 0;