mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-09-27 16:15:49 +00:00
Save machine ident in captures and compare to machine ident on open
* If the machine idents differ in significant ways that we'd consider it to be a different platform (currently just OS), and if so mark it as supported but suggested to be replayed remotely.
This commit is contained in:
@@ -315,20 +315,38 @@ extern "C" RENDERDOC_API void RENDERDOC_CC RENDERDOC_TriggerExceptionHandler(voi
|
||||
}
|
||||
}
|
||||
|
||||
extern "C" RENDERDOC_API bool32 RENDERDOC_CC RENDERDOC_SupportLocalReplay(const char *logfile,
|
||||
rdctype::str *driver)
|
||||
extern "C" RENDERDOC_API ReplaySupport RENDERDOC_CC RENDERDOC_SupportLocalReplay(
|
||||
const char *logfile, rdctype::str *driver, rdctype::str *recordMachineIdent)
|
||||
{
|
||||
if(logfile == NULL)
|
||||
return false;
|
||||
return eReplaySupport_Unsupported;
|
||||
|
||||
RDCDriver driverType = RDC_Unknown;
|
||||
string driverName = "";
|
||||
RenderDoc::Inst().FillInitParams(logfile, driverType, driverName, NULL);
|
||||
uint64_t fileMachineIdent = 0;
|
||||
RenderDoc::Inst().FillInitParams(logfile, driverType, driverName, fileMachineIdent, NULL);
|
||||
|
||||
if(driver)
|
||||
*driver = driverName;
|
||||
|
||||
return RenderDoc::Inst().HasReplayDriver(driverType);
|
||||
bool supported = RenderDoc::Inst().HasReplayDriver(driverType);
|
||||
|
||||
if(!supported)
|
||||
return eReplaySupport_Unsupported;
|
||||
|
||||
if(fileMachineIdent != 0)
|
||||
{
|
||||
uint64_t machineIdent = OSUtility::GetMachineIdent();
|
||||
|
||||
if(recordMachineIdent)
|
||||
*recordMachineIdent = OSUtility::MakeMachineIdentString(fileMachineIdent);
|
||||
|
||||
if((machineIdent & OSUtility::MachineIdent_OS_Mask) !=
|
||||
(fileMachineIdent & OSUtility::MachineIdent_OS_Mask))
|
||||
return eReplaySupport_SuggestRemote;
|
||||
}
|
||||
|
||||
return eReplaySupport_Supported;
|
||||
}
|
||||
|
||||
extern "C" RENDERDOC_API ReplayCreateStatus RENDERDOC_CC
|
||||
|
||||
@@ -1552,7 +1552,9 @@ ReplayCreateStatus ReplayRenderer::CreateDevice(const char *logfile)
|
||||
|
||||
RDCDriver driverType = RDC_Unknown;
|
||||
string driverName = "";
|
||||
auto status = RenderDoc::Inst().FillInitParams(logfile, driverType, driverName, NULL);
|
||||
uint64_t fileMachineIdent = 0;
|
||||
auto status =
|
||||
RenderDoc::Inst().FillInitParams(logfile, driverType, driverName, fileMachineIdent, NULL);
|
||||
|
||||
if(driverType == RDC_Unknown || driverName == "" || status != eReplayCreate_Success)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user