Use CLI argument for Linux perf JIT support

This commit is contained in:
Gabriel Corona 2014-11-24 23:17:31 +01:00
parent 9722ae2a5d
commit 5b9aeaa686
3 changed files with 20 additions and 4 deletions

View File

@ -5,7 +5,6 @@
#include <cinttypes> #include <cinttypes>
#include <cstddef> #include <cstddef>
#include <cstdio> #include <cstdio>
#include <cstdlib>
#include <fstream> #include <fstream>
#include <string> #include <string>
@ -13,6 +12,7 @@
#include "Common/FileUtil.h" #include "Common/FileUtil.h"
#include "Common/JitRegister.h" #include "Common/JitRegister.h"
#include "Common/StringUtil.h" #include "Common/StringUtil.h"
#include "Core/ConfigManager.h"
#ifdef _WIN32 #ifdef _WIN32
#include <process.h> #include <process.h>
@ -45,10 +45,10 @@ void Init()
s_agent = op_open_agent(); s_agent = op_open_agent();
#endif #endif
const char* perf_dir = getenv("DOLPHIN_PERF_DIR"); const std::string& perf_dir = SConfig::GetInstance().m_LocalCoreStartupParameter.m_perfDir;
if (perf_dir && perf_dir[0]) if (!perf_dir.empty())
{ {
std::string filename = StringFromFormat("%s/perf-%d.map", perf_dir, getpid()); std::string filename = StringFromFormat("%s/perf-%d.map", perf_dir.data(), getpid());
s_perf_map_file.Open(filename, "w"); s_perf_map_file.Open(filename, "w");
// Disable buffering in order to avoid missing some mappings // Disable buffering in order to avoid missing some mappings
// if the event of a crash: // if the event of a crash:

View File

@ -243,6 +243,8 @@ struct SCoreStartupParameter
std::string m_strGameIniDefaultRevisionSpecific; std::string m_strGameIniDefaultRevisionSpecific;
std::string m_strGameIniLocal; std::string m_strGameIniLocal;
std::string m_perfDir;
// Constructor just calls LoadDefaults // Constructor just calls LoadDefaults
SCoreStartupParameter(); SCoreStartupParameter();

View File

@ -142,10 +142,12 @@ bool DolphinApp::OnInit()
bool UseLogger = false; bool UseLogger = false;
bool selectVideoBackend = false; bool selectVideoBackend = false;
bool selectAudioEmulation = false; bool selectAudioEmulation = false;
bool selectPerfDir = false;
wxString videoBackendName; wxString videoBackendName;
wxString audioEmulationName; wxString audioEmulationName;
wxString userPath; wxString userPath;
wxString perfDir;
#if wxUSE_CMDLINE_PARSER // Parse command lines #if wxUSE_CMDLINE_PARSER // Parse command lines
wxCmdLineEntryDesc cmdLineDesc[] = wxCmdLineEntryDesc cmdLineDesc[] =
@ -195,6 +197,11 @@ bool DolphinApp::OnInit()
"User folder path", "User folder path",
wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL
}, },
{
wxCMD_LINE_OPTION, "P", "perf_dir",
"Directory for Lionux perf perf-$pid.map file",
wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL
},
{ {
wxCMD_LINE_NONE, nullptr, nullptr, nullptr, wxCMD_LINE_VAL_NONE, 0 wxCMD_LINE_NONE, nullptr, nullptr, nullptr, wxCMD_LINE_VAL_NONE, 0
} }
@ -219,6 +226,7 @@ bool DolphinApp::OnInit()
BatchMode = parser.Found("batch"); BatchMode = parser.Found("batch");
selectVideoBackend = parser.Found("video_backend", &videoBackendName); selectVideoBackend = parser.Found("video_backend", &videoBackendName);
selectAudioEmulation = parser.Found("audio_emulation", &audioEmulationName); selectAudioEmulation = parser.Found("audio_emulation", &audioEmulationName);
selectPerfDir = parser.Found("perf_dir", &perfDir);
playMovie = parser.Found("movie", &movieFile); playMovie = parser.Found("movie", &movieFile);
if (parser.Found("user", &userPath)) if (parser.Found("user", &userPath))
@ -255,6 +263,12 @@ bool DolphinApp::OnInit()
UICommon::CreateDirectories(); UICommon::CreateDirectories();
UICommon::Init(); UICommon::Init();
if (selectPerfDir)
{
SConfig::GetInstance().m_LocalCoreStartupParameter.m_perfDir =
WxStrToStr(perfDir);
}
if (selectVideoBackend && videoBackendName != wxEmptyString) if (selectVideoBackend && videoBackendName != wxEmptyString)
SConfig::GetInstance().m_LocalCoreStartupParameter.m_strVideoBackend = SConfig::GetInstance().m_LocalCoreStartupParameter.m_strVideoBackend =
WxStrToStr(videoBackendName); WxStrToStr(videoBackendName);