Rename RenderManager to ReplayManager

This commit is contained in:
baldurk
2017-04-07 16:20:18 +01:00
parent e3ef56b5a0
commit 494086f40d
22 changed files with 138 additions and 140 deletions
+3 -3
View File
@@ -31,7 +31,7 @@
#include <QString>
#include <QtWidgets/QWidget>
#include "Interface/QRDInterface.h"
#include "RenderManager.h"
#include "ReplayManager.h"
#if defined(RENDERDOC_PLATFORM_LINUX)
#include <QX11Info>
@@ -87,7 +87,7 @@ public:
//////////////////////////////////////////////////////////////////////////////
// Accessors
RenderManager &Renderer() override { return m_Renderer; }
ReplayManager &Replay() override { return m_Renderer; }
bool LogLoaded() override { return m_LogLoaded; }
bool IsLogLocal() override { return m_LogLocal; }
bool LogLoading() override { return m_LoadInProgress; }
@@ -181,7 +181,7 @@ public:
CommonPipelineState &CurPipelineState() override { return m_CurPipelineState; }
PersistantConfig &Config() override { return m_Config; }
private:
RenderManager m_Renderer;
ReplayManager m_Renderer;
D3D11Pipe::State m_CurD3D11PipelineState;
D3D12Pipe::State m_CurD3D12PipelineState;
+5 -5
View File
@@ -256,7 +256,7 @@ protected:
DECLARE_REFLECTION_STRUCT(ILogViewerForm);
struct IRenderManager
struct IReplayManager
{
typedef std::function<void(IReplayController *)> InvokeMethod;
typedef std::function<void(const rdctype::str &, const rdctype::array<PathEntry> &)> DirectoryBrowseMethod;
@@ -291,11 +291,11 @@ struct IRenderManager
QWidget *window) = 0;
protected:
IRenderManager() = default;
~IRenderManager() = default;
IReplayManager() = default;
~IReplayManager() = default;
};
DECLARE_REFLECTION_STRUCT(IRenderManager);
DECLARE_REFLECTION_STRUCT(IReplayManager);
// should match ToolWindowManager::AreaReferenceType
enum class DockReference : int
@@ -335,7 +335,7 @@ struct ICaptureContext
//////////////////////////////////////////////////////////////////////////////
// Accessors
virtual IRenderManager &Renderer() = 0;
virtual IReplayManager &Replay() = 0;
virtual bool LogLoaded() = 0;
virtual bool IsLogLocal() = 0;
virtual bool LogLoading() = 0;
@@ -22,24 +22,24 @@
* THE SOFTWARE.
******************************************************************************/
#include "RenderManager.h"
#include "ReplayManager.h"
#include <QApplication>
#include <QMutexLocker>
#include <QProgressDialog>
#include "CaptureContext.h"
#include "QRDUtils.h"
RenderManager::RenderManager()
ReplayManager::ReplayManager()
{
m_Running = false;
m_Thread = NULL;
}
RenderManager::~RenderManager()
ReplayManager::~ReplayManager()
{
}
void RenderManager::OpenCapture(const QString &logfile, float *progress)
void ReplayManager::OpenCapture(const QString &logfile, float *progress)
{
if(m_Running)
return;
@@ -59,7 +59,7 @@ void RenderManager::OpenCapture(const QString &logfile, float *progress)
}
}
void RenderManager::DeleteCapture(const QString &logfile, bool local)
void ReplayManager::DeleteCapture(const QString &logfile, bool local)
{
if(IsRunning())
{
@@ -83,7 +83,7 @@ void RenderManager::DeleteCapture(const QString &logfile, bool local)
}
}
QStringList RenderManager::GetRemoteSupport()
QStringList ReplayManager::GetRemoteSupport()
{
QStringList ret;
@@ -99,7 +99,7 @@ QStringList RenderManager::GetRemoteSupport()
return ret;
}
void RenderManager::GetHomeFolder(bool synchronous, DirectoryBrowseMethod cb)
void ReplayManager::GetHomeFolder(bool synchronous, DirectoryBrowseMethod cb)
{
if(!m_Remote)
return;
@@ -127,7 +127,7 @@ void RenderManager::GetHomeFolder(bool synchronous, DirectoryBrowseMethod cb)
cb(home.c_str(), rdctype::array<PathEntry>());
}
bool RenderManager::ListFolder(QString path, bool synchronous, DirectoryBrowseMethod cb)
bool ReplayManager::ListFolder(QString path, bool synchronous, DirectoryBrowseMethod cb)
{
if(!m_Remote)
return false;
@@ -160,7 +160,7 @@ bool RenderManager::ListFolder(QString path, bool synchronous, DirectoryBrowseMe
return true;
}
QString RenderManager::CopyCaptureToRemote(const QString &localpath, QWidget *window)
QString ReplayManager::CopyCaptureToRemote(const QString &localpath, QWidget *window)
{
if(!m_Remote)
return "";
@@ -188,13 +188,13 @@ QString RenderManager::CopyCaptureToRemote(const QString &localpath, QWidget *wi
thread->start();
}
ShowProgressDialog(window, QApplication::translate("RenderManager", "Transferring..."),
ShowProgressDialog(window, QApplication::translate("ReplayManager", "Transferring..."),
[&copied]() { return copied; }, [&progress]() { return progress; });
return remotepath;
}
void RenderManager::CopyCaptureFromRemote(const QString &remotepath, const QString &localpath,
void ReplayManager::CopyCaptureFromRemote(const QString &remotepath, const QString &localpath,
QWidget *window)
{
if(!m_Remote)
@@ -221,16 +221,16 @@ void RenderManager::CopyCaptureFromRemote(const QString &remotepath, const QStri
thread->start();
}
ShowProgressDialog(window, QApplication::translate("RenderManager", "Transferring..."),
ShowProgressDialog(window, QApplication::translate("ReplayManager", "Transferring..."),
[&copied]() { return copied; }, [&progress]() { return progress; });
}
bool RenderManager::IsRunning()
bool ReplayManager::IsRunning()
{
return m_Thread && m_Thread->isRunning() && m_Running;
}
void RenderManager::AsyncInvoke(const QString &tag, RenderManager::InvokeMethod m)
void ReplayManager::AsyncInvoke(const QString &tag, ReplayManager::InvokeMethod m)
{
{
QMutexLocker autolock(&m_RenderLock);
@@ -255,7 +255,7 @@ void RenderManager::AsyncInvoke(const QString &tag, RenderManager::InvokeMethod
PushInvoke(cmd);
}
void RenderManager::AsyncInvoke(RenderManager::InvokeMethod m)
void ReplayManager::AsyncInvoke(ReplayManager::InvokeMethod m)
{
InvokeHandle *cmd = new InvokeHandle(m);
cmd->selfdelete = true;
@@ -263,7 +263,7 @@ void RenderManager::AsyncInvoke(RenderManager::InvokeMethod m)
PushInvoke(cmd);
}
void RenderManager::BlockInvoke(RenderManager::InvokeMethod m)
void ReplayManager::BlockInvoke(ReplayManager::InvokeMethod m)
{
InvokeHandle *cmd = new InvokeHandle(m);
@@ -274,7 +274,7 @@ void RenderManager::BlockInvoke(RenderManager::InvokeMethod m)
delete cmd;
}
void RenderManager::CloseThread()
void ReplayManager::CloseThread()
{
m_Running = false;
@@ -292,7 +292,7 @@ void RenderManager::CloseThread()
m_Thread = NULL;
}
ReplayStatus RenderManager::ConnectToRemoteServer(RemoteHost *host)
ReplayStatus ReplayManager::ConnectToRemoteServer(RemoteHost *host)
{
ReplayStatus status =
RENDERDOC_CreateRemoteServerConnection(host->Hostname.toUtf8().data(), 0, &m_Remote);
@@ -308,7 +308,7 @@ ReplayStatus RenderManager::ConnectToRemoteServer(RemoteHost *host)
return status;
}
void RenderManager::DisconnectFromRemoteServer()
void ReplayManager::DisconnectFromRemoteServer()
{
if(m_RemoteHost)
m_RemoteHost->Connected = false;
@@ -323,7 +323,7 @@ void RenderManager::DisconnectFromRemoteServer()
m_Remote = NULL;
}
void RenderManager::ShutdownServer()
void ReplayManager::ShutdownServer()
{
if(m_Remote)
{
@@ -334,7 +334,7 @@ void RenderManager::ShutdownServer()
m_Remote = NULL;
}
void RenderManager::PingRemote()
void ReplayManager::PingRemote()
{
if(!m_Remote)
return;
@@ -350,7 +350,7 @@ void RenderManager::PingRemote()
}
}
uint32_t RenderManager::ExecuteAndInject(const QString &exe, const QString &workingDir,
uint32_t ReplayManager::ExecuteAndInject(const QString &exe, const QString &workingDir,
const QString &cmdLine,
const QList<EnvironmentModification> &env,
const QString &logfile, CaptureOptions opts)
@@ -375,7 +375,7 @@ uint32_t RenderManager::ExecuteAndInject(const QString &exe, const QString &work
return ret;
}
void RenderManager::PushInvoke(RenderManager::InvokeHandle *cmd)
void ReplayManager::PushInvoke(ReplayManager::InvokeHandle *cmd)
{
if(m_Thread == NULL || !m_Thread->isRunning() || !m_Running)
{
@@ -391,7 +391,7 @@ void RenderManager::PushInvoke(RenderManager::InvokeHandle *cmd)
m_RenderCondition.wakeAll();
}
void RenderManager::run()
void ReplayManager::run()
{
IReplayController *renderer = NULL;
@@ -42,13 +42,13 @@ class RemoteHost;
// simple helper for the common case of 'we just need to run this on the render thread
#define INVOKE_MEMFN(function) \
m_Ctx.Renderer().AsyncInvoke([this](IReplayController *r) { function(r); });
m_Ctx.Replay().AsyncInvoke([this](IReplayController *r) { function(r); });
class RenderManager : public IRenderManager
class ReplayManager : public IReplayManager
{
public:
RenderManager();
~RenderManager();
ReplayManager();
~ReplayManager();
void OpenCapture(const QString &logfile, float *progress);
void DeleteCapture(const QString &logfile, bool local);
+3 -3
View File
@@ -26,7 +26,7 @@ CONTAINER_TYPEMAPS(QMap)
}
// need to ignore the original function and add a helper that releases the python GIL while calling
%ignore IRenderManager::BlockInvoke;
%ignore IReplayManager::BlockInvoke;
// ignore these functions as we don't map QVariantMap to/from python
%ignore EnvironmentModification::toJSON;
@@ -59,9 +59,9 @@ CONTAINER_TYPEMAPS(QMap)
%include "Code/Interface/RemoteHost.h"
// unignore the function from above
%rename("%s") IRenderManager::BlockInvoke;
%rename("%s") IReplayManager::BlockInvoke;
%extend IRenderManager {
%extend IReplayManager {
void BlockInvoke(InvokeMethod m) {
Py_BEGIN_ALLOW_THREADS
$self->BlockInvoke(m);
+1 -1
View File
@@ -90,7 +90,7 @@ void CustomPaintWidget::paintEvent(QPaintEvent *e)
if(m_Ctx)
{
if(m_Output != NULL)
m_Ctx->Renderer().AsyncInvoke([this](IReplayController *r) { m_Output->Display(); });
m_Ctx->Replay().AsyncInvoke([this](IReplayController *r) { m_Output->Display(); });
}
else if(m_Dark == m_Light)
{
+1 -1
View File
@@ -97,7 +97,7 @@ void APIInspector::on_apiEvents_itemSelectionChanged()
if(ev.callstack.count > 0)
{
m_Ctx.Renderer().AsyncInvoke([this, ev](IReplayController *r) {
m_Ctx.Replay().AsyncInvoke([this, ev](IReplayController *r) {
rdctype::array<rdctype::str> trace = r->GetResolve(ev.callstack);
GUIInvoke::call([this, trace]() { addCallstack(trace); });
+4 -4
View File
@@ -1149,7 +1149,7 @@ void BufferViewer::OnLogfileLoaded()
WId renderID = ui->render->winId();
m_Ctx.Renderer().BlockInvoke([renderID, this](IReplayController *r) {
m_Ctx.Replay().BlockInvoke([renderID, this](IReplayController *r) {
m_Output = r->CreateOutput(m_Ctx.CurWindowingSystem(), m_Ctx.FillWindowingData(renderID),
ReplayOutputType::Mesh);
@@ -1223,7 +1223,7 @@ void BufferViewer::OnEventChanged(uint32_t eventID)
guessSecondaryColumn(m_ModelGSOut);
}
m_Ctx.Renderer().AsyncInvoke([this, vsinHoriz, vsoutHoriz, gsoutHoriz](IReplayController *r) {
m_Ctx.Replay().AsyncInvoke([this, vsinHoriz, vsoutHoriz, gsoutHoriz](IReplayController *r) {
if(m_MeshView)
{
@@ -2189,7 +2189,7 @@ void BufferViewer::render_clicked(QMouseEvent *e)
if((e->buttons() & Qt::RightButton) && m_Output)
{
m_Ctx.Renderer().AsyncInvoke("PickVertex", [this, curpos](IReplayController *r) {
m_Ctx.Replay().AsyncInvoke("PickVertex", [this, curpos](IReplayController *r) {
uint32_t instanceSelected = 0;
uint32_t vertSelected = 0;
@@ -2734,7 +2734,7 @@ void BufferViewer::debugVertex()
uint32_t index =
m_CurView->model()->data(m_CurView->model()->index(idx.row(), 1), Qt::DisplayRole).toUInt();
m_Ctx.Renderer().AsyncInvoke([this, vertid, index](IReplayController *r) {
m_Ctx.Replay().AsyncInvoke([this, vertid, index](IReplayController *r) {
ShaderDebugTrace *trace =
r->DebugVertex(vertid, m_Config.curInstance, index, m_Ctx.CurDrawcall()->instanceOffset,
m_Ctx.CurDrawcall()->vertexOffset);
@@ -110,7 +110,7 @@ void ConstantBufferPreviewer::OnEventChanged(uint32_t eventID)
if(!m_formatOverride.empty())
{
m_Ctx.Renderer().AsyncInvoke([this, offs, size](IReplayController *r) {
m_Ctx.Replay().AsyncInvoke([this, offs, size](IReplayController *r) {
rdctype::array<byte> data = r->GetBufferData(m_cbuffer, offs, size);
rdctype::array<ShaderVariable> vars = applyFormatOverride(data);
GUIInvoke::call([this, vars] { setVariables(vars); });
@@ -118,7 +118,7 @@ void ConstantBufferPreviewer::OnEventChanged(uint32_t eventID)
}
else
{
m_Ctx.Renderer().AsyncInvoke([this, entryPoint, offs](IReplayController *r) {
m_Ctx.Replay().AsyncInvoke([this, entryPoint, offs](IReplayController *r) {
rdctype::array<ShaderVariable> vars = r->GetCBufferVariableContents(
m_shader, entryPoint.toUtf8().data(), m_slot, m_cbuffer, offs);
GUIInvoke::call([this, vars] { setVariables(vars); });
+7 -7
View File
@@ -207,7 +207,7 @@ void CaptureDialog::on_exePath_textChanged(const QString &text)
{
QString path = dir.absolutePath();
if(!m_Ctx.Renderer().CurrentRemote())
if(!m_Ctx.Replay().CurrentRemote())
path = QDir::toNativeSeparators(path);
// match the path separators from the path
@@ -395,7 +395,7 @@ void CaptureDialog::on_exePathBrowse_clicked()
QString filename;
if(m_Ctx.Renderer().CurrentRemote())
if(m_Ctx.Replay().CurrentRemote())
{
VirtualFileDialog vfd(m_Ctx, this);
RDDialog::show(&vfd);
@@ -429,7 +429,7 @@ void CaptureDialog::on_workDirBrowse_clicked()
QString dir;
if(m_Ctx.Renderer().CurrentRemote())
if(m_Ctx.Replay().CurrentRemote())
{
VirtualFileDialog vfd(m_Ctx, this);
vfd.setDirBrowse();
@@ -602,12 +602,12 @@ void CaptureDialog::SetExecutableFilename(const QString &filename)
{
QString fn = filename;
if(!m_Ctx.Renderer().CurrentRemote())
if(!m_Ctx.Replay().CurrentRemote())
fn = QDir::toNativeSeparators(QFileInfo(fn).absoluteFilePath());
ui->exePath->setText(fn);
if(!m_Ctx.Renderer().CurrentRemote())
if(!m_Ctx.Replay().CurrentRemote())
{
m_Ctx.Config().LastCapturePath = QFileInfo(fn).absolutePath();
m_Ctx.Config().LastCaptureExe = QFileInfo(fn).completeBaseName();
@@ -716,7 +716,7 @@ void CaptureDialog::TriggerCapture()
QString exe = ui->exePath->text();
// for non-remote captures, check the executable locally
if(!m_Ctx.Renderer().CurrentRemote())
if(!m_Ctx.Replay().CurrentRemote())
{
if(!QFileInfo::exists(exe))
{
@@ -729,7 +729,7 @@ void CaptureDialog::TriggerCapture()
QString workingDir = "";
// for non-remote captures, check the directory locally
if(m_Ctx.Renderer().CurrentRemote())
if(m_Ctx.Replay().CurrentRemote())
{
workingDir = ui->workDirPath->text();
}
@@ -25,7 +25,7 @@
#pragma once
#include <QDialog>
#include "Code/RenderManager.h"
#include "Code/ReplayManager.h"
namespace Ui
{
+14 -16
View File
@@ -305,7 +305,7 @@ void LiveCapture::deleteCapture_triggered()
}
else
{
m_Ctx.Renderer().DeleteCapture(log->path, log->local);
m_Ctx.Replay().DeleteCapture(log->path, log->local);
}
}
}
@@ -564,9 +564,9 @@ bool LiveCapture::checkAllowClose()
// we either have to save or delete the log. Make sure that if it's remote that we are able
// to by having an active connection or replay context on that host.
if(suppressRemoteWarning == false && (!m_Connection || !m_Connection->Connected()) &&
!log->local && (!m_Ctx.Renderer().CurrentRemote() ||
m_Ctx.Renderer().CurrentRemote()->Hostname != m_Hostname ||
!m_Ctx.Renderer().CurrentRemote()->Connected))
!log->local &&
(!m_Ctx.Replay().CurrentRemote() || m_Ctx.Replay().CurrentRemote()->Hostname != m_Hostname ||
!m_Ctx.Replay().CurrentRemote()->Connected))
{
QMessageBox::StandardButton res2 = RDDialog::question(
this, tr("No active replay context"),
@@ -611,9 +611,9 @@ void LiveCapture::openCapture(CaptureLog *log)
{
log->opened = true;
if(!log->local && (!m_Ctx.Renderer().CurrentRemote() ||
m_Ctx.Renderer().CurrentRemote()->Hostname != m_Hostname ||
!m_Ctx.Renderer().CurrentRemote()->Connected))
if(!log->local &&
(!m_Ctx.Replay().CurrentRemote() || m_Ctx.Replay().CurrentRemote()->Hostname != m_Hostname ||
!m_Ctx.Replay().CurrentRemote()->Connected))
{
RDDialog::critical(
this, tr("No active replay context"),
@@ -666,9 +666,8 @@ bool LiveCapture::saveCapture(CaptureLog *log)
}
else
{
if(!m_Ctx.Renderer().CurrentRemote() ||
m_Ctx.Renderer().CurrentRemote()->Hostname != m_Hostname ||
!m_Ctx.Renderer().CurrentRemote()->Connected)
if(!m_Ctx.Replay().CurrentRemote() || m_Ctx.Replay().CurrentRemote()->Hostname != m_Hostname ||
!m_Ctx.Replay().CurrentRemote()->Connected)
{
RDDialog::critical(this, tr("No active replay context"),
tr("This capture is on remote host %1 and there is no active replay "
@@ -679,7 +678,7 @@ bool LiveCapture::saveCapture(CaptureLog *log)
return false;
}
m_Ctx.Renderer().CopyCaptureFromRemote(log->path, path, this);
m_Ctx.Replay().CopyCaptureFromRemote(log->path, path, this);
if(!QFile::exists(path))
{
@@ -688,7 +687,7 @@ bool LiveCapture::saveCapture(CaptureLog *log)
return false;
}
m_Ctx.Renderer().DeleteCapture(log->path, false);
m_Ctx.Replay().DeleteCapture(log->path, false);
}
log->saved = true;
@@ -723,7 +722,7 @@ void LiveCapture::cleanItems()
}
else
{
m_Ctx.Renderer().DeleteCapture(log->path, log->local);
m_Ctx.Replay().DeleteCapture(log->path, log->local);
}
}
}
@@ -877,9 +876,8 @@ void LiveCapture::connectionClosed()
// to this machine as a remote context
if(!log->local)
{
if(!m_Ctx.Renderer().CurrentRemote() ||
m_Ctx.Renderer().CurrentRemote()->Hostname != m_Hostname ||
!m_Ctx.Renderer().CurrentRemote()->Connected)
if(!m_Ctx.Replay().CurrentRemote() || m_Ctx.Replay().CurrentRemote()->Hostname != m_Hostname ||
!m_Ctx.Replay().CurrentRemote()->Connected)
return;
}
+1 -1
View File
@@ -598,7 +598,7 @@ void RemoteManager::on_connect_clicked()
// shut down
if(host->Connected)
{
m_Ctx.Renderer().ShutdownServer();
m_Ctx.Replay().ShutdownServer();
setRemoteServerLive(node, false, false);
}
else
@@ -30,7 +30,7 @@
#include <QRegExp>
#include <QSortFilterProxyModel>
#include "Code/CaptureContext.h"
#include "Code/RenderManager.h"
#include "Code/ReplayManager.h"
#include "Code/Resources.h"
#include "ui_VirtualFileDialog.h"
@@ -48,7 +48,7 @@ public:
FileNameRole,
};
RemoteFileModel(IRenderManager &r, QObject *parent = NULL)
RemoteFileModel(IReplayManager &r, QObject *parent = NULL)
: Renderer(r), QAbstractItemModel(parent)
{
makeIconStates(fileIcon, Pixmaps::page_white_database());
@@ -361,7 +361,7 @@ public:
}
private:
IRenderManager &Renderer;
IReplayManager &Renderer;
QIcon dirIcon[2];
QIcon exeIcon[2];
@@ -556,7 +556,7 @@ VirtualFileDialog::VirtualFileDialog(ICaptureContext &ctx, QWidget *parent)
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
m_Model = new RemoteFileModel(ctx.Renderer(), this);
m_Model = new RemoteFileModel(ctx.Replay(), this);
m_DirProxy = new RemoteFileProxy(this);
m_DirProxy->setSourceModel(m_Model);
+1 -1
View File
@@ -261,7 +261,7 @@ void EventBrowser::on_bookmark_clicked()
void EventBrowser::on_timeDraws_clicked()
{
m_Ctx.Renderer().AsyncInvoke([this](IReplayController *r) {
m_Ctx.Replay().AsyncInvoke([this](IReplayController *r) {
rdctype::array<CounterResult> results = r->FetchCounters({GPUCounter::EventGPUDuration});
+28 -28
View File
@@ -334,7 +334,7 @@ void MainWindow::OnCaptureTrigger(const QString &exe, const QString &workingDir,
LambdaThread *th = new LambdaThread([this, exe, workingDir, cmdLine, env, opts, callback]() {
QString logfile = m_Ctx.TempLogFilename(QFileInfo(exe).baseName());
uint32_t ret = m_Ctx.Renderer().ExecuteAndInject(exe, workingDir, cmdLine, env, logfile, opts);
uint32_t ret = m_Ctx.Replay().ExecuteAndInject(exe, workingDir, cmdLine, env, logfile, opts);
GUIInvoke::call([this, exe, ret, callback]() {
if(ret == 0)
@@ -347,7 +347,7 @@ void MainWindow::OnCaptureTrigger(const QString &exe, const QString &workingDir,
}
LiveCapture *live = new LiveCapture(
m_Ctx, m_Ctx.Renderer().CurrentRemote() ? m_Ctx.Renderer().CurrentRemote()->Hostname : "",
m_Ctx, m_Ctx.Replay().CurrentRemote() ? m_Ctx.Replay().CurrentRemote()->Hostname : "",
ret, this, this);
ShowLiveCapture(live);
callback(live);
@@ -416,7 +416,7 @@ void MainWindow::LoadLogfile(const QString &filename, bool temporary, bool local
ReplaySupport support = ReplaySupport::Unsupported;
bool remoteReplay =
!local || (m_Ctx.Renderer().CurrentRemote() && m_Ctx.Renderer().CurrentRemote()->Connected);
!local || (m_Ctx.Replay().CurrentRemote() && m_Ctx.Replay().CurrentRemote()->Connected);
if(local)
{
@@ -470,7 +470,7 @@ void MainWindow::LoadLogfile(const QString &filename, bool temporary, bool local
}
remoteReplay =
(m_Ctx.Renderer().CurrentRemote() && m_Ctx.Renderer().CurrentRemote()->Connected);
(m_Ctx.Replay().CurrentRemote() && m_Ctx.Replay().CurrentRemote()->Connected);
if(!remoteReplay)
{
@@ -500,7 +500,7 @@ void MainWindow::LoadLogfile(const QString &filename, bool temporary, bool local
{
support = ReplaySupport::Unsupported;
QStringList remoteDrivers = m_Ctx.Renderer().GetRemoteSupport();
QStringList remoteDrivers = m_Ctx.Replay().GetRemoteSupport();
for(const QString &d : remoteDrivers)
{
@@ -521,7 +521,7 @@ void MainWindow::LoadLogfile(const QString &filename, bool temporary, bool local
QString remoteMessage =
tr("This log was captured with %1 and cannot be replayed on %2.\n\n")
.arg(driver)
.arg(m_Ctx.Renderer().CurrentRemote()->Hostname);
.arg(m_Ctx.Replay().CurrentRemote()->Hostname);
remoteMessage += "Try selecting a different remote context in the status bar.";
@@ -545,7 +545,7 @@ void MainWindow::LoadLogfile(const QString &filename, bool temporary, bool local
if(remoteReplay && local)
{
fileToLoad = m_Ctx.Renderer().CopyCaptureToRemote(filename, this);
fileToLoad = m_Ctx.Replay().CopyCaptureToRemote(filename, this);
// deliberately leave local as true so that we keep referring to the locally saved log
@@ -641,7 +641,7 @@ bool MainWindow::PromptSaveLog()
}
else
{
m_Ctx.Renderer().CopyCaptureFromRemote(m_Ctx.LogFilename(), saveFilename, this);
m_Ctx.Replay().CopyCaptureFromRemote(m_Ctx.LogFilename(), saveFilename, this);
success = QFile::exists(saveFilename);
error = tr("File couldn't be transferred from remote host");
@@ -711,7 +711,7 @@ bool MainWindow::PromptCloseLog()
CloseLogfile();
if(!deletepath.isEmpty())
m_Ctx.Renderer().DeleteCapture(deletepath, loglocal);
m_Ctx.Replay().DeleteCapture(deletepath, loglocal);
return true;
}
@@ -735,8 +735,8 @@ void MainWindow::SetTitle(const QString &filename)
prefix += " - ";
}
if(m_Ctx.Renderer().CurrentRemote())
prefix += tr("Remote: %1 - ").arg(m_Ctx.Renderer().CurrentRemote()->Hostname);
if(m_Ctx.Replay().CurrentRemote())
prefix += tr("Remote: %1 - ").arg(m_Ctx.Replay().CurrentRemote()->Hostname);
QString text = prefix + "RenderDoc ";
@@ -966,18 +966,18 @@ void MainWindow::messageCheck()
{
if(m_Ctx.LogLoaded())
{
m_Ctx.Renderer().AsyncInvoke([this](IReplayController *r) {
m_Ctx.Replay().AsyncInvoke([this](IReplayController *r) {
rdctype::array<DebugMessage> msgs = r->GetDebugMessages();
bool disconnected = false;
if(m_Ctx.Renderer().CurrentRemote())
if(m_Ctx.Replay().CurrentRemote())
{
bool prev = m_Ctx.Renderer().CurrentRemote()->ServerRunning;
bool prev = m_Ctx.Replay().CurrentRemote()->ServerRunning;
m_Ctx.Renderer().PingRemote();
m_Ctx.Replay().PingRemote();
if(prev != m_Ctx.Renderer().CurrentRemote()->ServerRunning)
if(prev != m_Ctx.Replay().CurrentRemote()->ServerRunning)
disconnected = true;
}
@@ -992,7 +992,7 @@ void MainWindow::messageCheck()
"RenderDoc to reconnect and load the capture again"));
}
if(m_Ctx.Renderer().CurrentRemote() && !m_Ctx.Renderer().CurrentRemote()->ServerRunning)
if(m_Ctx.Replay().CurrentRemote() && !m_Ctx.Replay().CurrentRemote()->ServerRunning)
contextChooser->setIcon(Icons::cross());
if(!msgs.empty())
@@ -1011,18 +1011,18 @@ void MainWindow::messageCheck()
}
else if(!m_Ctx.LogLoaded() && !m_Ctx.LogLoading())
{
if(m_Ctx.Renderer().CurrentRemote())
m_Ctx.Renderer().PingRemote();
if(m_Ctx.Replay().CurrentRemote())
m_Ctx.Replay().PingRemote();
GUIInvoke::call([this]() {
if(m_Ctx.Renderer().CurrentRemote() && !m_Ctx.Renderer().CurrentRemote()->ServerRunning)
if(m_Ctx.Replay().CurrentRemote() && !m_Ctx.Replay().CurrentRemote()->ServerRunning)
{
contextChooser->setIcon(Icons::cross());
contextChooser->setText(tr("Replay Context: %1").arg("Local"));
statusText->setText(
tr("Remote server disconnected. To attempt to reconnect please select it again."));
m_Ctx.Renderer().DisconnectFromRemoteServer();
m_Ctx.Replay().DisconnectFromRemoteServer();
}
});
}
@@ -1124,7 +1124,7 @@ void MainWindow::switchContext()
live->close();
}
m_Ctx.Renderer().DisconnectFromRemoteServer();
m_Ctx.Replay().DisconnectFromRemoteServer();
if(!host)
{
@@ -1169,7 +1169,7 @@ void MainWindow::switchContext()
if(host->ServerRunning && !host->Busy)
{
status = m_Ctx.Renderer().ConnectToRemoteServer(host);
status = m_Ctx.Replay().ConnectToRemoteServer(host);
}
GUIInvoke::call([this, host, status]() {
@@ -1229,7 +1229,7 @@ void MainWindow::OnLogfileLoaded()
setLogHasErrors(!m_Ctx.DebugMessages().empty());
m_Ctx.Renderer().AsyncInvoke([this](IReplayController *r) {
m_Ctx.Replay().AsyncInvoke([this](IReplayController *r) {
bool hasResolver = r->HasCallstacks();
GUIInvoke::call([this, hasResolver]() {
@@ -1262,12 +1262,12 @@ void MainWindow::OnLogfileClosed()
SetTitle();
// if the remote sever disconnected during log replay, resort back to a 'disconnected' state
if(m_Ctx.Renderer().CurrentRemote() && !m_Ctx.Renderer().CurrentRemote()->ServerRunning)
if(m_Ctx.Replay().CurrentRemote() && !m_Ctx.Replay().CurrentRemote()->ServerRunning)
{
statusText->setText(
tr("Remote server disconnected. To attempt to reconnect please select it again."));
contextChooser->setText(tr("Replay Context: %1").arg("Local"));
m_Ctx.Renderer().DisconnectFromRemoteServer();
m_Ctx.Replay().DisconnectFromRemoteServer();
}
}
@@ -1401,11 +1401,11 @@ void MainWindow::on_action_Statistics_Viewer_triggered()
void MainWindow::on_action_Resolve_Symbols_triggered()
{
m_Ctx.Renderer().AsyncInvoke([this](IReplayController *r) { r->InitResolver(); });
m_Ctx.Replay().AsyncInvoke([this](IReplayController *r) { r->InitResolver(); });
ShowProgressDialog(this, tr("Please Wait - Resolving Symbols"), [this]() {
bool running = true;
m_Ctx.Renderer().BlockInvoke(
m_Ctx.Replay().BlockInvoke(
[&running](IReplayController *r) { running = r->HasCallstacks() && !r->InitResolver(); });
return !running;
});
@@ -324,8 +324,8 @@ void PipelineStateViewer::EditShader(ShaderStage shaderType, ResourceId id,
// invoke off to the ReplayController to replace the log's shader
// with our edited one
ctx->Renderer().AsyncInvoke([ctx, entryFunc, compileSource, shaderType, id, shaderDetails,
viewer](IReplayController *r) {
ctx->Replay().AsyncInvoke([ctx, entryFunc, compileSource, shaderType, id, shaderDetails,
viewer](IReplayController *r) {
rdctype::str errs;
uint flags = shaderDetails->DebugInfo.compileFlags;
@@ -354,7 +354,7 @@ void PipelineStateViewer::EditShader(ShaderStage shaderType, ResourceId id,
[id](ICaptureContext *ctx) {
// remove the replacement on close (we could make this more sophisticated if there
// was a place to control replaced resources/shaders).
ctx->Renderer().AsyncInvoke([ctx, id](IReplayController *r) {
ctx->Replay().AsyncInvoke([ctx, id](IReplayController *r) {
r->RemoveReplacement(id);
GUIInvoke::call([ctx] { ctx->RefreshStatus(); });
});
+1 -1
View File
@@ -639,7 +639,7 @@ void PixelHistoryView::startDebug(EventTag tag)
bool success = false;
m_Ctx.Renderer().BlockInvoke([this, &success, &trace](IReplayController *r) {
m_Ctx.Replay().BlockInvoke([this, &success, &trace](IReplayController *r) {
trace = r->DebugPixel((uint32_t)m_Pixel.x(), (uint32_t)m_Pixel.y(), m_Display.sampleIdx, ~0U);
});
+21 -21
View File
@@ -895,7 +895,7 @@ void TextureViewer::UI_UpdateStatusText()
if(m_Output != NULL)
{
m_Ctx.Renderer().AsyncInvoke([this](IReplayController *) { m_Output->DisablePixelContext(); });
m_Ctx.Replay().AsyncInvoke([this](IReplayController *) { m_Output->DisablePixelContext(); });
}
// PixelPicked = false;
@@ -1285,7 +1285,7 @@ void TextureViewer::UI_OnTextureSelectionChanged(bool newdraw)
if(ui->autoFit->isChecked())
AutoFitRange();
m_Ctx.Renderer().AsyncInvoke([this](IReplayController *r) {
m_Ctx.Replay().AsyncInvoke([this](IReplayController *r) {
RT_UpdateVisualRange(r);
RT_UpdateAndDisplay(r);
@@ -1901,7 +1901,7 @@ void TextureViewer::InitResourcePreview(ResourcePreview *prev, ResourceId id, Co
prev->setResourceName(fullname);
WId handle = prev->thumbWinId();
m_Ctx.Renderer().AsyncInvoke([this, handle, id, typeHint](IReplayController *) {
m_Ctx.Replay().AsyncInvoke([this, handle, id, typeHint](IReplayController *) {
m_Output->AddThumbnail(m_Ctx.CurWindowingSystem(), m_Ctx.FillWindowingData(handle), id,
typeHint);
});
@@ -1920,7 +1920,7 @@ void TextureViewer::InitResourcePreview(ResourcePreview *prev, ResourceId id, Co
prev->setResourceName(fullname);
WId handle = prev->thumbWinId();
m_Ctx.Renderer().AsyncInvoke([this, handle](IReplayController *) {
m_Ctx.Replay().AsyncInvoke([this, handle](IReplayController *) {
m_Output->AddThumbnail(m_Ctx.CurWindowingSystem(), m_Ctx.FillWindowingData(handle),
ResourceId(), CompType::Typeless);
});
@@ -1929,7 +1929,7 @@ void TextureViewer::InitResourcePreview(ResourcePreview *prev, ResourceId id, Co
{
prev->setResourceName("");
WId handle = prev->thumbWinId();
m_Ctx.Renderer().AsyncInvoke([this, handle](IReplayController *) {
m_Ctx.Replay().AsyncInvoke([this, handle](IReplayController *) {
m_Output->AddThumbnail(m_Ctx.CurWindowingSystem(), m_Ctx.FillWindowingData(handle),
ResourceId(), CompType::Typeless);
});
@@ -1947,7 +1947,7 @@ void TextureViewer::InitResourcePreview(ResourcePreview *prev, ResourceId id, Co
prev->setSelected(true);
WId handle = prev->thumbWinId();
m_Ctx.Renderer().AsyncInvoke([this, handle](IReplayController *) {
m_Ctx.Replay().AsyncInvoke([this, handle](IReplayController *) {
m_Output->AddThumbnail(m_Ctx.CurWindowingSystem(), m_Ctx.FillWindowingData(handle),
ResourceId(), CompType::Typeless);
});
@@ -2123,7 +2123,7 @@ void TextureViewer::thumb_clicked(QMouseEvent *e)
}
else
{
m_Ctx.Renderer().AsyncInvoke([this, id](IReplayController *r) {
m_Ctx.Replay().AsyncInvoke([this, id](IReplayController *r) {
rdctype::array<EventUsage> usage = r->GetUsage(id);
GUIInvoke::call([this, id, usage]() { OpenResourceContextMenu(id, usage); });
@@ -2169,13 +2169,13 @@ void TextureViewer::render_mouseMove(QMouseEvent *e)
m_PickedPoint.setX(qBound(0, m_PickedPoint.x(), (int)texptr->width - 1));
m_PickedPoint.setY(qBound(0, m_PickedPoint.y(), (int)texptr->height - 1));
m_Ctx.Renderer().AsyncInvoke("PickPixelClick",
[this](IReplayController *r) { RT_PickPixelsAndUpdate(r); });
m_Ctx.Replay().AsyncInvoke("PickPixelClick",
[this](IReplayController *r) { RT_PickPixelsAndUpdate(r); });
}
else if(e->buttons() == Qt::NoButton)
{
m_Ctx.Renderer().AsyncInvoke("PickPixelHover",
[this](IReplayController *r) { RT_PickHoverAndUpdate(r); });
m_Ctx.Replay().AsyncInvoke("PickPixelHover",
[this](IReplayController *r) { RT_PickHoverAndUpdate(r); });
}
}
}
@@ -2278,7 +2278,7 @@ void TextureViewer::render_keyPress(QKeyEvent *e)
qBound(0, m_PickedPoint.y(), (int)texptr->height - 1));
e->accept();
m_Ctx.Renderer().AsyncInvoke([this](IReplayController *r) {
m_Ctx.Replay().AsyncInvoke([this](IReplayController *r) {
RT_PickPixelsAndUpdate(r);
RT_UpdateAndDisplay(r);
});
@@ -2470,7 +2470,7 @@ void TextureViewer::OnLogfileLoaded()
m_TexDisplay.lightBackgroundColor =
FloatVector(lightBack.redF(), lightBack.greenF(), lightBack.blueF(), 1.0f);
m_Ctx.Renderer().BlockInvoke([renderID, contextID, this](IReplayController *r) {
m_Ctx.Replay().BlockInvoke([renderID, contextID, this](IReplayController *r) {
m_Output = r->CreateOutput(m_Ctx.CurWindowingSystem(), m_Ctx.FillWindowingData(renderID),
ReplayOutputType::Texture);
@@ -2970,7 +2970,7 @@ void TextureViewer::AutoFitRange()
if(!m_Ctx.LogLoaded() || GetCurrentTexture() == NULL || m_Output == NULL)
return;
m_Ctx.Renderer().AsyncInvoke([this](IReplayController *r) {
m_Ctx.Replay().AsyncInvoke([this](IReplayController *r) {
PixelValue min, max;
std::tie(min, max) = m_Output->GetMinMax();
@@ -3241,7 +3241,7 @@ void TextureViewer::on_saveTex_clicked()
if(m_TexDisplay.CustomShader != ResourceId())
{
ResourceId id;
m_Ctx.Renderer().BlockInvoke(
m_Ctx.Replay().BlockInvoke(
[this, &id](IReplayController *r) { id = m_Output->GetCustomShaderTexID(); });
if(id != ResourceId())
@@ -3258,7 +3258,7 @@ void TextureViewer::on_saveTex_clicked()
bool ret = false;
QString fn = saveDialog.filename();
m_Ctx.Renderer().BlockInvoke([this, &ret, config, fn](IReplayController *r) {
m_Ctx.Replay().BlockInvoke([this, &ret, config, fn](IReplayController *r) {
ret = r->SaveTexture(config, fn.toUtf8().data());
});
@@ -3279,7 +3279,7 @@ void TextureViewer::on_debugPixelContext_clicked()
int x = m_PickedPoint.x() >> (int)m_TexDisplay.mip;
int y = m_PickedPoint.y() >> (int)m_TexDisplay.mip;
m_Ctx.Renderer().AsyncInvoke([this, x, y](IReplayController *r) {
m_Ctx.Replay().AsyncInvoke([this, x, y](IReplayController *r) {
ShaderDebugTrace *trace = r->DebugPixel((uint32_t)x, (uint32_t)y, m_TexDisplay.sampleIdx, ~0U);
if(trace->states.count == 0)
@@ -3326,7 +3326,7 @@ void TextureViewer::on_pixelHistory_clicked()
// render thread before we insert the long blocking pixel history task
LambdaThread *thread = new LambdaThread([this, texptr, x, y, hist]() {
QThread::msleep(150);
m_Ctx.Renderer().AsyncInvoke([this, texptr, x, y, hist](IReplayController *r) {
m_Ctx.Replay().AsyncInvoke([this, texptr, x, y, hist](IReplayController *r) {
rdctype::array<PixelModification> history =
r->PixelHistory(texptr->ID, (uint32_t)x, (int32_t)y, m_TexDisplay.sliceFace,
m_TexDisplay.mip, m_TexDisplay.sampleIdx, m_TexDisplay.typeHint);
@@ -3402,7 +3402,7 @@ void TextureViewer::reloadCustomShaders(const QString &filter)
QList<ResourceId> shaders = m_CustomShaders.values();
m_Ctx.Renderer().AsyncInvoke([shaders](IReplayController *r) {
m_Ctx.Replay().AsyncInvoke([shaders](IReplayController *r) {
for(ResourceId s : shaders)
r->FreeCustomShader(s);
});
@@ -3423,7 +3423,7 @@ void TextureViewer::reloadCustomShaders(const QString &filter)
return;
ResourceId freed = m_CustomShaders[key];
m_Ctx.Renderer().AsyncInvoke([freed](IReplayController *r) { r->FreeCustomShader(freed); });
m_Ctx.Replay().AsyncInvoke([freed](IReplayController *r) { r->FreeCustomShader(freed); });
m_CustomShaders.remove(key);
@@ -3469,7 +3469,7 @@ void TextureViewer::reloadCustomShaders(const QString &filter)
m_CustomShaders[key] = ResourceId();
m_CustomShadersBusy.push_back(key);
m_Ctx.Renderer().AsyncInvoke([this, fn, key, source](IReplayController *r) {
m_Ctx.Replay().AsyncInvoke([this, fn, key, source](IReplayController *r) {
rdctype::str errors;
ResourceId id;
+2 -2
View File
@@ -149,7 +149,7 @@ win32 {
SOURCES += Code/qrenderdoc.cpp \
Code/qprocessinfo.cpp \
Code/RenderManager.cpp \
Code/ReplayManager.cpp \
Code/CaptureContext.cpp \
Code/ScintillaSyntax.cpp \
Code/QRDUtils.cpp \
@@ -205,7 +205,7 @@ SOURCES += Code/qrenderdoc.cpp \
Windows/Dialogs/TipsDialog.cpp
HEADERS += Code/CaptureContext.h \
Code/qprocessinfo.h \
Code/RenderManager.h \
Code/ReplayManager.h \
Code/ScintillaSyntax.h \
Code/QRDUtils.h \
Code/Resources.h \
+2 -2
View File
@@ -731,7 +731,7 @@
</ClCompile>
<ClCompile Include="Widgets\Extended\RDLineEdit.cpp" />
<ClCompile Include="Windows\MainWindow.cpp" />
<ClCompile Include="Code\RenderManager.cpp" />
<ClCompile Include="Code\ReplayManager.cpp" />
<ClCompile Include="Windows\PipelineState\D3D11PipelineStateViewer.cpp" />
<ClCompile Include="Windows\PipelineState\D3D12PipelineStateViewer.cpp" />
<ClCompile Include="Windows\PipelineState\GLPipelineStateViewer.cpp" />
@@ -906,7 +906,7 @@
<Message>MOC %(Filename).h</Message>
<Outputs>$(IntDir)generated\moc_%(Filename).cpp</Outputs>
</CustomBuild>
<ClInclude Include="Code\RenderManager.h" />
<ClInclude Include="Code\ReplayManager.h" />
<ClInclude Include="Code\ScintillaSyntax.h" />
<CustomBuild Include="Widgets\BufferFormatSpecifier.h">
<AdditionalInputs>%(Fullpath);$(ProjectDir)3rdparty\qt\$(Platform)\bin\moc.exe;%(AdditionalInputs)</AdditionalInputs>
+6 -6
View File
@@ -99,9 +99,6 @@
<ClCompile Include="Windows\EventBrowser.cpp">
<Filter>Windows</Filter>
</ClCompile>
<ClCompile Include="Code\RenderManager.cpp">
<Filter>Code</Filter>
</ClCompile>
<ClCompile Include="Widgets\ResourcePreview.cpp">
<Filter>Widgets</Filter>
</ClCompile>
@@ -576,14 +573,14 @@
<ClCompile Include="Code\Interface\QRDInterface.cpp">
<Filter>Code\Interface</Filter>
</ClCompile>
<ClCompile Include="Code\ReplayManager.cpp">
<Filter>Code</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="3rdparty\flowlayout\FlowLayout.h">
<Filter>3rdparty\FlowLayout</Filter>
</ClInclude>
<ClInclude Include="Code\RenderManager.h">
<Filter>Code</Filter>
</ClInclude>
<ClInclude Include="Code\CaptureContext.h">
<Filter>Code</Filter>
</ClInclude>
@@ -881,6 +878,9 @@
<ClInclude Include="Code\pyrenderdoc\document_check.h">
<Filter>Code\pyrenderdoc</Filter>
</ClInclude>
<ClInclude Include="Code\ReplayManager.h">
<Filter>Code</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="Resources\128.png">