diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/common/settings.cpp | 3 | ||||
| -rw-r--r-- | src/common/settings.h | 9 | ||||
| -rw-r--r-- | src/core/telemetry_session.cpp | 15 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_swapchain.cpp | 27 | ||||
| -rw-r--r-- | src/yuzu/bootmanager.cpp | 13 | ||||
| -rw-r--r-- | src/yuzu/configuration/config.cpp | 10 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_graphics.cpp | 9 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_graphics.ui | 49 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_graphics_advanced.cpp | 5 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_graphics_advanced.ui | 10 | ||||
| -rw-r--r-- | src/yuzu_cmd/config.cpp | 2 |
11 files changed, 115 insertions, 37 deletions
diff --git a/src/common/settings.cpp b/src/common/settings.cpp index 77ff21128..92794f4a2 100644 --- a/src/common/settings.cpp +++ b/src/common/settings.cpp | |||
| @@ -60,7 +60,7 @@ void LogSettings() { | |||
| 60 | log_setting("Renderer_NvdecEmulation", values.nvdec_emulation.GetValue()); | 60 | log_setting("Renderer_NvdecEmulation", values.nvdec_emulation.GetValue()); |
| 61 | log_setting("Renderer_AccelerateASTC", values.accelerate_astc.GetValue()); | 61 | log_setting("Renderer_AccelerateASTC", values.accelerate_astc.GetValue()); |
| 62 | log_setting("Renderer_AsyncASTC", values.async_astc.GetValue()); | 62 | log_setting("Renderer_AsyncASTC", values.async_astc.GetValue()); |
| 63 | log_setting("Renderer_UseVsync", values.use_vsync.GetValue()); | 63 | log_setting("Renderer_UseVsync", values.vsync_mode.GetValue()); |
| 64 | log_setting("Renderer_ShaderBackend", values.shader_backend.GetValue()); | 64 | log_setting("Renderer_ShaderBackend", values.shader_backend.GetValue()); |
| 65 | log_setting("Renderer_UseAsynchronousShaders", values.use_asynchronous_shaders.GetValue()); | 65 | log_setting("Renderer_UseAsynchronousShaders", values.use_asynchronous_shaders.GetValue()); |
| 66 | log_setting("Renderer_AnisotropicFilteringLevel", values.max_anisotropy.GetValue()); | 66 | log_setting("Renderer_AnisotropicFilteringLevel", values.max_anisotropy.GetValue()); |
| @@ -222,7 +222,6 @@ void RestoreGlobalState(bool is_powered_on) { | |||
| 222 | values.nvdec_emulation.SetGlobal(true); | 222 | values.nvdec_emulation.SetGlobal(true); |
| 223 | values.accelerate_astc.SetGlobal(true); | 223 | values.accelerate_astc.SetGlobal(true); |
| 224 | values.async_astc.SetGlobal(true); | 224 | values.async_astc.SetGlobal(true); |
| 225 | values.use_vsync.SetGlobal(true); | ||
| 226 | values.shader_backend.SetGlobal(true); | 225 | values.shader_backend.SetGlobal(true); |
| 227 | values.use_asynchronous_shaders.SetGlobal(true); | 226 | values.use_asynchronous_shaders.SetGlobal(true); |
| 228 | values.use_fast_gpu_time.SetGlobal(true); | 227 | values.use_fast_gpu_time.SetGlobal(true); |
diff --git a/src/common/settings.h b/src/common/settings.h index 5379d0dd5..2371495e4 100644 --- a/src/common/settings.h +++ b/src/common/settings.h | |||
| @@ -16,6 +16,12 @@ | |||
| 16 | 16 | ||
| 17 | namespace Settings { | 17 | namespace Settings { |
| 18 | 18 | ||
| 19 | enum class VSyncMode : u32 { | ||
| 20 | Immediate, | ||
| 21 | FIFO, | ||
| 22 | Mailbox, | ||
| 23 | }; | ||
| 24 | |||
| 19 | enum class RendererBackend : u32 { | 25 | enum class RendererBackend : u32 { |
| 20 | OpenGL = 0, | 26 | OpenGL = 0, |
| 21 | Vulkan = 1, | 27 | Vulkan = 1, |
| @@ -455,7 +461,8 @@ struct Values { | |||
| 455 | SwitchableSetting<NvdecEmulation> nvdec_emulation{NvdecEmulation::GPU, "nvdec_emulation"}; | 461 | SwitchableSetting<NvdecEmulation> nvdec_emulation{NvdecEmulation::GPU, "nvdec_emulation"}; |
| 456 | SwitchableSetting<bool> accelerate_astc{true, "accelerate_astc"}; | 462 | SwitchableSetting<bool> accelerate_astc{true, "accelerate_astc"}; |
| 457 | SwitchableSetting<bool> async_astc{false, "async_astc"}; | 463 | SwitchableSetting<bool> async_astc{false, "async_astc"}; |
| 458 | SwitchableSetting<bool> use_vsync{true, "use_vsync"}; | 464 | Setting<VSyncMode, true> vsync_mode{VSyncMode::FIFO, VSyncMode::Immediate, VSyncMode::Mailbox, |
| 465 | "use_vsync"}; | ||
| 459 | SwitchableSetting<ShaderBackend, true> shader_backend{ShaderBackend::GLSL, ShaderBackend::GLSL, | 466 | SwitchableSetting<ShaderBackend, true> shader_backend{ShaderBackend::GLSL, ShaderBackend::GLSL, |
| 460 | ShaderBackend::SPIRV, "shader_backend"}; | 467 | ShaderBackend::SPIRV, "shader_backend"}; |
| 461 | SwitchableSetting<bool> use_asynchronous_shaders{false, "use_asynchronous_shaders"}; | 468 | SwitchableSetting<bool> use_asynchronous_shaders{false, "use_asynchronous_shaders"}; |
diff --git a/src/core/telemetry_session.cpp b/src/core/telemetry_session.cpp index 9178b00ca..6ec8e440c 100644 --- a/src/core/telemetry_session.cpp +++ b/src/core/telemetry_session.cpp | |||
| @@ -85,6 +85,18 @@ static const char* TranslateNvdecEmulation(Settings::NvdecEmulation backend) { | |||
| 85 | return "Unknown"; | 85 | return "Unknown"; |
| 86 | } | 86 | } |
| 87 | 87 | ||
| 88 | constexpr const char* TranslateVSyncMode(Settings::VSyncMode mode) { | ||
| 89 | switch (mode) { | ||
| 90 | case Settings::VSyncMode::Immediate: | ||
| 91 | return "Immediate"; | ||
| 92 | case Settings::VSyncMode::FIFO: | ||
| 93 | return "FIFO"; | ||
| 94 | case Settings::VSyncMode::Mailbox: | ||
| 95 | return "Mailbox"; | ||
| 96 | } | ||
| 97 | return "Unknown"; | ||
| 98 | } | ||
| 99 | |||
| 88 | u64 GetTelemetryId() { | 100 | u64 GetTelemetryId() { |
| 89 | u64 telemetry_id{}; | 101 | u64 telemetry_id{}; |
| 90 | const auto filename = Common::FS::GetYuzuPath(Common::FS::YuzuPath::ConfigDir) / "telemetry_id"; | 102 | const auto filename = Common::FS::GetYuzuPath(Common::FS::YuzuPath::ConfigDir) / "telemetry_id"; |
| @@ -241,7 +253,8 @@ void TelemetrySession::AddInitialInfo(Loader::AppLoader& app_loader, | |||
| 241 | AddField(field_type, "Renderer_NvdecEmulation", | 253 | AddField(field_type, "Renderer_NvdecEmulation", |
| 242 | TranslateNvdecEmulation(Settings::values.nvdec_emulation.GetValue())); | 254 | TranslateNvdecEmulation(Settings::values.nvdec_emulation.GetValue())); |
| 243 | AddField(field_type, "Renderer_AccelerateASTC", Settings::values.accelerate_astc.GetValue()); | 255 | AddField(field_type, "Renderer_AccelerateASTC", Settings::values.accelerate_astc.GetValue()); |
| 244 | AddField(field_type, "Renderer_UseVsync", Settings::values.use_vsync.GetValue()); | 256 | AddField(field_type, "Renderer_UseVsync", |
| 257 | TranslateVSyncMode(Settings::values.vsync_mode.GetValue())); | ||
| 245 | AddField(field_type, "Renderer_ShaderBackend", | 258 | AddField(field_type, "Renderer_ShaderBackend", |
| 246 | static_cast<u32>(Settings::values.shader_backend.GetValue())); | 259 | static_cast<u32>(Settings::values.shader_backend.GetValue())); |
| 247 | AddField(field_type, "Renderer_UseAsynchronousShaders", | 260 | AddField(field_type, "Renderer_UseAsynchronousShaders", |
diff --git a/src/video_core/renderer_vulkan/vk_swapchain.cpp b/src/video_core/renderer_vulkan/vk_swapchain.cpp index 23bbea7f1..08d82769c 100644 --- a/src/video_core/renderer_vulkan/vk_swapchain.cpp +++ b/src/video_core/renderer_vulkan/vk_swapchain.cpp | |||
| @@ -34,21 +34,22 @@ VkSurfaceFormatKHR ChooseSwapSurfaceFormat(vk::Span<VkSurfaceFormatKHR> formats) | |||
| 34 | } | 34 | } |
| 35 | 35 | ||
| 36 | VkPresentModeKHR ChooseSwapPresentMode(vk::Span<VkPresentModeKHR> modes) { | 36 | VkPresentModeKHR ChooseSwapPresentMode(vk::Span<VkPresentModeKHR> modes) { |
| 37 | // Mailbox (triple buffering) doesn't lock the application like fifo (vsync), | 37 | // Mailbox (triple buffering) doesn't lock the application like FIFO (vsync) |
| 38 | // prefer it if vsync option is not selected | 38 | // FIFO present mode locks the framerate to the monitor's refresh rate |
| 39 | const auto found_mailbox = std::find(modes.begin(), modes.end(), VK_PRESENT_MODE_MAILBOX_KHR); | 39 | const bool has_mailbox = |
| 40 | if (Settings::values.fullscreen_mode.GetValue() == Settings::FullscreenMode::Borderless && | 40 | std::find(modes.begin(), modes.end(), VK_PRESENT_MODE_MAILBOX_KHR) != modes.end(); |
| 41 | found_mailbox != modes.end() && !Settings::values.use_vsync.GetValue()) { | 41 | const bool has_imm = |
| 42 | std::find(modes.begin(), modes.end(), VK_PRESENT_MODE_IMMEDIATE_KHR) != modes.end(); | ||
| 43 | const Settings::VSyncMode mode = Settings::values.vsync_mode.GetValue(); | ||
| 44 | |||
| 45 | if (mode == Settings::VSyncMode::Immediate && has_imm) { | ||
| 46 | LOG_INFO(Render_Vulkan, "Using swap present mode Immediate"); | ||
| 47 | return VK_PRESENT_MODE_IMMEDIATE_KHR; | ||
| 48 | } else if (mode == Settings::VSyncMode::Mailbox && has_mailbox) { | ||
| 49 | LOG_INFO(Render_Vulkan, "Using swap present mode Mailbox"); | ||
| 42 | return VK_PRESENT_MODE_MAILBOX_KHR; | 50 | return VK_PRESENT_MODE_MAILBOX_KHR; |
| 43 | } | 51 | } |
| 44 | if (!Settings::values.use_speed_limit.GetValue()) { | 52 | LOG_INFO(Render_Vulkan, "Using swap present mode FIFO"); |
| 45 | // FIFO present mode locks the framerate to the monitor's refresh rate, | ||
| 46 | // Find an alternative to surpass this limitation if FPS is unlocked. | ||
| 47 | const auto found_imm = std::find(modes.begin(), modes.end(), VK_PRESENT_MODE_IMMEDIATE_KHR); | ||
| 48 | if (found_imm != modes.end()) { | ||
| 49 | return VK_PRESENT_MODE_IMMEDIATE_KHR; | ||
| 50 | } | ||
| 51 | } | ||
| 52 | return VK_PRESENT_MODE_FIFO_KHR; | 53 | return VK_PRESENT_MODE_FIFO_KHR; |
| 53 | } | 54 | } |
| 54 | 55 | ||
diff --git a/src/yuzu/bootmanager.cpp b/src/yuzu/bootmanager.cpp index 4c7bf28d8..01dc51cff 100644 --- a/src/yuzu/bootmanager.cpp +++ b/src/yuzu/bootmanager.cpp | |||
| @@ -154,7 +154,18 @@ public: | |||
| 154 | 154 | ||
| 155 | // disable vsync for any shared contexts | 155 | // disable vsync for any shared contexts |
| 156 | auto format = share_context->format(); | 156 | auto format = share_context->format(); |
| 157 | format.setSwapInterval(main_surface ? Settings::values.use_vsync.GetValue() : 0); | 157 | const int swap_interval = [&]() { |
| 158 | switch (Settings::values.vsync_mode.GetValue()) { | ||
| 159 | case Settings::VSyncMode::Immediate: | ||
| 160 | return 0; | ||
| 161 | case Settings::VSyncMode::FIFO: | ||
| 162 | return 1; | ||
| 163 | case Settings::VSyncMode::Mailbox: | ||
| 164 | return 2; | ||
| 165 | } | ||
| 166 | }(); | ||
| 167 | |||
| 168 | format.setSwapInterval(main_surface ? swap_interval : 0); | ||
| 158 | 169 | ||
| 159 | context = std::make_unique<QOpenGLContext>(); | 170 | context = std::make_unique<QOpenGLContext>(); |
| 160 | context->setShareContext(share_context); | 171 | context->setShareContext(share_context); |
diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp index 305891d18..4a8436e5c 100644 --- a/src/yuzu/configuration/config.cpp +++ b/src/yuzu/configuration/config.cpp | |||
| @@ -6,6 +6,7 @@ | |||
| 6 | #include <QSettings> | 6 | #include <QSettings> |
| 7 | #include "common/fs/fs.h" | 7 | #include "common/fs/fs.h" |
| 8 | #include "common/fs/path_util.h" | 8 | #include "common/fs/path_util.h" |
| 9 | #include "common/settings.h" | ||
| 9 | #include "core/core.h" | 10 | #include "core/core.h" |
| 10 | #include "core/hle/service/acc/profile_manager.h" | 11 | #include "core/hle/service/acc/profile_manager.h" |
| 11 | #include "core/hle/service/hid/controllers/npad.h" | 12 | #include "core/hle/service/hid/controllers/npad.h" |
| @@ -709,7 +710,6 @@ void Config::ReadRendererValues() { | |||
| 709 | ReadGlobalSetting(Settings::values.nvdec_emulation); | 710 | ReadGlobalSetting(Settings::values.nvdec_emulation); |
| 710 | ReadGlobalSetting(Settings::values.accelerate_astc); | 711 | ReadGlobalSetting(Settings::values.accelerate_astc); |
| 711 | ReadGlobalSetting(Settings::values.async_astc); | 712 | ReadGlobalSetting(Settings::values.async_astc); |
| 712 | ReadGlobalSetting(Settings::values.use_vsync); | ||
| 713 | ReadGlobalSetting(Settings::values.shader_backend); | 713 | ReadGlobalSetting(Settings::values.shader_backend); |
| 714 | ReadGlobalSetting(Settings::values.use_asynchronous_shaders); | 714 | ReadGlobalSetting(Settings::values.use_asynchronous_shaders); |
| 715 | ReadGlobalSetting(Settings::values.use_fast_gpu_time); | 715 | ReadGlobalSetting(Settings::values.use_fast_gpu_time); |
| @@ -720,6 +720,10 @@ void Config::ReadRendererValues() { | |||
| 720 | ReadGlobalSetting(Settings::values.bg_blue); | 720 | ReadGlobalSetting(Settings::values.bg_blue); |
| 721 | 721 | ||
| 722 | if (global) { | 722 | if (global) { |
| 723 | Settings::values.vsync_mode.SetValue(static_cast<Settings::VSyncMode>( | ||
| 724 | ReadSetting(QString::fromStdString(Settings::values.vsync_mode.GetLabel()), | ||
| 725 | static_cast<u32>(Settings::values.vsync_mode.GetDefault())) | ||
| 726 | .value<u32>())); | ||
| 723 | ReadBasicSetting(Settings::values.renderer_debug); | 727 | ReadBasicSetting(Settings::values.renderer_debug); |
| 724 | ReadBasicSetting(Settings::values.renderer_shader_feedback); | 728 | ReadBasicSetting(Settings::values.renderer_shader_feedback); |
| 725 | ReadBasicSetting(Settings::values.enable_nsight_aftermath); | 729 | ReadBasicSetting(Settings::values.enable_nsight_aftermath); |
| @@ -1352,7 +1356,6 @@ void Config::SaveRendererValues() { | |||
| 1352 | Settings::values.nvdec_emulation.UsingGlobal()); | 1356 | Settings::values.nvdec_emulation.UsingGlobal()); |
| 1353 | WriteGlobalSetting(Settings::values.accelerate_astc); | 1357 | WriteGlobalSetting(Settings::values.accelerate_astc); |
| 1354 | WriteGlobalSetting(Settings::values.async_astc); | 1358 | WriteGlobalSetting(Settings::values.async_astc); |
| 1355 | WriteGlobalSetting(Settings::values.use_vsync); | ||
| 1356 | WriteSetting(QString::fromStdString(Settings::values.shader_backend.GetLabel()), | 1359 | WriteSetting(QString::fromStdString(Settings::values.shader_backend.GetLabel()), |
| 1357 | static_cast<u32>(Settings::values.shader_backend.GetValue(global)), | 1360 | static_cast<u32>(Settings::values.shader_backend.GetValue(global)), |
| 1358 | static_cast<u32>(Settings::values.shader_backend.GetDefault()), | 1361 | static_cast<u32>(Settings::values.shader_backend.GetDefault()), |
| @@ -1366,6 +1369,9 @@ void Config::SaveRendererValues() { | |||
| 1366 | WriteGlobalSetting(Settings::values.bg_blue); | 1369 | WriteGlobalSetting(Settings::values.bg_blue); |
| 1367 | 1370 | ||
| 1368 | if (global) { | 1371 | if (global) { |
| 1372 | WriteSetting(QString::fromStdString(Settings::values.vsync_mode.GetLabel()), | ||
| 1373 | static_cast<u32>(Settings::values.vsync_mode.GetValue()), | ||
| 1374 | static_cast<u32>(Settings::values.vsync_mode.GetDefault())); | ||
| 1369 | WriteBasicSetting(Settings::values.renderer_debug); | 1375 | WriteBasicSetting(Settings::values.renderer_debug); |
| 1370 | WriteBasicSetting(Settings::values.renderer_shader_feedback); | 1376 | WriteBasicSetting(Settings::values.renderer_shader_feedback); |
| 1371 | WriteBasicSetting(Settings::values.enable_nsight_aftermath); | 1377 | WriteBasicSetting(Settings::values.enable_nsight_aftermath); |
diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index e9388daad..17a54f0f4 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp | |||
| @@ -99,6 +99,7 @@ void ConfigureGraphics::SetConfiguration() { | |||
| 99 | ui->nvdec_emulation_widget->setEnabled(runtime_lock); | 99 | ui->nvdec_emulation_widget->setEnabled(runtime_lock); |
| 100 | ui->resolution_combobox->setEnabled(runtime_lock); | 100 | ui->resolution_combobox->setEnabled(runtime_lock); |
| 101 | ui->accelerate_astc->setEnabled(runtime_lock); | 101 | ui->accelerate_astc->setEnabled(runtime_lock); |
| 102 | ui->vsync_mode_combobox->setEnabled(runtime_lock); | ||
| 102 | ui->use_disk_shader_cache->setChecked(Settings::values.use_disk_shader_cache.GetValue()); | 103 | ui->use_disk_shader_cache->setChecked(Settings::values.use_disk_shader_cache.GetValue()); |
| 103 | ui->use_asynchronous_gpu_emulation->setChecked( | 104 | ui->use_asynchronous_gpu_emulation->setChecked( |
| 104 | Settings::values.use_asynchronous_gpu_emulation.GetValue()); | 105 | Settings::values.use_asynchronous_gpu_emulation.GetValue()); |
| @@ -118,6 +119,9 @@ void ConfigureGraphics::SetConfiguration() { | |||
| 118 | ui->fsr_sharpening_slider->setValue(Settings::values.fsr_sharpening_slider.GetValue()); | 119 | ui->fsr_sharpening_slider->setValue(Settings::values.fsr_sharpening_slider.GetValue()); |
| 119 | ui->anti_aliasing_combobox->setCurrentIndex( | 120 | ui->anti_aliasing_combobox->setCurrentIndex( |
| 120 | static_cast<int>(Settings::values.anti_aliasing.GetValue())); | 121 | static_cast<int>(Settings::values.anti_aliasing.GetValue())); |
| 122 | |||
| 123 | ui->vsync_mode_combobox->setCurrentIndex( | ||
| 124 | static_cast<int>(Settings::values.vsync_mode.GetValue())); | ||
| 121 | } else { | 125 | } else { |
| 122 | ConfigurationShared::SetPerGameSetting(ui->api, &Settings::values.renderer_backend); | 126 | ConfigurationShared::SetPerGameSetting(ui->api, &Settings::values.renderer_backend); |
| 123 | ConfigurationShared::SetHighlight(ui->api_widget, | 127 | ConfigurationShared::SetHighlight(ui->api_widget, |
| @@ -232,6 +236,9 @@ void ConfigureGraphics::ApplyConfiguration() { | |||
| 232 | Settings::values.anti_aliasing.SetValue(anti_aliasing); | 236 | Settings::values.anti_aliasing.SetValue(anti_aliasing); |
| 233 | } | 237 | } |
| 234 | Settings::values.fsr_sharpening_slider.SetValue(ui->fsr_sharpening_slider->value()); | 238 | Settings::values.fsr_sharpening_slider.SetValue(ui->fsr_sharpening_slider->value()); |
| 239 | |||
| 240 | Settings::values.vsync_mode.SetValue( | ||
| 241 | static_cast<Settings::VSyncMode>(ui->vsync_mode_combobox->currentIndex())); | ||
| 235 | } else { | 242 | } else { |
| 236 | if (ui->resolution_combobox->currentIndex() == ConfigurationShared::USE_GLOBAL_INDEX) { | 243 | if (ui->resolution_combobox->currentIndex() == ConfigurationShared::USE_GLOBAL_INDEX) { |
| 237 | Settings::values.resolution_setup.SetGlobal(true); | 244 | Settings::values.resolution_setup.SetGlobal(true); |
| @@ -465,4 +472,6 @@ void ConfigureGraphics::SetupPerGameUI() { | |||
| 465 | ui->api, static_cast<int>(Settings::values.renderer_backend.GetValue(true))); | 472 | ui->api, static_cast<int>(Settings::values.renderer_backend.GetValue(true))); |
| 466 | ConfigurationShared::InsertGlobalItem( | 473 | ConfigurationShared::InsertGlobalItem( |
| 467 | ui->nvdec_emulation, static_cast<int>(Settings::values.nvdec_emulation.GetValue(true))); | 474 | ui->nvdec_emulation, static_cast<int>(Settings::values.nvdec_emulation.GetValue(true))); |
| 475 | |||
| 476 | ui->vsync_mode_layout->setVisible(false); | ||
| 468 | } | 477 | } |
diff --git a/src/yuzu/configuration/configure_graphics.ui b/src/yuzu/configuration/configure_graphics.ui index a45ec69ec..4c241e247 100644 --- a/src/yuzu/configuration/configure_graphics.ui +++ b/src/yuzu/configuration/configure_graphics.ui | |||
| @@ -189,6 +189,53 @@ | |||
| 189 | </widget> | 189 | </widget> |
| 190 | </item> | 190 | </item> |
| 191 | <item> | 191 | <item> |
| 192 | <widget class="QWidget" name="vsync_mode_layout" native="true"> | ||
| 193 | <layout class="QHBoxLayout" name="horizontalLayout_4"> | ||
| 194 | <property name="leftMargin"> | ||
| 195 | <number>0</number> | ||
| 196 | </property> | ||
| 197 | <property name="topMargin"> | ||
| 198 | <number>0</number> | ||
| 199 | </property> | ||
| 200 | <property name="rightMargin"> | ||
| 201 | <number>0</number> | ||
| 202 | </property> | ||
| 203 | <property name="bottomMargin"> | ||
| 204 | <number>0</number> | ||
| 205 | </property> | ||
| 206 | <item> | ||
| 207 | <widget class="QLabel" name="vsync_mode_label"> | ||
| 208 | <property name="text"> | ||
| 209 | <string>VSync Mode</string> | ||
| 210 | </property> | ||
| 211 | </widget> | ||
| 212 | </item> | ||
| 213 | <item> | ||
| 214 | <widget class="QComboBox" name="vsync_mode_combobox"> | ||
| 215 | <property name="currentText"> | ||
| 216 | <string>Off (Immediate)</string> | ||
| 217 | </property> | ||
| 218 | <item> | ||
| 219 | <property name="text"> | ||
| 220 | <string>Off (Immediate)</string> | ||
| 221 | </property> | ||
| 222 | </item> | ||
| 223 | <item> | ||
| 224 | <property name="text"> | ||
| 225 | <string>Double Buffering (FIFO)</string> | ||
| 226 | </property> | ||
| 227 | </item> | ||
| 228 | <item> | ||
| 229 | <property name="text"> | ||
| 230 | <string>Triple Buffering (Mailbox)</string> | ||
| 231 | </property> | ||
| 232 | </item> | ||
| 233 | </widget> | ||
| 234 | </item> | ||
| 235 | </layout> | ||
| 236 | </widget> | ||
| 237 | </item> | ||
| 238 | <item> | ||
| 192 | <widget class="QWidget" name="nvdec_emulation_widget" native="true"> | 239 | <widget class="QWidget" name="nvdec_emulation_widget" native="true"> |
| 193 | <layout class="QHBoxLayout" name="nvdec_emulation_layout"> | 240 | <layout class="QHBoxLayout" name="nvdec_emulation_layout"> |
| 194 | <property name="leftMargin"> | 241 | <property name="leftMargin"> |
| @@ -366,7 +413,7 @@ | |||
| 366 | </item> | 413 | </item> |
| 367 | <item> | 414 | <item> |
| 368 | <property name="text"> | 415 | <property name="text"> |
| 369 | <string>1.5X (1080p/1620p) [EXPERIMENTAL]</string> | 416 | <string>1.5X (1080p/1620p) [EXPERIMENTAL]</string> |
| 370 | </property> | 417 | </property> |
| 371 | </item> | 418 | </item> |
| 372 | <item> | 419 | <item> |
diff --git a/src/yuzu/configuration/configure_graphics_advanced.cpp b/src/yuzu/configuration/configure_graphics_advanced.cpp index 7f7bf0e4d..4072ce145 100644 --- a/src/yuzu/configuration/configure_graphics_advanced.cpp +++ b/src/yuzu/configuration/configure_graphics_advanced.cpp | |||
| @@ -21,7 +21,6 @@ ConfigureGraphicsAdvanced::~ConfigureGraphicsAdvanced() = default; | |||
| 21 | 21 | ||
| 22 | void ConfigureGraphicsAdvanced::SetConfiguration() { | 22 | void ConfigureGraphicsAdvanced::SetConfiguration() { |
| 23 | const bool runtime_lock = !system.IsPoweredOn(); | 23 | const bool runtime_lock = !system.IsPoweredOn(); |
| 24 | ui->use_vsync->setEnabled(runtime_lock); | ||
| 25 | ui->async_present->setEnabled(runtime_lock); | 24 | ui->async_present->setEnabled(runtime_lock); |
| 26 | ui->renderer_force_max_clock->setEnabled(runtime_lock); | 25 | ui->renderer_force_max_clock->setEnabled(runtime_lock); |
| 27 | ui->async_astc->setEnabled(runtime_lock); | 26 | ui->async_astc->setEnabled(runtime_lock); |
| @@ -30,7 +29,6 @@ void ConfigureGraphicsAdvanced::SetConfiguration() { | |||
| 30 | 29 | ||
| 31 | ui->async_present->setChecked(Settings::values.async_presentation.GetValue()); | 30 | ui->async_present->setChecked(Settings::values.async_presentation.GetValue()); |
| 32 | ui->renderer_force_max_clock->setChecked(Settings::values.renderer_force_max_clock.GetValue()); | 31 | ui->renderer_force_max_clock->setChecked(Settings::values.renderer_force_max_clock.GetValue()); |
| 33 | ui->use_vsync->setChecked(Settings::values.use_vsync.GetValue()); | ||
| 34 | ui->async_astc->setChecked(Settings::values.async_astc.GetValue()); | 32 | ui->async_astc->setChecked(Settings::values.async_astc.GetValue()); |
| 35 | ui->use_asynchronous_shaders->setChecked(Settings::values.use_asynchronous_shaders.GetValue()); | 33 | ui->use_asynchronous_shaders->setChecked(Settings::values.use_asynchronous_shaders.GetValue()); |
| 36 | ui->use_fast_gpu_time->setChecked(Settings::values.use_fast_gpu_time.GetValue()); | 34 | ui->use_fast_gpu_time->setChecked(Settings::values.use_fast_gpu_time.GetValue()); |
| @@ -63,7 +61,6 @@ void ConfigureGraphicsAdvanced::ApplyConfiguration() { | |||
| 63 | renderer_force_max_clock); | 61 | renderer_force_max_clock); |
| 64 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.max_anisotropy, | 62 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.max_anisotropy, |
| 65 | ui->anisotropic_filtering_combobox); | 63 | ui->anisotropic_filtering_combobox); |
| 66 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_vsync, ui->use_vsync, use_vsync); | ||
| 67 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.async_astc, ui->async_astc, | 64 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.async_astc, ui->async_astc, |
| 68 | async_astc); | 65 | async_astc); |
| 69 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_asynchronous_shaders, | 66 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_asynchronous_shaders, |
| @@ -97,7 +94,6 @@ void ConfigureGraphicsAdvanced::SetupPerGameUI() { | |||
| 97 | ui->async_present->setEnabled(Settings::values.async_presentation.UsingGlobal()); | 94 | ui->async_present->setEnabled(Settings::values.async_presentation.UsingGlobal()); |
| 98 | ui->renderer_force_max_clock->setEnabled( | 95 | ui->renderer_force_max_clock->setEnabled( |
| 99 | Settings::values.renderer_force_max_clock.UsingGlobal()); | 96 | Settings::values.renderer_force_max_clock.UsingGlobal()); |
| 100 | ui->use_vsync->setEnabled(Settings::values.use_vsync.UsingGlobal()); | ||
| 101 | ui->async_astc->setEnabled(Settings::values.async_astc.UsingGlobal()); | 97 | ui->async_astc->setEnabled(Settings::values.async_astc.UsingGlobal()); |
| 102 | ui->use_asynchronous_shaders->setEnabled( | 98 | ui->use_asynchronous_shaders->setEnabled( |
| 103 | Settings::values.use_asynchronous_shaders.UsingGlobal()); | 99 | Settings::values.use_asynchronous_shaders.UsingGlobal()); |
| @@ -117,7 +113,6 @@ void ConfigureGraphicsAdvanced::SetupPerGameUI() { | |||
| 117 | ConfigurationShared::SetColoredTristate(ui->renderer_force_max_clock, | 113 | ConfigurationShared::SetColoredTristate(ui->renderer_force_max_clock, |
| 118 | Settings::values.renderer_force_max_clock, | 114 | Settings::values.renderer_force_max_clock, |
| 119 | renderer_force_max_clock); | 115 | renderer_force_max_clock); |
| 120 | ConfigurationShared::SetColoredTristate(ui->use_vsync, Settings::values.use_vsync, use_vsync); | ||
| 121 | ConfigurationShared::SetColoredTristate(ui->async_astc, Settings::values.async_astc, | 116 | ConfigurationShared::SetColoredTristate(ui->async_astc, Settings::values.async_astc, |
| 122 | async_astc); | 117 | async_astc); |
| 123 | ConfigurationShared::SetColoredTristate(ui->use_asynchronous_shaders, | 118 | ConfigurationShared::SetColoredTristate(ui->use_asynchronous_shaders, |
diff --git a/src/yuzu/configuration/configure_graphics_advanced.ui b/src/yuzu/configuration/configure_graphics_advanced.ui index d7ec18939..134023032 100644 --- a/src/yuzu/configuration/configure_graphics_advanced.ui +++ b/src/yuzu/configuration/configure_graphics_advanced.ui | |||
| @@ -87,16 +87,6 @@ | |||
| 87 | </widget> | 87 | </widget> |
| 88 | </item> | 88 | </item> |
| 89 | <item> | 89 | <item> |
| 90 | <widget class="QCheckBox" name="use_vsync"> | ||
| 91 | <property name="toolTip"> | ||
| 92 | <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> | ||
| 93 | </property> | ||
| 94 | <property name="text"> | ||
| 95 | <string>Use VSync</string> | ||
| 96 | </property> | ||
| 97 | </widget> | ||
| 98 | </item> | ||
| 99 | <item> | ||
| 100 | <widget class="QCheckBox" name="async_astc"> | 90 | <widget class="QCheckBox" name="async_astc"> |
| 101 | <property name="toolTip"> | 91 | <property name="toolTip"> |
| 102 | <string>Enables asynchronous ASTC texture decoding, which may reduce load time stutter. This feature is experimental.</string> | 92 | <string>Enables asynchronous ASTC texture decoding, which may reduce load time stutter. This feature is experimental.</string> |
diff --git a/src/yuzu_cmd/config.cpp b/src/yuzu_cmd/config.cpp index fa347fb8c..a692ef809 100644 --- a/src/yuzu_cmd/config.cpp +++ b/src/yuzu_cmd/config.cpp | |||
| @@ -320,7 +320,7 @@ void Config::ReadValues() { | |||
| 320 | ReadSetting("Renderer", Settings::values.use_disk_shader_cache); | 320 | ReadSetting("Renderer", Settings::values.use_disk_shader_cache); |
| 321 | ReadSetting("Renderer", Settings::values.gpu_accuracy); | 321 | ReadSetting("Renderer", Settings::values.gpu_accuracy); |
| 322 | ReadSetting("Renderer", Settings::values.use_asynchronous_gpu_emulation); | 322 | ReadSetting("Renderer", Settings::values.use_asynchronous_gpu_emulation); |
| 323 | ReadSetting("Renderer", Settings::values.use_vsync); | 323 | ReadSetting("Renderer", Settings::values.vsync_mode); |
| 324 | ReadSetting("Renderer", Settings::values.shader_backend); | 324 | ReadSetting("Renderer", Settings::values.shader_backend); |
| 325 | ReadSetting("Renderer", Settings::values.use_asynchronous_shaders); | 325 | ReadSetting("Renderer", Settings::values.use_asynchronous_shaders); |
| 326 | ReadSetting("Renderer", Settings::values.nvdec_emulation); | 326 | ReadSetting("Renderer", Settings::values.nvdec_emulation); |