Removed the DSP LLE on separate thread option.
The DSP thread will be enabled if the game is an AX ucode game and if the host has more than two cores (not including hyperthreading).
This commit is contained in:
parent
0515ab852e
commit
2140ac15e4
|
@ -125,7 +125,6 @@ bool BootCore(const std::string& _rFilename)
|
|||
config_cache.strBackend = StartUp.m_strVideoBackend;
|
||||
config_cache.m_strGPUDeterminismMode = StartUp.m_strGPUDeterminismMode;
|
||||
config_cache.m_EnableJIT = SConfig::GetInstance().m_DSPEnableJIT;
|
||||
config_cache.bDSPThread = StartUp.bDSPThread;
|
||||
config_cache.Volume = SConfig::GetInstance().m_Volume;
|
||||
config_cache.sBackend = SConfig::GetInstance().sBackend;
|
||||
config_cache.framelimit = SConfig::GetInstance().m_Framelimit;
|
||||
|
@ -165,7 +164,6 @@ bool BootCore(const std::string& _rFilename)
|
|||
core_section->Get("FastDiscSpeed", &StartUp.bFastDiscSpeed, StartUp.bFastDiscSpeed);
|
||||
core_section->Get("BlockMerging", &StartUp.bMergeBlocks, StartUp.bMergeBlocks);
|
||||
core_section->Get("DSPHLE", &StartUp.bDSPHLE, StartUp.bDSPHLE);
|
||||
core_section->Get("DSPThread", &StartUp.bDSPThread, StartUp.bDSPThread);
|
||||
core_section->Get("GFXBackend", &StartUp.m_strVideoBackend, StartUp.m_strVideoBackend);
|
||||
core_section->Get("CPUCore", &StartUp.iCPUCore, StartUp.iCPUCore);
|
||||
core_section->Get("HLE_BS2", &StartUp.bHLE_BS2, StartUp.bHLE_BS2);
|
||||
|
@ -292,7 +290,6 @@ void Stop()
|
|||
StartUp.bFastDiscSpeed = config_cache.bFastDiscSpeed;
|
||||
StartUp.bMergeBlocks = config_cache.bMergeBlocks;
|
||||
StartUp.bDSPHLE = config_cache.bDSPHLE;
|
||||
StartUp.bDSPThread = config_cache.bDSPThread;
|
||||
StartUp.m_strVideoBackend = config_cache.strBackend;
|
||||
StartUp.m_strGPUDeterminismMode = config_cache.m_strGPUDeterminismMode;
|
||||
VideoBackend::ActivateBackend(StartUp.m_strVideoBackend);
|
||||
|
|
|
@ -289,7 +289,6 @@ void SConfig::SaveCoreSettings(IniFile& ini)
|
|||
core->Set("CPUCore", m_LocalCoreStartupParameter.iCPUCore);
|
||||
core->Set("Fastmem", m_LocalCoreStartupParameter.bFastmem);
|
||||
core->Set("CPUThread", m_LocalCoreStartupParameter.bCPUThread);
|
||||
core->Set("DSPThread", m_LocalCoreStartupParameter.bDSPThread);
|
||||
core->Set("DSPHLE", m_LocalCoreStartupParameter.bDSPHLE);
|
||||
core->Set("SkipIdle", m_LocalCoreStartupParameter.bSkipIdle);
|
||||
core->Set("DefaultISO", m_LocalCoreStartupParameter.m_strDefaultISO);
|
||||
|
@ -508,7 +507,6 @@ void SConfig::LoadCoreSettings(IniFile& ini)
|
|||
core->Get("CPUCore", &m_LocalCoreStartupParameter.iCPUCore, SCoreStartupParameter::CORE_INTERPRETER);
|
||||
#endif
|
||||
core->Get("Fastmem", &m_LocalCoreStartupParameter.bFastmem, true);
|
||||
core->Get("DSPThread", &m_LocalCoreStartupParameter.bDSPThread, false);
|
||||
core->Get("DSPHLE", &m_LocalCoreStartupParameter.bDSPHLE, true);
|
||||
core->Get("CPUThread", &m_LocalCoreStartupParameter.bCPUThread, true);
|
||||
core->Get("SkipIdle", &m_LocalCoreStartupParameter.bSkipIdle, true);
|
||||
|
|
|
@ -348,6 +348,11 @@ void EmuThread()
|
|||
|
||||
OSD::AddMessage("Dolphin " + g_video_backend->GetName() + " Video Backend.", 5000);
|
||||
|
||||
if (cpu_info.HTT)
|
||||
SConfig::GetInstance().m_LocalCoreStartupParameter.bDSPThread = cpu_info.num_cores > 4;
|
||||
else
|
||||
SConfig::GetInstance().m_LocalCoreStartupParameter.bDSPThread = cpu_info.num_cores > 2;
|
||||
|
||||
if (!DSP::GetDSPEmulator()->Initialize(core_parameter.bWii, core_parameter.bDSPThread))
|
||||
{
|
||||
HW::Shutdown();
|
||||
|
|
|
@ -71,7 +71,6 @@ void SCoreStartupParameter::LoadDefaults()
|
|||
bSkipIdle = false;
|
||||
bRunCompareServer = false;
|
||||
bDSPHLE = true;
|
||||
bDSPThread = true;
|
||||
bFastmem = true;
|
||||
bFPRF = false;
|
||||
bBAT = false;
|
||||
|
|
|
@ -40,6 +40,7 @@ DSPLLE::DSPLLE()
|
|||
|
||||
static Common::Event dspEvent;
|
||||
static Common::Event ppcEvent;
|
||||
static bool requestDisableThread;
|
||||
|
||||
void DSPLLE::DoState(PointerWrap &p)
|
||||
{
|
||||
|
@ -161,6 +162,7 @@ bool DSPLLE::Initialize(bool bWii, bool bDSPThread)
|
|||
{
|
||||
m_bWii = bWii;
|
||||
m_bDSPThread = bDSPThread;
|
||||
requestDisableThread = false;
|
||||
|
||||
DSPInitOptions opts;
|
||||
if (!FillDSPInitOptions(&opts))
|
||||
|
@ -209,6 +211,13 @@ u16 DSPLLE::DSP_WriteControlRegister(u16 _uFlag)
|
|||
// and immediately process it, if it has.
|
||||
if (_uFlag & 2)
|
||||
{
|
||||
if (m_bDSPThread)
|
||||
{
|
||||
// External interrupt pending: this is the zelda ucode.
|
||||
// Disable the DSP thread because there is no performance gain.
|
||||
requestDisableThread = true;
|
||||
}
|
||||
|
||||
if (!m_bDSPThread)
|
||||
{
|
||||
DSPCore_CheckExternalInterrupt();
|
||||
|
@ -305,6 +314,14 @@ void DSPLLE::DSP_Update(int cycles)
|
|||
soundStream->Update();
|
||||
}
|
||||
*/
|
||||
if (requestDisableThread)
|
||||
{
|
||||
DSP_StopSoundStream();
|
||||
m_bDSPThread = false;
|
||||
requestDisableThread = false;
|
||||
SConfig::GetInstance().m_LocalCoreStartupParameter.bDSPThread = false;
|
||||
}
|
||||
|
||||
// If we're not on a thread, run cycles here.
|
||||
if (!m_bDSPThread)
|
||||
{
|
||||
|
|
|
@ -144,7 +144,6 @@ EVT_CHECKBOX(ID_NTSCJ, CConfigMain::CoreSettingsChanged)
|
|||
|
||||
|
||||
EVT_RADIOBOX(ID_DSPENGINE, CConfigMain::AudioSettingsChanged)
|
||||
EVT_CHECKBOX(ID_DSPTHREAD, CConfigMain::AudioSettingsChanged)
|
||||
EVT_CHECKBOX(ID_ENABLE_THROTTLE, CConfigMain::AudioSettingsChanged)
|
||||
EVT_CHECKBOX(ID_DPL2DECODER, CConfigMain::AudioSettingsChanged)
|
||||
EVT_CHOICE(ID_BACKEND, CConfigMain::AudioSettingsChanged)
|
||||
|
@ -240,7 +239,6 @@ void CConfigMain::UpdateGUI()
|
|||
|
||||
// Disable stuff on AudioPage
|
||||
DSPEngine->Disable();
|
||||
DSPThread->Disable();
|
||||
DPL2Decoder->Disable();
|
||||
Latency->Disable();
|
||||
|
||||
|
@ -373,7 +371,6 @@ void CConfigMain::InitializeGUIValues()
|
|||
VolumeSlider->Enable(SupportsVolumeChanges(SConfig::GetInstance().sBackend));
|
||||
VolumeSlider->SetValue(SConfig::GetInstance().m_Volume);
|
||||
VolumeText->SetLabel(wxString::Format("%d %%", SConfig::GetInstance().m_Volume));
|
||||
DSPThread->SetValue(startup_params.bDSPThread);
|
||||
DPL2Decoder->Enable(std::string(SConfig::GetInstance().sBackend) == BACKEND_OPENAL);
|
||||
DPL2Decoder->SetValue(startup_params.bDPL2Decoder);
|
||||
Latency->Enable(std::string(SConfig::GetInstance().sBackend) == BACKEND_OPENAL);
|
||||
|
@ -524,7 +521,6 @@ void CConfigMain::InitializeGUITooltips()
|
|||
InterfaceLang->SetToolTip(_("Change the language of the user interface.\nRequires restart."));
|
||||
|
||||
// Audio tooltips
|
||||
DSPThread->SetToolTip(_("Run DSP LLE on a dedicated thread (not recommended: might cause freezes)."));
|
||||
BackendSelection->SetToolTip(_("Changing this will have no effect while the emulator is running!"));
|
||||
|
||||
// GameCube - Devices
|
||||
|
@ -655,7 +651,6 @@ void CConfigMain::CreateGUIControls()
|
|||
|
||||
// Audio page
|
||||
DSPEngine = new wxRadioBox(AudioPage, ID_DSPENGINE, _("DSP Emulator Engine"), wxDefaultPosition, wxDefaultSize, arrayStringFor_DSPEngine, 0, wxRA_SPECIFY_ROWS);
|
||||
DSPThread = new wxCheckBox(AudioPage, ID_DSPTHREAD, _("DSPLLE on Separate Thread"));
|
||||
DPL2Decoder = new wxCheckBox(AudioPage, ID_DPL2DECODER, _("Dolby Pro Logic II decoder"));
|
||||
VolumeSlider = new wxSlider(AudioPage, ID_VOLUME, 0, 1, 100, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL|wxSL_INVERSE);
|
||||
VolumeText = new wxStaticText(AudioPage, wxID_ANY, "");
|
||||
|
@ -674,7 +669,6 @@ void CConfigMain::CreateGUIControls()
|
|||
// Create sizer and add items to dialog
|
||||
wxStaticBoxSizer *sbAudioSettings = new wxStaticBoxSizer(wxVERTICAL, AudioPage, _("Sound Settings"));
|
||||
sbAudioSettings->Add(DSPEngine, 0, wxALL | wxEXPAND, 5);
|
||||
sbAudioSettings->Add(DSPThread, 0, wxALL, 5);
|
||||
sbAudioSettings->Add(DPL2Decoder, 0, wxALL, 5);
|
||||
|
||||
wxStaticBoxSizer *sbVolume = new wxStaticBoxSizer(wxVERTICAL, AudioPage, _("Volume"));
|
||||
|
@ -973,10 +967,6 @@ void CConfigMain::AudioSettingsChanged(wxCommandEvent& event)
|
|||
VolumeText->SetLabel(wxString::Format("%d %%", VolumeSlider->GetValue()));
|
||||
break;
|
||||
|
||||
case ID_DSPTHREAD:
|
||||
SConfig::GetInstance().m_LocalCoreStartupParameter.bDSPThread = DSPThread->IsChecked();
|
||||
break;
|
||||
|
||||
case ID_DPL2DECODER:
|
||||
SConfig::GetInstance().m_LocalCoreStartupParameter.bDPL2Decoder = DPL2Decoder->IsChecked();
|
||||
break;
|
||||
|
|
|
@ -80,7 +80,6 @@ private:
|
|||
ID_FRAMELIMIT,
|
||||
|
||||
ID_CPUENGINE,
|
||||
ID_DSPTHREAD,
|
||||
|
||||
ID_NTSCJ,
|
||||
|
||||
|
@ -149,7 +148,6 @@ private:
|
|||
|
||||
// Advanced
|
||||
wxRadioBox* CPUEngine;
|
||||
wxCheckBox* DSPThread;
|
||||
wxCheckBox* _NTSCJ;
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue