Jelajahi Sumber

core: settings: Untangle multicore from asynchronous GPU.

- Now that GPU is always threaded, we can support multicore with synchronous GPU.
bunnei 5 tahun lalu
induk
melakukan
916438a9de
5 mengubah file dengan 4 tambahan dan 21 penghapusan
  1. 1 1
      src/core/core.cpp
  2. 0 5
      src/core/settings.cpp
  3. 0 3
      src/core/settings.h
  4. 0 2
      src/yuzu/configuration/config.cpp
  5. 3 10
      src/yuzu/main.cpp

+ 1 - 1
src/core/core.cpp

@@ -159,7 +159,7 @@ struct System::Impl {
         device_memory = std::make_unique<Core::DeviceMemory>();
         device_memory = std::make_unique<Core::DeviceMemory>();
 
 
         is_multicore = Settings::values.use_multi_core.GetValue();
         is_multicore = Settings::values.use_multi_core.GetValue();
-        is_async_gpu = is_multicore || Settings::values.use_asynchronous_gpu_emulation.GetValue();
+        is_async_gpu = Settings::values.use_asynchronous_gpu_emulation.GetValue();
 
 
         kernel.SetMulticore(is_multicore);
         kernel.SetMulticore(is_multicore);
         cpu_manager.SetMulticore(is_multicore);
         cpu_manager.SetMulticore(is_multicore);

+ 0 - 5
src/core/settings.cpp

@@ -148,9 +148,4 @@ void RestoreGlobalState(bool is_powered_on) {
     values.motion_enabled.SetGlobal(true);
     values.motion_enabled.SetGlobal(true);
 }
 }
 
 
-void Sanitize() {
-    values.use_asynchronous_gpu_emulation.SetValue(
-        values.use_asynchronous_gpu_emulation.GetValue() || values.use_multi_core.GetValue());
-}
-
 } // namespace Settings
 } // namespace Settings

+ 0 - 3
src/core/settings.h

@@ -257,7 +257,4 @@ void LogSettings();
 // Restore the global state of all applicable settings in the Values struct
 // Restore the global state of all applicable settings in the Values struct
 void RestoreGlobalState(bool is_powered_on);
 void RestoreGlobalState(bool is_powered_on);
 
 
-// Fixes settings that are known to cause issues with the emulator
-void Sanitize();
-
 } // namespace Settings
 } // namespace Settings

+ 0 - 2
src/yuzu/configuration/config.cpp

@@ -1589,14 +1589,12 @@ void Config::WriteSettingGlobal(const QString& name, const QVariant& value, bool
 
 
 void Config::Reload() {
 void Config::Reload() {
     ReadValues();
     ReadValues();
-    Settings::Sanitize();
     // To apply default value changes
     // To apply default value changes
     SaveValues();
     SaveValues();
     Settings::Apply(Core::System::GetInstance());
     Settings::Apply(Core::System::GetInstance());
 }
 }
 
 
 void Config::Save() {
 void Config::Save() {
-    Settings::Sanitize();
     SaveValues();
     SaveValues();
 }
 }
 
 

+ 3 - 10
src/yuzu/main.cpp

@@ -580,9 +580,8 @@ void GMainWindow::InitializeWidgets() {
         if (emulation_running) {
         if (emulation_running) {
             return;
             return;
         }
         }
-        const bool is_async = !Settings::values.use_asynchronous_gpu_emulation.GetValue() ||
-                              Settings::values.use_multi_core.GetValue();
-        Settings::values.use_asynchronous_gpu_emulation.SetValue(is_async);
+        Settings::values.use_asynchronous_gpu_emulation.SetValue(
+            !Settings::values.use_asynchronous_gpu_emulation.GetValue());
         async_status_button->setChecked(Settings::values.use_asynchronous_gpu_emulation.GetValue());
         async_status_button->setChecked(Settings::values.use_asynchronous_gpu_emulation.GetValue());
         Settings::Apply(Core::System::GetInstance());
         Settings::Apply(Core::System::GetInstance());
     });
     });
@@ -599,16 +598,13 @@ void GMainWindow::InitializeWidgets() {
             return;
             return;
         }
         }
         Settings::values.use_multi_core.SetValue(!Settings::values.use_multi_core.GetValue());
         Settings::values.use_multi_core.SetValue(!Settings::values.use_multi_core.GetValue());
-        const bool is_async = Settings::values.use_asynchronous_gpu_emulation.GetValue() ||
-                              Settings::values.use_multi_core.GetValue();
-        Settings::values.use_asynchronous_gpu_emulation.SetValue(is_async);
-        async_status_button->setChecked(Settings::values.use_asynchronous_gpu_emulation.GetValue());
         multicore_status_button->setChecked(Settings::values.use_multi_core.GetValue());
         multicore_status_button->setChecked(Settings::values.use_multi_core.GetValue());
         Settings::Apply(Core::System::GetInstance());
         Settings::Apply(Core::System::GetInstance());
     });
     });
     multicore_status_button->setText(tr("MULTICORE"));
     multicore_status_button->setText(tr("MULTICORE"));
     multicore_status_button->setCheckable(true);
     multicore_status_button->setCheckable(true);
     multicore_status_button->setChecked(Settings::values.use_multi_core.GetValue());
     multicore_status_button->setChecked(Settings::values.use_multi_core.GetValue());
+
     statusBar()->insertPermanentWidget(0, multicore_status_button);
     statusBar()->insertPermanentWidget(0, multicore_status_button);
     statusBar()->insertPermanentWidget(0, async_status_button);
     statusBar()->insertPermanentWidget(0, async_status_button);
 
 
@@ -2533,9 +2529,6 @@ void GMainWindow::UpdateStatusBar() {
 void GMainWindow::UpdateStatusButtons() {
 void GMainWindow::UpdateStatusButtons() {
     dock_status_button->setChecked(Settings::values.use_docked_mode.GetValue());
     dock_status_button->setChecked(Settings::values.use_docked_mode.GetValue());
     multicore_status_button->setChecked(Settings::values.use_multi_core.GetValue());
     multicore_status_button->setChecked(Settings::values.use_multi_core.GetValue());
-    Settings::values.use_asynchronous_gpu_emulation.SetValue(
-        Settings::values.use_asynchronous_gpu_emulation.GetValue() ||
-        Settings::values.use_multi_core.GetValue());
     async_status_button->setChecked(Settings::values.use_asynchronous_gpu_emulation.GetValue());
     async_status_button->setChecked(Settings::values.use_asynchronous_gpu_emulation.GetValue());
     renderer_status_button->setChecked(Settings::values.renderer_backend.GetValue() ==
     renderer_status_button->setChecked(Settings::values.renderer_backend.GetValue() ==
                                        Settings::RendererBackend::Vulkan);
                                        Settings::RendererBackend::Vulkan);