ConfigManager: Drop SkipIdle option.

This option is safe + deterministic, so let's always enable it.
This commit is contained in:
degasus 2016-04-30 14:13:04 +02:00
parent 6bff97ea30
commit 0c67297ea0
18 changed files with 13 additions and 57 deletions

View File

@ -193,7 +193,6 @@ void DolphinAnalytics::MakePerGameBuilder()
builder.AddData("cfg-dsp-jit", SConfig::GetInstance().m_DSPEnableJIT);
builder.AddData("cfg-dsp-thread", SConfig::GetInstance().bDSPThread);
builder.AddData("cfg-cpu-thread", SConfig::GetInstance().bCPUThread);
builder.AddData("cfg-idle-skip", SConfig::GetInstance().bSkipIdle);
builder.AddData("cfg-fastmem", SConfig::GetInstance().bFastmem);
builder.AddData("cfg-syncgpu", SConfig::GetInstance().bSyncGPU);
builder.AddData("cfg-audio-backend", SConfig::GetInstance().sBackend);

View File

@ -302,7 +302,7 @@ bool CBoot::BootUp()
}
// Scan for common HLE functions
if (_StartupPara.bSkipIdle && _StartupPara.bHLE_BS2 && !_StartupPara.bEnableDebugging)
if (_StartupPara.bHLE_BS2 && !_StartupPara.bEnableDebugging)
{
PPCAnalyst::FindFunctions(0x80004000, 0x811fffff, &g_symbolDB);
SignatureDB db;

View File

@ -65,7 +65,6 @@ private:
bool valid;
bool bCPUThread;
bool bEnableCheats;
bool bSkipIdle;
bool bSyncGPUOnSkipIdleHack;
bool bFPRF;
bool bAccurateNaNs;
@ -97,7 +96,6 @@ void ConfigCache::SaveConfig(const SConfig& config)
bCPUThread = config.bCPUThread;
bEnableCheats = config.bEnableCheats;
bSkipIdle = config.bSkipIdle;
bSyncGPUOnSkipIdleHack = config.bSyncGPUOnSkipIdleHack;
bFPRF = config.bFPRF;
bAccurateNaNs = config.bAccurateNaNs;
@ -140,7 +138,6 @@ void ConfigCache::RestoreConfig(SConfig* config)
config->bCPUThread = bCPUThread;
config->bEnableCheats = bEnableCheats;
config->bSkipIdle = bSkipIdle;
config->bSyncGPUOnSkipIdleHack = bSyncGPUOnSkipIdleHack;
config->bFPRF = bFPRF;
config->bAccurateNaNs = bAccurateNaNs;
@ -250,7 +247,6 @@ bool BootCore(const std::string& _rFilename)
core_section->Get("CPUThread", &StartUp.bCPUThread, StartUp.bCPUThread);
core_section->Get("EnableCheats", &StartUp.bEnableCheats, StartUp.bEnableCheats);
core_section->Get("SkipIdle", &StartUp.bSkipIdle, StartUp.bSkipIdle);
core_section->Get("SyncOnSkipIdle", &StartUp.bSyncGPUOnSkipIdleHack,
StartUp.bSyncGPUOnSkipIdleHack);
core_section->Get("FPRF", &StartUp.bFPRF, StartUp.bFPRF);
@ -330,7 +326,6 @@ bool BootCore(const std::string& _rFilename)
if (Movie::IsPlayingInput() && Movie::IsConfigSaved())
{
StartUp.bCPUThread = Movie::IsDualCore();
StartUp.bSkipIdle = Movie::IsSkipIdle();
StartUp.bDSPHLE = Movie::IsDSPHLE();
StartUp.bProgressive = Movie::IsProgressive();
StartUp.bPAL60 = Movie::IsPAL60();

View File

@ -220,7 +220,6 @@ void SConfig::SaveCoreSettings(IniFile& ini)
core->Set("Fastmem", bFastmem);
core->Set("CPUThread", bCPUThread);
core->Set("DSPHLE", bDSPHLE);
core->Set("SkipIdle", bSkipIdle);
core->Set("SyncOnSkipIdle", bSyncGPUOnSkipIdleHack);
core->Set("SyncGPU", bSyncGPU);
core->Set("SyncGpuMaxDistance", iSyncGpuMaxDistance);
@ -493,7 +492,6 @@ void SConfig::LoadCoreSettings(IniFile& ini)
core->Get("DSPHLE", &bDSPHLE, true);
core->Get("TimingVariance", &iTimingVariance, 40);
core->Get("CPUThread", &bCPUThread, true);
core->Get("SkipIdle", &bSkipIdle, true);
core->Get("SyncOnSkipIdle", &bSyncGPUOnSkipIdleHack, true);
core->Get("DefaultISO", &m_strDefaultISO);
core->Get("DVDRoot", &m_strDVDRoot);
@ -644,7 +642,6 @@ void SConfig::LoadDefaults()
iCPUCore = PowerPC::CORE_JIT64;
iTimingVariance = 40;
bCPUThread = false;
bSkipIdle = false;
bSyncGPUOnSkipIdleHack = true;
bRunCompareServer = false;
bDSPHLE = true;

View File

@ -92,7 +92,6 @@ struct SConfig : NonCopyable
bool bCPUThread = true;
bool bDSPThread = false;
bool bDSPHLE = true;
bool bSkipIdle = true;
bool bSyncGPUOnSkipIdleHack = true;
bool bNTSC = false;
bool bForceNTSCJ = false;

View File

@ -924,11 +924,9 @@ void UpdateTitle()
float TicksPercentage =
(float)diff / (float)(SystemTimers::GetTicksPerSecond() / 1000000) * 100;
SFPS +=
StringFromFormat(" | CPU: %s%i MHz [Real: %i + IdleSkip: %i] / %i MHz (%s%3.0f%%)",
_CoreParameter.bSkipIdle ? "~" : "", (int)(diff), (int)(diff - idleDiff),
(int)(idleDiff), SystemTimers::GetTicksPerSecond() / 1000000,
_CoreParameter.bSkipIdle ? "~" : "", TicksPercentage);
SFPS += StringFromFormat(" | CPU: ~%i MHz [Real: %i + IdleSkip: %i] / %i MHz (~%3.0f%%)",
(int)(diff), (int)(diff - idleDiff), (int)(idleDiff),
SystemTimers::GetTicksPerSecond() / 1000000, TicksPercentage);
}
}
// This is our final "frame counter" string

