summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar ReinUsesLisp2020-05-17 21:06:32 -0300
committerGravatar ReinUsesLisp2020-05-19 17:53:17 -0300
commit47a7c4f4fed12d30c2c724df8c320cf34b654433 (patch)
tree1cb200edfd27fc54173134b1ccb4a063bc5804e6
parentMerge pull request #3665 from bunnei/device-save (diff)
downloadyuzu-47a7c4f4fed12d30c2c724df8c320cf34b654433.tar.gz
yuzu-47a7c4f4fed12d30c2c724df8c320cf34b654433.tar.xz
yuzu-47a7c4f4fed12d30c2c724df8c320cf34b654433.zip
yuzu: Add frontend settings for assembly shaders
Add settings for assembly shaders. Currently hidden to avoid users from accidentally enabled them.
-rw-r--r--src/core/settings.cpp1
-rw-r--r--src/core/settings.h1
-rw-r--r--src/core/telemetry_session.cpp1
-rw-r--r--src/yuzu/configuration/config.cpp4
-rw-r--r--src/yuzu/configuration/configure_graphics_advanced.cpp6
-rw-r--r--src/yuzu/configuration/configure_graphics_advanced.ui10
-rw-r--r--src/yuzu_cmd/config.cpp2
-rw-r--r--src/yuzu_cmd/default_ini.h4
8 files changed, 29 insertions, 0 deletions
diff --git a/src/core/settings.cpp b/src/core/settings.cpp
index da53cde05..4edff9cd8 100644
--- a/src/core/settings.cpp
+++ b/src/core/settings.cpp
@@ -112,6 +112,7 @@ void LogSettings() {
112 LogSetting("Renderer_UseAsynchronousGpuEmulation", 112 LogSetting("Renderer_UseAsynchronousGpuEmulation",
113 Settings::values.use_asynchronous_gpu_emulation); 113 Settings::values.use_asynchronous_gpu_emulation);
114 LogSetting("Renderer_UseVsync", Settings::values.use_vsync); 114 LogSetting("Renderer_UseVsync", Settings::values.use_vsync);
115 LogSetting("Renderer_UseAssemblyShaders", Settings::values.use_assembly_shaders);
115 LogSetting("Renderer_AnisotropicFilteringLevel", Settings::values.max_anisotropy); 116 LogSetting("Renderer_AnisotropicFilteringLevel", Settings::values.max_anisotropy);
116 LogSetting("Audio_OutputEngine", Settings::values.sink_id); 117 LogSetting("Audio_OutputEngine", Settings::values.sink_id);
117 LogSetting("Audio_EnableAudioStretching", Settings::values.enable_audio_stretching); 118 LogSetting("Audio_EnableAudioStretching", Settings::values.enable_audio_stretching);
diff --git a/src/core/settings.h b/src/core/settings.h
index c1266b341..78eb33737 100644
--- a/src/core/settings.h
+++ b/src/core/settings.h
@@ -446,6 +446,7 @@ struct Values {
446 GPUAccuracy gpu_accuracy; 446 GPUAccuracy gpu_accuracy;
447 bool use_asynchronous_gpu_emulation; 447 bool use_asynchronous_gpu_emulation;
448 bool use_vsync; 448 bool use_vsync;
449 bool use_assembly_shaders;
449 bool force_30fps_mode; 450 bool force_30fps_mode;
450 bool use_fast_gpu_time; 451 bool use_fast_gpu_time;
451 452
diff --git a/src/core/telemetry_session.cpp b/src/core/telemetry_session.cpp
index 1c3b03a1c..c781b3cfc 100644
--- a/src/core/telemetry_session.cpp
+++ b/src/core/telemetry_session.cpp
@@ -201,6 +201,7 @@ void TelemetrySession::AddInitialInfo(Loader::AppLoader& app_loader) {
201 AddField(field_type, "Renderer_UseAsynchronousGpuEmulation", 201 AddField(field_type, "Renderer_UseAsynchronousGpuEmulation",
202 Settings::values.use_asynchronous_gpu_emulation); 202 Settings::values.use_asynchronous_gpu_emulation);
203 AddField(field_type, "Renderer_UseVsync", Settings::values.use_vsync); 203 AddField(field_type, "Renderer_UseVsync", Settings::values.use_vsync);
204 AddField(field_type, "Renderer_UseAssemblyShaders", Settings::values.use_assembly_shaders);
204 AddField(field_type, "System_UseDockedMode", Settings::values.use_docked_mode); 205 AddField(field_type, "System_UseDockedMode", Settings::values.use_docked_mode);
205} 206}
206 207
diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp
index 27775701d..b08b87426 100644
--- a/src/yuzu/configuration/config.cpp
+++ b/src/yuzu/configuration/config.cpp
@@ -643,6 +643,8 @@ void Config::ReadRendererValues() {
643 Settings::values.use_asynchronous_gpu_emulation = 643 Settings::values.use_asynchronous_gpu_emulation =
644 ReadSetting(QStringLiteral("use_asynchronous_gpu_emulation"), false).toBool(); 644 ReadSetting(QStringLiteral("use_asynchronous_gpu_emulation"), false).toBool();
645 Settings::values.use_vsync = ReadSetting(QStringLiteral("use_vsync"), true).toBool(); 645 Settings::values.use_vsync = ReadSetting(QStringLiteral("use_vsync"), true).toBool();
646 Settings::values.use_assembly_shaders =
647 ReadSetting(QStringLiteral("use_assembly_shaders"), false).toBool();
646 Settings::values.use_fast_gpu_time = 648 Settings::values.use_fast_gpu_time =
647 ReadSetting(QStringLiteral("use_fast_gpu_time"), true).toBool(); 649 ReadSetting(QStringLiteral("use_fast_gpu_time"), true).toBool();
648 Settings::values.force_30fps_mode = 650 Settings::values.force_30fps_mode =
@@ -1090,6 +1092,8 @@ void Config::SaveRendererValues() {
1090 WriteSetting(QStringLiteral("use_asynchronous_gpu_emulation"), 1092 WriteSetting(QStringLiteral("use_asynchronous_gpu_emulation"),
1091 Settings::values.use_asynchronous_gpu_emulation, false); 1093 Settings::values.use_asynchronous_gpu_emulation, false);
1092 WriteSetting(QStringLiteral("use_vsync"), Settings::values.use_vsync, true); 1094 WriteSetting(QStringLiteral("use_vsync"), Settings::values.use_vsync, true);
1095 WriteSetting(QStringLiteral("use_assembly_shaders"), Settings::values.use_assembly_shaders,
1096 false);
1093 WriteSetting(QStringLiteral("use_fast_gpu_time"), Settings::values.use_fast_gpu_time, true); 1097 WriteSetting(QStringLiteral("use_fast_gpu_time"), Settings::values.use_fast_gpu_time, true);
1094 WriteSetting(QStringLiteral("force_30fps_mode"), Settings::values.force_30fps_mode, false); 1098 WriteSetting(QStringLiteral("force_30fps_mode"), Settings::values.force_30fps_mode, false);
1095 1099
diff --git a/src/yuzu/configuration/configure_graphics_advanced.cpp b/src/yuzu/configuration/configure_graphics_advanced.cpp
index 5bb2ae555..37aadf7f8 100644
--- a/src/yuzu/configuration/configure_graphics_advanced.cpp
+++ b/src/yuzu/configuration/configure_graphics_advanced.cpp
@@ -12,6 +12,9 @@ ConfigureGraphicsAdvanced::ConfigureGraphicsAdvanced(QWidget* parent)
12 12
13 ui->setupUi(this); 13 ui->setupUi(this);
14 14
15 // TODO: Remove this after assembly shaders are fully integrated
16 ui->use_assembly_shaders->setVisible(false);
17
15 SetConfiguration(); 18 SetConfiguration();
16} 19}
17 20
@@ -22,6 +25,8 @@ void ConfigureGraphicsAdvanced::SetConfiguration() {
22 ui->gpu_accuracy->setCurrentIndex(static_cast<int>(Settings::values.gpu_accuracy)); 25 ui->gpu_accuracy->setCurrentIndex(static_cast<int>(Settings::values.gpu_accuracy));
23 ui->use_vsync->setEnabled(runtime_lock); 26 ui->use_vsync->setEnabled(runtime_lock);
24 ui->use_vsync->setChecked(Settings::values.use_vsync); 27 ui->use_vsync->setChecked(Settings::values.use_vsync);
28 ui->use_assembly_shaders->setEnabled(runtime_lock);
29 ui->use_assembly_shaders->setChecked(Settings::values.use_assembly_shaders);
25 ui->use_fast_gpu_time->setChecked(Settings::values.use_fast_gpu_time); 30 ui->use_fast_gpu_time->setChecked(Settings::values.use_fast_gpu_time);
26 ui->force_30fps_mode->setEnabled(runtime_lock); 31 ui->force_30fps_mode->setEnabled(runtime_lock);
27 ui->force_30fps_mode->setChecked(Settings::values.force_30fps_mode); 32 ui->force_30fps_mode->setChecked(Settings::values.force_30fps_mode);
@@ -33,6 +38,7 @@ void ConfigureGraphicsAdvanced::ApplyConfiguration() {
33 auto gpu_accuracy = static_cast<Settings::GPUAccuracy>(ui->gpu_accuracy->currentIndex()); 38 auto gpu_accuracy = static_cast<Settings::GPUAccuracy>(ui->gpu_accuracy->currentIndex());
34 Settings::values.gpu_accuracy = gpu_accuracy; 39 Settings::values.gpu_accuracy = gpu_accuracy;
35 Settings::values.use_vsync = ui->use_vsync->isChecked(); 40 Settings::values.use_vsync = ui->use_vsync->isChecked();
41 Settings::values.use_assembly_shaders = ui->use_assembly_shaders->isChecked();
36 Settings::values.use_fast_gpu_time = ui->use_fast_gpu_time->isChecked(); 42 Settings::values.use_fast_gpu_time = ui->use_fast_gpu_time->isChecked();
37 Settings::values.force_30fps_mode = ui->force_30fps_mode->isChecked(); 43 Settings::values.force_30fps_mode = ui->force_30fps_mode->isChecked();
38 Settings::values.max_anisotropy = ui->anisotropic_filtering_combobox->currentIndex(); 44 Settings::values.max_anisotropy = ui->anisotropic_filtering_combobox->currentIndex();
diff --git a/src/yuzu/configuration/configure_graphics_advanced.ui b/src/yuzu/configuration/configure_graphics_advanced.ui
index 770b80c50..0021607ac 100644
--- a/src/yuzu/configuration/configure_graphics_advanced.ui
+++ b/src/yuzu/configuration/configure_graphics_advanced.ui
@@ -63,6 +63,16 @@
63 </widget> 63 </widget>
64 </item> 64 </item>
65 <item> 65 <item>
66 <widget class="QCheckBox" name="use_assembly_shaders">
67 <property name="toolTip">
68 <string>Enabling this reduces shader stutter. Enables OpenGL assembly shaders on supported Nvidia devices (NV_gpu_program5 is required). This feature is experimental.</string>
69 </property>
70 <property name="text">
71 <string>Use assembly shaders (experimental, Nvidia OpenGL only)</string>
72 </property>
73 </widget>
74 </item>
75 <item>
66 <widget class="QCheckBox" name="force_30fps_mode"> 76 <widget class="QCheckBox" name="force_30fps_mode">
67 <property name="text"> 77 <property name="text">
68 <string>Force 30 FPS mode</string> 78 <string>Force 30 FPS mode</string>
diff --git a/src/yuzu_cmd/config.cpp b/src/yuzu_cmd/config.cpp
index 2348e6e0d..c20d48c42 100644
--- a/src/yuzu_cmd/config.cpp
+++ b/src/yuzu_cmd/config.cpp
@@ -397,6 +397,8 @@ void Config::ReadValues() {
397 sdl2_config->GetBoolean("Renderer", "use_asynchronous_gpu_emulation", false); 397 sdl2_config->GetBoolean("Renderer", "use_asynchronous_gpu_emulation", false);
398 Settings::values.use_vsync = 398 Settings::values.use_vsync =
399 static_cast<u16>(sdl2_config->GetInteger("Renderer", "use_vsync", 1)); 399 static_cast<u16>(sdl2_config->GetInteger("Renderer", "use_vsync", 1));
400 Settings::values.use_assembly_shaders =
401 sdl2_config->GetBoolean("Renderer", "use_assembly_shaders", false);
400 Settings::values.use_fast_gpu_time = 402 Settings::values.use_fast_gpu_time =
401 sdl2_config->GetBoolean("Renderer", "use_fast_gpu_time", true); 403 sdl2_config->GetBoolean("Renderer", "use_fast_gpu_time", true);
402 404
diff --git a/src/yuzu_cmd/default_ini.h b/src/yuzu_cmd/default_ini.h
index ae94b51c4..abc6e6e65 100644
--- a/src/yuzu_cmd/default_ini.h
+++ b/src/yuzu_cmd/default_ini.h
@@ -134,6 +134,10 @@ max_anisotropy =
134# 0 (default): Off, 1: On 134# 0 (default): Off, 1: On
135use_vsync = 135use_vsync =
136 136
137# Whether to use OpenGL assembly shaders or not. NV_gpu_program5 is required.
138# 0 (default): Off, 1: On
139use_assembly_shaders =
140
137# Turns on the frame limiter, which will limit frames output to the target game speed 141# Turns on the frame limiter, which will limit frames output to the target game speed
138# 0: Off, 1: On (default) 142# 0: Off, 1: On (default)
139use_frame_limit = 143use_frame_limit =