Add new checks for vkconfig, and detect after startup

* We check every couple of seconds for the vkconfig file (and then stop checking
  after warning) so that users are more likely to see the warning.
This commit is contained in:
baldurk
2025-10-20 12:19:14 +01:00
parent 4db8616ec4
commit 466a11100c
2 changed files with 50 additions and 28 deletions
+50
View File
@@ -227,6 +227,56 @@ MainWindow::MainWindow(ICaptureContext &ctx) : QMainWindow(NULL), ui(new Ui::Mai
m_MessageTick.setInterval(175);
m_MessageTick.start();
QTimer *vkconfigCheckTimer = new QTimer(this);
QObject::connect(vkconfigCheckTimer, &QTimer::timeout, [vkconfigCheckTimer]() {
QString homePath = QStandardPaths::writableLocation(QStandardPaths::HomeLocation);
// for some reason these paths have changed a lot so we have to check them all :(
const QString basePaths[] = {
#if defined(Q_OS_WIN32)
lit("/AppData/Local/LunarG/vkconfig/override/"),
lit("/AppData/Local/LunarG/vulkan/"),
#else
lit("/.local/share/vulkan/implicit_layer.d/"),
lit("/.local/share/vulkan/loader_settings.d/"),
#endif
};
const QString filenames[] = {
lit("VkLayerOverride.json"),
lit("VkLayer_Override.json"),
lit("VkLayer_override.json"),
lit("vk_loader_settings.json"),
};
for(const QString &path : basePaths)
{
for(const QString &fn : filenames)
{
QFileInfo vkconfigcheck(homePath + path + fn);
if(vkconfigcheck.exists() && vkconfigcheck.isFile())
{
RDDialog::warning(
NULL, tr("vkconfig detected - possible incompatibility"),
tr("Configuration from 'vkconfig' tool detected.\n\n"
"This program has caused problems in the past and it is \n"
"strongly recommended that you disable it while using RenderDoc.\n\n"
"If this program is not active check the path below for any leftover files:\n\n%1")
.arg(vkconfigcheck.absoluteFilePath()));
qInfo() << "vkconfig detected and warned";
vkconfigCheckTimer->stop();
return;
}
}
}
});
vkconfigCheckTimer->setSingleShot(false);
vkconfigCheckTimer->setInterval(2500);
vkconfigCheckTimer->start();
m_RemoteProbeSemaphore.release();
m_RemoteProbe = new LambdaThread([this]() {
// fetch all device protocols to start them processing