From e21ddb48773942459807eceb43483bda36ce324a Mon Sep 17 00:00:00 2001 From: Aliya Pazylbekova Date: Tue, 18 Jun 2019 16:28:03 -0400 Subject: [PATCH] Set analytics APIs for remote capture file and replay The API used was not populated for the case of remote capture and replay. --- qrenderdoc/Code/CaptureContext.cpp | 5 +++ qrenderdoc/Windows/MainWindow.cpp | 6 +--- renderdoc/api/replay/renderdoc_replay.h | 14 ++++----- renderdoc/core/remote_server.cpp | 42 +++++++++++++++++++++++++ renderdoc/replay/capture_file.cpp | 2 +- 5 files changed, 56 insertions(+), 13 deletions(-) diff --git a/qrenderdoc/Code/CaptureContext.cpp b/qrenderdoc/Code/CaptureContext.cpp index c7cd5c1ee..f550723f8 100644 --- a/qrenderdoc/Code/CaptureContext.cpp +++ b/qrenderdoc/Code/CaptureContext.cpp @@ -939,6 +939,11 @@ void CaptureContext::LoadCaptureThreaded(const QString &captureFile, const QStri bytebuf buf = access->GetSectionContents(idx); LoadNotes(QString::fromUtf8((const char *)buf.data(), buf.count())); } + QString driver = access->DriverName(); + if(!driver.isEmpty()) + { + ANALYTIC_ADDUNIQ(APIs, driver); + } } m_LoadInProgress = false; diff --git a/qrenderdoc/Windows/MainWindow.cpp b/qrenderdoc/Windows/MainWindow.cpp index d6ff09394..8c1d3430c 100644 --- a/qrenderdoc/Windows/MainWindow.cpp +++ b/qrenderdoc/Windows/MainWindow.cpp @@ -663,7 +663,7 @@ void MainWindow::LoadCapture(const QString &filename, bool temporary, bool local return; } - driver = QString::fromUtf8(file->DriverName()); + driver = file->DriverName(); machineIdent = QString::fromUtf8(file->RecordedMachineIdent()); support = file->LocalReplaySupport(); @@ -796,10 +796,6 @@ void MainWindow::LoadCapture(const QString &filename, bool temporary, bool local { ANALYTIC_SET(UIFeatures.ImageViewer, true); } - else if(!driver.isEmpty()) - { - ANALYTIC_ADDUNIQ(APIs, driver); - } m_Ctx.LoadCapture(fileToLoad, origFilename, temporary, local); } diff --git a/renderdoc/api/replay/renderdoc_replay.h b/renderdoc/api/replay/renderdoc_replay.h index 472331607..1c74c8ffc 100644 --- a/renderdoc/api/replay/renderdoc_replay.h +++ b/renderdoc/api/replay/renderdoc_replay.h @@ -1532,6 +1532,13 @@ Must only be called after :meth:`InitResolver` has returned ``True``. )"); virtual rdcarray GetResolve(const rdcarray &callstack) = 0; + DOCUMENT(R"(Retrieves the name of the driver that was used to create this capture. + +:return: A simple string identifying the driver used to make the capture. +:rtype: ``str`` +)"); + virtual rdcstr DriverName() = 0; + protected: ICaptureAccess() = default; ~ICaptureAccess() = default; @@ -1797,13 +1804,6 @@ replay support. )"); virtual ReplaySupport LocalReplaySupport() = 0; - DOCUMENT(R"(Retrieves the name of the driver that was used to create this capture. - -:return: A simple string identifying the driver used to make the capture. -:rtype: ``str`` -)"); - virtual const char *DriverName() = 0; - DOCUMENT(R"(Retrieves the identifying string describing what type of machine created this capture. :return: A string identifying the machine ident used to make the capture. diff --git a/renderdoc/core/remote_server.cpp b/renderdoc/core/remote_server.cpp index 37d1b5119..c63c31cc6 100644 --- a/renderdoc/core/remote_server.cpp +++ b/renderdoc/core/remote_server.cpp @@ -63,6 +63,7 @@ enum RemoteServerPacket eRemoteServer_ListDir, eRemoteServer_ExecuteAndInject, eRemoteServer_ShutdownServer, + eRemoteServer_GetDriverName, eRemoteServer_GetSectionCount, eRemoteServer_FindSectionByName, eRemoteServer_FindSectionByType, @@ -584,6 +585,17 @@ static void ActiveRemoteClientThread(ClientThread *threadData, SERIALISE_ELEMENT(StackFrames); } } + else if(type == eRemoteServer_GetDriverName) + { + reader.EndChunk(); + + std::string driver = rdc ? rdc->GetDriverName() : ""; + { + WRITE_DATA_SCOPE(); + SCOPED_SERIALISE_CHUNK(eRemoteServer_GetDriverName); + SERIALISE_ELEMENT(driver); + } + } else if(type == eRemoteServer_GetSectionCount) { reader.EndChunk(); @@ -1631,6 +1643,36 @@ public: rend->Shutdown(); } + rdcstr DriverName() + { + if(!Connected()) + return 0; + { + WRITE_DATA_SCOPE(); + SCOPED_SERIALISE_CHUNK(eRemoteServer_GetDriverName); + } + + std::string driverName = ""; + + { + READ_DATA_SCOPE(); + RemoteServerPacket type = ser.ReadChunk(); + + if(type == eRemoteServer_GetDriverName) + { + SERIALISE_ELEMENT(driverName); + } + else + { + RDCERR("Unexpected response to GetDriverName"); + } + + ser.EndChunk(); + } + + return driverName; + } + int GetSectionCount() { if(!Connected()) diff --git a/renderdoc/replay/capture_file.cpp b/renderdoc/replay/capture_file.cpp index 02e8a6cf6..eaaa067ae 100644 --- a/renderdoc/replay/capture_file.cpp +++ b/renderdoc/replay/capture_file.cpp @@ -120,7 +120,7 @@ public: rdcstr ErrorString() { return m_ErrorString; } void Shutdown() { delete this; } ReplaySupport LocalReplaySupport() { return m_Support; } - const char *DriverName() { return m_DriverName.c_str(); } + rdcstr DriverName() { return m_DriverName; } const char *RecordedMachineIdent() { return m_Ident.c_str(); } rdcpair OpenCapture(RENDERDOC_ProgressCallback progress);