Merge pull request #1437 from skidau/Remove-DSP-thread-option
Removed the DSP LLE on separate thread option.
This commit is contained in:
commit
f7a16eca84
|
@ -125,7 +125,6 @@ bool BootCore(const std::string& _rFilename)
|
||||||
config_cache.strBackend = StartUp.m_strVideoBackend;
|
config_cache.strBackend = StartUp.m_strVideoBackend;
|
||||||
config_cache.m_strGPUDeterminismMode = StartUp.m_strGPUDeterminismMode;
|
config_cache.m_strGPUDeterminismMode = StartUp.m_strGPUDeterminismMode;
|
||||||
config_cache.m_EnableJIT = SConfig::GetInstance().m_DSPEnableJIT;
|
config_cache.m_EnableJIT = SConfig::GetInstance().m_DSPEnableJIT;
|
||||||
config_cache.bDSPThread = StartUp.bDSPThread;
|
|
||||||
config_cache.Volume = SConfig::GetInstance().m_Volume;
|
config_cache.Volume = SConfig::GetInstance().m_Volume;
|
||||||
config_cache.sBackend = SConfig::GetInstance().sBackend;
|
config_cache.sBackend = SConfig::GetInstance().sBackend;
|
||||||
config_cache.framelimit = SConfig::GetInstance().m_Framelimit;
|
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("FastDiscSpeed", &StartUp.bFastDiscSpeed, StartUp.bFastDiscSpeed);
|
||||||
core_section->Get("BlockMerging", &StartUp.bMergeBlocks, StartUp.bMergeBlocks);
|
core_section->Get("BlockMerging", &StartUp.bMergeBlocks, StartUp.bMergeBlocks);
|
||||||
core_section->Get("DSPHLE", &StartUp.bDSPHLE, StartUp.bDSPHLE);
|
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("GFXBackend", &StartUp.m_strVideoBackend, StartUp.m_strVideoBackend);
|
||||||
core_section->Get("CPUCore", &StartUp.iCPUCore, StartUp.iCPUCore);
|
core_section->Get("CPUCore", &StartUp.iCPUCore, StartUp.iCPUCore);
|
||||||
core_section->Get("HLE_BS2", &StartUp.bHLE_BS2, StartUp.bHLE_BS2);
|
core_section->Get("HLE_BS2", &StartUp.bHLE_BS2, StartUp.bHLE_BS2);
|
||||||
|
@ -293,7 +291,6 @@ void Stop()
|
||||||
StartUp.bFastDiscSpeed = config_cache.bFastDiscSpeed;
|
StartUp.bFastDiscSpeed = config_cache.bFastDiscSpeed;
|
||||||
StartUp.bMergeBlocks = config_cache.bMergeBlocks;
|
StartUp.bMergeBlocks = config_cache.bMergeBlocks;
|
||||||
StartUp.bDSPHLE = config_cache.bDSPHLE;
|
StartUp.bDSPHLE = config_cache.bDSPHLE;
|
||||||
StartUp.bDSPThread = config_cache.bDSPThread;
|
|
||||||
StartUp.m_strVideoBackend = config_cache.strBackend;
|
StartUp.m_strVideoBackend = config_cache.strBackend;
|
||||||
StartUp.m_strGPUDeterminismMode = config_cache.m_strGPUDeterminismMode;
|
StartUp.m_strGPUDeterminismMode = config_cache.m_strGPUDeterminismMode;
|
||||||
VideoBackend::ActivateBackend(StartUp.m_strVideoBackend);
|
VideoBackend::ActivateBackend(StartUp.m_strVideoBackend);
|
||||||
|
|
|
@ -312,7 +312,6 @@ void SConfig::SaveCoreSettings(IniFile& ini)
|
||||||
core->Set("CPUCore", m_LocalCoreStartupParameter.iCPUCore);
|
core->Set("CPUCore", m_LocalCoreStartupParameter.iCPUCore);
|
||||||
core->Set("Fastmem", m_LocalCoreStartupParameter.bFastmem);
|
core->Set("Fastmem", m_LocalCoreStartupParameter.bFastmem);
|
||||||
core->Set("CPUThread", m_LocalCoreStartupParameter.bCPUThread);
|
core->Set("CPUThread", m_LocalCoreStartupParameter.bCPUThread);
|
||||||
core->Set("DSPThread", m_LocalCoreStartupParameter.bDSPThread);
|
|
||||||
core->Set("DSPHLE", m_LocalCoreStartupParameter.bDSPHLE);
|
core->Set("DSPHLE", m_LocalCoreStartupParameter.bDSPHLE);
|
||||||
core->Set("SkipIdle", m_LocalCoreStartupParameter.bSkipIdle);
|
core->Set("SkipIdle", m_LocalCoreStartupParameter.bSkipIdle);
|
||||||
core->Set("DefaultISO", m_LocalCoreStartupParameter.m_strDefaultISO);
|
core->Set("DefaultISO", m_LocalCoreStartupParameter.m_strDefaultISO);
|
||||||
|
@ -537,7 +536,6 @@ void SConfig::LoadCoreSettings(IniFile& ini)
|
||||||
core->Get("CPUCore", &m_LocalCoreStartupParameter.iCPUCore, SCoreStartupParameter::CORE_INTERPRETER);
|
core->Get("CPUCore", &m_LocalCoreStartupParameter.iCPUCore, SCoreStartupParameter::CORE_INTERPRETER);
|
||||||
#endif
|
#endif
|
||||||
core->Get("Fastmem", &m_LocalCoreStartupParameter.bFastmem, true);
|
core->Get("Fastmem", &m_LocalCoreStartupParameter.bFastmem, true);
|
||||||
core->Get("DSPThread", &m_LocalCoreStartupParameter.bDSPThread, false);
|
|
||||||
core->Get("DSPHLE", &m_LocalCoreStartupParameter.bDSPHLE, true);
|
core->Get("DSPHLE", &m_LocalCoreStartupParameter.bDSPHLE, true);
|
||||||
core->Get("CPUThread", &m_LocalCoreStartupParameter.bCPUThread, true);
|
core->Get("CPUThread", &m_LocalCoreStartupParameter.bCPUThread, true);
|
||||||
core->Get("SkipIdle", &m_LocalCoreStartupParameter.bSkipIdle, true);
|
core->Get("SkipIdle", &m_LocalCoreStartupParameter.bSkipIdle, true);
|
||||||
|
|
|
@ -344,6 +344,11 @@ void EmuThread()
|
||||||
|
|
||||||
OSD::AddMessage("Dolphin " + g_video_backend->GetName() + " Video Backend.", 5000);
|
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))
|
if (!DSP::GetDSPEmulator()->Initialize(core_parameter.bWii, core_parameter.bDSPThread))
|
||||||
{
|
{
|
||||||
HW::Shutdown();
|
HW::Shutdown();
|
||||||
|
|
|
@ -71,7 +71,6 @@ void SCoreStartupParameter::LoadDefaults()
|
||||||
bSkipIdle = false;
|
bSkipIdle = false;
|
||||||
bRunCompareServer = false;
|
bRunCompareServer = false;
|
||||||
bDSPHLE = true;
|
bDSPHLE = true;
|
||||||
bDSPThread = true;
|
|
||||||
bFastmem = true;
|
bFastmem = true;
|
||||||
bFPRF = false;
|
bFPRF = false;
|
||||||
bBAT = false;
|
bBAT = false;
|
||||||
|
|
|
@ -17,6 +17,8 @@
|
||||||
#include "Core/ConfigManager.h"
|
#include "Core/ConfigManager.h"
|
||||||
#include "Core/Core.h"
|
#include "Core/Core.h"
|
||||||
#include "Core/Host.h"
|
#include "Core/Host.h"
|
||||||
|
#include "Core/Movie.h"
|
||||||
|
#include "Core/NetPlayProto.h"
|
||||||
#include "Core/DSP/DSPCaptureLogger.h"
|
#include "Core/DSP/DSPCaptureLogger.h"
|
||||||
#include "Core/DSP/DSPCore.h"
|
#include "Core/DSP/DSPCore.h"
|
||||||
#include "Core/DSP/DSPDisassembler.h"
|
#include "Core/DSP/DSPDisassembler.h"
|
||||||
|
@ -31,7 +33,6 @@
|
||||||
#include "Core/HW/DSPLLE/DSPLLEGlobals.h"
|
#include "Core/HW/DSPLLE/DSPLLEGlobals.h"
|
||||||
#include "Core/HW/DSPLLE/DSPSymbols.h"
|
#include "Core/HW/DSPLLE/DSPSymbols.h"
|
||||||
|
|
||||||
|
|
||||||
DSPLLE::DSPLLE()
|
DSPLLE::DSPLLE()
|
||||||
{
|
{
|
||||||
m_bIsRunning = false;
|
m_bIsRunning = false;
|
||||||
|
@ -40,6 +41,7 @@ DSPLLE::DSPLLE()
|
||||||
|
|
||||||
static Common::Event dspEvent;
|
static Common::Event dspEvent;
|
||||||
static Common::Event ppcEvent;
|
static Common::Event ppcEvent;
|
||||||
|
static bool requestDisableThread;
|
||||||
|
|
||||||
void DSPLLE::DoState(PointerWrap &p)
|
void DSPLLE::DoState(PointerWrap &p)
|
||||||
{
|
{
|
||||||
|
@ -160,7 +162,10 @@ static bool FillDSPInitOptions(DSPInitOptions* opts)
|
||||||
bool DSPLLE::Initialize(bool bWii, bool bDSPThread)
|
bool DSPLLE::Initialize(bool bWii, bool bDSPThread)
|
||||||
{
|
{
|
||||||
m_bWii = bWii;
|
m_bWii = bWii;
|
||||||
m_bDSPThread = bDSPThread;
|
m_bDSPThread = true;
|
||||||
|
if (NetPlay::IsNetPlayRunning() || Movie::IsMovieActive() || Core::g_want_determinism || !bDSPThread)
|
||||||
|
m_bDSPThread = false;
|
||||||
|
requestDisableThread = false;
|
||||||
|
|
||||||
DSPInitOptions opts;
|
DSPInitOptions opts;
|
||||||
if (!FillDSPInitOptions(&opts))
|
if (!FillDSPInitOptions(&opts))
|
||||||
|
@ -209,6 +214,13 @@ u16 DSPLLE::DSP_WriteControlRegister(u16 _uFlag)
|
||||||
// and immediately process it, if it has.
|
// and immediately process it, if it has.
|
||||||
if (_uFlag & 2)
|
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)
|
if (!m_bDSPThread)
|
||||||
{
|
{
|
||||||
DSPCore_CheckExternalInterrupt();
|
DSPCore_CheckExternalInterrupt();
|
||||||
|
@ -305,6 +317,17 @@ void DSPLLE::DSP_Update(int cycles)
|
||||||
soundStream->Update();
|
soundStream->Update();
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
if (m_bDSPThread)
|
||||||
|
{
|
||||||
|
if (requestDisableThread || NetPlay::IsNetPlayRunning() || Movie::IsMovieActive() || Core::g_want_determinism)
|
||||||
|
{
|
||||||
|
DSP_StopSoundStream();
|
||||||
|
m_bDSPThread = false;
|
||||||
|
requestDisableThread = false;
|
||||||
|
SConfig::GetInstance().m_LocalCoreStartupParameter.bDSPThread = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// If we're not on a thread, run cycles here.
|
// If we're not on a thread, run cycles here.
|
||||||
if (!m_bDSPThread)
|
if (!m_bDSPThread)
|
||||||
{
|
{
|
||||||
|
|
|
@ -137,7 +137,6 @@ EVT_CHECKBOX(ID_NTSCJ, CConfigMain::CoreSettingsChanged)
|
||||||
|
|
||||||
|
|
||||||
EVT_RADIOBOX(ID_DSPENGINE, CConfigMain::AudioSettingsChanged)
|
EVT_RADIOBOX(ID_DSPENGINE, CConfigMain::AudioSettingsChanged)
|
||||||
EVT_CHECKBOX(ID_DSPTHREAD, CConfigMain::AudioSettingsChanged)
|
|
||||||
EVT_CHECKBOX(ID_ENABLE_THROTTLE, CConfigMain::AudioSettingsChanged)
|
EVT_CHECKBOX(ID_ENABLE_THROTTLE, CConfigMain::AudioSettingsChanged)
|
||||||
EVT_CHECKBOX(ID_DPL2DECODER, CConfigMain::AudioSettingsChanged)
|
EVT_CHECKBOX(ID_DPL2DECODER, CConfigMain::AudioSettingsChanged)
|
||||||
EVT_CHOICE(ID_BACKEND, CConfigMain::AudioSettingsChanged)
|
EVT_CHOICE(ID_BACKEND, CConfigMain::AudioSettingsChanged)
|
||||||
|
@ -228,7 +227,6 @@ void CConfigMain::UpdateGUI()
|
||||||
|
|
||||||
// Disable stuff on AudioPage
|
// Disable stuff on AudioPage
|
||||||
DSPEngine->Disable();
|
DSPEngine->Disable();
|
||||||
DSPThread->Disable();
|
|
||||||
DPL2Decoder->Disable();
|
DPL2Decoder->Disable();
|
||||||
Latency->Disable();
|
Latency->Disable();
|
||||||
|
|
||||||
|
@ -361,7 +359,6 @@ void CConfigMain::InitializeGUIValues()
|
||||||
VolumeSlider->Enable(SupportsVolumeChanges(SConfig::GetInstance().sBackend));
|
VolumeSlider->Enable(SupportsVolumeChanges(SConfig::GetInstance().sBackend));
|
||||||
VolumeSlider->SetValue(SConfig::GetInstance().m_Volume);
|
VolumeSlider->SetValue(SConfig::GetInstance().m_Volume);
|
||||||
VolumeText->SetLabel(wxString::Format("%d %%", 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->Enable(std::string(SConfig::GetInstance().sBackend) == BACKEND_OPENAL);
|
||||||
DPL2Decoder->SetValue(startup_params.bDPL2Decoder);
|
DPL2Decoder->SetValue(startup_params.bDPL2Decoder);
|
||||||
Latency->Enable(std::string(SConfig::GetInstance().sBackend) == BACKEND_OPENAL);
|
Latency->Enable(std::string(SConfig::GetInstance().sBackend) == BACKEND_OPENAL);
|
||||||
|
@ -471,7 +468,6 @@ void CConfigMain::InitializeGUITooltips()
|
||||||
InterfaceLang->SetToolTip(_("Change the language of the user interface.\nRequires restart."));
|
InterfaceLang->SetToolTip(_("Change the language of the user interface.\nRequires restart."));
|
||||||
|
|
||||||
// Audio tooltips
|
// 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!"));
|
BackendSelection->SetToolTip(_("Changing this will have no effect while the emulator is running!"));
|
||||||
|
|
||||||
// GameCube - Devices
|
// GameCube - Devices
|
||||||
|
@ -602,7 +598,6 @@ void CConfigMain::CreateGUIControls()
|
||||||
|
|
||||||
// Audio page
|
// Audio page
|
||||||
DSPEngine = new wxRadioBox(AudioPage, ID_DSPENGINE, _("DSP Emulator Engine"), wxDefaultPosition, wxDefaultSize, arrayStringFor_DSPEngine, 0, wxRA_SPECIFY_ROWS);
|
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"));
|
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);
|
VolumeSlider = new wxSlider(AudioPage, ID_VOLUME, 0, 1, 100, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL|wxSL_INVERSE);
|
||||||
VolumeText = new wxStaticText(AudioPage, wxID_ANY, "");
|
VolumeText = new wxStaticText(AudioPage, wxID_ANY, "");
|
||||||
|
@ -621,7 +616,6 @@ void CConfigMain::CreateGUIControls()
|
||||||
// Create sizer and add items to dialog
|
// Create sizer and add items to dialog
|
||||||
wxStaticBoxSizer *sbAudioSettings = new wxStaticBoxSizer(wxVERTICAL, AudioPage, _("Sound Settings"));
|
wxStaticBoxSizer *sbAudioSettings = new wxStaticBoxSizer(wxVERTICAL, AudioPage, _("Sound Settings"));
|
||||||
sbAudioSettings->Add(DSPEngine, 0, wxALL | wxEXPAND, 5);
|
sbAudioSettings->Add(DSPEngine, 0, wxALL | wxEXPAND, 5);
|
||||||
sbAudioSettings->Add(DSPThread, 0, wxALL, 5);
|
|
||||||
sbAudioSettings->Add(DPL2Decoder, 0, wxALL, 5);
|
sbAudioSettings->Add(DPL2Decoder, 0, wxALL, 5);
|
||||||
|
|
||||||
wxStaticBoxSizer *sbVolume = new wxStaticBoxSizer(wxVERTICAL, AudioPage, _("Volume"));
|
wxStaticBoxSizer *sbVolume = new wxStaticBoxSizer(wxVERTICAL, AudioPage, _("Volume"));
|
||||||
|
@ -896,10 +890,6 @@ void CConfigMain::AudioSettingsChanged(wxCommandEvent& event)
|
||||||
VolumeText->SetLabel(wxString::Format("%d %%", VolumeSlider->GetValue()));
|
VolumeText->SetLabel(wxString::Format("%d %%", VolumeSlider->GetValue()));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_DSPTHREAD:
|
|
||||||
SConfig::GetInstance().m_LocalCoreStartupParameter.bDSPThread = DSPThread->IsChecked();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ID_DPL2DECODER:
|
case ID_DPL2DECODER:
|
||||||
SConfig::GetInstance().m_LocalCoreStartupParameter.bDPL2Decoder = DPL2Decoder->IsChecked();
|
SConfig::GetInstance().m_LocalCoreStartupParameter.bDPL2Decoder = DPL2Decoder->IsChecked();
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -80,7 +80,6 @@ private:
|
||||||
ID_FRAMELIMIT,
|
ID_FRAMELIMIT,
|
||||||
|
|
||||||
ID_CPUENGINE,
|
ID_CPUENGINE,
|
||||||
ID_DSPTHREAD,
|
|
||||||
|
|
||||||
ID_NTSCJ,
|
ID_NTSCJ,
|
||||||
|
|
||||||
|
@ -144,7 +143,6 @@ private:
|
||||||
|
|
||||||
// Advanced
|
// Advanced
|
||||||
wxRadioBox* CPUEngine;
|
wxRadioBox* CPUEngine;
|
||||||
wxCheckBox* DSPThread;
|
|
||||||
wxCheckBox* _NTSCJ;
|
wxCheckBox* _NTSCJ;
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue