diff options
| author | 2020-04-20 13:20:52 -0400 | |
|---|---|---|
| committer | 2020-04-23 08:52:57 -0400 | |
| commit | b8aef40c56588c999b15a63516b5d68958f667df (patch) | |
| tree | 0edd0e6d5346b8cc3d992962c6381efe7a897dc2 | |
| parent | Maxwell3D: Process Macros on MultiMethod. (diff) | |
| download | yuzu-b8aef40c56588c999b15a63516b5d68958f667df.tar.gz yuzu-b8aef40c56588c999b15a63516b5d68958f667df.tar.xz yuzu-b8aef40c56588c999b15a63516b5d68958f667df.zip | |
GPU: Add Fast GPU Time Option.
| -rw-r--r-- | src/core/settings.h | 1 | ||||
| -rw-r--r-- | src/video_core/gpu.cpp | 6 | ||||
| -rw-r--r-- | src/yuzu/configuration/config.cpp | 2 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_graphics_advanced.cpp | 2 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_graphics_advanced.ui | 7 | ||||
| -rw-r--r-- | src/yuzu_cmd/config.cpp | 2 | ||||
| -rw-r--r-- | src/yuzu_tester/config.cpp | 2 |
7 files changed, 21 insertions, 1 deletions
diff --git a/src/core/settings.h b/src/core/settings.h index 7d09253f5..163900f0b 100644 --- a/src/core/settings.h +++ b/src/core/settings.h | |||
| @@ -446,6 +446,7 @@ struct Values { | |||
| 446 | bool use_asynchronous_gpu_emulation; | 446 | bool use_asynchronous_gpu_emulation; |
| 447 | bool use_vsync; | 447 | bool use_vsync; |
| 448 | bool force_30fps_mode; | 448 | bool force_30fps_mode; |
| 449 | bool use_fast_gpu_time; | ||
| 449 | 450 | ||
| 450 | float bg_red; | 451 | float bg_red; |
| 451 | float bg_green; | 452 | float bg_green; |
diff --git a/src/video_core/gpu.cpp b/src/video_core/gpu.cpp index 54e7876a6..d2bd3cc9d 100644 --- a/src/video_core/gpu.cpp +++ b/src/video_core/gpu.cpp | |||
| @@ -9,6 +9,7 @@ | |||
| 9 | #include "core/core_timing_util.h" | 9 | #include "core/core_timing_util.h" |
| 10 | #include "core/frontend/emu_window.h" | 10 | #include "core/frontend/emu_window.h" |
| 11 | #include "core/memory.h" | 11 | #include "core/memory.h" |
| 12 | #include "core/settings.h" | ||
| 12 | #include "video_core/engines/fermi_2d.h" | 13 | #include "video_core/engines/fermi_2d.h" |
| 13 | #include "video_core/engines/kepler_compute.h" | 14 | #include "video_core/engines/kepler_compute.h" |
| 14 | #include "video_core/engines/kepler_memory.h" | 15 | #include "video_core/engines/kepler_memory.h" |
| @@ -154,7 +155,10 @@ u64 GPU::GetTicks() const { | |||
| 154 | constexpr u64 gpu_ticks_den = 625; | 155 | constexpr u64 gpu_ticks_den = 625; |
| 155 | 156 | ||
| 156 | const u64 cpu_ticks = system.CoreTiming().GetTicks(); | 157 | const u64 cpu_ticks = system.CoreTiming().GetTicks(); |
| 157 | const u64 nanoseconds = Core::Timing::CyclesToNs(cpu_ticks).count(); | 158 | u64 nanoseconds = Core::Timing::CyclesToNs(cpu_ticks).count(); |
| 159 | if (Settings::values.use_fast_gpu_time) { | ||
| 160 | nanoseconds /= 256; | ||
| 161 | } | ||
| 158 | const u64 nanoseconds_num = nanoseconds / gpu_ticks_den; | 162 | const u64 nanoseconds_num = nanoseconds / gpu_ticks_den; |
| 159 | const u64 nanoseconds_rem = nanoseconds % gpu_ticks_den; | 163 | const u64 nanoseconds_rem = nanoseconds % gpu_ticks_den; |
| 160 | return nanoseconds_num * gpu_ticks_num + (nanoseconds_rem * gpu_ticks_num) / gpu_ticks_den; | 164 | return nanoseconds_num * gpu_ticks_num + (nanoseconds_rem * gpu_ticks_num) / gpu_ticks_den; |
diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp index 196a3a116..c7c11b9dd 100644 --- a/src/yuzu/configuration/config.cpp +++ b/src/yuzu/configuration/config.cpp | |||
| @@ -644,6 +644,7 @@ void Config::ReadRendererValues() { | |||
| 644 | Settings::values.use_asynchronous_gpu_emulation = | 644 | Settings::values.use_asynchronous_gpu_emulation = |
| 645 | ReadSetting(QStringLiteral("use_asynchronous_gpu_emulation"), false).toBool(); | 645 | ReadSetting(QStringLiteral("use_asynchronous_gpu_emulation"), false).toBool(); |
| 646 | Settings::values.use_vsync = ReadSetting(QStringLiteral("use_vsync"), true).toBool(); | 646 | Settings::values.use_vsync = ReadSetting(QStringLiteral("use_vsync"), true).toBool(); |
| 647 | Settings::values.use_fast_gpu_time = ReadSetting(QStringLiteral("use_fast_gpu_time"), true).toBool(); | ||
| 647 | Settings::values.force_30fps_mode = | 648 | Settings::values.force_30fps_mode = |
| 648 | ReadSetting(QStringLiteral("force_30fps_mode"), false).toBool(); | 649 | ReadSetting(QStringLiteral("force_30fps_mode"), false).toBool(); |
| 649 | 650 | ||
| @@ -1085,6 +1086,7 @@ void Config::SaveRendererValues() { | |||
| 1085 | WriteSetting(QStringLiteral("use_asynchronous_gpu_emulation"), | 1086 | WriteSetting(QStringLiteral("use_asynchronous_gpu_emulation"), |
| 1086 | Settings::values.use_asynchronous_gpu_emulation, false); | 1087 | Settings::values.use_asynchronous_gpu_emulation, false); |
| 1087 | WriteSetting(QStringLiteral("use_vsync"), Settings::values.use_vsync, true); | 1088 | WriteSetting(QStringLiteral("use_vsync"), Settings::values.use_vsync, true); |
| 1089 | WriteSetting(QStringLiteral("use_fast_gpu_time"), Settings::values.use_fast_gpu_time, true); | ||
| 1088 | WriteSetting(QStringLiteral("force_30fps_mode"), Settings::values.force_30fps_mode, false); | 1090 | WriteSetting(QStringLiteral("force_30fps_mode"), Settings::values.force_30fps_mode, false); |
| 1089 | 1091 | ||
| 1090 | // Cast to double because Qt's written float values are not human-readable | 1092 | // Cast to double because Qt's written float values are not human-readable |
diff --git a/src/yuzu/configuration/configure_graphics_advanced.cpp b/src/yuzu/configuration/configure_graphics_advanced.cpp index 0a3f47339..5bb2ae555 100644 --- a/src/yuzu/configuration/configure_graphics_advanced.cpp +++ b/src/yuzu/configuration/configure_graphics_advanced.cpp | |||
| @@ -22,6 +22,7 @@ void ConfigureGraphicsAdvanced::SetConfiguration() { | |||
| 22 | ui->gpu_accuracy->setCurrentIndex(static_cast<int>(Settings::values.gpu_accuracy)); | 22 | ui->gpu_accuracy->setCurrentIndex(static_cast<int>(Settings::values.gpu_accuracy)); |
| 23 | ui->use_vsync->setEnabled(runtime_lock); | 23 | ui->use_vsync->setEnabled(runtime_lock); |
| 24 | ui->use_vsync->setChecked(Settings::values.use_vsync); | 24 | ui->use_vsync->setChecked(Settings::values.use_vsync); |
| 25 | ui->use_fast_gpu_time->setChecked(Settings::values.use_fast_gpu_time); | ||
| 25 | ui->force_30fps_mode->setEnabled(runtime_lock); | 26 | ui->force_30fps_mode->setEnabled(runtime_lock); |
| 26 | ui->force_30fps_mode->setChecked(Settings::values.force_30fps_mode); | 27 | ui->force_30fps_mode->setChecked(Settings::values.force_30fps_mode); |
| 27 | ui->anisotropic_filtering_combobox->setEnabled(runtime_lock); | 28 | ui->anisotropic_filtering_combobox->setEnabled(runtime_lock); |
| @@ -32,6 +33,7 @@ void ConfigureGraphicsAdvanced::ApplyConfiguration() { | |||
| 32 | auto gpu_accuracy = static_cast<Settings::GPUAccuracy>(ui->gpu_accuracy->currentIndex()); | 33 | auto gpu_accuracy = static_cast<Settings::GPUAccuracy>(ui->gpu_accuracy->currentIndex()); |
| 33 | Settings::values.gpu_accuracy = gpu_accuracy; | 34 | Settings::values.gpu_accuracy = gpu_accuracy; |
| 34 | Settings::values.use_vsync = ui->use_vsync->isChecked(); | 35 | Settings::values.use_vsync = ui->use_vsync->isChecked(); |
| 36 | Settings::values.use_fast_gpu_time = ui->use_fast_gpu_time->isChecked(); | ||
| 35 | Settings::values.force_30fps_mode = ui->force_30fps_mode->isChecked(); | 37 | Settings::values.force_30fps_mode = ui->force_30fps_mode->isChecked(); |
| 36 | Settings::values.max_anisotropy = ui->anisotropic_filtering_combobox->currentIndex(); | 38 | Settings::values.max_anisotropy = ui->anisotropic_filtering_combobox->currentIndex(); |
| 37 | } | 39 | } |
diff --git a/src/yuzu/configuration/configure_graphics_advanced.ui b/src/yuzu/configuration/configure_graphics_advanced.ui index 0c7b383e0..770b80c50 100644 --- a/src/yuzu/configuration/configure_graphics_advanced.ui +++ b/src/yuzu/configuration/configure_graphics_advanced.ui | |||
| @@ -70,6 +70,13 @@ | |||
| 70 | </widget> | 70 | </widget> |
| 71 | </item> | 71 | </item> |
| 72 | <item> | 72 | <item> |
| 73 | <widget class="QCheckBox" name="use_fast_gpu_time"> | ||
| 74 | <property name="text"> | ||
| 75 | <string>Use Fast GPU Time</string> | ||
| 76 | </property> | ||
| 77 | </widget> | ||
| 78 | </item> | ||
| 79 | <item> | ||
| 73 | <layout class="QHBoxLayout" name="horizontalLayout_1"> | 80 | <layout class="QHBoxLayout" name="horizontalLayout_1"> |
| 74 | <item> | 81 | <item> |
| 75 | <widget class="QLabel" name="af_label"> | 82 | <widget class="QLabel" name="af_label"> |
diff --git a/src/yuzu_cmd/config.cpp b/src/yuzu_cmd/config.cpp index d1ac354bf..8476a5a16 100644 --- a/src/yuzu_cmd/config.cpp +++ b/src/yuzu_cmd/config.cpp | |||
| @@ -394,6 +394,8 @@ void Config::ReadValues() { | |||
| 394 | sdl2_config->GetBoolean("Renderer", "use_asynchronous_gpu_emulation", false); | 394 | sdl2_config->GetBoolean("Renderer", "use_asynchronous_gpu_emulation", false); |
| 395 | Settings::values.use_vsync = | 395 | Settings::values.use_vsync = |
| 396 | static_cast<u16>(sdl2_config->GetInteger("Renderer", "use_vsync", 1)); | 396 | static_cast<u16>(sdl2_config->GetInteger("Renderer", "use_vsync", 1)); |
| 397 | Settings::values.use_fast_gpu_time = | ||
| 398 | sdl2_config->GetBoolean("Renderer", "use_fast_gpu_time", true); | ||
| 397 | 399 | ||
| 398 | Settings::values.bg_red = static_cast<float>(sdl2_config->GetReal("Renderer", "bg_red", 0.0)); | 400 | Settings::values.bg_red = static_cast<float>(sdl2_config->GetReal("Renderer", "bg_red", 0.0)); |
| 399 | Settings::values.bg_green = | 401 | Settings::values.bg_green = |
diff --git a/src/yuzu_tester/config.cpp b/src/yuzu_tester/config.cpp index c0325cc3c..3be58b15d 100644 --- a/src/yuzu_tester/config.cpp +++ b/src/yuzu_tester/config.cpp | |||
| @@ -130,6 +130,8 @@ void Config::ReadValues() { | |||
| 130 | Settings::values.gpu_accuracy = static_cast<Settings::GPUAccuracy>(gpu_accuracy_level); | 130 | Settings::values.gpu_accuracy = static_cast<Settings::GPUAccuracy>(gpu_accuracy_level); |
| 131 | Settings::values.use_asynchronous_gpu_emulation = | 131 | Settings::values.use_asynchronous_gpu_emulation = |
| 132 | sdl2_config->GetBoolean("Renderer", "use_asynchronous_gpu_emulation", false); | 132 | sdl2_config->GetBoolean("Renderer", "use_asynchronous_gpu_emulation", false); |
| 133 | Settings::values.use_fast_gpu_time = | ||
| 134 | sdl2_config->GetBoolean("Renderer", "use_fast_gpu_time", true); | ||
| 133 | 135 | ||
| 134 | Settings::values.bg_red = static_cast<float>(sdl2_config->GetReal("Renderer", "bg_red", 0.0)); | 136 | Settings::values.bg_red = static_cast<float>(sdl2_config->GetReal("Renderer", "bg_red", 0.0)); |
| 135 | Settings::values.bg_green = | 137 | Settings::values.bg_green = |