mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-04 17:10:47 +00:00
Allow specifying a listen interface and port, for remote replaying
This commit is contained in:
@@ -512,9 +512,13 @@ extern "C" RENDERDOC_API RemoteAccess *RENDERDOC_CC RENDERDOC_CreateRemoteAccess
|
||||
const char *host, uint32_t ident, const char *clientName, bool32 forceConnection);
|
||||
extern "C" RENDERDOC_API uint32_t RENDERDOC_CC
|
||||
RENDERDOC_EnumerateRemoteConnections(const char *host, uint32_t nextIdent);
|
||||
|
||||
extern "C" RENDERDOC_API uint32_t RENDERDOC_CC RENDERDOC_DefaultReplayHostPort();
|
||||
extern "C" RENDERDOC_API ReplayCreateStatus RENDERDOC_CC
|
||||
RENDERDOC_CreateRemoteReplayConnection(const char *host, RemoteRenderer **rend);
|
||||
extern "C" RENDERDOC_API void RENDERDOC_CC RENDERDOC_SpawnReplayHost(volatile bool32 *killReplay);
|
||||
RENDERDOC_CreateRemoteReplayConnection(const char *host, uint32_t port, RemoteRenderer **rend);
|
||||
extern "C" RENDERDOC_API void RENDERDOC_CC RENDERDOC_SpawnReplayHost(const char *listenhost,
|
||||
uint32_t port,
|
||||
volatile bool32 *killReplay);
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Injection/execution capture functions.
|
||||
|
||||
@@ -191,7 +191,7 @@ public:
|
||||
bool IsReplayApp() const { return m_Replay; }
|
||||
const string &GetConfigSetting(string name) { return m_ConfigSettings[name]; }
|
||||
void SetConfigSetting(string name, string value) { m_ConfigSettings[name] = value; }
|
||||
void BecomeReplayHost(volatile uint32_t &killReplay);
|
||||
void BecomeReplayHost(const char *listenhost, uint16_t port, volatile uint32_t &killReplay);
|
||||
|
||||
void SetCaptureOptions(const CaptureOptions &opts);
|
||||
const CaptureOptions &GetCaptureOptions() const { return m_Options; }
|
||||
|
||||
@@ -70,9 +70,9 @@ static void ProgressTicker(void *d)
|
||||
}
|
||||
}
|
||||
|
||||
void RenderDoc::BecomeReplayHost(volatile bool32 &killReplay)
|
||||
void RenderDoc::BecomeReplayHost(const char *listenhost, uint16_t port, volatile bool32 &killReplay)
|
||||
{
|
||||
Network::Socket *sock = Network::CreateServerSocket("0.0.0.0", RenderDoc_ReplayNetworkPort, 1);
|
||||
Network::Socket *sock = Network::CreateServerSocket(listenhost, port, 1);
|
||||
|
||||
if(sock == NULL)
|
||||
return;
|
||||
@@ -429,7 +429,7 @@ RemoteRenderer_CreateProxyRenderer(RemoteRenderer *remote, uint32_t proxyid, con
|
||||
}
|
||||
|
||||
extern "C" RENDERDOC_API ReplayCreateStatus RENDERDOC_CC
|
||||
RENDERDOC_CreateRemoteReplayConnection(const char *host, RemoteRenderer **rend)
|
||||
RENDERDOC_CreateRemoteReplayConnection(const char *host, uint32_t port, RemoteRenderer **rend)
|
||||
{
|
||||
if(rend == NULL)
|
||||
return eReplayCreate_InternalError;
|
||||
@@ -438,11 +438,14 @@ RENDERDOC_CreateRemoteReplayConnection(const char *host, RemoteRenderer **rend)
|
||||
if(host != NULL && host[0] != '\0')
|
||||
s = host;
|
||||
|
||||
if(port == 0)
|
||||
port = RENDERDOC_DefaultReplayHostPort();
|
||||
|
||||
Network::Socket *sock = NULL;
|
||||
|
||||
if(s != "-")
|
||||
{
|
||||
sock = Network::CreateClientSocket(s.c_str(), RenderDoc_ReplayNetworkPort, 3000);
|
||||
sock = Network::CreateClientSocket(s.c_str(), (uint16_t)port, 3000);
|
||||
|
||||
if(sock == NULL)
|
||||
return eReplayCreate_NetworkIOFailed;
|
||||
|
||||
@@ -454,12 +454,25 @@ extern "C" RENDERDOC_API uint32_t RENDERDOC_CC RENDERDOC_EnumerateRemoteConnecti
|
||||
return ~0U;
|
||||
}
|
||||
|
||||
extern "C" RENDERDOC_API void RENDERDOC_CC RENDERDOC_SpawnReplayHost(volatile bool32 *killReplay)
|
||||
extern "C" RENDERDOC_API uint32_t RENDERDOC_CC RENDERDOC_DefaultReplayHostPort()
|
||||
{
|
||||
return RenderDoc_ReplayNetworkPort;
|
||||
}
|
||||
|
||||
extern "C" RENDERDOC_API void RENDERDOC_CC RENDERDOC_SpawnReplayHost(const char *listenhost,
|
||||
uint32_t port,
|
||||
volatile bool32 *killReplay)
|
||||
{
|
||||
bool32 dummy = false;
|
||||
|
||||
if(killReplay == NULL)
|
||||
killReplay = &dummy;
|
||||
|
||||
RenderDoc::Inst().BecomeReplayHost(*killReplay);
|
||||
if(listenhost == NULL || listenhost[0] == 0)
|
||||
listenhost = "0.0.0.0";
|
||||
|
||||
if(port == 0)
|
||||
port = RENDERDOC_DefaultReplayHostPort();
|
||||
|
||||
RenderDoc::Inst().BecomeReplayHost(listenhost, (uint16_t)port, *killReplay);
|
||||
}
|
||||
|
||||
@@ -169,7 +169,7 @@ namespace renderdocui.Code
|
||||
return;
|
||||
}
|
||||
|
||||
remote = StaticExports.CreateRemoteReplayConnection(m_ReplayHost);
|
||||
remote = StaticExports.CreateRemoteReplayConnection(m_ReplayHost, 0);
|
||||
|
||||
if(remote == null)
|
||||
{
|
||||
|
||||
@@ -54,13 +54,13 @@ namespace renderdoc
|
||||
private static extern UInt32 RENDERDOC_EnumerateRemoteConnections(IntPtr host, UInt32 nextIdent);
|
||||
|
||||
[DllImport("renderdoc.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||
private static extern ReplayCreateStatus RENDERDOC_CreateRemoteReplayConnection(IntPtr host, ref IntPtr outrend);
|
||||
private static extern ReplayCreateStatus RENDERDOC_CreateRemoteReplayConnection(IntPtr host, UInt32 port, ref IntPtr outrend);
|
||||
|
||||
[DllImport("renderdoc.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||
private static extern void RENDERDOC_GetDefaultCaptureOptions(IntPtr outopts);
|
||||
|
||||
[DllImport("renderdoc.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||
private static extern void RENDERDOC_SpawnReplayHost(ref bool killReplay);
|
||||
private static extern void RENDERDOC_SpawnReplayHost(IntPtr host, UInt32 port, ref bool killReplay);
|
||||
|
||||
[DllImport("renderdoc.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||
private static extern void RENDERDOC_TriggerExceptionHandler(IntPtr exceptionPtrs, bool crashed);
|
||||
@@ -202,13 +202,13 @@ namespace renderdoc
|
||||
CustomMarshal.Free(host_mem);
|
||||
}
|
||||
|
||||
public static RemoteRenderer CreateRemoteReplayConnection(string host)
|
||||
public static RemoteRenderer CreateRemoteReplayConnection(string host, uint port)
|
||||
{
|
||||
IntPtr rendPtr = IntPtr.Zero;
|
||||
|
||||
IntPtr host_mem = CustomMarshal.MakeUTF8String(host);
|
||||
|
||||
ReplayCreateStatus ret = RENDERDOC_CreateRemoteReplayConnection(host_mem, ref rendPtr);
|
||||
ReplayCreateStatus ret = RENDERDOC_CreateRemoteReplayConnection(host_mem, port, ref rendPtr);
|
||||
|
||||
CustomMarshal.Free(host_mem);
|
||||
|
||||
@@ -222,9 +222,13 @@ namespace renderdoc
|
||||
return new RemoteRenderer(rendPtr);
|
||||
}
|
||||
|
||||
public static void SpawnReplayHost(ref bool killReplay)
|
||||
public static void SpawnReplayHost(string host, uint port, ref bool killReplay)
|
||||
{
|
||||
RENDERDOC_SpawnReplayHost(ref killReplay);
|
||||
IntPtr host_mem = CustomMarshal.MakeUTF8String(host);
|
||||
|
||||
RENDERDOC_SpawnReplayHost(host_mem, port, ref killReplay);
|
||||
|
||||
CustomMarshal.Free(host_mem);
|
||||
}
|
||||
|
||||
public static void TriggerExceptionHandler(IntPtr exceptionPtrs, bool crashed)
|
||||
|
||||
@@ -62,7 +62,7 @@ namespace renderdocui.Windows.Dialogs
|
||||
string[] proxies = new string[0];
|
||||
try
|
||||
{
|
||||
var dummy = StaticExports.CreateRemoteReplayConnection("-");
|
||||
var dummy = StaticExports.CreateRemoteReplayConnection("-", 0);
|
||||
proxies = dummy.LocalProxies();
|
||||
dummy.Shutdown();
|
||||
}
|
||||
|
||||
@@ -673,7 +673,7 @@ namespace renderdocui.Windows
|
||||
string[] drivers = new string[0];
|
||||
try
|
||||
{
|
||||
var dummy = StaticExports.CreateRemoteReplayConnection(m_RemoteReplay);
|
||||
var dummy = StaticExports.CreateRemoteReplayConnection(m_RemoteReplay, 0);
|
||||
drivers = dummy.RemoteSupportedReplays();
|
||||
dummy.Shutdown();
|
||||
}
|
||||
@@ -708,7 +708,7 @@ namespace renderdocui.Windows
|
||||
string[] proxies = new string[0];
|
||||
try
|
||||
{
|
||||
var dummy = StaticExports.CreateRemoteReplayConnection("-");
|
||||
var dummy = StaticExports.CreateRemoteReplayConnection("-", 0);
|
||||
proxies = dummy.LocalProxies();
|
||||
dummy.Shutdown();
|
||||
}
|
||||
@@ -1498,7 +1498,7 @@ namespace renderdocui.Windows
|
||||
|
||||
Thread thread = Helpers.NewThread(new ThreadStart(() =>
|
||||
{
|
||||
StaticExports.SpawnReplayHost(ref killReplay);
|
||||
StaticExports.SpawnReplayHost("", 0, ref killReplay);
|
||||
}));
|
||||
|
||||
thread.Start();
|
||||
|
||||
Reference in New Issue
Block a user