diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/common/settings.cpp | 1 | ||||
| -rw-r--r-- | src/common/settings.h | 1 | ||||
| -rw-r--r-- | src/video_core/buffer_cache/buffer_base.h | 5 | ||||
| -rw-r--r-- | src/yuzu/configuration/config.cpp | 2 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_graphics_advanced.cpp | 8 | ||||
| -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 | ||||
| -rw-r--r-- | src/yuzu_cmd/default_ini.h | 4 |
9 files changed, 32 insertions, 1 deletions
diff --git a/src/common/settings.cpp b/src/common/settings.cpp index 7282a45d3..0a560ebb7 100644 --- a/src/common/settings.cpp +++ b/src/common/settings.cpp | |||
| @@ -195,6 +195,7 @@ void RestoreGlobalState(bool is_powered_on) { | |||
| 195 | values.shader_backend.SetGlobal(true); | 195 | values.shader_backend.SetGlobal(true); |
| 196 | values.use_asynchronous_shaders.SetGlobal(true); | 196 | values.use_asynchronous_shaders.SetGlobal(true); |
| 197 | values.use_fast_gpu_time.SetGlobal(true); | 197 | values.use_fast_gpu_time.SetGlobal(true); |
| 198 | values.use_pessimistic_flushes.SetGlobal(true); | ||
| 198 | values.bg_red.SetGlobal(true); | 199 | values.bg_red.SetGlobal(true); |
| 199 | values.bg_green.SetGlobal(true); | 200 | values.bg_green.SetGlobal(true); |
| 200 | values.bg_blue.SetGlobal(true); | 201 | values.bg_blue.SetGlobal(true); |
diff --git a/src/common/settings.h b/src/common/settings.h index 14ed9b237..13651de57 100644 --- a/src/common/settings.h +++ b/src/common/settings.h | |||
| @@ -446,6 +446,7 @@ struct Values { | |||
| 446 | ShaderBackend::SPIRV, "shader_backend"}; | 446 | ShaderBackend::SPIRV, "shader_backend"}; |
| 447 | SwitchableSetting<bool> use_asynchronous_shaders{false, "use_asynchronous_shaders"}; | 447 | SwitchableSetting<bool> use_asynchronous_shaders{false, "use_asynchronous_shaders"}; |
| 448 | SwitchableSetting<bool> use_fast_gpu_time{true, "use_fast_gpu_time"}; | 448 | SwitchableSetting<bool> use_fast_gpu_time{true, "use_fast_gpu_time"}; |
| 449 | SwitchableSetting<bool> use_pessimistic_flushes{false, "use_pessimistic_flushes"}; | ||
| 449 | 450 | ||
| 450 | SwitchableSetting<u8> bg_red{0, "bg_red"}; | 451 | SwitchableSetting<u8> bg_red{0, "bg_red"}; |
| 451 | SwitchableSetting<u8> bg_green{0, "bg_green"}; | 452 | SwitchableSetting<u8> bg_green{0, "bg_green"}; |
diff --git a/src/video_core/buffer_cache/buffer_base.h b/src/video_core/buffer_cache/buffer_base.h index 0b2bc67b1..f9a6472cf 100644 --- a/src/video_core/buffer_cache/buffer_base.h +++ b/src/video_core/buffer_cache/buffer_base.h | |||
| @@ -12,6 +12,7 @@ | |||
| 12 | #include "common/common_funcs.h" | 12 | #include "common/common_funcs.h" |
| 13 | #include "common/common_types.h" | 13 | #include "common/common_types.h" |
| 14 | #include "common/div_ceil.h" | 14 | #include "common/div_ceil.h" |
| 15 | #include "common/settings.h" | ||
| 15 | #include "core/memory.h" | 16 | #include "core/memory.h" |
| 16 | 17 | ||
| 17 | namespace VideoCommon { | 18 | namespace VideoCommon { |
| @@ -219,7 +220,9 @@ public: | |||
| 219 | NotifyRasterizer<false>(word_index, untracked_words[word_index], cached_bits); | 220 | NotifyRasterizer<false>(word_index, untracked_words[word_index], cached_bits); |
| 220 | untracked_words[word_index] |= cached_bits; | 221 | untracked_words[word_index] |= cached_bits; |
| 221 | cpu_words[word_index] |= cached_bits; | 222 | cpu_words[word_index] |= cached_bits; |
| 222 | cached_words[word_index] = 0; | 223 | if (!Settings::values.use_pessimistic_flushes) { |
| 224 | cached_words[word_index] = 0; | ||
| 225 | } | ||
| 223 | } | 226 | } |
| 224 | } | 227 | } |
| 225 | 228 | ||
diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp index da6e5aa88..8ecd87150 100644 --- a/src/yuzu/configuration/config.cpp +++ b/src/yuzu/configuration/config.cpp | |||
| @@ -684,6 +684,7 @@ void Config::ReadRendererValues() { | |||
| 684 | ReadGlobalSetting(Settings::values.shader_backend); | 684 | ReadGlobalSetting(Settings::values.shader_backend); |
| 685 | ReadGlobalSetting(Settings::values.use_asynchronous_shaders); | 685 | ReadGlobalSetting(Settings::values.use_asynchronous_shaders); |
| 686 | ReadGlobalSetting(Settings::values.use_fast_gpu_time); | 686 | ReadGlobalSetting(Settings::values.use_fast_gpu_time); |
| 687 | ReadGlobalSetting(Settings::values.use_pessimistic_flushes); | ||
| 687 | ReadGlobalSetting(Settings::values.bg_red); | 688 | ReadGlobalSetting(Settings::values.bg_red); |
| 688 | ReadGlobalSetting(Settings::values.bg_green); | 689 | ReadGlobalSetting(Settings::values.bg_green); |
| 689 | ReadGlobalSetting(Settings::values.bg_blue); | 690 | ReadGlobalSetting(Settings::values.bg_blue); |
| @@ -1300,6 +1301,7 @@ void Config::SaveRendererValues() { | |||
| 1300 | Settings::values.shader_backend.UsingGlobal()); | 1301 | Settings::values.shader_backend.UsingGlobal()); |
| 1301 | WriteGlobalSetting(Settings::values.use_asynchronous_shaders); | 1302 | WriteGlobalSetting(Settings::values.use_asynchronous_shaders); |
| 1302 | WriteGlobalSetting(Settings::values.use_fast_gpu_time); | 1303 | WriteGlobalSetting(Settings::values.use_fast_gpu_time); |
| 1304 | WriteGlobalSetting(Settings::values.use_pessimistic_flushes); | ||
| 1303 | WriteGlobalSetting(Settings::values.bg_red); | 1305 | WriteGlobalSetting(Settings::values.bg_red); |
| 1304 | WriteGlobalSetting(Settings::values.bg_green); | 1306 | WriteGlobalSetting(Settings::values.bg_green); |
| 1305 | WriteGlobalSetting(Settings::values.bg_blue); | 1307 | WriteGlobalSetting(Settings::values.bg_blue); |
diff --git a/src/yuzu/configuration/configure_graphics_advanced.cpp b/src/yuzu/configuration/configure_graphics_advanced.cpp index 7c3196c83..01f074699 100644 --- a/src/yuzu/configuration/configure_graphics_advanced.cpp +++ b/src/yuzu/configuration/configure_graphics_advanced.cpp | |||
| @@ -28,6 +28,7 @@ void ConfigureGraphicsAdvanced::SetConfiguration() { | |||
| 28 | ui->use_vsync->setChecked(Settings::values.use_vsync.GetValue()); | 28 | ui->use_vsync->setChecked(Settings::values.use_vsync.GetValue()); |
| 29 | ui->use_asynchronous_shaders->setChecked(Settings::values.use_asynchronous_shaders.GetValue()); | 29 | 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()); | 30 | ui->use_fast_gpu_time->setChecked(Settings::values.use_fast_gpu_time.GetValue()); |
| 31 | ui->use_pessimistic_flushes->setChecked(Settings::values.use_pessimistic_flushes.GetValue()); | ||
| 31 | 32 | ||
| 32 | if (Settings::IsConfiguringGlobal()) { | 33 | if (Settings::IsConfiguringGlobal()) { |
| 33 | ui->gpu_accuracy->setCurrentIndex( | 34 | ui->gpu_accuracy->setCurrentIndex( |
| @@ -55,6 +56,8 @@ void ConfigureGraphicsAdvanced::ApplyConfiguration() { | |||
| 55 | use_asynchronous_shaders); | 56 | use_asynchronous_shaders); |
| 56 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_fast_gpu_time, | 57 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_fast_gpu_time, |
| 57 | ui->use_fast_gpu_time, use_fast_gpu_time); | 58 | ui->use_fast_gpu_time, use_fast_gpu_time); |
| 59 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_pessimistic_flushes, | ||
| 60 | ui->use_pessimistic_flushes, use_pessimistic_flushes); | ||
| 58 | } | 61 | } |
| 59 | 62 | ||
| 60 | void ConfigureGraphicsAdvanced::changeEvent(QEvent* event) { | 63 | void ConfigureGraphicsAdvanced::changeEvent(QEvent* event) { |
| @@ -77,6 +80,8 @@ void ConfigureGraphicsAdvanced::SetupPerGameUI() { | |||
| 77 | ui->use_asynchronous_shaders->setEnabled( | 80 | ui->use_asynchronous_shaders->setEnabled( |
| 78 | Settings::values.use_asynchronous_shaders.UsingGlobal()); | 81 | Settings::values.use_asynchronous_shaders.UsingGlobal()); |
| 79 | ui->use_fast_gpu_time->setEnabled(Settings::values.use_fast_gpu_time.UsingGlobal()); | 82 | ui->use_fast_gpu_time->setEnabled(Settings::values.use_fast_gpu_time.UsingGlobal()); |
| 83 | ui->use_pessimistic_flushes->setEnabled( | ||
| 84 | Settings::values.use_pessimistic_flushes.UsingGlobal()); | ||
| 80 | ui->anisotropic_filtering_combobox->setEnabled( | 85 | ui->anisotropic_filtering_combobox->setEnabled( |
| 81 | Settings::values.max_anisotropy.UsingGlobal()); | 86 | Settings::values.max_anisotropy.UsingGlobal()); |
| 82 | 87 | ||
| @@ -89,6 +94,9 @@ void ConfigureGraphicsAdvanced::SetupPerGameUI() { | |||
| 89 | use_asynchronous_shaders); | 94 | use_asynchronous_shaders); |
| 90 | ConfigurationShared::SetColoredTristate(ui->use_fast_gpu_time, | 95 | ConfigurationShared::SetColoredTristate(ui->use_fast_gpu_time, |
| 91 | Settings::values.use_fast_gpu_time, use_fast_gpu_time); | 96 | Settings::values.use_fast_gpu_time, use_fast_gpu_time); |
| 97 | ConfigurationShared::SetColoredTristate(ui->use_pessimistic_flushes, | ||
| 98 | Settings::values.use_pessimistic_flushes, | ||
| 99 | use_pessimistic_flushes); | ||
| 92 | ConfigurationShared::SetColoredComboBox( | 100 | ConfigurationShared::SetColoredComboBox( |
| 93 | ui->gpu_accuracy, ui->label_gpu_accuracy, | 101 | ui->gpu_accuracy, ui->label_gpu_accuracy, |
| 94 | static_cast<int>(Settings::values.gpu_accuracy.GetValue(true))); | 102 | static_cast<int>(Settings::values.gpu_accuracy.GetValue(true))); |
diff --git a/src/yuzu/configuration/configure_graphics_advanced.h b/src/yuzu/configuration/configure_graphics_advanced.h index 1ef7bd916..12e816905 100644 --- a/src/yuzu/configuration/configure_graphics_advanced.h +++ b/src/yuzu/configuration/configure_graphics_advanced.h | |||
| @@ -39,6 +39,7 @@ private: | |||
| 39 | ConfigurationShared::CheckState use_vsync; | 39 | ConfigurationShared::CheckState use_vsync; |
| 40 | ConfigurationShared::CheckState use_asynchronous_shaders; | 40 | ConfigurationShared::CheckState use_asynchronous_shaders; |
| 41 | ConfigurationShared::CheckState use_fast_gpu_time; | 41 | ConfigurationShared::CheckState use_fast_gpu_time; |
| 42 | ConfigurationShared::CheckState use_pessimistic_flushes; | ||
| 42 | 43 | ||
| 43 | const Core::System& system; | 44 | const Core::System& system; |
| 44 | }; | 45 | }; |
diff --git a/src/yuzu/configuration/configure_graphics_advanced.ui b/src/yuzu/configuration/configure_graphics_advanced.ui index d6d819364..87a121471 100644 --- a/src/yuzu/configuration/configure_graphics_advanced.ui +++ b/src/yuzu/configuration/configure_graphics_advanced.ui | |||
| @@ -100,6 +100,16 @@ | |||
| 100 | </widget> | 100 | </widget> |
| 101 | </item> | 101 | </item> |
| 102 | <item> | 102 | <item> |
| 103 | <widget class="QCheckBox" name="use_pessimistic_flushes"> | ||
| 104 | <property name="toolTip"> | ||
| 105 | <string>Enables pessimistic buffer flushes. This option will force unmodified buffers to be flushed, which can cost performance.</string> | ||
| 106 | </property> | ||
| 107 | <property name="text"> | ||
| 108 | <string>Use pessimistic buffer flushes (Hack)</string> | ||
| 109 | </property> | ||
| 110 | </widget> | ||
| 111 | </item> | ||
| 112 | <item> | ||
| 103 | <widget class="QWidget" name="af_layout" native="true"> | 113 | <widget class="QWidget" name="af_layout" native="true"> |
| 104 | <layout class="QHBoxLayout" name="horizontalLayout_1"> | 114 | <layout class="QHBoxLayout" name="horizontalLayout_1"> |
| 105 | <property name="leftMargin"> | 115 | <property name="leftMargin"> |
diff --git a/src/yuzu_cmd/config.cpp b/src/yuzu_cmd/config.cpp index bd0fb75f8..66dd0dc15 100644 --- a/src/yuzu_cmd/config.cpp +++ b/src/yuzu_cmd/config.cpp | |||
| @@ -314,6 +314,7 @@ void Config::ReadValues() { | |||
| 314 | ReadSetting("Renderer", Settings::values.nvdec_emulation); | 314 | ReadSetting("Renderer", Settings::values.nvdec_emulation); |
| 315 | ReadSetting("Renderer", Settings::values.accelerate_astc); | 315 | ReadSetting("Renderer", Settings::values.accelerate_astc); |
| 316 | ReadSetting("Renderer", Settings::values.use_fast_gpu_time); | 316 | ReadSetting("Renderer", Settings::values.use_fast_gpu_time); |
| 317 | ReadSetting("Renderer", Settings::values.use_pessimistic_flushes); | ||
| 317 | 318 | ||
| 318 | ReadSetting("Renderer", Settings::values.bg_red); | 319 | ReadSetting("Renderer", Settings::values.bg_red); |
| 319 | ReadSetting("Renderer", Settings::values.bg_green); | 320 | ReadSetting("Renderer", Settings::values.bg_green); |
diff --git a/src/yuzu_cmd/default_ini.h b/src/yuzu_cmd/default_ini.h index 1168cf136..d214771b0 100644 --- a/src/yuzu_cmd/default_ini.h +++ b/src/yuzu_cmd/default_ini.h | |||
| @@ -319,6 +319,10 @@ use_asynchronous_gpu_emulation = | |||
| 319 | # 0: Off, 1 (default): On | 319 | # 0: Off, 1 (default): On |
| 320 | use_fast_gpu_time = | 320 | use_fast_gpu_time = |
| 321 | 321 | ||
| 322 | # Force unmodified buffers to be flushed, which can cost performance. | ||
| 323 | # 0: Off (default), 1: On | ||
| 324 | use_pessimistic_flushes = | ||
| 325 | |||
| 322 | # Whether to use garbage collection or not for GPU caches. | 326 | # Whether to use garbage collection or not for GPU caches. |
| 323 | # 0 (default): Off, 1: On | 327 | # 0 (default): Off, 1: On |
| 324 | use_caches_gc = | 328 | use_caches_gc = |