summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/yuzu/check_vulkan.cpp8
-rw-r--r--src/yuzu/check_vulkan.h5
-rw-r--r--src/yuzu/configuration/configure_graphics.cpp4
-rw-r--r--src/yuzu/main.cpp10
-rw-r--r--src/yuzu/uisettings.h1
5 files changed, 17 insertions, 11 deletions
diff --git a/src/yuzu/check_vulkan.cpp b/src/yuzu/check_vulkan.cpp
index 1b21efe69..e6d66ab34 100644
--- a/src/yuzu/check_vulkan.cpp
+++ b/src/yuzu/check_vulkan.cpp
@@ -1,6 +1,8 @@
+// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
#include "video_core/vulkan_common/vulkan_wrapper.h"
-#include <exception>
#include <filesystem>
#include <fstream>
#include "common/fs/fs.h"
@@ -42,8 +44,8 @@ bool CheckVulkan() {
} catch (const Vulkan::vk::Exception& exception) {
LOG_ERROR(Frontend, "Failed to initialize Vulkan: {}", exception.what());
- UISettings::values.has_broken_vulkan = true;
- return false;
+ // Don't set has_broken_vulkan to true here: we care when loading Vulkan crashes the
+ // application, not when we can handle it.
}
std::filesystem::remove(temp_file_loc);
diff --git a/src/yuzu/check_vulkan.h b/src/yuzu/check_vulkan.h
index 3b199d3bb..e4ea93582 100644
--- a/src/yuzu/check_vulkan.h
+++ b/src/yuzu/check_vulkan.h
@@ -1 +1,6 @@
+// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
bool CheckVulkan();
diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp
index 482a6a8ab..70015a373 100644
--- a/src/yuzu/configuration/configure_graphics.cpp
+++ b/src/yuzu/configuration/configure_graphics.cpp
@@ -64,6 +64,7 @@ ConfigureGraphics::ConfigureGraphics(const Core::System& system_, QWidget* paren
if (RetrieveVulkanDevices()) {
ui->api->setEnabled(true);
+ ui->button_check_vulkan->hide();
for (const auto& device : vulkan_devices) {
ui->device->addItem(device);
@@ -356,9 +357,6 @@ bool ConfigureGraphics::RetrieveVulkanDevices() try {
vulkan_devices.push_back(QString::fromStdString(name));
}
- UISettings::values.has_broken_vulkan = false;
- ui->button_check_vulkan->setVisible(false);
-
return true;
} catch (const Vulkan::vk::Exception& exception) {
LOG_ERROR(Frontend, "Failed to enumerate devices with error: {}", exception.what());
diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp
index 71802cfc2..ff1afa56e 100644
--- a/src/yuzu/main.cpp
+++ b/src/yuzu/main.cpp
@@ -299,11 +299,7 @@ GMainWindow::GMainWindow()
MigrateConfigFiles();
if (!CheckVulkan()) {
- QMessageBox::warning(
- this, tr("Broken Vulkan Installation Detected"),
- tr("Vulkan initialization failed on the previous boot. Please update your graphics "
- "driver, then re-check your Vulkan installation by accessing the Graphics "
- "configuration and clicking \"Check for Working Vulkan\"."));
+ QMessageBox::warning(this, tr("Broken Vulkan Installation Detected"), tr(""));
}
if (UISettings::values.has_broken_vulkan) {
Settings::values.renderer_backend = Settings::RendererBackend::OpenGL;
@@ -2788,6 +2784,10 @@ void GMainWindow::OnConfigure() {
mouse_hide_timer.start();
}
+ if (!UISettings::values.has_broken_vulkan) {
+ renderer_status_button->setEnabled(!emulation_running);
+ }
+
UpdateStatusButtons();
controller_dialog->refreshConfiguration();
}
diff --git a/src/yuzu/uisettings.h b/src/yuzu/uisettings.h
index 653b76883..c64d87ace 100644
--- a/src/yuzu/uisettings.h
+++ b/src/yuzu/uisettings.h
@@ -77,6 +77,7 @@ struct Values {
Settings::BasicSetting<bool> pause_when_in_background{false, "pauseWhenInBackground"};
Settings::BasicSetting<bool> mute_when_in_background{false, "muteWhenInBackground"};
Settings::BasicSetting<bool> hide_mouse{true, "hideInactiveMouse"};
+ // Set when Vulkan is known to crash the application
Settings::BasicSetting<bool> has_broken_vulkan{false, "has_broken_vulkan"};
Settings::BasicSetting<bool> select_user_on_boot{false, "select_user_on_boot"};