diff options
| -rw-r--r-- | src/common/settings.cpp | 1 | ||||
| -rw-r--r-- | src/common/settings.h | 1 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/renderer_vulkan.cpp | 4 | ||||
| -rw-r--r-- | src/yuzu/configuration/config.cpp | 4 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_graphics_advanced.cpp | 11 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_graphics_advanced.h | 1 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_graphics_advanced.ui | 10 | ||||
| -rw-r--r-- | src/yuzu_cmd/config.cpp | 1 |
8 files changed, 32 insertions, 1 deletions
diff --git a/src/common/settings.cpp b/src/common/settings.cpp index 149e621f9..34083e8af 100644 --- a/src/common/settings.cpp +++ b/src/common/settings.cpp | |||
| @@ -185,6 +185,7 @@ void RestoreGlobalState(bool is_powered_on) { | |||
| 185 | // Renderer | 185 | // Renderer |
| 186 | values.fsr_sharpening_slider.SetGlobal(true); | 186 | values.fsr_sharpening_slider.SetGlobal(true); |
| 187 | values.renderer_backend.SetGlobal(true); | 187 | values.renderer_backend.SetGlobal(true); |
| 188 | values.renderer_force_max_clock.SetGlobal(true); | ||
| 188 | values.vulkan_device.SetGlobal(true); | 189 | values.vulkan_device.SetGlobal(true); |
| 189 | values.aspect_ratio.SetGlobal(true); | 190 | values.aspect_ratio.SetGlobal(true); |
| 190 | values.max_anisotropy.SetGlobal(true); | 191 | values.max_anisotropy.SetGlobal(true); |
diff --git a/src/common/settings.h b/src/common/settings.h index 5017951c5..cf6895fb3 100644 --- a/src/common/settings.h +++ b/src/common/settings.h | |||
| @@ -415,6 +415,7 @@ struct Values { | |||
| 415 | // Renderer | 415 | // Renderer |
| 416 | SwitchableSetting<RendererBackend, true> renderer_backend{ | 416 | SwitchableSetting<RendererBackend, true> renderer_backend{ |
| 417 | RendererBackend::Vulkan, RendererBackend::OpenGL, RendererBackend::Null, "backend"}; | 417 | RendererBackend::Vulkan, RendererBackend::OpenGL, RendererBackend::Null, "backend"}; |
| 418 | SwitchableSetting<bool> renderer_force_max_clock{true, "force_max_clock"}; | ||
| 418 | Setting<bool> renderer_debug{false, "debug"}; | 419 | Setting<bool> renderer_debug{false, "debug"}; |
| 419 | Setting<bool> renderer_shader_feedback{false, "shader_feedback"}; | 420 | Setting<bool> renderer_shader_feedback{false, "shader_feedback"}; |
| 420 | Setting<bool> enable_nsight_aftermath{false, "nsight_aftermath"}; | 421 | Setting<bool> enable_nsight_aftermath{false, "nsight_aftermath"}; |
diff --git a/src/video_core/renderer_vulkan/renderer_vulkan.cpp b/src/video_core/renderer_vulkan/renderer_vulkan.cpp index e5802b40c..2f3d1c934 100644 --- a/src/video_core/renderer_vulkan/renderer_vulkan.cpp +++ b/src/video_core/renderer_vulkan/renderer_vulkan.cpp | |||
| @@ -110,7 +110,9 @@ RendererVulkan::RendererVulkan(Core::TelemetrySession& telemetry_session_, | |||
| 110 | screen_info), | 110 | screen_info), |
| 111 | rasterizer(render_window, gpu, cpu_memory, screen_info, device, memory_allocator, | 111 | rasterizer(render_window, gpu, cpu_memory, screen_info, device, memory_allocator, |
| 112 | state_tracker, scheduler) { | 112 | state_tracker, scheduler) { |
| 113 | turbo_mode.emplace(instance, dld); | 113 | if (Settings::values.renderer_force_max_clock.GetValue()) { |
| 114 | turbo_mode.emplace(instance, dld); | ||
| 115 | } | ||
| 114 | Report(); | 116 | Report(); |
| 115 | } catch (const vk::Exception& exception) { | 117 | } catch (const vk::Exception& exception) { |
| 116 | LOG_ERROR(Render_Vulkan, "Vulkan initialization failed with error: {}", exception.what()); | 118 | LOG_ERROR(Render_Vulkan, "Vulkan initialization failed with error: {}", exception.what()); |
diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp index e9425b5bd..dfc745016 100644 --- a/src/yuzu/configuration/config.cpp +++ b/src/yuzu/configuration/config.cpp | |||
| @@ -690,6 +690,7 @@ void Config::ReadRendererValues() { | |||
| 690 | qt_config->beginGroup(QStringLiteral("Renderer")); | 690 | qt_config->beginGroup(QStringLiteral("Renderer")); |
| 691 | 691 | ||
| 692 | ReadGlobalSetting(Settings::values.renderer_backend); | 692 | ReadGlobalSetting(Settings::values.renderer_backend); |
| 693 | ReadGlobalSetting(Settings::values.renderer_force_max_clock); | ||
| 693 | ReadGlobalSetting(Settings::values.vulkan_device); | 694 | ReadGlobalSetting(Settings::values.vulkan_device); |
| 694 | ReadGlobalSetting(Settings::values.fullscreen_mode); | 695 | ReadGlobalSetting(Settings::values.fullscreen_mode); |
| 695 | ReadGlobalSetting(Settings::values.aspect_ratio); | 696 | ReadGlobalSetting(Settings::values.aspect_ratio); |
| @@ -1305,6 +1306,9 @@ void Config::SaveRendererValues() { | |||
| 1305 | static_cast<u32>(Settings::values.renderer_backend.GetValue(global)), | 1306 | static_cast<u32>(Settings::values.renderer_backend.GetValue(global)), |
| 1306 | static_cast<u32>(Settings::values.renderer_backend.GetDefault()), | 1307 | static_cast<u32>(Settings::values.renderer_backend.GetDefault()), |
| 1307 | Settings::values.renderer_backend.UsingGlobal()); | 1308 | Settings::values.renderer_backend.UsingGlobal()); |
| 1309 | WriteSetting(QString::fromStdString(Settings::values.renderer_force_max_clock.GetLabel()), | ||
| 1310 | static_cast<u32>(Settings::values.renderer_force_max_clock.GetValue(global)), | ||
| 1311 | static_cast<u32>(Settings::values.renderer_force_max_clock.GetDefault())); | ||
| 1308 | WriteGlobalSetting(Settings::values.vulkan_device); | 1312 | WriteGlobalSetting(Settings::values.vulkan_device); |
| 1309 | WriteSetting(QString::fromStdString(Settings::values.fullscreen_mode.GetLabel()), | 1313 | WriteSetting(QString::fromStdString(Settings::values.fullscreen_mode.GetLabel()), |
| 1310 | static_cast<u32>(Settings::values.fullscreen_mode.GetValue(global)), | 1314 | static_cast<u32>(Settings::values.fullscreen_mode.GetValue(global)), |
diff --git a/src/yuzu/configuration/configure_graphics_advanced.cpp b/src/yuzu/configuration/configure_graphics_advanced.cpp index 01f074699..60ecc7e3e 100644 --- a/src/yuzu/configuration/configure_graphics_advanced.cpp +++ b/src/yuzu/configuration/configure_graphics_advanced.cpp | |||
| @@ -25,6 +25,7 @@ void ConfigureGraphicsAdvanced::SetConfiguration() { | |||
| 25 | ui->use_asynchronous_shaders->setEnabled(runtime_lock); | 25 | ui->use_asynchronous_shaders->setEnabled(runtime_lock); |
| 26 | ui->anisotropic_filtering_combobox->setEnabled(runtime_lock); | 26 | ui->anisotropic_filtering_combobox->setEnabled(runtime_lock); |
| 27 | 27 | ||
| 28 | ui->renderer_force_max_clock->setChecked(Settings::values.renderer_force_max_clock.GetValue()); | ||
| 28 | ui->use_vsync->setChecked(Settings::values.use_vsync.GetValue()); | 29 | ui->use_vsync->setChecked(Settings::values.use_vsync.GetValue()); |
| 29 | ui->use_asynchronous_shaders->setChecked(Settings::values.use_asynchronous_shaders.GetValue()); | 30 | ui->use_asynchronous_shaders->setChecked(Settings::values.use_asynchronous_shaders.GetValue()); |
| 30 | ui->use_fast_gpu_time->setChecked(Settings::values.use_fast_gpu_time.GetValue()); | 31 | ui->use_fast_gpu_time->setChecked(Settings::values.use_fast_gpu_time.GetValue()); |
| @@ -37,6 +38,8 @@ void ConfigureGraphicsAdvanced::SetConfiguration() { | |||
| 37 | Settings::values.max_anisotropy.GetValue()); | 38 | Settings::values.max_anisotropy.GetValue()); |
| 38 | } else { | 39 | } else { |
| 39 | ConfigurationShared::SetPerGameSetting(ui->gpu_accuracy, &Settings::values.gpu_accuracy); | 40 | ConfigurationShared::SetPerGameSetting(ui->gpu_accuracy, &Settings::values.gpu_accuracy); |
| 41 | ConfigurationShared::SetPerGameSetting(ui->renderer_force_max_clock, | ||
| 42 | &Settings::values.renderer_force_max_clock); | ||
| 40 | ConfigurationShared::SetPerGameSetting(ui->anisotropic_filtering_combobox, | 43 | ConfigurationShared::SetPerGameSetting(ui->anisotropic_filtering_combobox, |
| 41 | &Settings::values.max_anisotropy); | 44 | &Settings::values.max_anisotropy); |
| 42 | ConfigurationShared::SetHighlight(ui->label_gpu_accuracy, | 45 | ConfigurationShared::SetHighlight(ui->label_gpu_accuracy, |
| @@ -48,6 +51,9 @@ void ConfigureGraphicsAdvanced::SetConfiguration() { | |||
| 48 | 51 | ||
| 49 | void ConfigureGraphicsAdvanced::ApplyConfiguration() { | 52 | void ConfigureGraphicsAdvanced::ApplyConfiguration() { |
| 50 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.gpu_accuracy, ui->gpu_accuracy); | 53 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.gpu_accuracy, ui->gpu_accuracy); |
| 54 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.renderer_force_max_clock, | ||
| 55 | ui->renderer_force_max_clock, | ||
| 56 | renderer_force_max_clock); | ||
| 51 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.max_anisotropy, | 57 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.max_anisotropy, |
| 52 | ui->anisotropic_filtering_combobox); | 58 | ui->anisotropic_filtering_combobox); |
| 53 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_vsync, ui->use_vsync, use_vsync); | 59 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_vsync, ui->use_vsync, use_vsync); |
| @@ -76,6 +82,8 @@ void ConfigureGraphicsAdvanced::SetupPerGameUI() { | |||
| 76 | // Disable if not global (only happens during game) | 82 | // Disable if not global (only happens during game) |
| 77 | if (Settings::IsConfiguringGlobal()) { | 83 | if (Settings::IsConfiguringGlobal()) { |
| 78 | ui->gpu_accuracy->setEnabled(Settings::values.gpu_accuracy.UsingGlobal()); | 84 | ui->gpu_accuracy->setEnabled(Settings::values.gpu_accuracy.UsingGlobal()); |
| 85 | ui->renderer_force_max_clock->setEnabled( | ||
| 86 | Settings::values.renderer_force_max_clock.UsingGlobal()); | ||
| 79 | ui->use_vsync->setEnabled(Settings::values.use_vsync.UsingGlobal()); | 87 | ui->use_vsync->setEnabled(Settings::values.use_vsync.UsingGlobal()); |
| 80 | ui->use_asynchronous_shaders->setEnabled( | 88 | ui->use_asynchronous_shaders->setEnabled( |
| 81 | Settings::values.use_asynchronous_shaders.UsingGlobal()); | 89 | Settings::values.use_asynchronous_shaders.UsingGlobal()); |
| @@ -88,6 +96,9 @@ void ConfigureGraphicsAdvanced::SetupPerGameUI() { | |||
| 88 | return; | 96 | return; |
| 89 | } | 97 | } |
| 90 | 98 | ||
| 99 | ConfigurationShared::SetColoredTristate(ui->renderer_force_max_clock, | ||
| 100 | Settings::values.renderer_force_max_clock, | ||
| 101 | renderer_force_max_clock); | ||
| 91 | ConfigurationShared::SetColoredTristate(ui->use_vsync, Settings::values.use_vsync, use_vsync); | 102 | ConfigurationShared::SetColoredTristate(ui->use_vsync, Settings::values.use_vsync, use_vsync); |
| 92 | ConfigurationShared::SetColoredTristate(ui->use_asynchronous_shaders, | 103 | ConfigurationShared::SetColoredTristate(ui->use_asynchronous_shaders, |
| 93 | Settings::values.use_asynchronous_shaders, | 104 | Settings::values.use_asynchronous_shaders, |
diff --git a/src/yuzu/configuration/configure_graphics_advanced.h b/src/yuzu/configuration/configure_graphics_advanced.h index 12e816905..5b53bcc71 100644 --- a/src/yuzu/configuration/configure_graphics_advanced.h +++ b/src/yuzu/configuration/configure_graphics_advanced.h | |||
| @@ -36,6 +36,7 @@ private: | |||
| 36 | 36 | ||
| 37 | std::unique_ptr<Ui::ConfigureGraphicsAdvanced> ui; | 37 | std::unique_ptr<Ui::ConfigureGraphicsAdvanced> ui; |
| 38 | 38 | ||
| 39 | ConfigurationShared::CheckState renderer_force_max_clock; | ||
| 39 | ConfigurationShared::CheckState use_vsync; | 40 | ConfigurationShared::CheckState use_vsync; |
| 40 | ConfigurationShared::CheckState use_asynchronous_shaders; | 41 | ConfigurationShared::CheckState use_asynchronous_shaders; |
| 41 | ConfigurationShared::CheckState use_fast_gpu_time; | 42 | ConfigurationShared::CheckState use_fast_gpu_time; |
diff --git a/src/yuzu/configuration/configure_graphics_advanced.ui b/src/yuzu/configuration/configure_graphics_advanced.ui index 87a121471..1181e3562 100644 --- a/src/yuzu/configuration/configure_graphics_advanced.ui +++ b/src/yuzu/configuration/configure_graphics_advanced.ui | |||
| @@ -70,6 +70,16 @@ | |||
| 70 | </widget> | 70 | </widget> |
| 71 | </item> | 71 | </item> |
| 72 | <item> | 72 | <item> |
| 73 | <widget class="QCheckBox" name="renderer_force_max_clock"> | ||
| 74 | <property name="toolTip"> | ||
| 75 | <string>Runs work in the background while waiting for graphics commands to keep the GPU from lowering its clock speed.</string> | ||
| 76 | </property> | ||
| 77 | <property name="text"> | ||
| 78 | <string>Force maximum clocks (Vulkan only)</string> | ||
| 79 | </property> | ||
| 80 | </widget> | ||
| 81 | </item> | ||
| 82 | <item> | ||
| 73 | <widget class="QCheckBox" name="use_vsync"> | 83 | <widget class="QCheckBox" name="use_vsync"> |
| 74 | <property name="toolTip"> | 84 | <property name="toolTip"> |
| 75 | <string>VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference.</string> | 85 | <string>VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference.</string> |
diff --git a/src/yuzu_cmd/config.cpp b/src/yuzu_cmd/config.cpp index 1e45e57bc..23478e8a6 100644 --- a/src/yuzu_cmd/config.cpp +++ b/src/yuzu_cmd/config.cpp | |||
| @@ -296,6 +296,7 @@ void Config::ReadValues() { | |||
| 296 | 296 | ||
| 297 | // Renderer | 297 | // Renderer |
| 298 | ReadSetting("Renderer", Settings::values.renderer_backend); | 298 | ReadSetting("Renderer", Settings::values.renderer_backend); |
| 299 | ReadSetting("Renderer", Settings::values.renderer_force_max_clock); | ||
| 299 | ReadSetting("Renderer", Settings::values.renderer_debug); | 300 | ReadSetting("Renderer", Settings::values.renderer_debug); |
| 300 | ReadSetting("Renderer", Settings::values.renderer_shader_feedback); | 301 | ReadSetting("Renderer", Settings::values.renderer_shader_feedback); |
| 301 | ReadSetting("Renderer", Settings::values.enable_nsight_aftermath); | 302 | ReadSetting("Renderer", Settings::values.enable_nsight_aftermath); |