diff options
| author | 2020-05-17 21:06:32 -0300 | |
|---|---|---|
| committer | 2020-05-19 17:53:17 -0300 | |
| commit | 47a7c4f4fed12d30c2c724df8c320cf34b654433 (patch) | |
| tree | 1cb200edfd27fc54173134b1ccb4a063bc5804e6 | |
| parent | Merge pull request #3665 from bunnei/device-save (diff) | |
| download | yuzu-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.cpp | 1 | ||||
| -rw-r--r-- | src/core/settings.h | 1 | ||||
| -rw-r--r-- | src/core/telemetry_session.cpp | 1 | ||||
| -rw-r--r-- | src/yuzu/configuration/config.cpp | 4 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_graphics_advanced.cpp | 6 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_graphics_advanced.ui | 10 | ||||
| -rw-r--r-- | src/yuzu_cmd/config.cpp | 2 | ||||
| -rw-r--r-- | src/yuzu_cmd/default_ini.h | 4 |
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 |
| 135 | use_vsync = | 135 | use_vsync = |
| 136 | 136 | ||
| 137 | # Whether to use OpenGL assembly shaders or not. NV_gpu_program5 is required. | ||
| 138 | # 0 (default): Off, 1: On | ||
| 139 | use_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) |
| 139 | use_frame_limit = | 143 | use_frame_limit = |