diff options
| -rw-r--r-- | src/yuzu/check_vulkan.cpp | 8 | ||||
| -rw-r--r-- | src/yuzu/check_vulkan.h | 5 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_graphics.cpp | 4 | ||||
| -rw-r--r-- | src/yuzu/main.cpp | 10 | ||||
| -rw-r--r-- | src/yuzu/uisettings.h | 1 | 
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"}; | 
