Improve logging around frame capturers

* This can be useful for users of the in-application API to identify what frame
  capturers are available (in case they're passing the wrong handles)
This commit is contained in:
baldurk
2019-11-21 21:25:40 +00:00
parent 4243ab8fbe
commit 99e13a72f2
8 changed files with 36 additions and 3 deletions
+27 -3
View File
@@ -668,7 +668,10 @@ IFrameCapturer *RenderDoc::MatchFrameCapturer(void *dev, void *wnd)
return defaultit->second;
}
RDCERR("Couldn't find matching frame capturer for device %p window %p", dev, wnd);
RDCERR(
"Couldn't find matching frame capturer for device %p window %p "
"from %zu device frame capturers and %zu frame capturers",
dev, wnd, m_DeviceFrameCapturers.size(), m_WindowFrameCapturers.size());
return NULL;
}
@@ -1604,34 +1607,50 @@ void RenderDoc::FinishCaptureWriting(RDCFile *rdc, uint32_t frameNumber)
void RenderDoc::AddDeviceFrameCapturer(void *dev, IFrameCapturer *cap)
{
if(IsReplayApp())
return;
if(dev == NULL || cap == NULL)
{
RDCERR("Invalid FrameCapturer combination: %#p / %#p", dev, cap);
RDCERR("Invalid FrameCapturer %#p for device: %#p", cap, dev);
return;
}
RDCLOG("Adding %s device frame capturer for %#p", ToStr(cap->GetFrameCaptureDriver()).c_str(), dev);
m_DeviceFrameCapturers[dev] = cap;
}
void RenderDoc::RemoveDeviceFrameCapturer(void *dev)
{
if(IsReplayApp())
return;
if(dev == NULL)
{
RDCERR("Invalid device pointer: %#p", dev);
return;
}
RDCLOG("Removing device frame capturer for %#p", dev);
m_DeviceFrameCapturers.erase(dev);
}
void RenderDoc::AddFrameCapturer(void *dev, void *wnd, IFrameCapturer *cap)
{
if(IsReplayApp())
return;
if(dev == NULL || wnd == NULL || cap == NULL)
{
RDCERR("Invalid FrameCapturer combination: %#p / %#p", wnd, cap);
RDCERR("Invalid FrameCapturer %#p for combination: %#p / %#p", cap, dev, wnd);
return;
}
RDCLOG("Adding %s frame capturer for %#p / %#p", ToStr(cap->GetFrameCaptureDriver()).c_str(), dev,
wnd);
DeviceWnd dw(dev, wnd);
auto it = m_WindowFrameCapturers.find(dw);
@@ -1654,8 +1673,13 @@ void RenderDoc::AddFrameCapturer(void *dev, void *wnd, IFrameCapturer *cap)
void RenderDoc::RemoveFrameCapturer(void *dev, void *wnd)
{
if(IsReplayApp())
return;
DeviceWnd dw(dev, wnd);
RDCLOG("Removing frame capturer for %#p / %#p", dev, wnd);
auto it = m_WindowFrameCapturers.find(dw);
if(it != m_WindowFrameCapturers.end())
{
+3
View File
@@ -45,6 +45,8 @@ struct RDCThumb;
bool is_exr_file(FILE *f);
void LogReplayOptions(const ReplayOptions &opts);
enum class RDCDriver : uint32_t;
struct ICrashHandler
{
virtual ~ICrashHandler() {}
@@ -54,6 +56,7 @@ struct ICrashHandler
struct IFrameCapturer
{
virtual RDCDriver GetFrameCaptureDriver() = 0;
virtual void StartFrameCapture(void *dev, void *wnd) = 0;
virtual bool EndFrameCapture(void *dev, void *wnd) = 0;
virtual bool DiscardFrameCapture(void *dev, void *wnd) = 0;
+1
View File
@@ -459,6 +459,7 @@ public:
template <typename SerialiserType>
bool Serialise_CaptureScope(SerialiserType &ser);
RDCDriver GetFrameCaptureDriver() { return RDCDriver::D3D11; }
void StartFrameCapture(void *dev, void *wnd);
bool EndFrameCapture(void *dev, void *wnd);
bool DiscardFrameCapture(void *dev, void *wnd);
+1
View File
@@ -649,6 +649,7 @@ public:
void GPUSync(ID3D12CommandQueue *queue = NULL, ID3D12Fence *fence = NULL);
void GPUSyncAllQueues();
RDCDriver GetFrameCaptureDriver() { return RDCDriver::D3D12; }
void StartFrameCapture(void *dev, void *wnd);
bool EndFrameCapture(void *dev, void *wnd);
bool DiscardFrameCapture(void *dev, void *wnd);
+1
View File
@@ -38,6 +38,7 @@ public:
void LazyInit();
RDCDriver GetFrameCaptureDriver() { return RDCDriver::D3D8; }
void StartFrameCapture(void *dev, void *wnd);
bool EndFrameCapture(void *dev, void *wnd);
bool DiscardFrameCapture(void *dev, void *wnd);
+1
View File
@@ -36,6 +36,7 @@ public:
void LazyInit();
RDCDriver GetFrameCaptureDriver() { return RDCDriver::D3D9; }
void StartFrameCapture(void *dev, void *wnd);
bool EndFrameCapture(void *dev, void *wnd);
bool DiscardFrameCapture(void *dev, void *wnd);
+1
View File
@@ -604,6 +604,7 @@ public:
void FirstFrame(void *ctx, void *wndHandle);
void ReplayMarkers(bool replay) { m_ReplayMarkers = replay; }
RDCDriver GetFrameCaptureDriver() { return GetDriverType(); }
void StartFrameCapture(void *dev, void *wnd);
bool EndFrameCapture(void *dev, void *wnd);
bool DiscardFrameCapture(void *dev, void *wnd);
+1
View File
@@ -826,6 +826,7 @@ private:
bool IsDrawInRenderPass();
RDCDriver GetFrameCaptureDriver() { return RDCDriver::Vulkan; }
void StartFrameCapture(void *dev, void *wnd);
bool EndFrameCapture(void *dev, void *wnd);
bool DiscardFrameCapture(void *dev, void *wnd);