1
Fork 0
mirror of https://github.com/redstrate/Astra.git synced 2025-04-20 11:47:46 +00:00

Expose a RenderDoc capture option

I used this before as a hack, but now it's properly exposed as a
developer setting.
This commit is contained in:
Joshua Goins 2024-04-19 20:37:51 -04:00
parent 49f8aae877
commit b7c67b3f70
5 changed files with 42 additions and 3 deletions

View file

@ -49,5 +49,8 @@ SPDX-License-Identifier: CC0-1.0
<entry key="EncryptArguments" type="bool"> <entry key="EncryptArguments" type="bool">
<default>true</default> <default>true</default>
</entry> </entry>
<entry key="EnableRenderDocCapture" type="bool">
<default>false</default>
</entry>
</group> </group>
</kcfg> </kcfg>

View file

@ -26,6 +26,7 @@ class LauncherSettings : public QObject
Q_PROPERTY(QString preferredProtocol READ preferredProtocol WRITE setPreferredProtocol NOTIFY preferredProtocolChanged) Q_PROPERTY(QString preferredProtocol READ preferredProtocol WRITE setPreferredProtocol NOTIFY preferredProtocolChanged)
Q_PROPERTY(QString screenshotDir READ screenshotDir WRITE setScreenshotDir NOTIFY screenshotDirChanged) Q_PROPERTY(QString screenshotDir READ screenshotDir WRITE setScreenshotDir NOTIFY screenshotDirChanged)
Q_PROPERTY(bool argumentsEncrypted READ argumentsEncrypted WRITE setArgumentsEncrypted NOTIFY encryptedArgumentsChanged) Q_PROPERTY(bool argumentsEncrypted READ argumentsEncrypted WRITE setArgumentsEncrypted NOTIFY encryptedArgumentsChanged)
Q_PROPERTY(bool enableRenderDocCapture READ enableRenderDocCapture WRITE setEnableRenderDocCapture NOTIFY enableRenderDocCaptureChanged)
public: public:
explicit LauncherSettings(QObject *parent = nullptr); explicit LauncherSettings(QObject *parent = nullptr);
@ -63,6 +64,9 @@ public:
[[nodiscard]] bool argumentsEncrypted() const; [[nodiscard]] bool argumentsEncrypted() const;
void setArgumentsEncrypted(bool value); void setArgumentsEncrypted(bool value);
[[nodiscard]] bool enableRenderDocCapture() const;
void setEnableRenderDocCapture(bool value);
[[nodiscard]] QString currentProfile() const; [[nodiscard]] QString currentProfile() const;
void setCurrentProfile(const QString &value); void setCurrentProfile(const QString &value);
@ -80,6 +84,7 @@ Q_SIGNALS:
void preferredProtocolChanged(); void preferredProtocolChanged();
void screenshotDirChanged(); void screenshotDirChanged();
void encryptedArgumentsChanged(); void encryptedArgumentsChanged();
void enableRenderDocCaptureChanged();
private: private:
Config *m_config = nullptr; Config *m_config = nullptr;

View file

@ -274,14 +274,16 @@ void GameRunner::launchExecutable(const Profile &profile, QProcess *process, con
} }
#endif #endif
if (m_launcher.settings()->enableRenderDocCapture()) {
env.insert(QStringLiteral("VK_LAYER_RENDERDOC_Capture"), QStringLiteral("VK_LAYER_RENDERDOC_Capture"));
env.insert(QStringLiteral("ENABLE_VULKAN_RENDERDOC_CAPTURE"), QString::number(1));
}
#if defined(Q_OS_LINUX) #if defined(Q_OS_LINUX)
env.insert(QStringLiteral("WINEESYNC"), QString::number(1)); env.insert(QStringLiteral("WINEESYNC"), QString::number(1));
env.insert(QStringLiteral("WINEFSYNC"), QString::number(1)); env.insert(QStringLiteral("WINEFSYNC"), QString::number(1));
env.insert(QStringLiteral("WINEFSYNC_FUTEX2"), QString::number(1)); env.insert(QStringLiteral("WINEFSYNC_FUTEX2"), QString::number(1));
// env.insert(QStringLiteral("VK_LAYER_RENDERDOC_Capture"), QStringLiteral("VK_LAYER_RENDERDOC_Capture"));
// env.insert(QStringLiteral("ENABLE_VULKAN_RENDERDOC_CAPTURE"), QString::number(1));
const QDir dataDir = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation); const QDir dataDir = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation);
const QString logDir = dataDir.absoluteFilePath(QStringLiteral("log")); const QString logDir = dataDir.absoluteFilePath(QStringLiteral("log"));

View file

@ -163,6 +163,20 @@ void LauncherSettings::setArgumentsEncrypted(const bool value)
} }
} }
bool LauncherSettings::enableRenderDocCapture() const
{
return m_config->enableRenderDocCapture();
}
void LauncherSettings::setEnableRenderDocCapture(const bool value)
{
if (m_config->enableRenderDocCapture() != value) {
m_config->setEnableRenderDocCapture(value);
m_config->save();
Q_EMIT enableRenderDocCaptureChanged();
}
}
QString LauncherSettings::currentProfile() const QString LauncherSettings::currentProfile() const
{ {
return KSharedConfig::openStateConfig()->group(QStringLiteral("General")).readEntry(QStringLiteral("CurrentProfile")); return KSharedConfig::openStateConfig()->group(QStringLiteral("General")).readEntry(QStringLiteral("CurrentProfile"));

View file

@ -44,9 +44,24 @@ FormCard.FormCardPage {
id: encryptArgDelegate id: encryptArgDelegate
text: i18n("Encrypt Game Arguments") text: i18n("Encrypt Game Arguments")
description: i18n("Disable encryption if you want to inspect the raw arguments passed to the game.")
checked: LauncherCore.settings.argumentsEncrypted checked: LauncherCore.settings.argumentsEncrypted
onCheckedChanged: LauncherCore.settings.argumentsEncrypted = checked onCheckedChanged: LauncherCore.settings.argumentsEncrypted = checked
} }
FormCard.FormDelegateSeparator {
above: encryptArgDelegate
below: renderDocCaptureDelegate
}
FormCard.FormCheckDelegate {
id: renderDocCaptureDelegate
text: i18n("Allow RenderDoc Capture")
description: i18n("Inject the RenderDoc capture layer.")
checked: LauncherCore.settings.enableRenderDocCapture
onCheckedChanged: LauncherCore.settings.enableRenderDocCapture = checked
}
} }
FormCard.FormHeader { FormCard.FormHeader {