Allow specifying a listen interface and port, for remote replaying

This commit is contained in:
baldurk
2016-07-12 15:56:56 +02:00
parent aaa2bd1d7d
commit 73dc89f25a
8 changed files with 44 additions and 20 deletions
+6 -2
View File
@@ -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.
+1 -1
View File
@@ -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; }
+7 -4
View File
@@ -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;
+15 -2
View File
@@ -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);
}
+1 -1
View File
@@ -169,7 +169,7 @@ namespace renderdocui.Code
return;
}
remote = StaticExports.CreateRemoteReplayConnection(m_ReplayHost);
remote = StaticExports.CreateRemoteReplayConnection(m_ReplayHost, 0);
if(remote == null)
{
+10 -6
View File
@@ -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();
}
+3 -3
View File
@@ -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();