Fix recompiler not auto-disabling with PGXP-CPU mode
This commit is contained in:
parent
afda565d78
commit
c3ce9135bf
|
@ -132,6 +132,7 @@ void AndroidHostInterface::SetUserDirectory()
|
||||||
void AndroidHostInterface::LoadSettings()
|
void AndroidHostInterface::LoadSettings()
|
||||||
{
|
{
|
||||||
CommonHostInterface::LoadSettings(m_settings_interface);
|
CommonHostInterface::LoadSettings(m_settings_interface);
|
||||||
|
CommonHostInterface::FixIncompatibleSettings(false);
|
||||||
CommonHostInterface::UpdateInputMap(m_settings_interface);
|
CommonHostInterface::UpdateInputMap(m_settings_interface);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -441,22 +441,22 @@ void HostInterface::SetDefaultSettings(SettingsInterface& si)
|
||||||
void HostInterface::LoadSettings(SettingsInterface& si)
|
void HostInterface::LoadSettings(SettingsInterface& si)
|
||||||
{
|
{
|
||||||
g_settings.Load(si);
|
g_settings.Load(si);
|
||||||
|
|
||||||
FixIncompatibleSettings();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void HostInterface::FixIncompatibleSettings()
|
void HostInterface::FixIncompatibleSettings(bool display_osd_messages)
|
||||||
{
|
{
|
||||||
if (g_settings.gpu_pgxp_enable)
|
if (g_settings.gpu_pgxp_enable)
|
||||||
{
|
{
|
||||||
if (g_settings.gpu_renderer == GPURenderer::Software)
|
if (g_settings.gpu_renderer == GPURenderer::Software)
|
||||||
{
|
{
|
||||||
Log_WarningPrintf("PGXP enabled with software renderer, disabling");
|
if (display_osd_messages)
|
||||||
|
AddOSDMessage("PGXP is incompatible with the software renderer, disabling PGXP.", 10.0f);
|
||||||
g_settings.gpu_pgxp_enable = false;
|
g_settings.gpu_pgxp_enable = false;
|
||||||
}
|
}
|
||||||
else if (g_settings.gpu_pgxp_cpu && g_settings.cpu_execution_mode == CPUExecutionMode::Recompiler)
|
else if (g_settings.gpu_pgxp_cpu && g_settings.cpu_execution_mode == CPUExecutionMode::Recompiler)
|
||||||
{
|
{
|
||||||
Log_WarningPrintf("Recompiler selected with PGXP CPU mode, falling back to cached interpreter");
|
if (display_osd_messages)
|
||||||
|
AddOSDMessage("PGXP CPU mode is incompatible with the recompiler, using Cached Interpreter instead.", 10.0f);
|
||||||
g_settings.cpu_execution_mode = CPUExecutionMode::CachedInterpreter;
|
g_settings.cpu_execution_mode = CPUExecutionMode::CachedInterpreter;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -135,7 +135,7 @@ protected:
|
||||||
virtual void SaveSettings(SettingsInterface& si);
|
virtual void SaveSettings(SettingsInterface& si);
|
||||||
|
|
||||||
/// Checks and fixes up any incompatible settings.
|
/// Checks and fixes up any incompatible settings.
|
||||||
virtual void FixIncompatibleSettings();
|
virtual void FixIncompatibleSettings(bool display_osd_messages);
|
||||||
|
|
||||||
/// Checks for settings changes, std::move() the old settings away for comparing beforehand.
|
/// Checks for settings changes, std::move() the old settings away for comparing beforehand.
|
||||||
virtual void CheckForSettingsChanges(const Settings& old_settings);
|
virtual void CheckForSettingsChanges(const Settings& old_settings);
|
||||||
|
|
|
@ -101,6 +101,7 @@ bool LibretroHostInterface::Initialize()
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
LoadSettings();
|
LoadSettings();
|
||||||
|
FixIncompatibleSettings();
|
||||||
UpdateLogging();
|
UpdateLogging();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -631,6 +632,7 @@ void LibretroHostInterface::UpdateSettings()
|
||||||
{
|
{
|
||||||
Settings old_settings(std::move(g_settings));
|
Settings old_settings(std::move(g_settings));
|
||||||
LoadSettings();
|
LoadSettings();
|
||||||
|
FixIncompatibleSettings();
|
||||||
|
|
||||||
if (g_settings.gpu_resolution_scale != old_settings.gpu_resolution_scale &&
|
if (g_settings.gpu_resolution_scale != old_settings.gpu_resolution_scale &&
|
||||||
g_settings.gpu_renderer != GPURenderer::Software)
|
g_settings.gpu_renderer != GPURenderer::Software)
|
||||||
|
|
|
@ -281,6 +281,7 @@ void QtHostInterface::setDefaultSettings()
|
||||||
|
|
||||||
CommonHostInterface::LoadSettings(*m_settings_interface.get());
|
CommonHostInterface::LoadSettings(*m_settings_interface.get());
|
||||||
CommonHostInterface::ApplyGameSettings(false);
|
CommonHostInterface::ApplyGameSettings(false);
|
||||||
|
CommonHostInterface::FixIncompatibleSettings(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
CheckForSettingsChanges(old_settings);
|
CheckForSettingsChanges(old_settings);
|
||||||
|
@ -299,6 +300,7 @@ void QtHostInterface::applySettings(bool display_osd_messages /* = false */)
|
||||||
std::lock_guard<std::recursive_mutex> guard(m_settings_mutex);
|
std::lock_guard<std::recursive_mutex> guard(m_settings_mutex);
|
||||||
CommonHostInterface::LoadSettings(*m_settings_interface.get());
|
CommonHostInterface::LoadSettings(*m_settings_interface.get());
|
||||||
CommonHostInterface::ApplyGameSettings(display_osd_messages);
|
CommonHostInterface::ApplyGameSettings(display_osd_messages);
|
||||||
|
CommonHostInterface::FixIncompatibleSettings(display_osd_messages);
|
||||||
}
|
}
|
||||||
|
|
||||||
CheckForSettingsChanges(old_settings);
|
CheckForSettingsChanges(old_settings);
|
||||||
|
@ -676,6 +678,7 @@ void QtHostInterface::LoadSettings()
|
||||||
|
|
||||||
CommonHostInterface::CheckSettings(*m_settings_interface.get());
|
CommonHostInterface::CheckSettings(*m_settings_interface.get());
|
||||||
CommonHostInterface::LoadSettings(*m_settings_interface.get());
|
CommonHostInterface::LoadSettings(*m_settings_interface.get());
|
||||||
|
CommonHostInterface::FixIncompatibleSettings(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void QtHostInterface::SetDefaultSettings(SettingsInterface& si)
|
void QtHostInterface::SetDefaultSettings(SettingsInterface& si)
|
||||||
|
|
|
@ -324,6 +324,7 @@ void SDLHostInterface::OnRunningGameChanged()
|
||||||
Settings old_settings(std::move(g_settings));
|
Settings old_settings(std::move(g_settings));
|
||||||
CommonHostInterface::LoadSettings(*m_settings_interface.get());
|
CommonHostInterface::LoadSettings(*m_settings_interface.get());
|
||||||
CommonHostInterface::ApplyGameSettings(true);
|
CommonHostInterface::ApplyGameSettings(true);
|
||||||
|
CommonHostInterface::FixIncompatibleSettings(true);
|
||||||
CheckForSettingsChanges(old_settings);
|
CheckForSettingsChanges(old_settings);
|
||||||
|
|
||||||
if (!System::GetRunningTitle().empty())
|
if (!System::GetRunningTitle().empty())
|
||||||
|
@ -353,6 +354,7 @@ void SDLHostInterface::SaveAndUpdateSettings()
|
||||||
Settings old_settings(std::move(g_settings));
|
Settings old_settings(std::move(g_settings));
|
||||||
CommonHostInterface::LoadSettings(*m_settings_interface.get());
|
CommonHostInterface::LoadSettings(*m_settings_interface.get());
|
||||||
CommonHostInterface::ApplyGameSettings(false);
|
CommonHostInterface::ApplyGameSettings(false);
|
||||||
|
CommonHostInterface::FixIncompatibleSettings(false);
|
||||||
CheckForSettingsChanges(old_settings);
|
CheckForSettingsChanges(old_settings);
|
||||||
|
|
||||||
m_settings_interface->Save();
|
m_settings_interface->Save();
|
||||||
|
@ -462,6 +464,7 @@ void SDLHostInterface::LoadSettings()
|
||||||
m_settings_interface = std::make_unique<INISettingsInterface>(GetSettingsFileName());
|
m_settings_interface = std::make_unique<INISettingsInterface>(GetSettingsFileName());
|
||||||
m_settings_copy.Load(*m_settings_interface);
|
m_settings_copy.Load(*m_settings_interface);
|
||||||
CommonHostInterface::LoadSettings(*m_settings_interface.get());
|
CommonHostInterface::LoadSettings(*m_settings_interface.get());
|
||||||
|
CommonHostInterface::FixIncompatibleSettings(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SDLHostInterface::ReportError(const char* message)
|
void SDLHostInterface::ReportError(const char* message)
|
||||||
|
|
Loading…
Reference in New Issue