mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-08-13 18:21:01 +00:00
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:
+27
-3
@@ -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())
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user