Browse Source
Merge pull request #11450 from lat9nq/no-vk-device-fix
configure_graphics: Fix handling of broken Vulkan
pull/15/merge
liamwhite
2 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
26 additions and
13 deletions
-
src/yuzu/configuration/configure_graphics.cpp
-
src/yuzu/main.cpp
|
|
|
@ -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); |
|
|
|
|