MCPcopy Create free account
hub / github.com/PCSX2/pcsx2 / InitializeProcessorList

Function InitializeProcessorList

pcsx2/VMManager.cpp:3542–3581  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3540}
3541
3542static void InitializeProcessorList()
3543{
3544 if (!cpuinfo_initialize())
3545 {
3546 ERROR_LOG("cpuinfo_initialize() failed");
3547 return;
3548 }
3549
3550 INFO_LOG("Processor count: {} cores, {} processors, {} clusters",
3551 cpuinfo_get_cores_count(), cpuinfo_get_processors_count(), cpuinfo_get_clusters_count());
3552
3553 const u32 processor_count = cpuinfo_get_processors_count();
3554 std::vector<const cpuinfo_processor*> processors;
3555 for (u32 i = 0; i < processor_count; i++)
3556 {
3557 // Ignore hyperthreads/SMT. They're not helpful for pinning.
3558 const cpuinfo_processor* proc = cpuinfo_get_processor(i);
3559 if (!proc || proc->smt_id != 0)
3560 continue;
3561
3562 processors.push_back(proc);
3563 }
3564
3565 // Prioritize faster cores in heterogeneous CPUs.
3566 std::sort(processors.begin(), processors.end(),
3567 [](const cpuinfo_processor* lhs, const cpuinfo_processor* rhs) {
3568 return (lhs->core->frequency > rhs->core->frequency);
3569 });
3570
3571 SmallString str;
3572 str.assign("Ordered processor list: ");
3573 s_processor_list.reserve(processors.size());
3574 for (const cpuinfo_processor* proc : processors)
3575 {
3576 const u32 proc_id = GetProcessorIdForProcessor(proc);
3577 str.append_format("{}{}", (proc == processors.front()) ? "" : ", ", proc_id);
3578 s_processor_list.push_back(proc_id);
3579 }
3580 Console.WriteLn(str.view());
3581}
3582
3583void VMManager::SetHardwareDependentDefaultSettings(SettingsInterface& si)
3584{

Callers

nothing calls this directly

Calls 15

cpuinfo_get_cores_countFunction · 0.85
cpuinfo_get_processorFunction · 0.85
append_formatMethod · 0.80
viewMethod · 0.80
push_backMethod · 0.45
beginMethod · 0.45
endMethod · 0.45
assignMethod · 0.45
reserveMethod · 0.45

Tested by

no test coverage detected