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:
parent
49f8aae877
commit
b7c67b3f70
5 changed files with 42 additions and 3 deletions
|
@ -49,5 +49,8 @@ SPDX-License-Identifier: CC0-1.0
|
|||
<entry key="EncryptArguments" type="bool">
|
||||
<default>true</default>
|
||||
</entry>
|
||||
<entry key="EnableRenderDocCapture" type="bool">
|
||||
<default>false</default>
|
||||
</entry>
|
||||
</group>
|
||||
</kcfg>
|
||||
|
|
|
@ -26,6 +26,7 @@ class LauncherSettings : public QObject
|
|||
Q_PROPERTY(QString preferredProtocol READ preferredProtocol WRITE setPreferredProtocol NOTIFY preferredProtocolChanged)
|
||||
Q_PROPERTY(QString screenshotDir READ screenshotDir WRITE setScreenshotDir NOTIFY screenshotDirChanged)
|
||||
Q_PROPERTY(bool argumentsEncrypted READ argumentsEncrypted WRITE setArgumentsEncrypted NOTIFY encryptedArgumentsChanged)
|
||||
Q_PROPERTY(bool enableRenderDocCapture READ enableRenderDocCapture WRITE setEnableRenderDocCapture NOTIFY enableRenderDocCaptureChanged)
|
||||
|
||||
public:
|
||||
explicit LauncherSettings(QObject *parent = nullptr);
|
||||
|
@ -63,6 +64,9 @@ public:
|
|||
[[nodiscard]] bool argumentsEncrypted() const;
|
||||
void setArgumentsEncrypted(bool value);
|
||||
|
||||
[[nodiscard]] bool enableRenderDocCapture() const;
|
||||
void setEnableRenderDocCapture(bool value);
|
||||
|
||||
[[nodiscard]] QString currentProfile() const;
|
||||
void setCurrentProfile(const QString &value);
|
||||
|
||||
|
@ -80,6 +84,7 @@ Q_SIGNALS:
|
|||
void preferredProtocolChanged();
|
||||
void screenshotDirChanged();
|
||||
void encryptedArgumentsChanged();
|
||||
void enableRenderDocCaptureChanged();
|
||||
|
||||
private:
|
||||
Config *m_config = nullptr;
|
||||
|
|
|
@ -274,14 +274,16 @@ void GameRunner::launchExecutable(const Profile &profile, QProcess *process, con
|
|||
}
|
||||
#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)
|
||||
env.insert(QStringLiteral("WINEESYNC"), QString::number(1));
|
||||
env.insert(QStringLiteral("WINEFSYNC"), 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 QString logDir = dataDir.absoluteFilePath(QStringLiteral("log"));
|
||||
|
||||
|
|
|
@ -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
|
||||
{
|
||||
return KSharedConfig::openStateConfig()->group(QStringLiteral("General")).readEntry(QStringLiteral("CurrentProfile"));
|
||||
|
|
|
@ -44,9 +44,24 @@ FormCard.FormCardPage {
|
|||
id: encryptArgDelegate
|
||||
|
||||
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
|
||||
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 {
|
||||
|
|
Loading…
Add table
Reference in a new issue