View File

@ -67,7 +67,7 @@ static u64 s_totalLagCount = 0; // just stats
static u64 s_currentInputCount = 0, s_totalInputCount = 0; // just stats
static u64 s_totalTickCount = 0, s_tickCountAtLastInput = 0; // just stats
static u64 s_recordingStartTime; // seconds since 1970 that recording started
static bool s_bSaveConfig = false, s_bSkipIdle = false, s_bDualCore = false;
static bool s_bSaveConfig = false, s_bDualCore = false;
static bool s_bProgressive = false, s_bPAL60 = false;
static bool s_bDSPHLE = false, s_bFastDiscSpeed = false;
static bool s_bSyncGPU = false, s_bNetPlay = false;
@ -477,11 +477,6 @@ bool IsPAL60()
return s_bPAL60;
}
bool IsSkipIdle()
{
return s_bSkipIdle;
}
bool IsDSPHLE()
{
return s_bDSPHLE;
@ -952,7 +947,6 @@ void ReadHeader()
if (tmpHeader.bSaveConfig)
{
s_bSaveConfig = true;
s_bSkipIdle = tmpHeader.bSkipIdle;
s_bDualCore = tmpHeader.bDualCore;
s_bProgressive = tmpHeader.bProgressive;
s_bPAL60 = tmpHeader.bPAL60;
@ -1432,7 +1426,7 @@ void SaveRecording(const std::string& filename)
header.recordingStartTime = s_recordingStartTime;
header.bSaveConfig = true;
header.bSkipIdle = s_bSkipIdle;
header.bSkipIdle = true;
header.bDualCore = s_bDualCore;
header.bProgressive = s_bProgressive;
header.bPAL60 = s_bPAL60;
@ -1518,7 +1512,6 @@ void SetGraphicsConfig()
void GetSettings()
{
s_bSaveConfig = true;
s_bSkipIdle = SConfig::GetInstance().bSkipIdle;
s_bDualCore = SConfig::GetInstance().bCPUThread;
s_bProgressive = SConfig::GetInstance().bProgressive;
s_bPAL60 = SConfig::GetInstance().bPAL60;

View File

@ -22,7 +22,7 @@ void Interpreter::bx(UGeckoInstruction _inst)
m_EndBlock = true;
if (NPC == PC && SConfig::GetInstance().bSkipIdle)
if (NPC == PC)
{
CoreTiming::Idle();
}
@ -58,7 +58,7 @@ void Interpreter::bcx(UGeckoInstruction _inst)
// lwz r0, XXXX(r13)
// cmpXwi r0,0
// beq -8
if (NPC == PC - 8 && _inst.hex == 0x4182fff8 /* beq */ && SConfig::GetInstance().bSkipIdle)
if (NPC == PC - 8 && _inst.hex == 0x4182fff8 /* beq */)
{
if (PowerPC::HostRead_U32(PC - 8) >> 16 == 0x800D /* lwz */)
{

View File

@ -125,8 +125,8 @@ void Jit64::lXXx(UGeckoInstruction inst)
// ... maybe the throttle one already do that :p
// TODO: We shouldn't use a debug read here. It should be possible to get
// the following instructions out of the JIT state.
if (SConfig::GetInstance().bSkipIdle && CPU::GetState() != CPU::CPU_STEPPING && inst.OPCD == 32 &&
MergeAllowedNextInstructions(2) && (inst.hex & 0xFFFF0000) == 0x800D0000 &&
if (CPU::GetState() != CPU::CPU_STEPPING && inst.OPCD == 32 && MergeAllowedNextInstructions(2) &&
(inst.hex & 0xFFFF0000) == 0x800D0000 &&
(js.op[1].inst.hex == 0x28000000 ||
(SConfig::GetInstance().bWii && js.op[1].inst.hex == 0x2C000000)) &&
js.op[2].inst.hex == 0x4182fff8)

View File

@ -430,7 +430,7 @@ void JitArm64::lXX(UGeckoInstruction inst)
SafeLoadToReg(d, update ? a : (a ? a : -1), offsetReg, flags, offset, update);
// LWZ idle skipping
if (SConfig::GetInstance().bSkipIdle && inst.OPCD == 32 && MergeAllowedNextInstructions(2) &&
if (inst.OPCD == 32 && MergeAllowedNextInstructions(2) &&
(inst.hex & 0xFFFF0000) == 0x800D0000 && // lwz r0, XXXX(r13)
(js.op[1].inst.hex == 0x28000000 ||
(SConfig::GetInstance().bWii && js.op[1].inst.hex == 0x2C000000)) && // cmpXwi r0,0

View File

@ -145,7 +145,7 @@ void JitILBase::bcx(UGeckoInstruction inst)
// If idle skipping is enabled, then this branch will only be reached when the branch is not
// taken.
// TODO: We shouldn't use debug reads here.
if (SConfig::GetInstance().bSkipIdle && inst.hex == 0x4182fff8 &&
if (inst.hex == 0x4182fff8 &&
(PowerPC::HostRead_U32(js.compilerPC - 8) & 0xFFFF0000) == 0x800D0000 &&
(PowerPC::HostRead_U32(js.compilerPC - 4) == 0x28000000 ||
(SConfig::GetInstance().bWii && PowerPC::HostRead_U32(js.compilerPC - 4) == 0x2C000000)))

View File

@ -57,8 +57,7 @@ void JitILBase::lXz(UGeckoInstruction inst)
// TODO: This really should be done somewhere else. Either lower in the IR
// or higher in PPCAnalyst
// TODO: We shouldn't use debug reads here.
if (SConfig::GetInstance().bSkipIdle && CPU::GetState() != CPU::CPU_STEPPING &&
inst.OPCD == 32 && // Lwx
if (CPU::GetState() != CPU::CPU_STEPPING && inst.OPCD == 32 && // Lwx
(inst.hex & 0xFFFF0000) == 0x800D0000 &&
(PowerPC::HostRead_U32(js.compilerPC + 4) == 0x28000000 ||
(SConfig::GetInstance().bWii && PowerPC::HostRead_U32(js.compilerPC + 4) == 0x2C000000)) &&

View File

@ -54,7 +54,6 @@ void GeneralConfigPane::InitializeGUI()
m_cpu_engine_array_string.Add(cpu_core.name);
m_dual_core_checkbox = new wxCheckBox(this, wxID_ANY, _("Enable Dual Core (speedup)"));
m_idle_skip_checkbox = new wxCheckBox(this, wxID_ANY, _("Enable Idle Skipping (speedup)"));
m_cheats_checkbox = new wxCheckBox(this, wxID_ANY, _("Enable Cheats"));
m_force_ntscj_checkbox = new wxCheckBox(this, wxID_ANY, _("Force Console as NTSC-J"));
m_analytics_checkbox = new wxCheckBox(this, wxID_ANY, _("Enable Usage Statistics Reporting"));
@ -73,8 +72,6 @@ void GeneralConfigPane::InitializeGUI()
m_dual_core_checkbox->SetToolTip(
_("Splits the CPU and GPU threads so they can be run on separate cores.\nProvides major "
"speed improvements on most modern PCs, but can cause occasional crashes/glitches."));
m_idle_skip_checkbox->SetToolTip(
_("Attempt to detect and skip wait-loops.\nIf unsure, leave this checked."));
m_cheats_checkbox->SetToolTip(_("Enables the use of Action Replay and Gecko cheats."));
m_force_ntscj_checkbox->SetToolTip(
_("Forces NTSC-J mode for using the Japanese ROM font.\nIf left unchecked, Dolphin defaults "
@ -92,7 +89,6 @@ void GeneralConfigPane::InitializeGUI()
"or lower the audio pitch to prevent audio from stuttering."));
m_dual_core_checkbox->Bind(wxEVT_CHECKBOX, &GeneralConfigPane::OnDualCoreCheckBoxChanged, this);
m_idle_skip_checkbox->Bind(wxEVT_CHECKBOX, &GeneralConfigPane::OnIdleSkipCheckBoxChanged, this);
m_cheats_checkbox->Bind(wxEVT_CHECKBOX, &GeneralConfigPane::OnCheatCheckBoxChanged, this);
m_force_ntscj_checkbox->Bind(wxEVT_CHECKBOX, &GeneralConfigPane::OnForceNTSCJCheckBoxChanged,
this);
@ -116,8 +112,6 @@ void GeneralConfigPane::InitializeGUI()
basic_settings_sizer->AddSpacer(space5);
basic_settings_sizer->Add(m_dual_core_checkbox, 0, wxLEFT | wxRIGHT, space5);
basic_settings_sizer->AddSpacer(space5);
basic_settings_sizer->Add(m_idle_skip_checkbox, 0, wxLEFT | wxRIGHT, space5);
basic_settings_sizer->AddSpacer(space5);
basic_settings_sizer->Add(m_cheats_checkbox, 0, wxLEFT | wxRIGHT, space5);
basic_settings_sizer->AddSpacer(space5);
basic_settings_sizer->Add(throttler_sizer);
@ -155,7 +149,6 @@ void GeneralConfigPane::LoadGUIValues()
const SConfig& startup_params = SConfig::GetInstance();
m_dual_core_checkbox->SetValue(startup_params.bCPUThread);
m_idle_skip_checkbox->SetValue(startup_params.bSkipIdle);
m_cheats_checkbox->SetValue(startup_params.bEnableCheats);
m_force_ntscj_checkbox->SetValue(startup_params.bForceNTSCJ);
m_analytics_checkbox->SetValue(startup_params.m_analytics_enabled);
@ -175,7 +168,6 @@ void GeneralConfigPane::RefreshGUI()
if (Core::IsRunning())
{
m_dual_core_checkbox->Disable();
m_idle_skip_checkbox->Disable();
m_cheats_checkbox->Disable();
m_force_ntscj_checkbox->Disable();
m_cpu_engine_radiobox->Disable();
@ -190,11 +182,6 @@ void GeneralConfigPane::OnDualCoreCheckBoxChanged(wxCommandEvent& event)
SConfig::GetInstance().bCPUThread = m_dual_core_checkbox->IsChecked();
}
void GeneralConfigPane::OnIdleSkipCheckBoxChanged(wxCommandEvent& event)
{
SConfig::GetInstance().bSkipIdle = m_idle_skip_checkbox->IsChecked();
}
void GeneralConfigPane::OnCheatCheckBoxChanged(wxCommandEvent& event)
{
SConfig::GetInstance().bEnableCheats = m_cheats_checkbox->IsChecked();

View File

@ -29,7 +29,6 @@ private:
void RefreshGUI();
void OnDualCoreCheckBoxChanged(wxCommandEvent&);
void OnIdleSkipCheckBoxChanged(wxCommandEvent&);
void OnCheatCheckBoxChanged(wxCommandEvent&);
void OnForceNTSCJCheckBoxChanged(wxCommandEvent&);
void OnThrottlerChoiceChanged(wxCommandEvent&);
@ -41,7 +40,6 @@ private:
wxArrayString m_cpu_engine_array_string;
wxCheckBox* m_dual_core_checkbox;
wxCheckBox* m_idle_skip_checkbox;
wxCheckBox* m_cheats_checkbox;
wxCheckBox* m_force_ntscj_checkbox;

View File

@ -288,7 +288,6 @@ EVT_MENU(IDM_FIFOPLAYER, CFrame::OnFifoPlayer)
EVT_MENU(IDM_TOGGLE_FULLSCREEN, CFrame::OnToggleFullscreen)
EVT_MENU(IDM_TOGGLE_DUAL_CORE, CFrame::OnToggleDualCore)
EVT_MENU(IDM_TOGGLE_SKIP_IDLE, CFrame::OnToggleSkipIdle)
EVT_MENU(IDM_TOGGLE_TOOLBAR, CFrame::OnToggleToolbar)
EVT_MENU(IDM_TOGGLE_STATUSBAR, CFrame::OnToggleStatusbar)
EVT_MENU_RANGE(IDM_LOG_WINDOW, IDM_VIDEO_WINDOW, CFrame::OnToggleWindow)

View File

@ -294,7 +294,6 @@ private:
void OnToggleFullscreen(wxCommandEvent& event);
void OnToggleDualCore(wxCommandEvent& event);
void OnToggleSkipIdle(wxCommandEvent& event);
void OnManagerResize(wxAuiManagerEvent& event);
void OnMove(wxMoveEvent& event);
void OnResize(wxSizeEvent& event);

View File

@ -1571,12 +1571,6 @@ void CFrame::OnToggleDualCore(wxCommandEvent& WXUNUSED(event))
SConfig::GetInstance().SaveSettings();
}
void CFrame::OnToggleSkipIdle(wxCommandEvent& WXUNUSED(event))
{
SConfig::GetInstance().bSkipIdle = !SConfig::GetInstance().bSkipIdle;
SConfig::GetInstance().SaveSettings();
}
void CFrame::OnLoadStateFromFile(wxCommandEvent& WXUNUSED(event))
{
wxString path =

View File

@ -288,7 +288,6 @@ enum
// --------------------------------------------------------------
IDM_TOGGLE_DUAL_CORE, // Other
IDM_TOGGLE_SKIP_IDLE,
IDM_TOGGLE_TOOLBAR,
IDM_TOGGLE_STATUSBAR,
IDM_NOTIFY_MAP_LOADED,