Merge pull request #11450 from lat9nq/no-vk-device-fix
configure_graphics: Fix handling of broken Vulkan
This commit is contained in:
commit
eb9e847380
|
@ -193,13 +193,9 @@ void ConfigureGraphics::PopulateVSyncModeSelection() {
|
|||
: vsync_mode_combobox_enum_map[current_index];
|
||||
int index{};
|
||||
const int device{vulkan_device_combobox->currentIndex()}; //< current selected Vulkan device
|
||||
if (device == -1) {
|
||||
// Invalid device
|
||||
return;
|
||||
}
|
||||
|
||||
const auto& present_modes = //< relevant vector of present modes for the selected device or API
|
||||
backend == Settings::RendererBackend::Vulkan ? device_present_modes[device]
|
||||
backend == Settings::RendererBackend::Vulkan && device > -1 ? device_present_modes[device]
|
||||
: default_present_modes;
|
||||
|
||||
vsync_mode_combobox->clear();
|
||||
|
@ -497,6 +493,7 @@ void ConfigureGraphics::RetrieveVulkanDevices() {
|
|||
}
|
||||
|
||||
Settings::RendererBackend ConfigureGraphics::GetCurrentGraphicsBackend() const {
|
||||
const auto selected_backend = [&]() {
|
||||
if (!Settings::IsConfiguringGlobal() && !api_restore_global_button->isEnabled()) {
|
||||
return Settings::values.renderer_backend.GetValue(true);
|
||||
}
|
||||
|
@ -504,4 +501,11 @@ Settings::RendererBackend ConfigureGraphics::GetCurrentGraphicsBackend() const {
|
|||
combobox_translations.at(Settings::EnumMetadata<Settings::RendererBackend>::Index())
|
||||
.at(api_combobox->currentIndex())
|
||||
.first);
|
||||
}();
|
||||
|
||||
if (selected_backend == Settings::RendererBackend::Vulkan &&
|
||||
UISettings::values.has_broken_vulkan) {
|
||||
return Settings::RendererBackend::OpenGL;
|
||||
}
|
||||
return selected_backend;
|
||||
}
|
||||
|
|
|
@ -442,8 +442,13 @@ GMainWindow::GMainWindow(std::unique_ptr<Config> config_, bool has_broken_vulkan
|
|||
"#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>"
|
||||
"here for instructions to fix the issue</a>."));
|
||||
|
||||
#ifdef HAS_OPENGL
|
||||
Settings::values.renderer_backend = Settings::RendererBackend::OpenGL;
|
||||
#else
|
||||
Settings::values.renderer_backend = Settings::RendererBackend::Null;
|
||||
#endif
|
||||
|
||||
UpdateAPIText();
|
||||
renderer_status_button->setDisabled(true);
|
||||
renderer_status_button->setChecked(false);
|
||||
} else {
|
||||
|
@ -3844,10 +3849,14 @@ void GMainWindow::OnToggleAdaptingFilter() {
|
|||
|
||||
void GMainWindow::OnToggleGraphicsAPI() {
|
||||
auto api = Settings::values.renderer_backend.GetValue();
|
||||
if (api == Settings::RendererBackend::OpenGL) {
|
||||
if (api != Settings::RendererBackend::Vulkan) {
|
||||
api = Settings::RendererBackend::Vulkan;
|
||||
} else {
|
||||
#ifdef HAS_OPENGL
|
||||
api = Settings::RendererBackend::OpenGL;
|
||||
#else
|
||||
api = Settings::RendererBackend::Null;
|
||||
#endif
|
||||
}
|
||||
Settings::values.renderer_backend.SetValue(api);
|
||||
renderer_status_button->setChecked(api == Settings::RendererBackend::Vulkan);
|
||||
|
|
Reference in New Issue