mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-10-03 02:47:47 +00:00
Free shader debugger in replay driver so it's proxied correctly
This commit is contained in:
@@ -95,6 +95,7 @@ rdcstr DoStringise(const ReplayProxyPacket &el)
|
||||
STRINGISE_ENUM_NAMED(eReplayProxy_GetDriverInfo, "GetDriverInfo");
|
||||
|
||||
STRINGISE_ENUM_NAMED(eReplayProxy_ContinueDebug, "ContinueDebug");
|
||||
STRINGISE_ENUM_NAMED(eReplayProxy_FreeDebugger, "FreeDebugger");
|
||||
}
|
||||
END_ENUM_STRINGISE();
|
||||
}
|
||||
@@ -1601,6 +1602,35 @@ rdcarray<ShaderDebugState> ReplayProxy::ContinueDebug(ShaderDebugger *debugger)
|
||||
PROXY_FUNCTION(ContinueDebug, debugger);
|
||||
}
|
||||
|
||||
template <typename ParamSerialiser, typename ReturnSerialiser>
|
||||
void ReplayProxy::Proxied_FreeDebugger(ParamSerialiser ¶mser, ReturnSerialiser &retser,
|
||||
ShaderDebugger *debugger)
|
||||
{
|
||||
const ReplayProxyPacket expectedPacket = eReplayProxy_FreeDebugger;
|
||||
ReplayProxyPacket packet = eReplayProxy_FreeDebugger;
|
||||
|
||||
{
|
||||
BEGIN_PARAMS();
|
||||
uint64_t debugger_ptr = (uint64_t)(uintptr_t)debugger;
|
||||
SERIALISE_ELEMENT(debugger_ptr);
|
||||
debugger = (ShaderDebugger *)(uintptr_t)debugger_ptr;
|
||||
END_PARAMS();
|
||||
}
|
||||
|
||||
{
|
||||
REMOTE_EXECUTION();
|
||||
if(paramser.IsReading() && !paramser.IsErrored() && !m_IsErrored)
|
||||
m_Remote->FreeDebugger(debugger);
|
||||
}
|
||||
|
||||
CheckError(packet, expectedPacket);
|
||||
}
|
||||
|
||||
void ReplayProxy::FreeDebugger(ShaderDebugger *debugger)
|
||||
{
|
||||
PROXY_FUNCTION(FreeDebugger, debugger);
|
||||
}
|
||||
|
||||
template <typename ParamSerialiser, typename ReturnSerialiser>
|
||||
void ReplayProxy::Proxied_SavePipelineState(ParamSerialiser ¶mser, ReturnSerialiser &retser,
|
||||
uint32_t eventId)
|
||||
@@ -2790,6 +2820,7 @@ bool ReplayProxy::Tick(int type)
|
||||
break;
|
||||
}
|
||||
case eReplayProxy_ContinueDebug: ContinueDebug(NULL); break;
|
||||
case eReplayProxy_FreeDebugger: FreeDebugger(NULL); break;
|
||||
case eReplayProxy_RenderOverlay:
|
||||
RenderOverlay(ResourceId(), Subresource(), CompType::Typeless, FloatVector(),
|
||||
DebugOverlay::NoOverlay, 0, rdcarray<uint32_t>());
|
||||
|
||||
Reference in New Issue
Block a user