mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-04-02 11:01:50 -04:00
Add correct core count detection for i7(and maybe i5/i3?) CPUs, and update the SysInfo screen to show more information about threads on x86/x64.
This commit is contained in:
parent
aa3cf34fc1
commit
0400a61d51
2 changed files with 13 additions and 2 deletions
|
@ -192,8 +192,17 @@ void CPUInfo::Detect()
|
||||||
int apic_id_core_id_size = (cpu_id[2] >> 12) & 0xF;
|
int apic_id_core_id_size = (cpu_id[2] >> 12) & 0xF;
|
||||||
if (apic_id_core_id_size == 0) {
|
if (apic_id_core_id_size == 0) {
|
||||||
if (ht) {
|
if (ht) {
|
||||||
|
// 0x0B is the preferred method on i7(i5, i3, too? Unsure..).
|
||||||
|
// Inspired by https://github.com/D-Programming-Language/druntime/blob/master/src/core/cpuid.d#L562.
|
||||||
|
if (vendor == VENDOR_INTEL && max_std_fn >= 0x0B) {
|
||||||
|
__cpuidex(cpu_id, 0x0B, 0);
|
||||||
|
logical_cpu_count = cpu_id[1] & 0xFFFF;
|
||||||
|
__cpuidex(cpu_id, 0x0B, 1);
|
||||||
|
int totalThreads = cpu_id[1] & 0xFFFF;
|
||||||
|
num_cores = totalThreads / logical_cpu_count;
|
||||||
|
}
|
||||||
// New mechanism for modern Intel CPUs.
|
// New mechanism for modern Intel CPUs.
|
||||||
if (vendor == VENDOR_INTEL) {
|
else if (vendor == VENDOR_INTEL) {
|
||||||
__cpuid(cpu_id, 0x00000004);
|
__cpuid(cpu_id, 0x00000004);
|
||||||
int cores_x_package = ((cpu_id[0] >> 26) & 0x3F) + 1;
|
int cores_x_package = ((cpu_id[0] >> 26) & 0x3F) + 1;
|
||||||
HTT = (cores_x_package < logical_cpu_count);
|
HTT = (cores_x_package < logical_cpu_count);
|
||||||
|
|
|
@ -152,7 +152,9 @@ void SystemInfoScreen::CreateViews() {
|
||||||
#ifdef ARM
|
#ifdef ARM
|
||||||
deviceSpecs->Add(new InfoItem("Cores", StringFromInt(cpu_info.num_cores)));
|
deviceSpecs->Add(new InfoItem("Cores", StringFromInt(cpu_info.num_cores)));
|
||||||
#else
|
#else
|
||||||
deviceSpecs->Add(new InfoItem("Threads", StringFromInt(cpu_info.num_cores)));
|
int totalThreads = cpu_info.num_cores * cpu_info.logical_cpu_count;
|
||||||
|
std::string cores = StringFromFormat("%d (%d per core, %d cores)", totalThreads, cpu_info.logical_cpu_count, cpu_info.num_cores);
|
||||||
|
deviceSpecs->Add(new InfoItem("Threads", cores));
|
||||||
#endif
|
#endif
|
||||||
deviceSpecs->Add(new ItemHeader("GPU Information"));
|
deviceSpecs->Add(new ItemHeader("GPU Information"));
|
||||||
deviceSpecs->Add(new InfoItem("Vendor", (char *)glGetString(GL_VENDOR)));
|
deviceSpecs->Add(new InfoItem("Vendor", (char *)glGetString(GL_VENDOR)));
|
||||||
|
|
Loading…
Add table
Reference in a new issue