summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/common/settings.cpp3
-rw-r--r--src/common/settings.h9
-rw-r--r--src/core/telemetry_session.cpp15
-rw-r--r--src/video_core/renderer_vulkan/vk_swapchain.cpp27
-rw-r--r--src/yuzu/bootmanager.cpp13
-rw-r--r--src/yuzu/configuration/config.cpp10
-rw-r--r--src/yuzu/configuration/configure_graphics.cpp9
-rw-r--r--src/yuzu/configuration/configure_graphics.ui49
-rw-r--r--src/yuzu/configuration/configure_graphics_advanced.cpp5
-rw-r--r--src/yuzu/configuration/configure_graphics_advanced.ui10
-rw-r--r--src/yuzu_cmd/config.cpp2
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
17namespace Settings { 17namespace Settings {
18 18
19enum class VSyncMode : u32 {
20 Immediate,
21 FIFO,
22 Mailbox,
23};
24
19enum class RendererBackend : u32 { 25enum 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
88constexpr 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
88u64 GetTelemetryId() { 100u64 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
36VkPresentModeKHR ChooseSwapPresentMode(vk::Span<VkPresentModeKHR> modes) { 36VkPresentModeKHR 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
22void ConfigureGraphicsAdvanced::SetConfiguration() { 22void 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);