core: settings: Untangle multicore from asynchronous GPU.
- Now that GPU is always threaded, we can support multicore with synchronous GPU.
This commit is contained in:
parent
40571c073f
commit
916438a9de
|
@ -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);
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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_asynchronous_gpu_emulation.SetValue(
|
||||||
Settings::values.use_multi_core.GetValue();
|
!Settings::values.use_asynchronous_gpu_emulation.GetValue());
|
||||||
Settings::values.use_asynchronous_gpu_emulation.SetValue(is_async);
|
|
||||||
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);
|
||||||
|
|
Reference in New Issue