Add a function to enumerate which GPUs are available at replay time

This commit is contained in:
baldurk
2019-08-27 18:51:56 +01:00
parent d81331918e
commit 878acd4ad9
21 changed files with 460 additions and 0 deletions
+30
View File
@@ -324,6 +324,35 @@ DriverInformation ReplayProxy::GetDriverInfo()
PROXY_FUNCTION(GetDriverInfo);
}
template <typename ParamSerialiser, typename ReturnSerialiser>
rdcarray<GPUDevice> ReplayProxy::Proxied_GetAvailableGPUs(ParamSerialiser &paramser,
ReturnSerialiser &retser)
{
const ReplayProxyPacket expectedPacket = eReplayProxy_GetAvailableGPUs;
ReplayProxyPacket packet = eReplayProxy_GetAvailableGPUs;
rdcarray<GPUDevice> ret = {};
{
BEGIN_PARAMS();
END_PARAMS();
}
{
REMOTE_EXECUTION();
if(paramser.IsReading() && !paramser.IsErrored() && !m_IsErrored)
ret = m_Remote->GetAvailableGPUs();
}
SERIALISE_RETURN(ret);
return ret;
}
rdcarray<GPUDevice> ReplayProxy::GetAvailableGPUs()
{
PROXY_FUNCTION(GetAvailableGPUs);
}
template <typename ParamSerialiser, typename ReturnSerialiser>
std::vector<DebugMessage> ReplayProxy::Proxied_GetDebugMessages(ParamSerialiser &paramser,
ReturnSerialiser &retser)
@@ -2663,6 +2692,7 @@ bool ReplayProxy::Tick(int type)
case eReplayProxy_GetDisassemblyTargets: GetDisassemblyTargets(); break;
case eReplayProxy_GetTargetShaderEncodings: GetTargetShaderEncodings(); break;
case eReplayProxy_GetDriverInfo: GetDriverInfo(); break;
case eReplayProxy_GetAvailableGPUs: GetAvailableGPUs(); break;
default: RDCERR("Unexpected command %u", type); return false;
}